I have a sprint script that makes you run by toggling Left Control. The script used to rely on the client to change WalkSpeed and soon got rid of it by using a RemoteEvent as the client sends a number, and if number is modified the server will not allow the change the exploiter has done.
But there is a problem, exploiters can just ignore the curse of CTRL (since modifying the LocalScript is useless because the server sees that the number exceeded) and just use the client to change the WalkSpeed and JumpPower.
I cannot use RemoteEvents for this because exploiters can just destroy the existence of LocalScript that the Script wants to hear the message of what is going on. Obfuscation is bad for performance...
I also think of using loops but it is also a bad idea, is there any techniques?
I'm not really asking for an anti-exploit script in the client, I'm looking for ways to avoid the curse of the exploiters who use the client to change WalkSpeed or JumpPower.

2 comments
I've made an anti - exploit script, which checks to see the players walkspeed, jumpower etc here it is https://www.roblox.com/library/5310947766/JesseSongs-anti-cheat
Basically, what it does is kicks the player out of the game when a player does something malicious. e.g. Change walkspeed, change jumpower and so on.