Jump to content
Alloder.pro  about Allods with love 😱
Search In
  • More options...
Find results that contain...
Find results in...

Servers monitoring and the Addons Editor

We present you two legends. All dreams come true.

Servers monitoring The Addons Editor

Digest April

We talk about what was done and updated in the past month. We help keep abreast of events.

Read more

Game tooltips

Tooltips provide a way for 3rd party fansites and extensions to display detailed information on mouseover.

Read more

AddonReloader для аддон-мейкеров


ramirez
 Share

Recommended Posts

Привет.

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

Инструкция по эксплуатации:

- Распаковать в data/Mods/Addons.

- После входа в игру в правом нижнем углу экрана появится маленькая пчело-кнопка. Это нормальное состояние аддона.

- Правый клик по пчело-кнопке открывает/закрывает список аддонов, доступных для манипуляций. Стандартные нивальские там тоже есть. Весь список посортирован по алфавиту, хотя это несильно помогает. Свои аддоны можно найти по префиксу UserAddon/ в названии, они там ближе к концу списка.

- В списке: левый клик по названию аддона селектит/деселектит этот аддон. Поселектить можно сразу несколько аддонов. Поселекченность аддонов в списке сохраняется в рамках текущей сессии игры.

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

- Левый клик по пчело-кнопке перезагружает все поселекченные аддоны сразу, неважно открыт список или нет.

- В списке: правый клик по названию аддона тут же на месте однократно перегружает аддон без всякого селекшена.

- Аддон пишет в mods.txt строчку про включение/выключение и перезагрузку.

- Очень сильно пытался прикрутить хот-кеи, но разрабы перекрыли там весь кислород, так что не вышло, и похоже оно вообще не возможно.

Alert:

- Далеко не все стандартные аддоны можно безнаказанно перезагружать, некоторые после перезагрузки тупо перестают работать, поэтому аккуратнее.

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

- Данный аддон восстанавливает сохраненное состояние, реагируя на EVENT_AVATAR_CREATED, поэтому возможно некоторые аддоны, которые на инициализации спят, и включаются только этим менеджером, могут проспать этот эвент.

Вроде все. Пользуйтесь на здоровье.

Link to comment
Share on other sites

Да, я видел, но там вроде что-то глючило последний раз... Этим я сам пользуюсь, тут одним кликом все перегружается, для разработки самое оно.

P.S. Так ведь неизвестно, поймает аддон после включения этот эвент или нет. Лучше делать аддоны "перезагрузкоустойчивыми", тогда не придется нигде хачить.

Link to comment
Share on other sites

Шикарно!

Пчелка маст-хэв! =) Однозначно.

Такой вопрос: а зачем крестик и уголок? Обе кнопки, вроде, делают одно и тоже, не?

И еще какой-то незнакомый описатель TextureAtlas. Интересно =)

p.s.Заметил, если перегрузить, например, Chat, при выходе в меню он больше не будет прятаться. Т.е., подписывается на скрытие он при EVENT_AVATAR_CREATED? о_0 Может, действительно выполнять userMods.SendEvent("EVENT_AVATAR_CREATED") для перезагружаемого аддона при условии isLoaded?

Link to comment
Share on other sites

Крестик и уголок - просто баловался с артом. Правый клик в пчело-кнопку тоже, в общем, закрывает. Там вообще много перегрузки.

Текстурки переэкспортил и выложил новую версию. Теперь файлов меньше.

Quote:
p.s.Заметил, если перегрузить, например, Chat,...

Да, видимо, разрабам критично что-то где-то прописывать именно на старте. Ну, сами себе буратины, что можно сказать. =) Не надо там ничего слать, это читерство, да и не сработает для чата все равно.

Link to comment
Share on other sites

Quote:
Лучше делать аддоны "перезагрузкоустойчивыми", тогда не придется нигде хачить.

Обычно, это просто невозможно. Потому, что в функции Init() нельзя пользоваться библиотекой avatar, и другими библиотеками, от неё зависящими (group, и др.).
Поэтому, во всех более-менее серъёзных аддонах, код загрузки разбит на 2 функции - первая это Init(), и вторая (я зову её PostInit(), обычно) вызывается по событию EVENT_AVATAR_CREATED. И вот она уже работает с аватаром, и другими библиотеками.

Если не разбивать загрузку на 2 такие функции, а попытаться воспользоваться библиотекой avatar прямо в Init(), то в логе ошибок появится ошибка "Avatar not found", и выполнение функции прервётся.

UPD: Блин, я туплю!!! Сейчас наткнулся в DarkDPSMeter на функцию avatar.IsExist(). Попробовал её. Она в Init() ошибки НЕ вызывает.
Значит, в Init() нельзя пользоваться НЕ библиотекой avatar, а только теми функциями, для работы которых нужен ID аватара, например, функция avatar.GetId().

Так что, "перезагрузкоустойчивый" аддон делается так: Например, если в аддоне есть Init() и PostInit(), вызываемый по EVENT_AVATAR_CREATED, тогда, делаем такой фикс - в самом конце Init() дописываем:

Code:
if avatar.IsExist() then
PostInit()
end

Ну, или, если используется "промышленный" способ подписки на события, как в DarkDPSMeter, то этот же код будет примерно таким (только что дописал это в DarkDPSMeter):

Code:
if avatar.IsExist() then
onEvent ["EVENT_AVATAR_CREATED"] ()
end

Всё это работает как надо, только что протестировал :)
Link to comment
Share on other sites

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

By using our site you agree to the Terms of Use