Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How do I use GetUserInfosByUserIdsAsync instead of GetNameFromUserIdAsync?

Asked by 1 year ago
Edited 1 year ago

I need a way to convert this from GetNameFromUserIdAsync to GetUserInfosByUserIdsAsync so I can get both displayname and usernames for changing GUI text.

"Captain" is a Title in the _G.ShipPositions Table that has UserID as the Key and Title as the value.

wait(1)
sp = script.Parent

local function getCurrentPlayerOfTitle(title: string)
    for k,v in pairs(_G.ShipPositions or {}) do
        if title == "N/A" then print ("Key Was N/A Returning Unassigned CAPTAIN SCRIPT") return "Unassigned" end
        if v == title then return game:GetService("Players"):GetNameFromUserIdAsync(k) or "Unassigned" end
    end
    return "Unassigned"
end

coroutine.wrap(function()
    while task.wait() do
        sp.Text = getCurrentPlayerOfTitle("Captain").."'s Quarters"
    end
end)()

Update

I am currently trying this, however i am not getting successOrNot to print

wait(1)
unl = script.Parent.UserNameLabel
dnl = script.Parent.DisplayNameLabel

local UserService = game:GetService("UserService")

local ShipRole = "Captain"


local function getCurrentPlayerOfTitle(title: string)
    for k,v in pairs(_G.ShipPositions or {}) do
        if title == "N/A" then print ("Key Was N/A Returning Unassigned CAPTAIN SCRIPT") return "Unassigned" end
        if v == title then

            local successOrNot, result = pcall(function()
                --print ("Fetching Info")
                return UserService:GetUserInfosByUserIdsAsync(k)
            end)

            if successOrNot == true then
                print ("Success Is True")
                for user, userInfos in ipairs(result) do
                    print("Your UserId = "..userInfos.Id)
                    print("Your Username = "..userInfos.Username)
                    print("Your DisplayName = "..userInfos.DisplayName)

                    unl.Text = userInfos.Username.."'s "
                    dnl.Text = "("..userInfos.DisplayName..")"

                end
            end

        end
    end
end

coroutine.wrap(function()
    while task.wait() do
        getCurrentPlayerOfTitle(ShipRole)
    end
end)()

Answer this question