When a client disables CanTouch
on a part locally, it seems to cause any server-side .Touched
callbacks to not fire for that client. Is this expected behavior?
The setup: I have an anchored box part. I have set a callback for the .Touched
event with a Script running on the server. When I disable the box’s CanTouch
property with a LocalScript
on a client, the .Touched
callback does not run on the server for that client. However, it does run normally for the other clients.
The problem: I would expect that .Touched
events would fire on the server based on the server’s value of CanTouch
and not on the client’s value of CanTouch
. This may be exploitable if certain game mechanics rely on volume collision detection through .Touched
(such as monster aggro). People running exploits could disable CanTouch
and not trigger those events.
My question: Is the right answer not to depend on .Touched
for parts of the game which should be resistant to exploits, or is there another way to avoid this issue?
You can see a video of a baseplate repro of this here:
Here is the baseplate file for the repro:
cantouch_baseplate_repro.rbxl (49.5 KB)