I think the problem is that you didn’t put a debounce on the .Touched.
local debounce = false
local death = false
script.Parent.Touched:Connect(function(hit)
if debounce then return end
debounce = true
local humanoid = hit.Parent:FindFirstChild("Humanoid")
if humanoid and humanoid ~= script.Parent.Parent.Humanoid then
humanoid.Health -= 10
humanoid.Died:Connect(function()
if death then return end
death = true
game.Players[player.Name].leaderstats.Kills.Value += 1
death = false
end)
end
debounce = false
end)
I also added a debounce on the .Died because otherwise multiple of them would be running since you make multiple connections if the player touches the part more than once.
You are connecting alot of Humanoid.Died events to the same humanoid that each add one to your leaderboard. You should use a playeradded event and setup your .died connection in there.