I found this model throwing knife and when it hits another player, the other player falls apart and the health appears to be at 0 but doesn't re spawn so my game loop wont work unless that other player re spawns. Any suggestions?
Hay great question, I think I can help!!!
This is important topic of "Filtering Enabled". When "Filtering Enabled" feature is on, nothing that's done by client gets replicated on the server.
What that actually means is that whatever you do with local script, will happen for that specific player only. This is great because it prevents exploiters from injecting local script and messing up entire server.
To make something like that work you'll need remotes. Remotes enable you to send requests from client(player), when needed, to server to make something happen(e.g kill player). This way you have, already defined behavior in server script which only gets executed when necessary.
So what you should do, is to find local script which makes knife kill player and turn it into server script and place it in ServerScriptService. In this script you should wrap entire functionality with remote event callback(see tutorial) and then you should fire request whenever knife hits the player.
--use a touch function knife.Touched:Connect(function(hit) hit.Parent.Humanoid.Health = 0 end)