Как отловить событие мгновенного или читающего заклинания? - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь реализовать скрипт, который ловит, когда мой персонаж разыгрывает определенное заклинание, например, Болт Хаоса , у которого есть время чтения, или Shadow Word: Pain (мгновенное сотворение). В процессе поиска я обнаружил «ченнелинговые» события, но пока не совсем понял.

Я ожидаю, чтобы вызвать пользовательское сообщение или воспроизвести аудио, когда персонаж произносит определенное заклинание.

1 Ответ

0 голосов
/ 08 ноября 2019

UNIT_SPELLCAST_SENT : "юнит", "цель", "castGUID", spellID "

UNIT_SPELLCAST_SUCCEEDED :" цель "," castGUID ", spellID

У каждого заклинания есть уникальный castGUID . Он создается, когда вы начинаете читать с UNIT_SPELLCAST_SENT, и появляется в конце чтения / канала или сразу в UNIT_SPELLCAST_SUCCEEDED.

Итаквсякий раз, когда unit == " player " , просто запишите castGUID , а затем ищите заклинания, заканчивающиеся с тем же значением. Это, как вы знаете, это был не кто-тозаклинание else.

Тем временем вы можете найти 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("I am casting something");
            myCurrentCast = arg3;
        elseif (event == "UNIT_SPELLCAST_SUCCEEDED" and arg2 == myCurrentCast) then
            if (arg3 == 196670) then
                print("I just finished casting Chaos Bolt!");
            elseif (arg3 == 589) then
                print("Look at my instant Shadow Word: Pain.  Isn't it cool?");
            end
        end
    end
);

В этом примере создается рамка, регистрируется два события, а затем создается обработчик событий для распечатки причудливого текста, когда вы разыгрываете два примера заклинаний. Для учебника по обработчикам событий я рекомендую Wowpedia / Handling_events .

...