(SOLVED) I need help creating a global leaderboard in StarterGUI

I was creating a game a couple months back, and I was now recently stumbling on how to make a leaderboard. Even though there are tutorials for global leaderboards, there were never tutorials on how to do it with PlayerGUI, so I would like to ask for the help of the developers of devforum, to please help me.

Script:


local DataStoreService = game:GetService("DataStoreService")
local RobuxLeaderboard = DataStoreService:GetOrderedDataStore("RobuxLeaderboard")

game.Players.PlayerAdded:Connect(function(player)
	local playerGui = player:WaitForChild("PlayerGui")
	local leaderboardScreenGui = playerGui:WaitForChild("LeaderboardScreenGui")
	local leaderboardFrame = leaderboardScreenGui:WaitForChild("LBFrame")
	
	local function UpdateLeaderboard()
		local success, errorMessage = pcall(function()
			local Data = RobuxLeaderboard:GetSortedAsync(false,5)
			local RobuxPage = Data:GetCurrentPage()

			for Rank, data in ipairs(RobuxPage) do
				local username = game.Players:GetNameFromUserIdAsync(tonumber(data.key))
				local Robux = data.value

				local Name = username

				print("1", Name, Robux)

				if not leaderboardFrame.Holder:FindFirstChild(Name .. "LBFrame") then
					local NewLBFrame = leaderboardFrame.Holder.Sample:Clone()

					NewLBFrame.Name = Name .. "LBFrame" 
					NewLBFrame.NameLabel.Text = Name
					NewLBFrame.Visible = true
					NewLBFrame.CashLabel.Text = Robux
					NewLBFrame.RankLabel.Text = "#"..Rank
					NewLBFrame.Position = UDim2.new(0,0,NewLBFrame.Position.Y.Scale + (.08 * #leaderboardFrame.Holder:GetChildren()))
					NewLBFrame.Parent = leaderboardFrame.Holder

					print("2", "created", Name, Robux)
				end
			end
		end)

		if not success then
			print(errorMessage)
		end
	end


	while true do
		for _, Player in pairs(game.Players:GetPlayers()) do
			RobuxLeaderboard:SetAsync(Player.UserId, Player.Stats.Robux.Value)
		end

		for _, frame in pairs(leaderboardFrame.Holder:GetChildren()) do
			frame:Destroy()
		end

		UpdateLeaderboard()
		print("Updated!")

		wait(30)
	end	
end)

Also, if you need a screenshot for where everything is in explorer, I will list it down below:

Thank you again for looking.

1 Like

After like no replies, I kinda did it myself and ye. It worked.