Respawn script only works once

When a Humanoid dies, the new one that is obtained is not the same instance.

This means, every time the player is spawned, you need to rebind the died event to the new humanoid instance

Player.CharacterAdded:Connect(function(c)
   c:WaitForChild("Humanoid").Died:Connect(deathFunction) --you can bind functions by reference in Lua
end)

You don’t need to worry about disconnecting, as Destroy does that for you.

then what maybe the instance that is new most of them are humanoidrootparts