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 .