A few weeks ago, I made a custom player list that shows the player’s stats on it and a custom title the player can select.
The issue is that on certain screens, the player list appears weirdly scaled, and I have no idea of what’s causing it or how can I replicate it. This is an image that one of the developers sent me, showing the unintended behavior of the system:

And this is how it’s supposed to look like in-game:

Here is the script in case it’s needed:
local function updatePlayerFrame(plr)
if not scroller:FindFirstChild(plr.Name) then
local templateClone = template:Clone()
templateClone.Name = plr.Name
if table.find(staff, plr.UserId) then
templateClone.UIStroke.Color = Color3.fromRGB(225, 164, 255)
templateClone.UIStroke.Thickness = 2
templateClone.DisplayName.FontFace.Weight = Enum.FontWeight.Bold
templateClone.DisplayName.TextColor3 = Color3.fromRGB(225, 164, 255)
templateClone.Icons.Staff.Visible = true
elseif table.find(creator, plr.UserId) then
templateClone.UIStroke.Color = Color3.fromRGB(255, 60, 255)
templateClone.UIStroke.Thickness = 2
templateClone.DisplayName.FontFace.Weight = Enum.FontWeight.Bold
templateClone.DisplayName.TextColor3 = Color3.fromRGB(255, 60, 255)
templateClone.Icons.Creator.Visible = true
end
templateClone.DisplayName.Text = plr.Name
templateClone.Towers.Text = tostring(NumberComma(plr:WaitForChild("leaderstats"):WaitForChild("Towers", 5).Value)).." tower(s)"
task.spawn(function()
plr:WaitForChild("leaderstats").Towers:GetPropertyChangedSignal("Value"):Connect(function()
templateClone.Towers.Text = tostring(NumberComma(plr:WaitForChild("leaderstats"):WaitForChild("Towers", 5).Value)).." tower(s)"
if not table.find(staff, plr.UserId) and not table.find(creator, plr.UserId) then
if plr:WaitForChild("leaderstats").Towers.Value >= 30 then
templateClone.Towers.FontFace.Weight = Enum.FontWeight.Bold
end
if plr:WaitForChild("leaderstats").Towers.Value >= 60 then
templateClone.Towers.TextColor3 = Color3.fromRGB(230, 201, 255)
templateClone.UIStroke.Color = Color3.fromRGB(230, 201, 255)
end
if plr:WaitForChild("leaderstats").Towers.Value >= 90 then
templateClone.Towers.TextColor3 = Color3.fromRGB(119, 162, 255)
templateClone.UIStroke.Color = Color3.fromRGB(119, 162, 255)
end
if plr:WaitForChild("leaderstats").Towers.Value >= 120 then
templateClone.Towers.TextColor3 = Color3.fromRGB(255, 235, 134)
templateClone.UIStroke.Color = Color3.fromRGB(255, 235, 134)
templateClone.UIStroke.Thickness = 2
end
end
end)
end)
templateClone.Parent = scroller
scroller.CanvasSize = UDim2.new(0, 0, 0, scroller.UIListLayout.AbsoluteContentSize.Y)
end
end
local function updatePlayerTitle(plr)
local selectedTitle = plr:FindFirstChild("SelectedTitle")
if selectedTitle and selectedTitle.Value then
local titleFind = ReplicatedStorage:WaitForChild("Titles"):FindFirstChild(selectedTitle.Value)
if titleFind then
local clone = titleFind:Clone()
local findPlayerFrame = scroller:FindFirstChild(plr.Name)
if findPlayerFrame then
local titleFrame = findPlayerFrame:WaitForChild("DesignFrame", 5)
if titleFrame:FindFirstChildWhichIsA("Frame") then
titleFrame:FindFirstChildWhichIsA("Frame"):Destroy()
end
clone.Parent = titleFrame
else
warn("No player frame found for", plr.Name)
end
else
warn("No title found for", selectedTitle.Value)
end
else
warn("No selected title for", plr.Name)
end
end
local function PlayerJoin(plr)
updatePlayerFrame(plr)
updatePlayerTitle(plr)
end
local function PlayerLeave(plr)
local playerFrame = scroller:FindFirstChild(plr.Name)
if playerFrame then
playerFrame:Destroy()
scroller.CanvasSize = UDim2.new(0, 0, 0, scroller.UIListLayout.AbsoluteContentSize.Y)
end
end
ReplicatedStorage:WaitForChild("FireLeaderboardTitle").OnClientEvent:Connect(function(titleInstance, player)
local titleFind = ReplicatedStorage.Titles:FindFirstChild(titleInstance)
if titleFind then
local clone = titleFind:Clone()
if scroller[player.Name].DesignFrame:FindFirstChildWhichIsA("Frame") then
scroller[player.Name].DesignFrame:FindFirstChildWhichIsA("Frame"):Destroy()
end
clone.Parent = scroller[player.Name].DesignFrame
end
end)
Players.PlayerAdded:Connect(function(plr)
PlayerJoin(plr)
end)
Players.PlayerRemoving:Connect(function(plr)
PlayerLeave(plr)
end)
for _, plr in pairs(Players:GetPlayers()) do
PlayerJoin(plr)
end
The scrollingList uses UIListLayout and the UIPadding elements.
Any help and support is appreciated. Thank you