3

我对lua脚本很陌生..现在我正在尝试在游戏老板中编码

local function SlitherEvents(event, creature, attacker, damage)
    if(creature:GetHealthPct() <= 60) then
        creature:SendUnitYell("Will punish you all",0)
        creature:RegisterEvent(AirBurst, 1000, 0) -- 1 seconds
        return
    end
end

这应该让老板在他的健康= 60%或更少时说话,但它应该运行一次,当我运行老板一直在说和攻击的代码时。我怎样才能让它运行一次?

4

1 回答 1

3

使用在函数回调范围之外创建的布尔值:

local has_talked = false
local function SlitherEvents(event, creature, attacker, damage)
  if creature:GetHealthPct() <= 60 and not has_talked then
    has_talked = true
    creature:SendUnitYell("Will punish you all",0)
    creature:RegisterEvent(AirBurst, 1000, 1) -- 1 seconds
    return
  end
end

编辑

如果您实际使用的是Eluna 引擎的RegisterEvent调用,请将重复次数设置为1而不是 0。这将解决您遇到的问题。

于 2017-02-12T23:32:30.613 回答