(Disclaimer) The Value points, is the child of player, not leaderstats.

function onHumanoidDied(humanoid, player)
local stats = player
if stats ~= nil then
	local deaths = stats:findFirstChild("Points")
	if deaths then
		deaths.Value = deaths.Value - 10
	end
	-- do short dance to try and find the killer

	local killer = getKillerOfHumanoidIfStillInGame(humanoid)

	handleKillCount(humanoid, player)
end
end

function onPlayerRespawn(property, player)
-- need to connect to new humanoid

if property == "Character" and player.Character ~= nil then
	local humanoid = player.Character.Humanoid
		local p = player
		local h = humanoid
		humanoid.Died:connect(function() onHumanoidDied(h, p) end )
end
end

function getKillerOfHumanoidIfStillInGame(humanoid)
-- returns the player object that killed this humanoid
-- returns nil if the killer is no longer in the game

-- check for kill tag on humanoid - may be more than one - todo: deal with this
local tag = humanoid:findFirstChild("creator")

-- find player with name on tag
if tag ~= nil then
	
	local killer = tag.Value
	if killer.Parent ~= nil then -- killer still in game
		return killer
	end
end

return nil
end

function handleKillCount(humanoid, player)
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
if killer ~= nil then
	local stats = killer
	if stats ~= nil then
		local kills = stats:findFirstChild("Points")
		if kills then
			if killer ~= player then
				kills.Value = kills.Value + 10	
			else
				kills.Value = kills.Value - 10
			end
		else
			return
		end
	end
end
end

nothing appears in script analysis or output

1 comment

1

But what is wrong with the script?