在 Roblox 中,我想要创建一个功能。如果玩家在背包中有工具并触摸砖块,则给予玩家 2000 现金

在 Roblox 中,我想要创建一个功能。如果玩家在背包中有工具并触摸砖块,则给予玩家 2000 现金,并让工具消失。我已经为现金制作了排行榜,并已将工具放在服务器存储上。

点赞
用户15250066
用户15250066

首先,你可以通过使用 .Touched 事件来开始触发每当对象被触摸时。.Touched 事件只能携带一个参数;碰触的对象。例如,如果一个玩家(R15)踩在地板上的方块上,击中部分的对象可能是“左脚”。以下是 .Touched 函数的骨架:

<Part>.Touched:Connect(function(hit)
     print(hit.Name) --根据上面的示例,这将打印“左脚”
end)

由于任何对象都可以触摸到部件,但并不是所有对象都有背包,因此您首先需要检查击中您的部件的对象是否来自实际玩家。您可以通过查找“Humanoid”来做到这一点,它将是接触的物体的兄弟姊妹。您可以通过添加以下代码来实现:

<Part>.Touched:Connect(function(hit)
     if hit.Parent:FindFirstChild("Humanoid") then
          print(hit.Name) --根据上面的示例,这将打印“左脚”
     end
end)

现在我们已经验证了触碰到我们部件的是一个玩家,我们可以使用 game.PlayersGetPlayerFromCharacter() 函数。一个“角色”就是你在 game.workspace 中的玩家,所以通过调用这个函数,它从你的角色中得到了 game.Players 中的玩家。这类似于 game.Players:FindFirstChild(<Player>.Name)。任何一个都可以,但是我将在此示例中使用第一个。将以下代码添加到您的代码中,现在它应该如下所示:

<Part>.Touched:Connect(function(hit)
     if hit.Parent:FindFirstChild("Humanoid") then
          local player = game.Players:GetPlayerFromCharacter(hit.Parent)
     end
end)

正如您所知道的,“背包”是 game.Players 中玩家的直接子节点,因此我们可以使用 player.Backpack 来找到我们的背包。现在我们可以使用与检查“人形”相同的方式来检查我们的“工具”:

<Part>.Touched:Connect(function(hit)
     if hit.Parent:FindFirstChild("Humanoid") then
          local player = game.Players:GetPlayerFromCharacter(hit.Parent)
          local Backpack = player.Backpack
          if Backpack:FindFirstChild("<Tool Name>") then
               player.leaderstats.<Money>.Value += 2000 --给他们 2000 现金
          end
     end
end)

如果您之前将工具克隆到玩家的背包中,则可以执行 Backpack.<Tool Name>:Destroy() 以将其删除/消失。

2021-05-14 23:47:38