Shavadre
-
Постов
5 -
Зарегистрирован
-
Посещение
Тип контента
Загрузки
Форумы
Статьи и объявления
Гардероб
Маунты
Сообщения Allods Team
Трекер ошибок
Магазин
Галерея
Сообщения, опубликованные Shavadre
-
-
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 не используется нигде в коде программы - не сработает ли сборщик мусора на нее раньше требуемого?
-
47 минут назад, worm сказал:
нет насколько я понимаю из доступного ничего такого нет. Мы работаем только с доступными нам функциями То что открыли и из этого колхозим. Чтобы решить онкретно вашу. задумку мне видится второй аддон который бы выполнял приведенный выше код
создавать еще один аддон ради управления мелким аддоном - это такое себе) ладно, спасибо за информацию, подумаю как выйти из этого положения.
-
20 минут назад, worm сказал:
Вопрос а нафига? Если скрываешь сообщение от ContextUniMessageBox то тат сейчас только перезагрузка аддона причем для медленных машин с задержкой. В ближайшее время обещали допилить чтобы просто ^Show(true/false) работало.
для стандартных не пользовательских
common.StateUnloadManagedAddon( "ContextUniMessageBox" )
common.StateLoadManagedAddon( "ContextUniMessageBox" )и все возвращается как правило. А так частности. Местоположение видимость значит надо ранее запоминать.
У меня проблема в том, что я скрываю кнопку сортировки в инвентаре пользователя. При отключении аддона (через галочку в Меню->Дополнения) аддон просто отключается, я так понимаю, что просто Lua-машина с запущенным аддоном выключается. И я не успеваю показать скрытые кнопки, т.е. вернуть все как было до включения аддона. Есть тут какой-то механизм, который запускается ПЕРЕД остановкой аддона? Аналог деструктора или финализатора...
-
Добрый день!
Пишу свой маленький аддон для сокрытия некоторых кнопок в стандартных игровых виджетах. С этим проблем нет, но вот как вернуть все обратно?
Для скрытия использую событие "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 не нашел.
HideBagSort
в Техподдержка
Опубликовано
Привет!
А что происходит при отключении аддона? Я так понимаю, что обратно кнопка не возвращается?
Прикреплю свою наработку по этой теме, может поможет чем.
-------------------------------------------------------------------------------- -- 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 --------------------------------------------------------------------------------