Hi! So I made a leaderboard that shows the top people with the most wins. But when it displays the cloned frame for each player on the leaderboard, it is spaced out extremely far. It looks like this:
Heres my script:
local DataStore = game:GetService("DataStoreService")
local WinsLB = DataStore:GetOrderedDataStore("DonationLeaderboards")
local leaderboard = game.Workspace.Leaderboard
local function updateLeaderboards()
local success, errorMessage = pcall(function()
local Data = WinsLB:GetSortedAsync(false, 50)
local Winspage = Data:GetCurrentPage()
print("set leaderboard frame")
for rank, data in ipairs(Winspage) do
local userName = game.Players:GetNameFromUserIdAsync(tonumber(data.key))
local userId = game.Players:GetUserIdFromNameAsync(userName)
local Wins = data.value
local isOnLeaderboard = false
for i, v in pairs(leaderboard.RealLeaderboard.SurfaceGui.Holder:GetChildren()) do
if v:IsA("Frame") then
if v.Player.Text == userName then
break
end
end
end
if Wins and isOnLeaderboard == false then
local NewLBFrame = game.ReplicatedStorage:WaitForChild("LeaderboardFrame"):Clone()
local statLabel = NewLBFrame.Stat
NewLBFrame.Player.Text = userName
NewLBFrame.Player.avatar.Image = game.Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
statLabel.Text = Wins
NewLBFrame.Rank.Text = "#"..rank
NewLBFrame.Parent = leaderboard.RealLeaderboard.SurfaceGui.Holder
if rank == 1 then
NewLBFrame.Player.TextColor3 = Color3.new(1, 0.705882, 0.227451)
statLabel.TextColor3 = Color3.new(1, 0.705882, 0.227451)
NewLBFrame.Rank.TextColor3 = Color3.new(1, 0.705882, 0.227451)
elseif rank == 2 then
NewLBFrame.Player.TextColor3 = Color3.new(0.721294, 0.721279, 0.721279)
statLabel.TextColor3 = Color3.new(0.721294, 0.721279, 0.721279)
NewLBFrame.Rank.TextColor3 = Color3.new(0.721294, 0.721279, 0.721279)
elseif rank == 3 then
NewLBFrame.Player.TextColor3 = Color3.new(0.736507, 0.487678, 0.259174)
statLabel.TextColor3 = Color3.new(0.736507, 0.487678, 0.259174)
NewLBFrame.Rank.TextColor3 = Color3.new(0.736507, 0.487678, 0.259174)
end
end
end
end)
if not success then
print(errorMessage)
end
end
while true do
for _, player in pairs(game.Players:GetPlayers()) do
local stat = player.leaderstats.Wins
WinsLB:SetAsync(player.UserId, stat.Value)
end
for _, frame in pairs(leaderboard.RealLeaderboard.SurfaceGui.Holder:GetChildren()) do
if frame:IsA("Frame") then
frame:Destroy()
end
end
updateLeaderboards()
wait(10)
end
I have a UIListLayout inside the scrolling frame with these settings:
I believe it has to do with the UIListLayout because when I get rid of it, all the cloned frames are on top of each other. Can you help me?