I am looking for a script that kills a player and deducts their Credits once they have Team Killed another player. Looking to subtract 500 credits to that player. I have tried doing this but it hasn't worked.
Here is the script so far.
print("TK script loaded.") function onHumanoidDied(humanoid, player) local killer = getKillerOfHumanoidIfStillInGame(humanoid) if (killer ~= nil) then handleTKs(player, killer) 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 handleTKs(player, killer) if (killer.TeamColor == player.TeamColor) then killer.Character.Humanoid.Health = 0 if stats ~= nil then local cash = stats:killer("Credits") cash.Value = cash.Value -100 end end function onPlayerEntered(newPlayer) while true do if newPlayer.Character ~= nil then break end wait(3) end local humanoid = newPlayer.Character.Humanoid humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end ) newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end ) end game.Players.ChildAdded:connect(onPlayerEntered)
Where I am trying to add the deduction is near line [45 ]
stats
in line 44 is always nil
, and therefore the credits are never reducted.
Supposing that by stats
you meant leaderstats
, you should instead do what i did there:
print("TK script loaded.") function onHumanoidDied(humanoid, player) local killer = getKillerOfHumanoidIfStillInGame(humanoid) if (killer ~= nil) then handleTKs(player, killer) 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") --findFirstChild is deprecated -- 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 handleTKs(player, killer) if (killer.TeamColor == player.TeamColor) then killer.Character.Humanoid.Health = 0 killer.leaderstats.Credits.Value = killer.leaderstats.Credits.Value - 500 --leaderstats are included per player, you must refer to it inside killer. end function onPlayerEntered(newPlayer) while true do if newPlayer.Character ~= nil then break end wait(3) end local humanoid = newPlayer.Character.Humanoid humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end ) newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end ) end game.Players.ChildAdded:connect(onPlayerEntered)
I also replaced a deprecated function. This should work now!