You can write your topic however you want, but you need to answer these questions:
- What do you want to achieve? Keep it simple and clear!
I am attempting to make my leaderboards show global data of every player.
- What is the issue? Include screenshots / videos if possible!
The leaderboards only show the -R values and not any other values on the leaderboard and I get no error.
- What solutions have you tried so far? Did you look for solutions on the Developer Hub?
I have looked everywhere and cannot find a similar problem. I also made the script print out the values before settting them and it showed the correct amount but still didnt show when I got the values. I would prefer this to be solved fast as i just released my game and having broken leaderboards makes it look bad. Thanks ![]()
here is my code:
local MainODS = game:GetService("DataStoreService"):GetOrderedDataStore("OpenBetaODS-1")
local leaderboards = workspace.leaderboards
local function Abbreviate(number)
if number <= 1000 then
return number
elseif number >= 1e45 then
return string.format("%.1fQu", number/1e45)
elseif number >= 1e42 then
return string.format("%.1fTr", number/1e42)
elseif number >= 1e39 then
return string.format("%.1fD", number/1e39)
elseif number >= 1e36 then
return string.format("%.1fU", number/1e36)
elseif number >= 1e33 then
return string.format("%.1fDe", number/1e33)
elseif number >= 1e30 then
return string.format("%.1fN", number/1e30)
elseif number >= 1e27 then
return string.format("%.1fO", number/1e27)
elseif number >= 1e24 then
return string.format("%.1fSe", number/1e24)
elseif number >= 1e21 then
return string.format("%.1fS", number/1e21)
elseif number >= 1e18 then
return string.format("%.1fQt", number/1e18)
elseif number >= 1e15 then
return string.format("%.1fQ", number/1e15)
elseif number >= 1e12 then
return string.format("%.1fT", number/1e12)
elseif number >= 1e9 then
return string.format("%.1fB", number/1e9)
elseif number >= 1e6 then
return string.format("%.1fM", number/1e6)
elseif number >= 1e3 then
return string.format("%.1fK", number/1e3)
end
end
local function ConvertToHMS(Seconds)
local function Format(Int)
return string.format("%02i", Int)
end
local Minutes = (Seconds - Seconds%60)/60
Seconds = Seconds - Minutes*60
local Hours = (Minutes - Minutes%60)/60
Minutes = Minutes - Hours*60
return Format(Hours)..":"..Format(Minutes)..":"..Format(Seconds)
end
local function UpdateLeaderboards()
local pages = MainODS:GetSortedAsync(false, 35)
local data = pages:GetCurrentPage()
local rankE = 0
local rankT = 0
local rankR = 0
for _,v in pairs(leaderboards:GetChildren()) do
for _,v in pairs(v.UI.Holder:GetChildren()) do
if v:IsA("Frame") then
v:Destroy()
end
end
end
if data then
for _,v in pairs(data) do
local splitString = string.split(v.key, "-")
if splitString[2] == "E" then
rankE = rankE + 1
local clone = game.ServerStorage.LeaderboardTemplate:Clone()
clone.Parent = leaderboards.EggsHatched.UI.Holder
clone.Amount.Text = Abbreviate(v.value)
clone.Rank.Text = "#"..rankE
local Content, isReady = game.Players:GetUserThumbnailAsync(splitString[1], Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
clone:WaitForChild("PlayerIcon").Image = Content
elseif splitString[2] == "T" then
rankT = rankT + 1
local clone = game.ServerStorage.LeaderboardTemplate:Clone()
clone.Parent = leaderboards.TimePlayed.UI.Holder
clone.Amount.Text = ConvertToHMS(v.value)
clone.Rank.Text = "#"..rankT
local Content, isReady = game.Players:GetUserThumbnailAsync(splitString[1], Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
clone:WaitForChild("PlayerIcon").Image = Content
elseif splitString[2] == "R" then
rankR = rankR + 1
local clone = game.ServerStorage.LeaderboardTemplate:Clone()
clone.Parent = leaderboards.MostRebirths.UI.Holder
clone.Amount.Text = Abbreviate(v.value)
clone.Rank.Text = "#"..rankR
local Content, isReady = game.Players:GetUserThumbnailAsync(splitString[1], Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
clone:WaitForChild("PlayerIcon").Image = Content
end
end
end
end
UpdateLeaderboards()
while wait(30) do
for _,player in pairs(game.Players:GetPlayers()) do
if player then
MainODS:SetAsync(player.UserId.."-E", player:WaitForChild("EggsOpened").Value)
wait(2)
MainODS:SetAsync(player.UserId.."-T", player:WaitForChild("TimePlayed").Value)
wait(2)
MainODS:SetAsync(player.UserId.."-R", player:WaitForChild("TotalRebirths").Value)
wait(2)
UpdateLeaderboards()
end
end
end