我正在制作一个gui,当玩家与邻近提示交互时显示,但是,我希望脚本检查玩家是否在他的库存中拥有该工具。如果它有这个工具,那么什么都不要做(不要)。(显示gui),如果没有工具,则触发一个事件。我试图使它,但这个错误一直显示工作区部分。脚本:6:尝试用'Backpack'索引nil脚本如下:
debounce = true
script.Parent.ProximityPrompt.Triggered:Connect(function(player)
if debounce then
debounce = false
local noob = game.Players:GetPlayerFromCharacter(player.Parent)
local Tool = noob.Backpack:FindFirstChild("Gunball")
if Tool == nil then
game.ReplicatedStorage.RemoteEvent:FireClient(player)
debounce = true
end
end
end)
这是gui脚本(本地),即使我真的不认为这是有用的..:
game.ReplicatedStorage.RemoteEvent.OnClientEvent:Connect(function()
script.Parent.Visible = true
end)
工作区。脚本:6:尝试用'Backpack'索引nil
local Tool = noob.Backpack:FindFirstChild("Gunball")
这里noob
为nil
。
所以在local noob = game.Players:GetPlayerFromCharacter(player.Parent)
中,game.Players:GetPlayerFromCharacter(player.Parent)
返回nil
。
根据Roblox文档
这个函数返回与给定的播放器相关联的播放器的球员。字符,如果找不到则为nil。它相当于以下函数:
local function getPlayerFromCharacter(character) for _, player in pairs(game:GetService("Players"):GetPlayers()) do if player.Character == character then return player end end end
所以player
,player.Parent
的Parent
似乎不是与任何玩家相关的Character
。
为什么像Character
这样的玩家属性应该是玩家的父属性?我不是Roblox专家,但这对我来说似乎没有任何意义。
如果你想检查触发ProximitPrompt的玩家是否有一些物品,为什么不使用player
?我是说那是触发它的玩家。所以检查它的背包,而不是一些父母角色的东西。