当玩家与接触提示交互时,它会检查玩家是否有工具,如果没有则执行一个函数-ROBLOX STUDIO

我正在制作一个当玩家与接触提示交互时出现的GUI,但是,我想让脚本检查玩家是否有工具在他的库存中。如果有工具,则不做任何事情(不显示GUI),如果没有工具,则触发事件。我尝试制作它,但始终出现此错误 Workspace .Part.Script:6:尝试使用'Backpack'索引nil 以下是脚本:

debounce = true
script.Parent.ProximityPrompt.Triggered: Connect(function(player)
如果弹跳则
debounce = false
local noob = game.Players:GetPlayerFromCharacter(player.Parent)
local Tool = noob.Backpack:FindFirstChild(“Gunball”)

    如果工具为空,则

    game.ReplicatedStorage.RemoteEvent:FireClient(player)
    debounce = true
    end
end)

这是GUI脚本(本地脚本),即使我不认为它有用..:

game.ReplicatedStorage.RemoteEvent.OnClientEvent:Connect(function()
    script.Parent.Visible = true
end)
点赞
用户2858170
用户2858170
Workspace.Part.Script:6: 尝试使用 'Backpack' 对空值进行索引

这里的 noobnil

所以在 local noob = game.Players:GetPlayerFromCharacter(player.Parent) 中,game.Players:GetPlayerFromCharacter(player.Parent) 返回了 nil

根据Roblox文档中的描述:

该函数返回与给定的Player.Character相关联的Player,如果找不到,则返回nil。 它等同于以下函数:

local function getPlayerFromCharacter(character)
  for _, player in pairs(game:GetService("Players"):GetPlayers()) do
      if player.Character == character then
          return player
      end
  end
end

所以似乎playerParent,即 player.Parent 不是与任何玩家相关联的 Character

为什么像 Character 这样的玩家属性应该成为玩家的父对象? 我不是Roblox专家,但这对我来说似乎没有任何意义。

如果您想检查触发ProximitPrompt的玩家是否拥有某个物品,为什么不使用player?我的意思是这就是触发它的玩家。 因此检查它的背包,而不是一些父字符事务。

2021-02-27 14:36:14