Yeah, that is why it is difficult to actually make a strong script. I just woke up today and I though of an idea that might work if you wanted to use local scripts. I haven’t tried it yet but I bet it could work. My idea was to have:
- One Local Script that detects if Humanoid.WalkSpeed has been changed.
- One Local Script that detects if script 1 has been disabled or deleted.
- One Local Script that is a clone of script 2.
Also, script 2 and 3 will be responsible for each other, meaning that if script 2 gets disabled/deleted, script 3 will clone/enable it or will fire the server to kick the player. The same goes for script 2. If script 3 gets disabled/deleted, script 2 will clone/enable it or will fire the server to kick the player. This could work as both scripts can repair each other and even if a hacker used a for i, v in pairs(game.Players.LocalPlayer.PlayerGui:GetChildren()) do
and deleted the scripts that way, once one would be deleted/disabled, the other one would fire immediately before it gets deleted/disabled and if it then got deleted, the one that was just cloned would clone it again. This could work as it is impossible for a hacker to delete two scripts at the same time (or at least that is what I think). If both scripts are not deleted at the same time, not a millisecond later, then it would work.
I can guess that this idea could be laggy and I have not tried it yet, but I do not think it can be as laggy unless someone makes it run. Actually, I do not think it will be laggy at all, or just a little lag. Also, script 2 and 3 both can clone script 1. This idea could work as it is pretty much a chain that if you break, it will repair itself. That is my idea that could work, and if a player is lagging, it would not falsely punish him/her.