我正在尝试为魔兽世界创建一个插件。我已经创建了一个函数来检查当前玩家是否添加了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, ...)
-- ...