使用鼠标按钮选择目标

我有一个使用技能选择目标的想法。

当你没有或者已经选中一个敌人且自动自我施法关闭时,你会看到鼠标周围出现一个蓝色边框提示你选择一个目标。

我想知道是否可以左键点击将治疗法术用于队友1,右键点击用于队友2。

我已经做了一些测试:

local b = CreateFrame("Button", "MyButton", UIParent,"SecureActionButtonTemplate")
b:SetWidth(128)
b:SetHeight(128)
b:SetFrameStrata("MEDIUM")
b:SetPoint("CENTER")
b:RegisterForClicks("AnyDown")
b:SetAttribute("type", "spell")
b:SetAttribute("spell", x) --根据所使用的法术不同而变化
b:SetAttribute("unit", y) --根据点击不同而变化

b:RegisterEvent("ACTIONBAR_UPDATE_STATE");

local i = 1
local function foo(self, event, ...)
    print(event, i)
    i = i + 1 --只是为了在聊天窗口中查看其何时更新
end
b:SetScript("OnEvent", foo);

"ACTIONBAR_UPDATE_STATE" 是我能找到的唯一一个在用户需要使用鼠标选择目标时触发的事件。

我想如果我创建了一个按钮,能够从 "ACTIONBAR_UPDATE_STATE" 中获取已经按下的技能,然后根据左右键的操作,选择不同的目标,这样就能够改变按钮使用的技能。

但是,我似乎无法从 "ACTIONBAR_UPDATE_STATE" 中获取已经使用的技能,并且在屏幕中间拥有一个按钮,可能并不是最好的想法,因为它会妨碍我旋转相机。

由于我对编写脚本并不精通,因此希望得到一些帮助。 :)

点赞
用户2523387
用户2523387

除非我误解了,使用宏和修饰符可能会更容易实现。

如果你想保留法术的正常使用,即在没有选择目标的情况下使用(按下按钮,然后左键单击目标以施放),这是一个示例宏:

#showtooltip
/cast [mod:shift,@party1] [mod:ctrl,@party2] [] Spell

如果你在按下按键时按住 Shift,则目标为 party1;如果你按住 Ctrl,则目标为 party2;如果你没有按住任何键,则使用法术的默认行为。

2020-12-24 14:03:32