Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How would I be able to make a leaderboard that works properly?

Asked by 10 years ago

How would I be able to make a leaderboard that has "Wins", "KO's", and "Points"? When a player enters that person would start out with 25 Points and that the leaderboard wouldn't break. I'm not sure I would set this up, could someone help me?

3 answers

Log in to vote
0
Answered by 10 years ago
game.Players.PlayerAdded:connect(function(plr)
local stat = Instance.new("Model", plr)
stat.Parent = plr
local win = Instance.new("IntValue", plr.stat)
win.Value = 0
win.Name = "Wins"
local Ko = Instance.new("IntValue", plr.stat)
Ko.Value = 0
Ko.Name = "KOs" --If Put the ' ' then it will think that it made another string inside the string
local Points = Instance.new("IntValue", plr.stat)
Points.Value = 25
Points.Name = "Points"
end)

HOWEVER IT CAN STILL CRASH IF THE PLAYER LAGS MEANING THEY WONT SPAWN IN THE GAME WITH THOSE STATS. THERE IS NO WAY TO FIX THAT

0
Question, my game doesn't lag for me and most players so far but when I test it with just me and a friend, it appears he is lagging on my screen and im lagging on his screen but neither of us are lagging on our own screens. Do you think this could affect us? billybobtijoseph 1 — 10y
0
Also, why insert a model into the player? billybobtijoseph 1 — 10y
Ad
Log in to vote
0
Answered by 10 years ago

Also can the KO's work like the KO's do normally on a leaderboard? I forgot to say that, sorry.

0
If so copy it out of the basic leaderboard and insert a model into the player because thats the grey holder thing RolandStudio 115 — 10y
0
The leaderboard just breaks.. billybobtijoseph 1 — 10y
Log in to vote
0
Answered by
Mauvn 100
10 years ago
function onPlayerEntered(newPlayer)
local stats = Instance.new("IntValue")
stats.Name = "leaderstats"
local kills = Instance.new("IntValue")
kills.Name = "KOs"
kills.Value = 25
local deaths = Instance.new("IntValue")
deaths.Name = "Wipeouts"
deaths.Value = 0
kills.Parent = stats
deaths.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("Wipeouts")
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
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")
if killer ~= player then
kills.Value = kills.Value + 1
else
end
Send_DB_Event_Kill(killer, player)
end
end
end
game.Players.ChildAdded:connect(onPlayerEntered)

Spend all of time for this :3

Remember to Upvote meh :3

Hope it helps.... :)

0
Dont use ToTo's it has alot of things wrong with it. Mauvn 100 — 10y

Answer this question