I want to add a script where every 3 seconds, a point is added. The script works in build mode but not in the play mode when it's saved. Or even in some cases, the points work but the KO and WO doesn't work.
Is there a way to have the KO, WO and points script (that changes every 3 seconds) work at the same time?
Below is the script:
function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstats")
if stats ~= nil then
local deaths = stats:findFirstChild("Deaths")
deaths.Value = deaths.Value + 1
local spend = stats:findFirstChild("Points")
spend.Value = spend.Value - 5
-- 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:findFirstChild("leaderstats")
if stats ~= nil then
local kills = stats:findFirstChild("KOs")
local earn = stats:findFirstChild("Points")
if killer ~= player then
kills.Value = kills.Value + 1
earn.Value = earn.Value + 100
else
kills.Value = kills.Value - 1
earn.Value = earn.Value - 1
end
end
end
end
-----------------------------------------------
function Entered(player)
if player:findFirstChild("leaderstats") ~= nil then
player.leaderstats:remove()
end
stats = Instance.new("IntValue")
stats.Parent = player
stats.Name = "leaderstats"
local kills = Instance.new("IntValue")
kills.Name = "KOs"
kills.Value = 0
local deaths = Instance.new("IntValue")
deaths.Name = "Deaths"
deaths.Value = 0
kills.Parent = stats
deaths.Parent = stats
money = Instance.new("IntValue")
money.Parent = stats
money.Name = "Points"
money.Value = 0 --How much you start out with change it to how much you want
-- VERY UGLY HACK
-- Will this leak threads?
-- Is the problem even what I think it is (player arrived before character)?
while true do
if player.Character ~= nil then break end
wait(5)
end
local humanoid = player.Character.Humanoid
humanoid.Died:connect(function() onHumanoidDied(humanoid, player) end )
-- start to listen for new humanoid
player.Changed:connect(function(property) onPlayerRespawn(property, player) end )
stats.Parent = player
end
game.Players.PlayerAdded:connect(Entered)
c = game.Players:GetChildren()
for i=1, #c do
Entered(c[i])
end
while true do
wait(3)
money.Value = money.Value + 1
end
Thank you!

2 comments
Can you edit your code block.
Sorry!! Hope its better for reading now.