首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >魔兽世界Lua -改变框架:SetAttribute()

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

Stack Overflow用户
提问于 2013-04-05 08:07:03
回答 1查看 2.3K关注 0票数 1

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

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

到目前为止,我的代码如下:

代码语言:javascript
复制
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,我希望按钮转换为("spell", "Inferno Blast")而不是("spell", "Fireball"),但如果我将其放入if语句的正确部分,它将不起作用。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-05 16:21:14

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

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15823838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档