Is there a reason why it's not getting the player's image?

hey, im currently making a dummy script which should display the best player’s stats, but it’s not setting the player’s thumbnail. this is my script:

while true do
	for i, v in pairs(leaderboard:GetSortedAsync(false, 3, 1):GetCurrentPage()) do
		local userId = v.key
		local rank = tostring(i)
		local value = v.value
		local playerName = players:GetNameFromUserIdAsync(userId)
		local placeStatueA = workspace.Map.UndeletableStuff.Leaderboards.StatueA
		local placeStatueB = workspace.Map.UndeletableStuff.Leaderboards.StatueB

		if placeStatueA and placeStatueB then
			local humanoidA = placeStatueA.Statue.Humanoid
			local humanoidB = placeStatueB.Statue.Humanoid
			local humanoidAStats = placeStatueA.Stats
			local humanoidBStats = placeStatueB.Stats

			if humanoidA and humanoidB then
				-- Load player character for each humanoid
				loadPlayerCharacter(humanoidA, userId, "A")
				loadPlayerCharacter(humanoidB, userId, "B")

				-- Update stats for humanoid A
				local spentValue = getSpentValue(userId)

				local formattedSpent = format(spentValue)
				humanoidAStats.BillboardGui.Frame.PlayerName.Text = "#" .. rank .. ": " .. playerName
				humanoidAStats.BillboardGui.Frame.PlayerImage.Image = game.Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
				humanoidAStats.BillboardGui.Frame.MoneyAmount.Text = "Spent: " .. formattedSpent .. " R$!"

				-- Update stats for humanoid B
				local purchasesValue = getPurchasesValue(userId)

				local formattedPurchases = format(purchasesValue)
				humanoidBStats.BillboardGui.Frame.PlayerName.Text = "#" .. rank .. ": " .. playerName
				humanoidBStats.BillboardGui.Frame.PlayerImage.Image = game.Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)
				humanoidBStats.BillboardGui.Frame.MoneyAmount.Text = formattedPurchases .. " Purchases!"
			else
				warn("Humanoids not found for place " .. rank)
			end
		end
	end

	wait(20) -- Wait for 20 seconds before updating again
end
1 Like

It is possible that the thumbnail failed to load. The function that supplies the thumbnail also features a boolean in the tuple, which checks if it’s ready.

GetUserThumbnailAsync does not return the string that has the players image. Instead, it returns a tuple. Tuples hold different data values between commas. Kind of like a less efficient table.

--Tuple example

function my_function(param1, param2, param3) <-- tuple
   return param1 * param2, param3 <-- tuple
end

This is just in case you do not know. It’s fine if you do.

In that case, content is what is being returned first in the tuple, but still try independently declaring your variable above where you are calling the function.

local content, is_loaded = game.Players:GetUserThumbnailAsync(userId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size420x420)

humanoidAStats.BillboardGui.Frame.PlayerName.Text = "#" .. rank .. ": " .. playerName

--Load in a bacon hairs avatar headshot as a placeholder.
humanoidAStats.BillboardGui.Frame.PlayerImage.Image = (is_loaded and content) or "rbxassetid://6925817108"
humanoidAStats.BillboardGui.Frame.MoneyAmount.Text = "Spent: " .. formattedSpent .. " R$!"
1 Like