Avatar检查脚本总是返回"Instance"

我正在尝试制作一个游戏,允许玩家坐在特定的座位上并聊天他们的UserId或用户名来检查其他玩家的Avatar,但是当用户输入用户名时,该函数总是返回Instance,这很烦人。 然而,UserId可以正常工作。这是我的代码:

--客户端脚本
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)

--服务器端脚本
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 Avatar检查菜单,但当我在椅子上聊天"ROBLOX"时,我得到了一个Avatar检查菜单的Instancenil。 有没有可能修复这个错误?

点赞
用户1296374
用户1296374

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

由于你对此不感兴趣,可以使用一个虚拟下划线将其忽略,像这样:

game:GetService("ReplicatedStorage").Idify.OnServerInvoke=function(_, n)
2020-05-03 01:55:52