How Effective Would This Be in Stopping Exploiters?

Recently I discovered that exploiters were killing everyone in a game by attaching themselves to other players the way most exploit bring scripts do and then setting the HumanoidState to dead. For some reason that replicates.

Since many exploit scripts rely on deleting or manipulating the Humanoid in some way and since deleting a Humanoid from the client apparently replicates to the server, I’d like to somehow use that to my advantage.

The issue I’m at currently is trying to avoid false positives such as resetting which naturally parent the Humanoid to nil. I’d like to check to see if exploiters are deleting the Humanoid from the server and then carry out some sort of disciplinary action. What I have so far is this:

game.Players.PlayerAdded:Connect(function(plr)
	plr.CharacterAdded:Connect(function(char)
		local h = char:WaitForChild("Humanoid")
		h.AncestryChanged:Connect(function(_, parent)
			if not parent then
				local h = plr.Character:FindFirstChild("Humanoid")
				if not h then
					print("Humanoid Deleted.") -- Do something here.
				end
			end
		end)
	end)
end)

Are there any issues with my approach, and what alternatives can you think of if possible?

A player’s character’s humanoid instance is destroyed whenever they die naturally, so no.

My apologies for the late response. Have you tried the code snippet in Studio? The video shows that it prints for me only when the Humanoid is deleted but not when the player resets.

Test Script - YouTube

im sure its patched by now the luau_load thing
also nobody deletes their humanoid??

It’s not luau_load. The exploit admin script in particular that weaponizes Humanoid replication and the dead HumanoidStateType is Fate’s admin, and the source for it is on GitHub and PasteBin. It changes the victim’s state to 15 (dead). You’d search for ChangeState(humanoid, 15).

Bring scripts are one example of where they delete their Humanoids. Tool kill scripts are as well.