Цитата Сообщение от decemberx Посмотреть сообщение
иконки с кулдаунами не сдаются и взрывают мой моск, поэтому вернулся к тому с чего начал.
PHP код:
local AurasTable,bAurasTable = {},{
    [
"WARLOCK"] = {[47813] = 18,[47811] = 24,[17800] = 30,[47865] = 300,[47864] = 24,[47867] = 60},
    [
"HUNTER"] = {[49001] = 15},["SHAMAN"] = {[49233] = 18},["DEATHKNIGHT"] = {[55095] = 15,[55078] = 15},
    [
"DRUID"] = {[770] = 300,[48468] = 12,[48463] = 12,[16857] = 300,[48566] = 60,[48574] = 9,[49800] = 12},
    [
"PRIEST"] = {[48125] = 18,[48160] = 15,[48300] = 24,
    [
"tier9shp"] = {48072,48073,48074,48075,48076,48097,48098,48099,48100,48101,48078,48077,48081,48079,48080,48085,
    
48086,48082,48084,48083,48095,48096,48092,48094,48093,48088,48087,48091,48089,48090}}}
    
local function GetDur(huid)
    
local _,huclass UnitClass("player")
    
local hudur bAurasTable[huclass][huid]
    
local function mbonusset(msetlocal amount=
        
for _,v in ipairs(mset) do if IsEquippedItem(vthen amount amount 1 end end return amount 
    end
    local 
function addhaste() return hudur/(10000/(select(7,GetSpellInfo(18960)))) end
    local 
function mglyph(gl) for i=1,do if select(3,GetGlyphSocketInfo(i)) == gl then return true end end end
    
if huclass == "WARLOCK" and huid == 47813 and mglyph(70947then return addhaste()
    elseif 
huclass == "DEATHKNIGHT" then return hudur + (select(5,GetTalentInfo(3,4))) * 
    
elseif huclass == "SHAMAN" then return addhaste()
    elseif 
huclass == "HUNTER" and mglyph(56832then return hudur 6
    
elseif huclass == "DRUID" then 
        
if huid == 48468 then hudur hudur + (select(5,GetTalentInfo(1,8))) * 2 end
        
if huid == 48463 then hudur hudur + (select(5,GetTalentInfo(1,8))) * 3 end
        
if huid == 49800 and mglyph(54818then return hudur 4 end
    
elseif huid == "PRIEST" then 
        
if huid == 48160 then if mbonusset(mbasetbl["PRIEST"]["tier9shp"]) > 1 then hudur hudur 6 end end
        
if (huid == 48160 or huid == 48300) and GetShapeshiftForm("player") == 1 then return addhaste() end
    end
    
return hudur
end

function huUnitAura(unit,index)
    
local hutguid=UnitGUID(unit)
    if 
hutguid and AurasTable[hutguid] and AurasTable[hutguid][indexthen return 
        
AurasTable[hutguid][index][1], 
        
AurasTable[hutguid][index][2],
        
AurasTable[hutguid][index][3], 
        
AurasTable[hutguid][index][4], 
        
AurasTable[hutguid][index][5], 
        
AurasTable[hutguid][index][6], 
        
AurasTable[hutguid][index][7], 
        
AurasTable[hutguid][index][8], 
        
AurasTable[hutguid][index][9], 
        
AurasTable[hutguid][index][10],
        
AurasTable[hutguid][index][11]
    
end
end

local 
function mfunc(self,event,...)
    if 
select(3,...) == UnitGUID("player") and select(12,...) == "DEBUFF" then 
        local _
,huevent,_,_,_,hutguid,_,_,huid=...
        
local huname,hurank,huicon=GetSpellInfo(huid)
        
local huduration=GetDur(huid)
        
local huexpires=huduration+GetTime()
        if 
not AurasTable[hutguidthen AurasTable[hutguid] = {} end
        
if huevent == "SPELL_AURA_APPLIED" then 
            table
.insert(AurasTable[hutguid],{huname,hurank,huicon,0,"",huduration,huexpires,"player","","",huid})
        elseif 
huevent == "SPELL_AURA_REFRESH" then 
            
for i=1,#AurasTable[hutguid] do 
                
if AurasTable[hutguid][i][11] == huid then 
                    AurasTable
[hutguid][i][7]=huexpires 
                end 
            end
        
elseif huevent == "SPELL_AURA_REMOVED" then 
            
for i=1,#AurasTable[hutguid] do 
                
if AurasTable[hutguid][ithen 
                    
if AurasTable[hutguid][i][11] == huid then 
                        table
.remove(AurasTable[hutguid],i
                    
end
                end 
            end
        end
    end
end

local mframe 
CreateFrame("Frame"nilUIParent)
mframe:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
mframe:SetScript("OnEvent"mfunc
немного изменил TellMeWhen, и теперь при условии что фильтр "player|harmful" и UnitAura не нашла дебафф, он обращается уже к моей huUnitAura. работает, но пока без стаков, и база спеллов далеко не полная.

---------
Символ полосования и Символ звездного огня проблема с ними. как узнать какой спелл обновил дебафф?
SPELL_AURA_REFRESH идет и какой то из его аргументов возвращает