头像检查脚本总是 returns "Instance"

Avatar inspect script always returns "Instance"

我正在尝试制作一款游戏,允许玩家坐在特定的座位上并与他们的 UserId 或用户名聊天来检查任何其他玩家的头像,但是当用户输入用户名时,该功能总是 returns Instance,这很烦人。但是,UserId 有效。这是我的代码:

-- client-side script
local Players=game:GetService("Players")
local Player=Players.LocalPlayer
local GuiService=game:GetService("GuiService")
local Rep=game:GetService("ReplicatedStorage")
repeat wait(0.1) until Player.Character
local h=Player.Character:WaitForChild("Humanoid")
GuiService:SetInspectMenuEnabled(false)
Player.Chatted:Connect(function(m)
    if h.Sit then
        if #string.split(m," ")==1 then
            if tonumber(m)~=nil then
                if h.SeatPart.Name=="AvatarInspectMenu" then
                    local id=tonumber(m)
                    GuiService:InspectPlayerFromUserId(id)
                end
            else
                if h.SeatPart.Name=="AvatarInspectMenu" then
                    local id=Rep.Idify:InvokeServer(m)
                    GuiService:InspectPlayerFromUserId(id)
                end
            end
        end
    end
end)

--server-side script
local cache={}
game:GetService("ReplicatedStorage").Idify.OnServerInvoke=function(n)
    if cache[n] then return cache[n] end
    local player=game.Players:FindFirstChild(n)
    if player then
        cache[n]=player.UserId
        return player.UserId
    end
    local id
    pcall(function ()
        id = game.Players:GetUserIdFromNameAsync(n)
    end)
    cache[n] = id
    return id
end

客户端脚本运行良好,当我在椅子上聊天 1 时,我得到了 ROBLOX 的头像检查菜单,但是当我在椅子上聊天 ROBLOX 时,我得到 Instancenil 的头像检查菜单。有什么可能的方法来修复这个错误吗?

传递给 OnServerInvoke 的第一个参数是调用该函数的玩家,参见 OnServerInvoke

既然你对此不感兴趣,你可以使用虚拟下划线忽略它,如下所示:

game:GetService("ReplicatedStorage").Idify.OnServerInvoke=function(_, n)