Hey, I have a problem with my global leaderboard, the first player on the leaderboard should of course start with #1 but for some reason it starts with #2. Does anyone know what the problem could be?

local DataStoreService = game:GetService("DataStoreService")
local WinsLeaderboard = DataStoreService:GetOrderedDataStore("WinsData")

local function updateLeaderboard()
	local success, errorMessage = pcall(function()
		local Data = WinsLeaderboard:GetSortedAsync(false, 5)
		local WinsPage = Data:GetCurrentPage()
		for Rank, data in ipairs(WinsPage) do
			if tonumber(data.key) > 0 then
				local userName = game.Players:GetNameFromUserIdAsync(tonumber(data.key))
			
			
			local Name = userName
			local Wins = data.value
			local isOnLeaderboard = false
			for i, v in pairs(game.Workspace.GlobalLeaderboardWins.LeaderboardGUI.Holder:GetChildren()) do
				if v.Player.Text == Name then
					isOnLeaderboard = true
					break
				end
			end
		
			if Wins and isOnLeaderboard == false then
				local newLbFrame = game.ReplicatedStorage:WaitForChild("LeaderboardFrame"):Clone()
				newLbFrame.Player.Text = Name
				newLbFrame.Wins.Text = Wins
				newLbFrame.Rank.Text = "#"..Rank
				newLbFrame.Position = UDim2.new(0,0, newLbFrame.Position.Y.Scale + (0.15 * #game.Workspace.GlobalLeaderboardWins.LeaderboardGUI.Holder:GetChildren()), 0)
				newLbFrame.Parent = game.Workspace.GlobalLeaderboardWins.LeaderboardGUI.Holder
				
			end
				
		end
		end
	end)
	
	if not success then
		print(errorMessage)
	end
	
end

while true do
	for _, player in pairs(game.Players:GetPlayers()) do
		WinsLeaderboard:SetAsync(player.UserId, player.leaderstats.Wins.Value)
	end
	
	for _, frame in pairs(game.Workspace.GlobalLeaderboardWins.LeaderboardGUI.Holder:GetChildren()) do
		frame:Destroy()
	end
	
	updateLeaderboard()
	print("Updated Win Leaderboard!")
	
	wait(60)
	
end

Here is a link to how it looks like:

Thanks for the help, Xsodar

2 comments

0

Also had this error before: Players:GetUserIdFromNameAsync() failed: Unknown user. I fixed this problem by adding "if tonumber(data.key) > 0 then" could that be the problem?