Basically, I want to make a tool that “trips” the other player
There’s a really good way to do what I want to do that is unfortunately only possible on the client script.Parent.Humanoid:ChangeState(Enum.HumanoidStateType.FallingDown)
Now, is using a remote event to send a message to the client to trip the other player a liability? Because exploiters may be able to use it to make any client trip.
If so, how do I get around this?
How is the tool used in the actual gameplay anyway? There isn’t much context to go off of.
If you’re doing client → server → another client, then it is possible for exploiters to trip all clients without any checks.
You can check the distance between the two players before letting the remote fire to the client.
You can also store players who are on cooldown from using the tool on the server.
There are limitations such as players who are on much higher ping may not have accurate distance measurements when the server checks. Exploiters would be able to automatically trip other players by checking their own distance & cooldown before firing the remote.
Add extra rules in between that represent your game logic. For example if the player asks to make another player fall, but that player happens to be far away at that moment, don’t allow it to pass through. If the gear they hold has a cooldown at that point, don’t let it pass through, etc.
Basically try to replicate the client-side logic on the server-sided checks.
Also worth noting that if you implement a distance check you first need to implement a movement check derived from how your game works. Else the exploiter can just tp to the player, make them fall, then tp back to their original position.