The best way to prevent exploit is to secure your algorithms always check on the server for player inputs like purchasing. It is impossible to make a perfect anti speed exploit. The biggest downside to this is the replication of the character, or basically lag. AnswerYes you can change the controls and colors of the ESP. If their distance is not in the average, then it could be count as an speed exploit. Question-Can you modify the script and make it good. Compare the magnitude of the previous Position of the HumanoidRootPart and the latest Position of the HumanoidRootPart. Also, if there are perks that increases the speed of the player or if you allow flying, then this method will probably not work unless you know the formula for calculating the average velocity of the HumanoidRootPart. However, I am not sure if a conveyer can directly affect this velocity check. If the overall velocity of the HumanoidRootPart is greater than the average velocity, it could be well count as anti-speed. There are multiple ways to detect sudden change in speed, however these have its downside as well. Unless there is a PVP or items dropped randomly in random places, anti-speed is useless if it is a tycoon game that only requires you to place machines. I still can’t grasp on why you still need an anti-exploit for, I presume, a tycoon game. This is only for character so keep that in mind so make sure to add checks in case he tries to break ur script by changing names or removing stuff kickhere (warning if hes legit and takes longer then 30 seconds to spawn he also get kicked increase to ur liking)Įlseif hum.WalkSpeed ~= whitelistedSpeed1 or hum.WalkSpeed ~= whitelistedSpeed2 thenĮxploiters can destroy any individual object in their characters, including non-physical items like decals, joints, and scripts, and that destruction replicates to the server. to make sure player didnt rename his humanoid or remove it or renamed it and name somthing else humanoid cause it replicated to the server from what i heard with roblox characters If not hum or not hum:IsA("Humanoid") then Local hum = character:WaitForChild("Humanoid",30) - wait 30 before declare (infinity yield with waitforchild and continue withoud ever finding it) Player.CharacterAdded:Connect(function(character) Local whitelistedSpeed2 = convoyorspeedhere