I made a leaderboard a while ago but now I’m getting errors with it and I can not find how to fix this problem this is the error I’m getting:
This is where the leaderboard and datastore scripts are and also the model “selected items”:
This error only happens when you make a new place and a few people did join the server or the server is older idk why this only happens then but when the server is new it doesn’t error once so I don’t know why this happens and I tried to fix it multiple times but this is the script that errors and it’s the script that controls the one of the leaderboards
local DataStoreService = game:GetService("DataStoreService")
local LevelLeaderBoard = DataStoreService:GetOrderedDataStore("Lvl_Data")
local function Update_Board1 ()
local Success, MsgOrLevelPage = pcall(function()
local ascending = false
local numberToShow = 100
local min = 1
local max = 100000
local Data = LevelLeaderBoard:GetSortedAsync(ascending, numberToShow, min, max)
return Data:GetCurrentPage()
end)
if not Success then
warn(MsgOrLevelPage)
else
for rank, Level in ipairs(MsgOrLevelPage) do
local UserName = game.Players:GetNameFromUserIdAsync(tonumber(Level.key))
local PName = UserName
local Level = Level.value
local isOnLeaderBoard = false
for i, v in pairs(game.Workspace.Volcano_Island.Will_Never_Unload.leaderboards["LeaderBoard - Level"].LeaderBoard.Frame.MainFrame.Holder:GetChildren()) do
if v.PlayerName.Text == PName then
isOnLeaderBoard = true
v.Level.Text = Level
v.Number.Text = rank .. '.'
v.Position = UDim2.new(0, 0, v.Position.Y.Offset + (30 * #game.Workspace.Volcano_Island.Will_Never_Unload.leaderboards["LeaderBoard - Level"].LeaderBoard.Frame.MainFrame.Holder:GetChildren()), 0)
continue
end
end
if Level > 0 and isOnLeaderBoard == false then
local NewLbFrame = game.ReplicatedStorage:WaitForChild("LevelLeaderBoard"):Clone()
NewLbFrame.PlayerName.Text = PName
NewLbFrame.Level.Text = Level
NewLbFrame.Number.Text = rank.."."
NewLbFrame.Position = UDim2.new(0, 0, NewLbFrame.Position.Y.Scale + (0.011 * #game.Workspace.Volcano_Island.Will_Never_Unload.leaderboards["LeaderBoard - Level"].LeaderBoard.Frame.MainFrame.Holder:GetChildren()), 0)
if rank == 1 then
NewLbFrame.PlayerName.TextColor3 = Color3.fromRGB(255, 238, 0)
NewLbFrame.Number.TextColor3 = Color3.fromRGB(255, 238, 0)
elseif rank == 2 then
NewLbFrame.PlayerName.TextColor3 = Color3.fromRGB(145, 145, 145)
NewLbFrame.Number.TextColor3 = Color3.fromRGB(145, 145, 145)
elseif rank == 3 then
NewLbFrame.PlayerName.TextColor3 = Color3.fromRGB(113, 52, 0)
NewLbFrame.Number.TextColor3 = Color3.fromRGB(113, 52, 0)
end
NewLbFrame.Parent = game.Workspace.Volcano_Island.Will_Never_Unload.leaderboards["LeaderBoard - Level"].LeaderBoard.Frame.MainFrame.Holder
end
end
end
end
local function Update_Board2 ()
local Success, MsgOrLevelPage = pcall(function()
local ascending = false
local numberToShow = 100
local min = 1
local max = 100000
local Data = LevelLeaderBoard:GetSortedAsync(ascending, numberToShow, min, max)
return Data:GetCurrentPage()
end)
if not Success then
warn(MsgOrLevelPage)
else
for rank, Level in ipairs(MsgOrLevelPage) do
local UserName = game.Players:GetNameFromUserIdAsync(tonumber(Level.key))
local PName = UserName
local Level = Level.value
local isOnLeaderBoard = false
for i, v in pairs(game.Workspace.Volcanic_Club.Will_Never_Unload.LeaderBoards.Level_LeaderBoard.LeaderBoard.Frame.MainFrame.Holder:GetChildren()) do
if v.PlayerName.Text == PName then
isOnLeaderBoard = true
v.Level.Text = Level
v.Number.Text = rank .. '.'
v.Position = UDim2.new(0, 0, v.Position.Y.Offset + (30 * #game.Workspace.Volcanic_Club.Will_Never_Unload.LeaderBoards.Level_LeaderBoard.LeaderBoard.Frame.MainFrame.Holder:GetChildren()), 0)
continue
end
end
if Level > 0 and isOnLeaderBoard == false then
local NewLbFrame = game.ReplicatedStorage:WaitForChild("LevelLeaderBoard"):Clone()
NewLbFrame.PlayerName.Text = PName
NewLbFrame.Level.Text = Level
NewLbFrame.Number.Text = rank.."."
NewLbFrame.Position = UDim2.new(0, 0, NewLbFrame.Position.Y.Scale + (0.011 * #game.Workspace.Volcanic_Club.Will_Never_Unload.LeaderBoards.Level_LeaderBoard.LeaderBoard.Frame.MainFrame.Holder:GetChildren()), 0)
if rank == 1 then
NewLbFrame.PlayerName.TextColor3 = Color3.fromRGB(255, 238, 0)
NewLbFrame.Number.TextColor3 = Color3.fromRGB(255, 238, 0)
elseif rank == 2 then
NewLbFrame.PlayerName.TextColor3 = Color3.fromRGB(145, 145, 145)
NewLbFrame.Number.TextColor3 = Color3.fromRGB(145, 145, 145)
elseif rank == 3 then
NewLbFrame.PlayerName.TextColor3 = Color3.fromRGB(113, 52, 0)
NewLbFrame.Number.TextColor3 = Color3.fromRGB(113, 52, 0)
end
NewLbFrame.Parent = game.Workspace.Volcanic_Club.Will_Never_Unload.LeaderBoards.Level_LeaderBoard.LeaderBoard.Frame.MainFrame.Holder
end
end
end
end
wait(5)
Update_Board1()
Update_Board2()
while true do
wait(5)
for _, player in pairs(game.Players:GetPlayers()) do
LevelLeaderBoard:SetAsync(player.UserId, player.leaderstats.Lvl.Value)
end
for _, frame in pairs(game.Workspace.Volcano_Island.Will_Never_Unload.leaderboards["LeaderBoard - Level"].LeaderBoard.Frame.MainFrame.Holder:GetChildren()) do
frame:Destroy()
end
for _, frame in pairs(game.Workspace.Volcanic_Club.Will_Never_Unload.LeaderBoards.Level_LeaderBoard.LeaderBoard.Frame.MainFrame.Holder:GetChildren()) do
frame:Destroy()
end
Update_Board1()
Update_Board2()
wait(60)
end
If you could help me I would be really happy cause I can’t find the problem.
And yes this script controls 2 leaderboards at the same time so I needed to use less scripts in my game that’s why there are 2 functions.