我无法修复 Lua 值覆盖其他值的问题

好吧,我有一个代码片段,用于 Garry's Mod Darkrp 的一种杂草培养系统,它允许您创建 4 个盆,用计时器往下计数来种植种子。 然而,一旦另一个盆上,就会取消其他盆,我不确定如何修复这个问题。

谢谢 dynamics

if hitEnt:GetClass() == "seed_weed" then

  if self.Entity:GetNWBool("Plantable") == true then

    self.Entity:SetNWBool("Plantable", false)

    hitEnt:Remove()

    self.Entity:SetModel("models/nater/weedplant_pot_planted.mdl")

    timer.Create("Stage2_", GrowTime/7, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing1.mdl")

    end)

    timer.Create("Stage3_", GrowTime/6, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing2.mdl")

    end)

    timer.Create("Stage4_", GrowTime/5, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing3.mdl")

    end)

    timer.Create("Stage5_", GrowTime/4, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing4.mdl")

    end)

    timer.Create("Stage6_", GrowTime/3, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing5.mdl")

    end)

    timer.Create("Stage7_", GrowTime/2, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing6.mdl")

    end)

    timer.Create("Stage8_", GrowTime/1, 1, function()

      self.Entity:SetModel("models/nater/weedplant_pot_growing7.mdl")

      self.Entity:SetNWBool("Usable", true)

    end)

  end

end

end

function ENT:OnRemove()

  timer.Destroy("Stage2_")

  timer.Destroy("Stage3_")

  timer.Destroy("Stage4_")

  timer.Destroy("Stage5_")

  timer.Destroy("Stage6_")

  timer.Destroy("Stage7_")

  timer.Destroy("Stage8_")

end
点赞
用户12045905
用户12045905

我猜测这是因为创建的计时器不是唯一的。例如,你在一个锅里创建了一个叫做“Stage2_”的计时器。然后你创建了另一个锅,它也创建了一个叫做“Stage2_”的计时器,覆盖了旧的计时器。

考虑为每个被生成的锅添加某种唯一标识符。

例如,你可以通过添加一个变量来实现,每当生成一个锅时该变量就加一,然后将计时器的名称设置为“Stage2_”+变量。

确保变量是在实体本身的作用域之外定义的,否则每次生成实体的实例时都会重新声明变量。

2021-03-18 16:54:53