Перейти к содержанию

Дайджесты за январь-февраль

Обновления гайдов и аддонов

Январь Февраль

Мониторинг серверов и редактор аддонов

Представляем вам две легенды. То, о чем можно было только мечтать, стало реальностью.

Мониторинг серверов Редактор аддонов

Подсказки из игры на вашем сайте

Теперь вы можете отображать сведения о внутриигровых элементах простым наведением курсора мыши.

Подробнее

Апдейтер аддонов

Представляем вам программу для автообновления аддонов и делимся подробностями.

Подробнее Скачать

Shavadre

Пользователь
  • Постов

    5
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Shavadre

  1. Привет!

    А что происходит при отключении аддона? Я так понимаю, что обратно кнопка не возвращается?

    Прикреплю свою наработку по этой теме, может поможет чем.

    --------------------------------------------------------------------------------
    -- GLOBALS
    --------------------------------------------------------------------------------
    Global( "HBSB_sortBtn", nil )
    Global( "HBSB_dropdownBtn", nil )
    
    --------------------------------------------------------------------------------
    -- EVENT HANDLERS
    --------------------------------------------------------------------------------
    
    -- "EVENT_ADDON_LOAD_STATE_CHANGED"
    function OnEventHandler( params )
    
    	if (params.loading) then
    		--hide buttons by loading addon
    		HBSB_sortBtn:Show(false) 
    		HBSB_dropdownBtn:Show(false)
    	else
    		--show button by unloading addon
    		HBSB_sortBtn:Show(true)
    		HBSB_dropdownBtn:Show(true)
    	end
    end
    
    --------------------------------------------------------------------------------
    -- INITIALIZATION
    --------------------------------------------------------------------------------
    function Init()
    	HBSB_isAvailable = true;
    	local contextBag = stateMainForm:GetChildChecked( "ContextBag", false )
    	local bag = contextBag:GetChildChecked( "Bag", false )
    	local buttons = bag:GetChildChecked( "Buttons", false )
    	HBSB_sortBtn = buttons:GetChildChecked( "Sort", false )
    	HBSB_dropdownBtn = buttons:GetChildChecked( "DropDown", false )
    
    	common.RegisterEventHandler( OnEventHandler, "EVENT_ADDON_LOAD_STATE_CHANGED" )
    
    	--run when addon has been dropped
    	rawset(_G, 'HBSB_disposeObject', newproxy(true))
    	getmetatable(HBSB_disposeObject).__gc = Dispose
    end
    
    --------------------------------------------------------------------------------
    -- DISPOSE
    --------------------------------------------------------------------------------
    function Dispose()
    	HBSB_sortBtn:Show(true)
    	HBSB_dropdownBtn:Show(true)
    	HBSB_sortBtn = nil
    	HBSB_dropdownBtn = nil
    	common.UnRegisterEvent( "EVENT_ADDON_LOAD_STATE_CHANGED" )
    end
    
    --------------------------------------------------------------------------------
    if (avatar.IsExist()) then Init()
    else common.RegisterEventHandler(Init, "EVENT_AVATAR_CREATED")
    end
    --------------------------------------------------------------------------------

     

  2. 49 минут назад, LEM сказал:

    Попробуй это

    local function finalizer()
      local wtButtons = stateMainForm:GetChildChecked('ContextBag', false):GetChildChecked('Buttons', true)
      if not wtButtons:IsValid() then return end
      wtButtons:PlayFadeEffect(1, 0, 5000, EA_SYMMETRIC_FLASH)
    end
    
    rawset(_G, '_finalizerProxy', newproxy(true))
    getmetatable(_finalizerProxy).__gc = finalizer

    Все работает в точности как нужно, спасибо!

    Можете сказать как тут срабатывает сборщик мусора? При выключении lua-машины со скриптом? Если переменная _finalizerProxy не используется нигде в коде программы - не сработает ли сборщик мусора на нее раньше требуемого?

  3. 47 минут назад, worm сказал:

    нет насколько я понимаю из доступного ничего такого нет. Мы работаем только с доступными нам функциями То что открыли и из этого колхозим. Чтобы решить онкретно вашу. задумку мне видится второй аддон который бы выполнял приведенный выше код

     

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

  4. 20 минут назад, worm сказал:

    Вопрос а нафига? Если скрываешь сообщение от ContextUniMessageBox то тат сейчас только перезагрузка аддона причем для медленных машин с задержкой. В ближайшее время обещали допилить чтобы  просто ^Show(true/false) работало.

    для стандартных не пользовательских

            common.StateUnloadManagedAddon( "ContextUniMessageBox" )
            common.StateLoadManagedAddon( "ContextUniMessageBox" )

    и все возвращается как правило. А так частности. Местоположение видимость значит надо ранее запоминать.

     

    У меня проблема в том, что я скрываю кнопку сортировки в инвентаре пользователя. При отключении аддона (через галочку в Меню->Дополнения) аддон просто отключается, я так понимаю, что просто Lua-машина с запущенным аддоном выключается. И я не успеваю показать скрытые кнопки, т.е. вернуть все как было до включения аддона. Есть тут какой-то механизм, который запускается ПЕРЕД остановкой аддона? Аналог деструктора или финализатора...

  5. Добрый день!

    Пишу свой маленький аддон для сокрытия некоторых кнопок в стандартных игровых виджетах. С этим проблем нет, но вот как вернуть все обратно?

    Для скрытия использую событие "EVENT_ADDON_LOAD_STATE_CHANGED". У него есть два параметра loading и unloading, которые должны отвечать за то, что произошло (loading = true and unloading = false - произошло включение аддона, loading = true and unloading = true - произошла перезагрузка аддона, loading = false and unloading = true - произошла выгрузка аддона). Вот только последнее не работает.

    Я поставил логирование на хендлер "EVENT_ADDON_LOAD_STATE_CHANGED" и он вообще не срабатывает, если пользователь выключает аддон через галочку "выключить дополнение". А еще каких-то событий, подходящих под это, я в API не нашел. 

×
×
  • Создать...

Важная информация

Пользуясь сайтом, вы принимаете Условия использования