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

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

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 12 из 33
  1. #1
    Старожил
    Регистрация
    16.10.2012
    Сообщений
    121
    Поблагодарил(а)
    8
    Получено благодарностей: 205 (сообщений: 132).
    Репутация: 694

    дополнение к аддонам на ауры

    -- удалите тему
    Последний раз редактировалось decemberx; 05.01.2016 в 15:32.

  2. #2
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Ну такой подход не верен.

    Так выглядит итератор у близзард:

    PHP код:
    for 140 do
    ...
    end 
    А так кто то пробовал перебирать ауры?

    PHP код:
    local i 1
    while true do
          
    local name_______isStealable UnitBuff("target"i)
          if 
    not name then break end
          i 
    1
    end 
    Возможно просто индекс твоей ауры выходит за предел итератора и поэтому ауру не выводит?

  3. #3
    Старожил
    Регистрация
    16.10.2012
    Сообщений
    121
    Поблагодарил(а)
    8
    Получено благодарностей: 205 (сообщений: 132).
    Репутация: 694
    -- удалите тему
    Последний раз редактировалось decemberx; 05.01.2016 в 15:32.

  4. #4
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Давай сделаю фильтр , который будет выводить только твои дебафы в определенном окошке , протестишь , если будет проглатывать ауры то дело уже в боссах.

    UnitDebuff и UnitBuff это то же самое , что и UnitAura, реализована UnitBuff так:

    PHP код:
    function UnitBuff(...)
        
    local unitindex = ...
        return 
    UnitAura(unitindex"HELPFUL")
    end 

  5. #5
    Старожил
    Регистрация
    16.10.2012
    Сообщений
    121
    Поблагодарил(а)
    8
    Получено благодарностей: 205 (сообщений: 132).
    Репутация: 694
    -- удалите тему
    Последний раз редактировалось decemberx; 05.01.2016 в 15:32.

  6. #6
    Старожил
    Регистрация
    16.10.2012
    Сообщений
    121
    Поблагодарил(а)
    8
    Получено благодарностей: 205 (сообщений: 132).
    Репутация: 694
    -- удалите тему
    Последний раз редактировалось decemberx; 05.01.2016 в 15:32.

  7. #7
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от decemberx Посмотреть сообщение
    с эвентами пока не разберался, с таблицами возможно чета не так, но начало есть)
    Блин , методы? Не не слышал) Создай обьект , мету или фрейму , для него сделай методы , это будет прототип твоего бафа , после чего создай еще мету , обзави ее к примеру спелл_бд и там уже заполняй поля типа класс->spel->spell

    - - - Updated - - -

    нужно каким то образом получать инфу со спела (тот текст который появляется при наведении мышкой) и получать без тутипа ...

    - - - Updated - - -

    Имею в виду общий формат строки для GetSpellLink(spellId) , который будет возвращать только время ...

  8. #8
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Лови получение "времени весения"

    PHP код:
    local GetDuration;
    do
        
    local m_scaner CreateFrame("GameTooltip""ff%ds23e2cx"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 

  9. #9
    Старожил
    Регистрация
    16.10.2012
    Сообщений
    121
    Поблагодарил(а)
    8
    Получено благодарностей: 205 (сообщений: 132).
    Репутация: 694
    -- удалите тему
    Последний раз редактировалось decemberx; 05.01.2016 в 15:32.

  10. #10
    Инопланетянин
    Регистрация
    20.03.2012
    Сообщений
    4,201
    Поблагодарил(а)
    362
    Получено благодарностей: 1,439 (сообщений: 839).
    Репутация: 2399
    Цитата Сообщение от decemberx Посмотреть сообщение
    да я нуб и мой метод - метод тыка) с простыми таблицами не до конца разобрался, не говоря про эвенты,массивы,фреймы..

    инфа с тултипа не вариант, так как показывает только изначальное время длительности дебафа, неучитывая рейтинг скорости, да и далеко не все дебаффы зависят от скорости, тока у шп и у локов порча с глифом и может еще у кого-то... это получается надо в таблицу забивать к каждому заклинанию свою формулу/начальное время, если не получится найти через апи.
    Зачем? к примеру палец у шп:

    1) Получаем duration из тултипа
    2) duration - (duration * %haste)

    - - - Updated - - -

    Цитата Сообщение от decemberx Посмотреть сообщение
    да я нуб и мой метод - метод тыка) с простыми таблицами не до конца разобрался, не говоря про эвенты,массивы,фреймы..

    инфа с тултипа не вариант, так как показывает только изначальное время длительности дебафа, неучитывая рейтинг скорости, да и далеко не все дебаффы зависят от скорости, тока у шп и у локов порча с глифом и может еще у кого-то... это получается надо в таблицу забивать к каждому заклинанию свою формулу/начальное время, если не получится найти через апи.
    Зачем? к примеру палец у шп:

    1) Получаем duration из тултипа
    2) duration - (duration * %haste)

    Разумеется это не будет работать для игроков , у которых есть таланты понижающие время действия определенного типа дебафа.

    - - - Updated - - -

    Ну смари , там 1 к 1 хаста режет палец и тд у шп и это только в облике тьмы. Уверен у всех остальных классов аналогичные особенности.

  11. #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

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

    decemberx (28.11.2015)

  13. #12
    Старожил
    Регистрация
    16.10.2012
    Сообщений
    121
    Поблагодарил(а)
    8
    Получено благодарностей: 205 (сообщений: 132).
    Репутация: 694
    -- удалите тему
    Последний раз редактировалось decemberx; 05.01.2016 в 15:32.

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  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

Ваши права

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