So I have a global leaderboard in my game, but it shows each player as “#1” and in the wrong order.
Here is my code;
local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetOrderedDataStore("Leaderboard")
local MainFrame = script.Parent.Parent.Parent
local RefreshRate = 10
local function RefreshLeaderboard()
for i, Player in pairs(game.Players:GetChildren()) do
DataStore:SetAsync(Player.UserId, Player.leaderstats.Credits.Value)
end
local success, Error = pcall(function()
local Data = DataStore:GetSortedAsync(false, 10)
local CreditsPage = Data:GetCurrentPage()
for Rank, SavedData in ipairs(CreditsPage) do
local Username = game.Players:GetNameFromUserIdAsync(tonumber(SavedData.key))
local Credits = SavedData.value
if Credits and not script.Parent:FindFirstChild(Username) then
local NewSample = script.Parent.Sample:Clone()
NewSample.Visible = true
NewSample.Parent = MainFrame.leaderboard.grid
NewSample.Name = Username
NewSample.Text = "#"..Rank.." "..Username.." "..Credits
end
end
end)
end
while true do
for i, Frame in pairs(MainFrame.leaderboard.grid:GetChildren()) do
if Frame.Name ~= "Sample" and Frame:IsA("Frame") then
Frame:Destroy()
end
end
RefreshLeaderboard()
wait(RefreshRate)
end
