Run it
Copy the script and paste it into your executor.
env = ( ())
env.BetterAutoclickerCleanup
(env.BetterAutoclickerCleanup)
WindUI = (:())()
Players = :()
UIS = :()
RunService = :()
VirtualUser = :()
plr = Players.LocalPlayer
mouse = plr:()
okVIM, VIM = (()
:()
)
okVIM VIM =
METHODS = { , , , }
enabled =
holdMs =
targetCps =
method = METHODS[]
ignoreUI =
MAX_PER_FRAME =
PANIC = .KeyCode.RightControl
curClicks, totalClicks = ,
downsSeen, upsSeen = ,
fpsNow =
fpsMax, fpsMin = , .huge
cpsMax, cpsMin = , .huge
lastCpf, cpfMax, cpfMin = , , .huge
ring = {}
rHead, rTail, rSum = , ,
(t, n)
rTail = rTail +
ring[rTail] = { t, n }
rSum = rSum + n
(t)
rHead <= rTail t - ring[rHead][] >
rSum = rSum - ring[rHead][]
ring[rHead] =
rHead = rHead +
lmbDown =
downAt =
uiPress =
needRelease =
clicking =
clickStart =
acc =
warned =
stopWhy =
frameN =
alive =
lastSend =
trustLedger =
pendUp, pendDown = ,
enableTog
()
method ==
VIM
,
pos = UIS:()
send = VIM.SendMouseButtonEvent
(send, VIM, pos.X, pos.Y, , , , )
pendUp = pendUp +
ok, err = (send, VIM, pos.X, pos.Y, , , , )
ok
pendUp = pendUp -
, err
pendDown = pendDown +
ok, err = (send, VIM, pos.X, pos.Y, , , , )
ok
pendDown = pendDown -
, err
method ==
(mouse1release mouse1press)
,
pendUp = pendUp +
ok, err = (mouse1release)
ok
pendUp = pendUp -
, err
pendDown = pendDown +
ok, err = (mouse1press)
ok
pendDown = pendDown -
, err
method ==
char = plr.Character
tool = char char:()
tool
,
tool:()
VirtualUser:(.(mouse.X, mouse.Y))
lastSend = .()
(why)
clicking =
stopWhy = why
(now)
clicking =
clickStart = now
curClicks =
upsSeen =
trustLedger =
acc =
stopWhy =
hb = RunService.Heartbeat:((dt)
now = .()
frameN = frameN +
dt >
f = / dt
f > fpsMax fpsMax = f
f < fpsMin fpsMin = f
enabled
clicking ()
clicking
(pendUp > pendDown > ) now - lastSend >
pendUp =
pendDown =
lmbDown needRelease now - downAt >= holdMs /
ignoreUI uiPress
needRelease =
(now)
clicking
ledgerMethod = method == method ==
ledgerMethod trustLedger now - clickStart > curClicks >= upsSeen ==
trustLedger =
pendUp =
pendDown =
pendUp > pendDown >
pendUp =
pendDown =
step = .(dt, )
acc = acc + targetCps * step
n = .(acc)
acc = acc - n
n > MAX_PER_FRAME n = MAX_PER_FRAME
sent =
_ = , n
ok, res, why = (doClick)
ok
why = res
res =
res
warned
warned =
( .. method .. .. (why)
.. )
stopWhy = .. (why)
sent = sent +
curClicks = curClicks +
totalClicks = totalClicks +
(now, sent)
(now)
lastCpf = sent
sent > cpfMax cpfMax = sent
sent < cpfMin cpfMin = sent
now - clickStart >=
rSum > cpsMax cpsMax = rSum
rSum < cpsMin cpsMin = rSum
)
inBegan = UIS.InputBegan:((input, processed)
input.KeyCode == PANIC processed
enabled = enabled
enabled clicking
()
enableTog
(() enableTog:(enabled) )
input.UserInputType ~= .UserInputType.MouseButton1
pendDown >
pendDown = pendDown -
downsSeen = downsSeen +
clicking
lmbDown =
downAt = .()
uiPress = processed
needRelease =
)
inEnded = UIS.InputEnded:((input)
input.UserInputType ~= .UserInputType.MouseButton1
pendUp > trustLedger
pendUp = pendUp -
upsSeen = upsSeen +
lmbDown =
needRelease =
uiPress =
clicking
()
)
Window = WindUI:({
Title = ,
Author = ,
Folder = ,
Icon = ,
Size = .(, ),
})
MainTab = Window:({
Title = ,
Icon = ,
})
enableTog = MainTab:({
Title = ,
Desc = ,
Type = ,
Value = ,
Callback = (v)
enabled = v
,
})
MainTab:({
Title = ,
Desc = ,
Step = ,
Value = { Min = , Max = , Default = },
Callback = (v)
holdMs = v
,
})
MainTab:({
Title = ,
Desc = ,
Step = ,
Value = { Min = , Max = , Default = },
Callback = (v)
targetCps = v
,
})
MainTab:({
Title = ,
Desc = ,
Values = METHODS,
Value = METHODS[],
Callback = (opt)
(opt) ==
opt = opt.Title opt.Name opt[]
opt
method = opt
warned =
pendUp =
pendDown =
,
})
MainTab:({
Title = ,
Desc = ,
Type = ,
Value = ,
Callback = (v)
ignoreUI = v
,
})
StatsTab = Window:({
Title = ,
Icon = ,
})
StatsTab:({ Title = })
lblStatus = StatsTab:({ Title = , Desc = })
lblCps = StatsTab:({ Title = , Desc = })
lblCpf = StatsTab:({ Title = , Desc = })
lblFps = StatsTab:({ Title = , Desc = })
lblCur = StatsTab:({ Title = , Desc = })
lblTotal = StatsTab:({ Title = , Desc = })
StatsTab:({ Title = })
lblFpsMax = StatsTab:({ Title = , Desc = })
lblFpsMin = StatsTab:({ Title = , Desc = })
lblCpsMax = StatsTab:({ Title = , Desc = })
lblCpsMin = StatsTab:({ Title = , Desc = })
lblCpfMax = StatsTab:({ Title = , Desc = })
lblCpfMin = StatsTab:({ Title = , Desc = })
StatsTab:({ Title = })
lblHeld = StatsTab:({ Title = , Desc = })
lblStop = StatsTab:({ Title = , Desc = })
lblPend = StatsTab:({ Title = , Desc = })
lblTrust = StatsTab:({ Title = , Desc = })
lblSeen = StatsTab:({ Title = , Desc = })
StatsTab:({
Title = ,
Desc = ,
Callback = ()
curClicks =
totalClicks =
downsSeen =
upsSeen =
fpsMax =
fpsMin = .huge
cpsMax =
cpsMin = .huge
cpfMax =
cpfMin = .huge
,
})
(el, txt)
(()
el:(txt)
)
.(()
lastT = .()
lastN = frameN
alive .()
now = .()
el = now - lastT
el >
fpsNow = (frameN - lastN) / el
lastT = now
lastN = frameN
(now)
nFrames = rTail - rHead +
avgCpf = nFrames > (rSum / nFrames)
status =
enabled
status =
clicking
status =
lmbDown needRelease
status =
lmbDown
status =
(lblStatus, status)
(lblCps, (rSum))
(lblCpf, .(, avgCpf) .. .. lastCpf .. )
(lblFps, (.(fpsNow + )))
(lblCur, (curClicks))
(lblTotal, (totalClicks))
(lblFpsMax, (.(fpsMax)))
(lblFpsMin, (fpsMin == .huge .(fpsMin)))
(lblCpsMax, (cpsMax))
(lblCpsMin, (cpsMin == .huge cpsMin))
(lblCpfMax, (cpfMax))
(lblCpfMin, (cpfMin == .huge cpfMin))
(lblHeld, lmbDown )
(lblStop, stopWhy)
(lblPend, pendUp .. .. pendDown)
(lblTrust, trustLedger )
(lblSeen, upsSeen .. .. downsSeen)
)
env.BetterAutoclickerCleanup = ()
alive =
clicking =
hb:()
inBegan:()
inEnded:()
(() Window:() )
Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: github.com.
For those who don't want to use generic autoclickers. Having to press a hotkey to toggle a macro/autoclicker is annoying. Here is where it changes.. Left Clicking: does what its supposed to do HOLDING Left Click: Autoclicks, so if you are clashing, just hold left click down. this is better than hotkey toggling for precision. Right Clicking: STOPS any bugs related to the autoclick
Never paste your .ROBLOSECURITY cookie anywhere, and use an alt account with scripts.

Universal