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

[FE] How do I detect if a script is deleted on the client?

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.

7 comments

0

I don't think you can detect if the client deletes something on the server because the changes don't replicated to the server. You can only check on the client, but then those scripts could be deleted. I guess you could make a script that fires "OK"s to the server so the server knows the script still exists. But really good question!

0

You can have a script on the client, or fire a remote event from the client every time an instance is removed and check from the server

0

Maybe have two client scripts watch each other, so the only way to get past the system would be to delete both the scripts at the exact same time :P

1

I'll try making a script constantly fire OK. Thanks!

0

I don't really know about filtering enabled but I think this might work if FindFirstChil("script") then

0

What if you made each script on the client depend on each other? This way if a client's script cant find a dependency you can either try to fix it or kick the player.

0

RIP just saw old happy said the same thing in different words.

1 answer

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.

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