I have used a tutorial for this, I also made an additional leaderboard, this is for a speedrun game and you need the fastest times (mainly top 8) to make it to the leaderboard, but the leaderboard appears to be empty, here is my script:
wait(5)
local ds = game:GetService("DataStoreService")
local ts = ds:GetOrderedDataStore("Time")
local function update()
print("leaderboard updated")
local y, n = pcall(function()
local data = ts:GetSortedAsync(true, 8)
local page = data:GetCurrentPage()
for rank, Data in pairs(page) do
local username = game.Players:GetPlayerByUserId(tonumber(Data.key))
local name = username
local bestTime = Data.Value
local onLeaderboard = false
for i,v in pairs(script.Parent.Frame.List.ListContent:GetChildren()) do
if(v.Player.Text == name)then
onLeaderboard = true
end
if bestTime and not onLeaderboard then
local sample = script.Sample:Clone()
sample.Username = name
sample.Value = bestTime
sample.Number = rank
sample.Position = UDim2.new(0,0,sample.Position.Y.Scale + (.08 * #script.Parent.Frame.List.ListContent:GetChildren()), 0)
sample.Parent = script.Parent.Frame.List.ListContent
end
end
end
end)
if n then
print("YOU FAIL!!!!!!")
end
end
update()
while wait(60) do
for _,plr in pairs(game.Players:GetPlayers()) do
local pb = plr.leaderstats["Best Time"].Value * 100
local data = ts:SetAsync(plr.UserId, pb)
end
for _,fra in pairs(script.Parent.Frame.List.ListContent:GetChildren()) do
fra:Destroy()
end
update()
end
Thank you for any help in advance
