【问题标题】:Lua Roblox How to set spicific players health to 0Lua Roblox 如何将特定玩家生命值设置为 0
【发布时间】:2020-04-25 09:45:57
【问题描述】:

我正在尝试在 Roblox 中制作一款游戏,让每个玩家都出现在一张地图上,并且他们必须尝试互相残杀。但是我的问题是当最后一个玩家离开时,我不知道如何在我的大厅中将他重生。我将游戏中的所有玩家都存储在一个数组中,一旦有人死亡,他们就会从数组中删除。我尝试将最后一个玩家的生命值设置为 0,但无论玩家以何种方式存储在数组中,都无法获取他们的类人生物。

这是我目前的代码:

if #plrs == 1 then
    plrs[1].Character.Humanoid.Health = 0
end

我正在像这样制作我的 plrs 数组:

local plrs = {}

for i, player in pairs(game.Players:GetPlayers()) do
    if player then
        table.insert(plrs,player) --Add each player to the Player array
    end
end

感谢您的帮助。

【问题讨论】:

  • 您能否介绍一下您是如何制作plrs 数组的?
  • 我更新了它以展示我是如何制作数组的,谢谢。

标签: lua roblox


【解决方案1】:

我建议使用player:LoadCharacter() 来强制生成新的玩家角色。这种方法的优点是不显示死亡画面,而是破坏旧角色并立即生成新角色。

您应该注意,此方法还将清除他们的背包和 playerGui,以防它们对您的游戏很重要。


作为旁注,不需要使用 for 循环来获取玩家,因为函数 game.Players:GetPlayers() 返回一个数组,因为它已经是。除非您对该循环中的玩家进行额外检查,否则您只需要这样:

local plrs = game.Players:GetPlayers()

【讨论】:

    【解决方案2】:

    感谢所有试图提供帮助的人。

    经过大量研究和阅读我的代码后,我发现了自己的问题。

    if #plrs == 1 then
        player.Character.Humanoid.Health = 0
    end
    

    【讨论】:

      【解决方案3】:

      这里有一个标准的索引错误。在代码中,您总是从 0 开始计数,并且您实际上是在请求数组中的 (plrs[1]) second 项。只需将您的代码更改为:

      if #plrs == 1 then
          plrs[0].Character.Humanoid.Health = 0
      end
      

      【讨论】:

      • "在 Lua 中习惯以索引 1 开始数组。Lua 库遵循此约定;因此,如果您的数组也以 1 开头,您将能够直接使用它们的函数。" - lua.org/pil/11.1.html
      • 这不是因为我有其他代码使用 plrs[1] 有效
      • 不,绝对不是,因为 lua 与大多数语言不同,它的数组从 0 开始。
      猜你喜欢
      • 1970-01-01
      • 2018-10-26
      • 2022-06-21
      • 1970-01-01
      • 2022-06-21
      • 2022-10-05
      • 2015-07-10
      • 2021-03-01
      • 2019-04-18
      相关资源
      最近更新 更多