如何捕捉瞬发或咒语事件?

我正在尝试实现一个脚本,捕捉我的角色施放特定法术的时刻,例如具有施法时间的混沌箭或瞬发的**暗言术:痛**。在搜索中,我找到了“引导”事件,但我还不太理解。

我期望在角色施放特定法术时触发自定义消息或播放音频。

点赞
用户4889587
用户4889587

UNIT_SPELLCAST_SENT:unit,target,castGUID,spellID

UNIT_SPELLCAST_SUCCEEDED:target,castGUID,spellID

每个法术施放都有一个唯一的_castGUID_。当使用UNIT_SPELLCAST_SENT开始施法时,它会被创建,并且在施法/引导结束或立即在UNIT_SPELLCAST_SUCCEEDED中出现。

因此,每当_unit == " player"_时,只需记录_castGUID_,然后查找使用相同值完成的法术。这就是你知道这不是别人的法术的方法。

同时,您可以查找每个法术对应的_spellID_。在下面的示例中,我使用了您帖子中的两个(196670和589)。

local myFrame = CreateFrame("Frame");
local myCurrentCast;
myFrame:RegisterEvent("UNIT_SPELLCAST_SENT");
myFrame:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED");
myFrame:SetScript("OnEvent",
    function(self, event, arg1, arg2, arg3, arg4)
        if (event == "UNIT_SPELLCAST_SENT" and arg1 == "player") then
            print("我正在施法");
            myCurrentCast = arg3;
        elseif (event == "UNIT_SPELLCAST_SUCCEEDED" and arg2 == myCurrentCast) then
            if (arg3 == 196670) then
                print("我刚刚完成了混沌箭!");
            elseif (arg3 == 589) then
                print("看看我的即时暗言术:痛。很酷吧?");
            end
        end
    end
);

这个示例创建了一个框架,注册了这两个事件,然后创建了一个事件处理程序来在您施放这两个示例法术时打印出花哨的文本。关于事件处理程序的教程,我建议您查看Wowpedia/Handling_events

2019-11-08 01:29:28