魔兽世界Lua - If语句流程

我正在尝试为《魔兽世界》创建插件。我创建了一个函数,以检查当前玩家是否已添加了某个增益状态。

Button:RegisterEvent("UNIT_AURA");
local function auraGained(self, event, ...)
    if (UnitAura("player", "Heating Up")) then
             if (heatingUpIsActive ~= 1) then
             heatingUpIsActive = heatingUpIsActive + 1
            print (heatingUpIsActive)
            end
    end
Button:SetScript("OnEvent", auraGained);

这很好用,但是如何检查UnitAura是否不是“ Heating Up”?

此外,我希望heatingUpIsActive是一个布尔值,但是当我这样做时,似乎会出问题。在Lua中创建布尔值的正确方法是什么?

点赞
用户582
用户582

你的函数没有检查引发事件的光环。它在任何 UNIT_AURA 事件到来时都在寻找“Heating Up”。实际上,看起来 UNIT_AURA 事件并没有告诉你是哪个光环触发了它。因此,你不能“检查 UnitAura 是否不是“Heating Up”,因为你根本不知道是哪个光环引发了事件。也许甚至是几个光环同时触发。

然而,该事件告诉你哪个单位获得了光环。它是第一个 vararg。在执行某些操作之前,你应该检查它是否为“player”。

local unitid = ...
if unitid ~= "player" then return end

此外,你没有解释布尔值出现的问题。你应该只需说出类似下面的话即可

if not heatingUpIsActive then
    heatingUpIsActive = true
    -- do whatever you want
end

尽管我从你的代码中并没有看到该变量的声明。像这样使用全局变量是不好的,所以你应该在函数声明之前声明

local heatingUpIsActive

比如下面这样:

local heatingUpIsActive
local function auraGained(self, event, ...)
    -- ...
2013-04-04 23:08:53