魔兽世界Lua-改变框架:SetAttribute()

魔兽世界Lua-改变框架:SetAttribute(),lua,add-on,world-of-warcraft,Lua,Add On,World Of Warcraft,我正在为魔兽世界开发一个插件,它彻底改变了界面以适应我的游戏风格 在这个插件中,我想有一个大按钮,作为我的法师的“主dps旋转”。我希望它能根据在任何给定时间的最佳状态来改变施法方式。它不会自动施法,它只是为用户提供了下一个最好的选择 以下是我目前的代码: print "Interface Overhaul : LOADED" heatingUpIsActive = false print(heatingUpIsActive) local Button = CreateFrame("Butto

我正在为魔兽世界开发一个插件,它彻底改变了界面以适应我的游戏风格

在这个插件中,我想有一个大按钮,作为我的法师的“主dps旋转”。我希望它能根据在任何给定时间的最佳状态来改变施法方式。它不会自动施法,它只是为用户提供了下一个最好的选择

以下是我目前的代码:

print "Interface Overhaul : LOADED"
heatingUpIsActive = false
print(heatingUpIsActive)

local Button = CreateFrame("Button", "MyButton", UIParent,"SecureActionButtonTemplate")
Button:SetWidth(256)
Button:SetHeight(256)
Button:SetFrameStrata("HIGH")
Button:SetPoint("LEFT")
Button:SetText("Main Rotation")
Button:RegisterForClicks("AnyUp")
Button:SetAttribute("type", "spell")
Button:SetAttribute("spell", "Fireball")

Button:RegisterEvent("UNIT_AURA");
local function auraGained(self, event, ...)

    if (UnitAura("player", "Heating Up")) then
             if (heatingUpIsActive == false) then
             heatingUpIsActive = true
             print (heatingUpIsActive)
             print ("Heating Up is active!")
             Button:SetAttribute("spell", "Inferno Blast")
             end
            else
             heatingUpIsActive = false
             print("Heating Up is NOT active.")
             print(heatingUpIsActive)
    end
end
Button:SetScript("OnEvent", auraGained);

local tex = Button:CreateTexture("ARTWORK");
tex:SetPoint("LEFT")
tex:SetWidth(256)
tex:SetHeight(256)
tex:SetTexture("Interface\\AddOns\\InterfaceOverhaul\\Button2")
如果
heatingUpIsActive==true
,我希望该按钮可以施放
(“法术”、“地狱爆炸”)
,而不是
(“法术”、“火球”)
,但如果我将其放入
If
语句的正确部分,则该按钮不起作用


有什么想法吗?

正如穆德所说,你不能再在战斗中重新绑定按钮了。暴雪做出这一改变是为了防止机器人自动作战。值得注意的是,为了施展法术,你需要使用一个安全模板,这些安全模板只允许修改属性,这些属性控制你在非战斗状态下的行为。所以你不能在战斗中改变一键法术。类似地,它们还阻止您修改属性,如它们的位置或可见性,因此您也不能移动鼠标下的按钮


你能做的最好的事情就是显示一个视觉指示器,指示应该施放什么法术,但要依靠用户实际按下正确的按钮。

正如穆德所说,你不能在战斗中重新绑定按钮了。暴雪做出这一改变是为了防止机器人自动作战。值得注意的是,为了施展法术,你需要使用一个安全模板,这些安全模板只允许修改属性,这些属性控制你在非战斗状态下的行为。所以你不能在战斗中改变一键法术。类似地,它们还阻止您修改属性,如它们的位置或可见性,因此您也不能移动鼠标下的按钮


你所能做的最好的事情就是显示一个视觉指示器,指示应该施法的法术,但依靠用户实际按下正确的按钮。

“如果我施法,它就不起作用”——你告诉我们你没有施法的代码不起作用,这是毫无价值的。向我们展示不起作用的实际代码。如果你试图以编程方式重新绑定按钮,那么在战斗中这一刻是行不通的。@Mud“如果你试图以编程方式重新绑定按钮…”你似乎明白了要点,但我编辑了这篇文章以反映我之前提到的内容。有什么办法可以解决这个问题吗?没有。这在5年或6年前是可能的,人们习惯将一把钥匙绑定到他们的整个轮换中,让脚本为他们选择咒语。然后暴雪彻底改造了系统以防止这种情况。你可以做你最初说你想做的事情(即不施法,只向用户展示下一个法术),但你不能在战斗中根据脚本逻辑进行一键切换。现在法师轮换不是只有一两个按钮吗“如果我这样做就不起作用”——你告诉我们你没有提供的代码不起作用,这是毫无价值的。向我们展示不起作用的实际代码。如果你试图以编程方式重新绑定按钮,那么在战斗中这一刻是行不通的。@Mud“如果你试图以编程方式重新绑定按钮…”你似乎明白了要点,但我编辑了这篇文章以反映我之前提到的内容。有什么办法可以解决这个问题吗?没有。这在5年或6年前是可能的,人们习惯将一把钥匙绑定到他们的整个轮换中,让脚本为他们选择咒语。然后暴雪彻底改造了系统以防止这种情况。你可以做你最初说你想做的事情(即不施法,只向用户展示下一个法术),但你不能在战斗中根据脚本逻辑进行一键切换。现在法师轮换不是只有一两个按钮吗