✓ Accepted answer
1.A touched event gives you the part that touched it (example: "Left Leg", "Right Leg") meaning it wont always be a descendant of a player's character, it could be a random part touching it
Your Code should look something like this:
script.Parent.Touched:Connect(function(part)
if game.Players:GetPlayerFromCharacter(part:FindFirstAncestorOfClass("Model")) then
local player = game.Players:GetPlayerFromCharacter(part:FindFirstAncestorOfClass("Model"))
local char = player.Character
if char:FindFirstChild("Humanoid") then
if not char.Humanoid:FindFirstChild("HasSuit") then
repeat
if char.Humanoid.Health - 3 > 0 then
char.Humanoid.Health -= 3
else
char.Humanoid.Health = 0
end
wait(0.1)
until char.Humanoid.Health <= 0
end
end
end
end)