I'm making an anti-exploit that supports FE games(yes, players can still exploit their walkspeed, etc) and I'm trying to find a way to detect a deleted script on the client.
It won't allowed to do this:
-- Server script
player.PlayerGui.OliviaMain.ChildRemoved:connect(function(Change) if Change.Name == "Olivia Client Control" then warn("Nice try") ModeratorAction(player,"Exploit","Tampering with Olivia Client Control") end end)
Which I'm assuming because the server is interacting with the client. Is there any way around this? Any script detecting deleted scripts on the client can just be deleted.
Actually if I am correct a script can set it's own parent to nil and continue to run. I don't know if this works for localscripts but you could try:
script.Parent=nil; ...
Now if this doesn't work or isn't enough you may want to (in addition?) try making the script not archiveable.
If that doesn't help then hopefully this will:
Make the script send pings to the server every second or faster. The way you could do this is with FireServer events and such, as well as having another local script that has an event bound to the main script being modified, same thing for the other script, Just keep them in separate parents so you can't delete both at the same time.
If you want to go even bigger, you could obfustacate your scripts, and variable names to make it harder to inject code and know what scripts to attack.
Hope this helps, sorry for any errors I'm on mobile and haven't tested local scripts using the nil parent method.