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

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

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 12 из 16
  1. #1
    Активист
    Регистрация
    07.08.2013
    Сообщений
    68
    Поблагодарил(а)
    15
    Получено благодарностей: 12 (сообщений: 8).
    Репутация: 12

    за что отвечает -- timerCount -- в аддоне ?

    Есть небольшой аддон (DefileWhisper), он пишет в ПМ цели на которую вешается (осквернение). Условие аддона: Король-Лич должен быть в фокусе игрока.

    Я тут подумал, что таким образом можна реализовать и рекаст красного слизня на профе, а может и еще чего.., но не могу разобраться, за что отвечает -- timerCount -- , в самом аддоне его значение = 20, сам скрипт прилагаю, что означает цифра 20 ?

    В общем ищу рабочий скрипт на оповещение дебафа игрока - ему в ПМ, в идеале даже без фокуса босса.
    Знатоки аддонов, я знаю вы тут есть )) ХЕЛП !!!

    --

    function DefileWhisper:WaitFocusTarget()
    self.timerCount = self.timerCount + 1
    local current_ft = UnitName("focustarget")
    if self.focustarget ~= current_ft then
    SendChatMessage(">> "..GetSpellLink(72754).." на тебе, выбегай из рейда! <<", "WHISPER", nil, current_ft)
    SendChatMessage(">> "..GetSpellLink(72754).." на " .. current_ft .. " <<", "RAID_WARNING")
    self:CancelTimer(self.targetTimer)
    end
    -- If after 2 seconds, we haven't seen a change, we were probably too slow (unlikely)
    if self.timerCount == 20 then
    self:CancelTimer(self.targetTimer)
    end
    end

    function DefileWhisper:OnEnable()
    ChatFrame1:AddMessage("|cffffff00 DefileWhisper Loaded")
    self:RegisterEvent("UNIT_SPELLCAST_START")
    end

    function DefileWhisper:UNIT_SPELLCAST_START(event, unit, spell)
    if unit == "focus" then
    self.focustarget = UnitName("focustarget")
    if (self.focustarget ~= nil) and spell == "Осквернение" then
    self.timerCount = 0
    self.targetTimer = self:ScheduleRepeatingTimer("WaitFocusTarget", .1)
    end
    end
    end
    Последний раз редактировалось Leorazor90; 23.11.2016 в 11:38.

  2. #2
    Активист
    Регистрация
    07.08.2013
    Сообщений
    68
    Поблагодарил(а)
    15
    Получено благодарностей: 12 (сообщений: 8).
    Репутация: 12
    Цитата Сообщение от decemberx Посмотреть сообщение
    это таймер библиотеки асетимер, да он весь на библиотеках работает, я в них не хочу разбераца.

    по своему сделал
    PHP код:
    do
        
    local frame,Time CreateFrame("Frame"),0
        local spells 
    = {
            [
    GetSpellInfo(72754)] = GetSpellLink(72754),
            --[
    GetSpellInfo(48071)] = GetSpellLink(48071),
        }

        
    frame:SetScript("OnEvent", function(self,event,unit,spell)
            if 
    spells[spellthen 
                local T 
    GetTime()
                if 
    Time then
                    local name 
    UnitName(unit.."target")
                    if 
    name then
                        Time 
    10
                        SendChatMessage
    (">> "..spells[spell].." на тебе! <<""WHISPER"nilname)
                        
    SendChatMessage(">> "..spells[spell].." на " .. name .. " <<""RAID_WARNING")
                    
    end
                end
            end
        end
    )
        
    frame:RegisterEvent("UNIT_SPELLCAST_START")
    end 
    фокус не обязателен, таймер в 10сек. сделан просто как антиспам.
    для слизня ищешь ид спелла и добавляешь в таблицу также как и осквернение, через запятую.

    а вообще, неочень хорошая идея спамить в рейд и в личку. кому надо сами отследят
    ну большинство и сами отслеживают, но в рейдах с пугами есть и те кому желательно маякнуть ))

    благодарю за скрипт, пойду проверять в рабочих условиях !!!

  3. #3
    Старожил
    Регистрация
    08.02.2013
    Сообщений
    153
    Поблагодарил(а)
    8
    Получено благодарностей: 33 (сообщений: 25).
    Репутация: 33
    если человек не в состоянии поставить себе дбм или не видит у себя посреди экрана синюю надпсь, то чем ему поможет сообщение в лс?

  4. #4
    Активист
    Регистрация
    07.08.2013
    Сообщений
    68
    Поблагодарил(а)
    15
    Получено благодарностей: 12 (сообщений: 8).
    Репутация: 12
    Цитата Сообщение от Webver Посмотреть сообщение
    если человек не в состоянии поставить себе дбм или не видит у себя посреди экрана синюю надпсь, то чем ему поможет сообщение в лс?
    Мне аддон нужен не для себя, а для упрощения жизни других рейдеров, не самого высокого скила. Вот решил сделать что то подобное на самые важные ивенты: там их 8-10 от силы наберется - РС - халион 2 метки + савиана, ЦЛК - рекаст слизня на профе, тени на лане, глыба и освобожденка на синдре, чума и осквернение на личе.

    Все же лучше чем ничего

  5. #5
    Старожил
    Регистрация
    08.02.2013
    Сообщений
    153
    Поблагодарил(а)
    8
    Получено благодарностей: 33 (сообщений: 25).
    Репутация: 33
    я и имел ввиду того, кому ты собираешься аддоном писать в лс

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

    а вообще, неочень хорошая идея спамить в рейд и в личку. кому надо сами отследят
    Обязателен, если на UNIT_SPELLCAST_ , если не будет короля в цели\фокусе , ты не получишь ивент , но каст будет совершен , как результат не отошлет меседж. Можно на COMBAT_LOG_EVENT сделать , тогда не нужен будет не таргет не фокус. А на счет спама солидарен.

    - - - Updated - - -

    Цитата Сообщение от decemberx Посмотреть сообщение
    это таймер библиотеки асетимер, да он весь на библиотеках работает, я в них не хочу разбераца.
    Библиотека довольно хорошее дело на самом то деле (если конечно не шарить их в глобальный нейм спейс) , работает так - есть массив 2 массива , туда пихают записи , 1 как кэш , другой "горячий" , OnUpdate нонстоп в каждом кадре перебирает все элементы горячего массива суммируя ключ-значение , в основном это массив с кучей других массивов внутри под 1, 2 , 3 ... элементами, типа конец таймера , обратные вызовы и тд. В зависимости от типа таймера при достижении поставленной отметки идет обратный вызов заданной функции (в данном случае self.targetTimer = self:ScheduleRepeatingTimer("WaitFocusTarget", .1) ), после чего в зависимости от типа таймера он попадает в кэш для возможности использования в будущем без создания нового массива или же он зацикленный и просто сбрасывается на 0 , опять считая заданное время .

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

    Leorazor90 (25.11.2016)

  8. #7
    Абориген Аватар для SSSacred
    Регистрация
    13.09.2012
    Адрес
    Где-то там...
    Сообщений
    1,665
    Поблагодарил(а)
    150
    Получено благодарностей: 151 (сообщений: 116).
    Репутация: 93
    Цитата Сообщение от Webver Посмотреть сообщение
    если человек не в состоянии поставить себе дбм или не видит у себя посреди экрана синюю надпсь, то чем ему поможет сообщение в лс?
    Лишь апну, не пойму всей темы ради пуга, если, конечно, это именно ради пуг) Вся логика написана строкой выше. Либо может, либо ему хоть в рк/лс/посреди экрана ори, нифига он путевого не сделает.
    Цитата Сообщение от ℬовδай’κа
    Мне нечего душить в себе :)
    Был бы у меня ужик - душила бы его.

    За это у нас наказывают)

    Цитата Сообщение от Кодекс
    "Тяжелые" механики тоже затрагиваются или думаешь, что некоторые работающие заклинания сами собой ломаются?
    [свернуть]

  9. #8
    Абориген Аватар для SSSacred
    Регистрация
    13.09.2012
    Адрес
    Где-то там...
    Сообщений
    1,665
    Поблагодарил(а)
    150
    Получено благодарностей: 151 (сообщений: 116).
    Репутация: 93
    пишет, но там обычно таргертом объявляет сначала танка, что даст пугу "просрать" нужный момент, а вообще как учили "деды" раньше - достаточно держать лича в таргете и глянуть, кого он в каст(лужи) взял в цель, чтобы понимать под кем будет лужа^_^
    Цитата Сообщение от ℬовδай’κа
    Мне нечего душить в себе :)
    Был бы у меня ужик - душила бы его.

    За это у нас наказывают)

    Цитата Сообщение от Кодекс
    "Тяжелые" механики тоже затрагиваются или думаешь, что некоторые работающие заклинания сами собой ломаются?
    [свернуть]

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

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

    PHP код:
    local Gascloud CreateFrame("Frame")
    Gascloud:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    local COMBATLOG_OBJECT_REACTION_HOSTILEband    COMBATLOG_OBJECT_REACTION_HOSTILEbit.band
    Gascloud
    :SetScript("OnEvent",function(selfeventtimestampeventTypesourceGUIDsourceNamesourceFlagsdestGUIDdestNamedestFlags, ...)
        if 
    eventType == "SPELL_CAST_START" and band(sourceFlagsCOMBATLOG_OBJECT_REACTION_HOSTILE) == COMBATLOG_OBJECT_REACTION_HOSTILE then
            local spellID 
    = ...
            if 
    spellID==70215 then -- на счет айди не уверен
                SendChatMessage
    ("Красный слизнюк >> РЕКАСТ !","SAY")
            
    end
        end
    end


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

    Leorazor90 (25.11.2016)

  13. #11
    Активист
    Регистрация
    07.08.2013
    Сообщений
    68
    Поблагодарил(а)
    15
    Получено благодарностей: 12 (сообщений: 8).
    Репутация: 12
    Цитата Сообщение от DreamlØlz Посмотреть сообщение
    пример на COMBAT_LOG_EVENT

    PHP код:
    local Gascloud CreateFrame("Frame")
    Gascloud:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
    local COMBATLOG_OBJECT_REACTION_HOSTILEband    COMBATLOG_OBJECT_REACTION_HOSTILEbit.band
    Gascloud
    :SetScript("OnEvent",function(selfeventtimestampeventTypesourceGUIDsourceNamesourceFlagsdestGUIDdestNamedestFlags, ...)
        if 
    eventType == "SPELL_CAST_START" and band(sourceFlagsCOMBATLOG_OBJECT_REACTION_HOSTILE) == COMBATLOG_OBJECT_REACTION_HOSTILE then
            local spellID 
    = ...
            if 
    spellID==70215 then -- на счет айди не уверен
                SendChatMessage
    ("Красный слизнюк >> РЕКАСТ !","SAY")
            
    end
        end
    end

    благодарю !

  14. #12
    Местный
    Регистрация
    04.08.2012
    Сообщений
    36
    Поблагодарил(а)
    3
    Получено благодарностей: 3 (сообщений: 3).
    Репутация: 3
    большое количество обработчиков OnUpdate сильно садит фпс. а их много потому как во многих аддонах это используют для таймеров потому что это единственный полноценный способ реализовать таймер в аддоне.

    - - - Updated - - -

    так же не понял что имелось в виду под "нейм спейс". в контексте интерпретатора lua в WoW нету такого понятия. есть глобальные переменные и есть локальные переменные. доступ к глобальным переменным занимает больше времени. но для каждой глобальной переменной можно сделать локальную копию. имеет место быть выбор между процессорным временем и оперативной памятью.

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

Похожие темы

  1. Разместил на аукционе вещи , ни денег ни вещей
    от Ailxday в разделе WoW Circle 3.3.5a x100
    Ответов: 8
    Последнее сообщение: 16.07.2016, 19:28
  2. После не работы сервера2,10,2015 логон х5пропали все вещи на аукционе
    от kortik17 в разделе Проблемы с подключением(logon, tbc, legion, bfa, sl)
    Ответов: 0
    Последнее сообщение: 03.10.2015, 07:02
  3. Пропадают вещи на аукционе
    от МартовскийКот в разделе Вопросы Logon, TBC, Legion, BFa, SL
    Ответов: 4
    Последнее сообщение: 08.03.2012, 17:01

Ваши права

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