魔兽世界Lua - If语句流



我正在尝试为魔兽世界创建一个插件。我已经创建了一个函数来检查当前玩家是否添加了buff。

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是一个boolean,但它似乎不喜欢当我这样做。在Lua中创建boolean的正确方法是什么?

您的函数没有检查导致事件的光环。只要UNIT_AURA的活动来了,它就会寻找"升温"。事实上,看起来UNIT_AURA事件实际上并没有告诉你是哪个光环触发了它。所以你不能"检查UnitAura是否不是 "Heating Up"",因为你根本不知道是什么光环导致了这个事件。甚至可能同时有好几个光环。

然而,该事件确实告诉你哪个单位获得了光环。这是第一个变量。在做一些事情之前,你可能应该检查确保它是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, ...)
    -- ...

相关内容

  • 没有找到相关文章

最新更新