PHP код:
local Core = CreateFrame("MessageFrame", nil, UIParent);
Core:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED");
Core:SetScript("OnEvent", function(self, event, ...) return self[event](self, ...) end);
Core:SetPoint("CENTER", UIParent, 0, 0); -- Расположение фрейма относительно центра;
Core:SetSize(512, 60); -- Размер фрейма;
Core:SetTimeVisible(2); -- Длительность отображения текста (сек.);
Core:SetFadeDuration(0.5);
Core:SetFading(true);
Core:SetIndentedWordWrap(true);
Core:SetInsertMode("TOP");
Core:SetFrameStrata("DIALOG");
Core:SetFrameLevel(1);
Core:SetToplevel(true);
Core:SetFontObject("ErrorFont"); -- Шрифт;
local select, ipairs, pairs = select, ipairs, pairs;
local UnitGUID, GetSpellInfo = UnitGUID, GetSpellInfo;
local SpellIDs = {
47486, -- Mortal Strike (Rank 8);
47465, -- Rend (Rank 10);
1715 -- Hamstring;
};
local AvoidanceList = {
["BLOCK"] = "BLOCK",
["DODGE"] = "DODGE",
["MISS"] = "MISS",
["PARRY"] = "PARRY"
};
local abilities = {}; -- localized names;
for i, v in ipairs(SpellIDs) do
local Name = GetSpellInfo(v);
if Name then abilities[i] = Name; end;
end;
function Core:IsMissed(GUID, missType, avoidance, spellName)
if missType ~= avoidance then return false; end;
if GUID ~= UnitGUID("player") then return false; end;
for i, v in ipairs(abilities) do
if not spellName or v == spellName then return true; end;
end;
return false;
end;
function Core:COMBAT_LOG_EVENT_UNFILTERED(...)
local _, eventType, sourceGUID, _, _, destGUID, _, _, _, spellName = select(1, ...);
if eventType == "SPELL_MISSED" then
local missType = select(12, ...);
if self:IsMissed(destGUID, missType, "REFLECT", nil) then
self:AddMessage("Reflected [|cff20B2AA" ..spellName.. "|r]");
end;
for Key, Value in pairs(AvoidanceList) do
if self:IsMissed(sourceGUID, missType, Key, spellName) then
self:AddMessage("[|cff20B2AA" ..spellName.. "|r] "..Value);
end;
end;
end;
end;