Keep getting "Players:GetUserIdFromNameAsync() failed: Unknown user"

So should I just return to my old script?

This happens when use Studio local server test.

Just do print(variable_that_has_player_name)?

Yes, also your issue is that in a local test your userId will be -1 I’ll fix your code:

local dss = game:GetService("DataStoreService")
local coinsLead = dss:GetOrderedDataStore("coinsLead")
local holder = workspace:WaitForChild("Map"):WaitForChild("Town Square"):WaitForChild("Leaderboards"):WaitForChild("Leaderboard1"):WaitForChild("Backdrop"):WaitForChild("SurfaceGui"):WaitForChild("Holder")

local function updateLeaderboard()
	local success, err = pcall(function()
		local data = coinsLead:GetSortedAsync(false, 5)
		local coinsPage = data:GetCurrentPage()
		for rank, data in pairs(coinsPage) do 
			print(data.key)
if data.key > 0 then
			local name = game.Players:GetNameFromUserIdAsync(data.key)
			local coins = data.value
			local isOnLeaderboard = false
			for i, v in pairs(holder:GetChildren()) do
				if v.Player.Text == name then
					isOnLeaderboard = true
					break
				end
			end

			if coins and isOnLeaderboard == false then
				local newLbFrame = game.ReplicatedStorage:WaitForChild("LeaderboardFrame"):Clone()
				newLbFrame.PlayerTL.Text = name
				newLbFrame.CoinsTL.Text = coins
				newLbFrame.RankTL.Text = "#" .. rank
				newLbFrame.Position = UDim2.new(0,0,newLbFrame.Position.Y.Scale + (.08 * #holder:GetChildren()), 0)
				newLbFrame.Parent = holder
			end
		end
end
	end)
	if not success then
		warn(err)
	end
end

while true do
	wait(5)
	for _, player in pairs(game.Players:GetPlayers()) do
		coinsLead:SetAsync(player.UserId, player.leaderstats.Coins.Value)
	end

	for _, frame in pairs(holder:GetChildren()) do
		frame:Destroy()
	end

	updateLeaderboard()
	print("Leaderboard updated")

	wait(120)
end
1 Like

@RedKylegamer123 the above code should work, if so mark it as solution.

When I first used it it made an error saying I couldn’t compare a string with a number so I fixed it with tonumber() but then I ran into another error but I can’t see where it is coming from.


"Player is not a valid member of Frame “Workspace.Map.Town Square.Leaderboards.Leaderboard1.Backdrop.SurfaceGui.Holder.LeaderboardFrame”

Code currently:

local dss = game:GetService("DataStoreService")
local coinsLead = dss:GetOrderedDataStore("coinsLead")
local holder = workspace:WaitForChild("Map"):WaitForChild("Town Square"):WaitForChild("Leaderboards"):WaitForChild("Leaderboard1"):WaitForChild("Backdrop"):WaitForChild("SurfaceGui"):WaitForChild("Holder")

local function updateLeaderboard()
	local success, err = pcall(function()
		local data = coinsLead:GetSortedAsync(false, 5)
		local coinsPage = data:GetCurrentPage()
		for rank, data in pairs(coinsPage) do 
			if tonumber(data.key) > 0 then
				local name = game.Players:GetNameFromUserIdAsync(data.key)
				local coins = data.value
				local isOnLeaderboard = false
				for i, v in pairs(holder:GetChildren()) do
					if v.Player.Text == name then
						isOnLeaderboard = true
						break
					end
				end

				if coins and isOnLeaderboard == false then
					local newLbFrame = game.ReplicatedStorage:WaitForChild("LeaderboardFrame"):Clone()
					newLbFrame.PlayerTL.Text = name
					newLbFrame.CoinsTL.Text = coins
					newLbFrame.RankTL.Text = "#" .. rank
					newLbFrame.Position = UDim2.new(0,0,newLbFrame.Position.Y.Scale + (.08 * #holder:GetChildren()), 0)
					newLbFrame.Parent = holder
				end
			end
		end
	end)
	if not success then
		warn(err)
	end
end

while true do
	wait(5)
	for _, player in pairs(game.Players:GetPlayers()) do
		coinsLead:SetAsync(player.UserId, player.leaderstats.Coins.Value)
	end

	for _, frame in pairs(holder:GetChildren()) do
		frame:Destroy()
	end

	updateLeaderboard()
	print("Leaderboard updated")

	wait(120)
end

The TextLabel ‘Player’ likely doesn’t exist.

How would I fix this? I followed a tutorial on youtube so I don’t have full understanding of this.

Should fix the issue:

local dss = game:GetService("DataStoreService")
local coinsLead = dss:GetOrderedDataStore("coinsLead")
local holder = workspace:WaitForChild("Map"):WaitForChild("Town Square"):WaitForChild("Leaderboards"):WaitForChild("Leaderboard1"):WaitForChild("Backdrop"):WaitForChild("SurfaceGui"):WaitForChild("Holder")

local function updateLeaderboard()
	local success, err = pcall(function()
		local data = coinsLead:GetSortedAsync(false, 5)
		local coinsPage = data:GetCurrentPage()
		for rank, data in pairs(coinsPage) do 
			if tonumber(data.key) > 0 then
				local name = game.Players:GetNameFromUserIdAsync(data.key)
				local coins = data.value
				local isOnLeaderboard = false
				for i, v in pairs(holder:GetChildren()) do
					if v.PlayerTL.Text == name then
						isOnLeaderboard = true
						break
					end
				end

				if coins and isOnLeaderboard == false then
					local newLbFrame = game.ReplicatedStorage:WaitForChild("LeaderboardFrame"):Clone()
					newLbFrame.PlayerTL.Text = name
					newLbFrame.CoinsTL.Text = coins
					newLbFrame.RankTL.Text = "#" .. rank
					newLbFrame.Position = UDim2.new(0,0,newLbFrame.Position.Y.Scale + (.08 * #holder:GetChildren()), 0)
					newLbFrame.Parent = holder
				end
			end
		end
	end)
	if not success then
		warn(err)
	end
end

while true do
	wait(5)
	for _, player in pairs(game.Players:GetPlayers()) do
		coinsLead:SetAsync(player.UserId, player.leaderstats.Coins.Value)
	end

	for _, frame in pairs(holder:GetChildren()) do
		frame:Destroy()
	end

	updateLeaderboard()
	print("Leaderboard updated")

	wait(120)
end
2 Likes

Oh just noticed. I’m not sure if this is due to previous issues when testing but my friend is in #3 when there isn’t any #2. There hasn’t been anybody who else who played the game besides me and my friend.
image


local dss = game:GetService("DataStoreService")
local coinsLead = dss:GetOrderedDataStore("coinsLead")
local holder = workspace:WaitForChild("Map"):WaitForChild("Town Square"):WaitForChild("Leaderboards"):WaitForChild("Leaderboard1"):WaitForChild("Backdrop"):WaitForChild("SurfaceGui"):WaitForChild("Holder")

local function updateLeaderboard()
	local success, err = pcall(function()
		local data = coinsLead:GetSortedAsync(false, 5)
		local coinsPage = data:GetCurrentPage()
local rank = 0
		for _, data in pairs(coinsPage) do 
			if tonumber(data.key) > 0 then
rank += 1
				local name = game.Players:GetNameFromUserIdAsync(data.key)
				local coins = data.value
				local isOnLeaderboard = false
				for i, v in pairs(holder:GetChildren()) do
					if v.PlayerTL.Text == name then
						isOnLeaderboard = true
						break
					end
				end

				if coins and isOnLeaderboard == false then
					local newLbFrame = game.ReplicatedStorage:WaitForChild("LeaderboardFrame"):Clone()
					newLbFrame.PlayerTL.Text = name
					newLbFrame.CoinsTL.Text = coins
					newLbFrame.RankTL.Text = "#" .. rank
					newLbFrame.Position = UDim2.new(0,0,newLbFrame.Position.Y.Scale + (.08 * #holder:GetChildren()), 0)
					newLbFrame.Parent = holder
				end
			end
		end
	end)
	if not success then
		warn(err)
	end
end

while true do
	wait(5)
	for _, player in pairs(game.Players:GetPlayers()) do
		coinsLead:SetAsync(player.UserId, player.leaderstats.Coins.Value)
	end

	for _, frame in pairs(holder:GetChildren()) do
		frame:Destroy()
	end

	updateLeaderboard()
	print("Leaderboard updated")

	wait(120)
end
4 Likes

you saved my whole problem thanks alot

1 Like