I made a leaderboard script and after an hour of working on it, it doesn't work in test solo or ingame. Any suggestions, I'm personally thinking it's the cash part, if so is there any way to still have a money value in while having a functional leaderboard script?
--Script made by OpticUniversse
--Please do not take this part out if you are using the script!
function onPlayerEntered(newplayer)
local stats = Instance.new("IntValue")
stats.Name = "leaderstats"
local kills = Instance.new("IntValue")
kills.Name = "Kills" --pew pew dead man!
kills.Value = 0
local deaths = Insance.new("IntValue")
deaths.Name = "Deaths" --make obnoxious noise
deaths.Value = 0
local cash = Instance.new("IntValue") --Unsure
cash.Name = "Cash"
cash.Value = 20 --Start with 20 cash
kills.Parent = stats
deaths.Parent = stats
cash.Parent = stats
while true do
if newPlayer.Character ~= nil then break end
wait(5)
end
local humanoid = newPlayer.Character.Humanoid
humanoid.Died:connect(function() onHumanoidDied(humanoid, newPlayer) end)
newPlayer.Changed:connect(function(property) onPlayerRespawn(property, newPlayer) end)
stats.Parent = newPlayer
end
function Send_DB_Event_Died(victim,killer)
local killername = "no one"
if killer ~= nil then killername = killer.Name end
if shared["deaths"] ~= nil then
shared["deaths"](victim, killer)
end
end
function Send_DB_Event_Kill (killer, victim)
if shared["kills"] ~= nil then
shared["kills"](killer, victim)
end
end
function onHumanoidDied(humanoid, player)
local stats = player:findFirstChild("leaderstats")
if stats ~= nil then
local deaths = stats:findFirstChild("Deaths")
deaths.Value = deaths.Value + 1
local killer = getKillerOfHumanoidIfStillInGame(humanoid)
Send_DB_Event_Died(player, killer)
handleKillCount(humanoid, player)
end
end
function onPlayerRespawn(property, player)
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)
local tag = humanoid:findFirstChild("creator")
if tag ~= nil then
local killer = tag.value
if killer.Parent ~= nil then
return killer --but walmart doesnt accept returns!
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("Kills")
if killer ~= player then
kills.Value = kills.Value +1
cash.Value = cash.Value +20
else
kills.Value = kills.Value -1
cash.Value = cash.Value -20
end
Send_DB_Event_Kill(killer, player)
end
end
end
game.Players.ChildAdded:connect(onPlayerEntered)
Thanks.
