Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
COMMUNITY QUESTION

How would i detect non-replicating property changes of something (speed, jump) server-sided?

I want to make an anti cheat that detects mostly everything. So far I've been able to detect TP and Body Movers. Problem is, other properties such as "Anchored", "PlatformStand", "WalkSpeed" and "JumpPower" do not replicate to the server. So my question is: How would i detect these changes on the server? You may think about RemoteEvents, but you could easily hook the FireServer and make it return something else (for example always return 16). The default value of WalkSpeed in my game is 156, which would make it harder to detect exploits without kicking legitimate players.

I will never try and detect WalkSpeed and other property changes on the client, as no matter how hard you try, it is still bypassable.

Any help would be greatly appreciated!

3 comments

0

i have a really easy solution without checking the walkspeed but im not telling you anymore and stop being rude also it's so easy to check if the player is walkspeeding / teleporting i will only give you one clue: X, Y, Z no more clues

0

Also you cannot spoof remotes its impossible due to it running multiple scripts each time its being fired so even if they put a while true do loop that fires the remote every .1 seconds it will still kick the exploiter due to it running allot of scripts at a time

0

And the only bypass is that they can delete the local script so you can put two local scripts to check for each other if one of the scripts is missing the other script will kick the person because they deleted the bypass script

2 answers

Try researching the ".Changed" function. You can find out if a property is changed using it.

1 comment

0

You do realise that if a client changes for example its walkspeed, it will not replicate to the server, right? Do some research before answering, thanks.

Put a password in your remotes at the end so if remote was changed kick them example:

Local Script:

local Speed = game.Players.LocalPlayer.Character.Humanoid.WalkSpeed

local JumpPower = game.Players.LocalPlayer.Character.Humanoid.JumpPower

game.ReplicatedStorage.Remotes.CheckPlayerInfoRemote:FireServer(Speed, JumpPower, MyPassword)

Server Script:

game.ReplicatedStorage.Remotes.CheckPlayerInfoRemote.OnServerEvent:Connect(function(Speed, Jump, Password)
	if Password == "MyPassword" then
		Code here
	else
	player:Kick("Kicked for exploiting lmao")
	end
end)

Basically what this does is if the remote event was fired and the Password is wrong it will kick them and they don't know the Password.

This discussion is preserved as it was. New answers, comments, and votes are closed.