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

New program for writers

We turn from quantity to quality and tell you how we will supplement the Allods Team program with rewards in rubles.

More

The new Updater

Let us to introduce the new addon updater software and to share the details

Read more

Alloder 2.0

We have started the process of project evolve, and this relates not only, and not even primarily of the site's view

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  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