I noticed that a lot of filtering enabled games have been the victim of autoclicking programs. games that have debounce have had that broke with an endless stream of clicks. Im curious if roblox is aware of the situation and if there is a solution to this ongoing problem?
Successful autoclicking exploits are a by-product of bad design on the developer’s part, and it’s not really on Roblox to fix it. When it comes to things like ClickDetectors, debouncing (or “floodchecking”) really is pretty much the best way to prevent autoclicking.
As for autoclickers so fast that they bypass the debounce… I’ve never seen such a thing, and if it does exist, you can try adding the clicks to a queue and processing them with a loop, one by one, rather than simply running a function as soon as an event fires. This will combine what could be several tasks running potentially side-by-side into one single, linear task. It’s not as great for performance and could result in delayed responses, but if autoclicking is a really big issue, it can be done.
could I also have a script detect a certain amount of clicks ( for example over 50) and then have it kill the player, would that also work as an anti exploit?
This is not possible unless a yield is happening before the debounce. Roblox code should be single threaded, which means from when you check the debounce to when you set it, there would have been nothing else going on.
just to give an example the game “tiny tanks” has debounce or something close which prevents the player from shooting bullets more than the amount they are supposed to shoot. eventually you may come across a player who is shooting hundreds of bullets at a time as well as giving themselves a speed boost. if they are not using their own input such as an autoclicker to accomplish this, then what exactly are they doing?
They are either finding a different issue, game specific that allows for this (such as an event that resets the debounce being mishandled) or there is a yield between the debounce being checked and reset.
also, the main reason I say its an autoclicking program is because a friend showed me it in one of my own games. I had a weapon that uses debounce and sets it to true right after the touched function and an if statement. the cloning and shooting of projectiles cannot be fired again after debounce is set to true.
however despite this, he was still able to spam bullets which does not make any sense as there is no way for bullets to be duplicated because of how debounce is set.
I pulled up the old game file with the script i was talking about, its a mess but it does have debounce in it. if you wish to look over it please do and tell me if there is a flaw that lets an autoclicker bypass it:
local debounce = false
script.Parent.Parent.Activated:Connect(function()
if not debounce then debounce = true
local tool = script.Parent.Parent – Added variable for tool
local part = script.Parent – Use local Variable = … not Variable = …
local ColB = BrickColor.new(“Really blue”)
local ColR = BrickColor.new(“Really red”)
if tool.Parent:FindFirstChild(“Humanoid”) then – Check if is in char.
if tool.Parent.TeamCol.Value == “Tred” then
local shot = game.ServerStorage.LavaStreamPart
local point = script.Parent
local copy = shot:Clone()
local mover = copy.BodyVelocity
mover.Velocity = point.CFrame.LookVector * 110
copy.Parent = game.Workspace
copy.Position = point.Position
copy.Decay.Disabled = false
copy.Id.Value = “Tred”
wait(0.5)
debounce = false
end
if tool.Parent.TeamCol.Value == “Tblue” then
local shot = game.ServerStorage.LavaStreamPart
local point = script.Parent
local copy = shot:Clone()
local mover = copy.BodyVelocity
mover.Velocity = point.CFrame.LookVector * 110
copy.Parent = game.Workspace
copy.Position = point.Position
copy.Decay.Disabled = false
copy.Id.Value = “Tblue”
wait(0.5)
debounce = false
end
end
end
end)
If your script runs on the server, it’s safe from autoclick exploits, however if it runs on the client, an exploiter can remove the debounce and use the autoclick to their full capacity. You script looks like it runs on the server, so it’s pretty much safe.
Just as a heads up, you can make your scripts appear in code blocks by surrounding the code with this:
```lua
-- insert your code here
```
tnx, i didnt see the usual “lua button” so i didnt know I could put it in a code block :P.
well thanks for all the replies on this subject, im glad to have some insite on these issues.
There are people that can actually click fast. No anti-autoclick system is flawless and will always result in a bad user experience for at least one normal user, which is why Roblox doesn’t just make a fix on their own.
I’ve noticed a lot of people saying autoclicker “programs” and I just wanted to remind y’all that autoclickers exist on the actual hardware of the mouse too, which is why I recommend that if you want to do too harsh of a punishment like killing someone in the game, or resetting them, that you tell them what’s wrong since some people might do it accidentally
You can do debouncing on the server instead of on the client by using CollectionService.
if not CollectionService:HasTag(Player,'WordThatDescribesTheActionInThePastTense') then
--Add the tag
--Do the stuff