Hello Everyone, I’m a new developer who is currently creating a game on Roblox. One of the many things I need to make is an anti-cheat. I was thinking of an idea for the anti-cheat and want to know if it is plausible.
First, NetworkOwnership can be set to the player so that what happens to the part on the client will be replicated to the server.
Second, any anti-cheat on the client will likely be deleted by the cheater.
Third, the best way to prevent cheats and exploit is through server verification.
Using these, I thought of an idea that I want to know if it would work.
First, the server will create a script or a part with the script for the anti-cheat.
Second, the server will use :Connect to detect the script being destroyed.
Third, for each player, create a clone.
Fourth, set each clone with a networkownership for the player.
And finally, if the cheater deletes the part or script, it will replicate to the server and the server will notice a player deleting the anti-cheat. The cheater cannot delete other players anti-cheat since it won’t replicate, so cheaters cannot kick other players by deleting their anti-cheat’s.
I just want some comments on whether this would work and how it would affect the game.
I believe deleting anything on the client will not replicate to the server no matter what, As network ownership simply sets who’s network it prioritizes over other players. If you wish, please do try your theory however there is a big chance that it won’t work.
As @Marusenai said, setting network ownership only allows the client to control a few physics related properties of the part (position, rotation, velocity etc). Deleting parts or modifying their ancestors is not possible even if the client has ownership. It’s also worth mentioning that you can only give ownership to BaseParts in workspace, so trying to give ownership to a script simply does not work.
Hi thank you for replying.
So networkownership doesn’t include deleting the object?
Can I detect remove children for the part that is the parent of the script instead?
Will I still be able to use attributes for the part and detect it being changed?
Thank you!