Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
дополнение к аддонам на ауры

Упомянутые в теме пользователи:

Показано с 1 по 12 из 33

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Вышла минутка свободная , думаю дальше догадаешься , осталось самое простое , но емкое , это иконки сделать . Т.е при событии UNIT_AURA (не путать с API UnitAura) нужно делать перебор __auras и создавать ауры через CreateIcon , ее набросал тоже. Для этого нужна переменная id в самой иконке (ее при регистре будешь вешать на фрейм и для соответствующей ауры в мете), ну а дальше сопоставить 2 масива , массив с фреймами и массив с аурами , в случае если есть фрейма и нету id , привязывать ид лишнего ключа, если нет фреймы и есть лишний ключ - создать фрейму через CreateIcon . Ограничить количество иконок можно бряком , когда будешь сопоставлять 2 массив , у тебя будет итератор i = 1 , #__auras , если i больше нужного количества выводимых аур , тогда прервать работу итератора (break).


    PHP код:
    local __auras__base = {},{
        [
    "WARRIOR"] = {
            -- 
    кровопускание
            
    [47465] = false,
        }
    };

    local GetDuration;
    do
        
    local m_scaner CreateFrame("GameTooltip""m_scaner"nil"GameTooltipTemplate")
        
    m_scaner:SetOwner(WorldFrame"ANCHOR_NONE")
        
    local m_texttonumberselect ""tonumberselect
        GetDuration 
    = function(spellID)
            
    m_scaner:SetSpellByID(spellID)
            for 
    1m_scaner:GetNumRegions() do
                
    local region select(im_scaner:GetRegions())
                if 
    region and region:GetObjectType() == "FontString" then
                    m_text 
    region:GetText()
                    if 
    m_text then
                        m_text 
    m_text:match("%d+ сек.")
                        if 
    m_text then
                            
    return tonumber(m_text:match("%d+"))
                        
    end
                    end
                end
            end
        end
    end

    local RegisterAura
    do
        
    local GetSpellInfoGetTime GetSpellInfoGetTime
        local _
    , class = UnitClass("player")
        
    RegisterAura = function(destGUIDspellID)
            
    local spellNamespellRankspellIcon GetSpellInfo(spellID)
            if 
    not __auras[destGUIDthen __auras[destGUID] = {} end
            local currentTime
    duration GetTime(), __base[class][spellID]
            
    __auras[destGUID][spellID] = {
                
    id destGUID..spellID,
                
    spellID spellID,
                
    spellIcon spellIcon,
                
    startTime currentTime,
                
    endTime currentTime duration,
                
    duration duration,
                
    elapsed 0,
                
    remaining duration
            
    }
        
    end
    end

    local CreateIcon 
    = function(self)
        
        
    local t CreateFrame("frame"nilself)
        
    t:Hide()
        
    t:SetFrameStrata("MEDIUM")
        
    t:SetClampedToScreen(true)

        
    local ti t:CreateTexture(nil"BORDER")
        
    ti:SetAllPoints()
        
    ti:SetTexCoord(0.070.930.070.93)
        
    t.icon ti

        local cooldown 
    CreateFrame("Cooldown"nilt"CooldownFrameTemplate")
        
    cooldown:SetReverse(false)
        
    cooldown:SetAllPoints()
        
    t.cooldown cooldown
        
        local tt 
    cooldown:CreateFontString(nil"OVERLAY")
        
    tt:SetFont("Fonts\\FRIZQT__.TTF"11"OUTLINE")
        
    tt:SetPoint("BOTTOM"t01)
        
    tt:SetJustifyH("RIGHT")
        
    t.timeText tt
        
        
    return t
    end

    local f 
    CreateFrame("frame"nilUIParent)
    local OnEvent
    do
        
    local _, class = UnitClass("player")
        
    OnEvent = function(selfevent, ...)
            if 
    event=="COMBAT_LOG_EVENT" then
                local timestamp
    eventsourceGUIDsourceNamesourceFlagsdestGUIDdestNamedestFlagsspellID = ...
                if 
    event=="SPELL_AURA_APPLIED" or event=="SPELL_AURA_REFRESH" then
                    
    if sourceName ~= destName then
                        
    if __base[class] and not __base[class][spellIDthen
                            __base
    [class][spellID] = GetDuration(spellID)
                        
    end
                        
                        
    if __base[class] and __base[class][spellIDthen
                            RegisterAura
    (destGUIDspellID)
                        
    end
                    end
                end
            end
        end
    end

    f
    :RegisterEvent("COMBAT_LOG_EVENT")
    f:SetScript("OnEvent"OnEvent

  2. 1 пользователь сказал cпасибо DreamlØlz за это полезное сообщение:

    decemberx (28.11.2015)

Похожие темы

  1. Сохранение персонажа
    от Jester в разделе Отклонено
    Ответов: 12
    Последнее сообщение: 02.10.2013, 16:46
  2. Отсутствие соххранения персонажа
    от Протактиний в разделе Архив технического раздела
    Ответов: 2
    Последнее сообщение: 05.07.2013, 11:05
  3. Ответов: 3
    Последнее сообщение: 30.09.2012, 15:00
  4. Сохранение персонажа.
    от Сломленный в разделе Отклонено
    Ответов: 1
    Последнее сообщение: 24.01.2012, 00:18
  5. Сохранение персонажа
    от Шмерть в разделе Корзина
    Ответов: 5
    Последнее сообщение: 10.01.2012, 01:30

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •