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

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

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

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

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

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

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

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

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

Подробнее

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

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

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

AddonManager


duvo

Рекомендуемые сообщения

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

Code:
 <AutoStart>false</AutoStart>

но тогда у всех пользователей должен стоять Менеджер и он должен запускать вновь установленные аддоны сам и галочку ставить

Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 142
  • Создана
  • Последний ответ

Топ авторов темы

Топ авторов темы

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

Помнится как-то поставил миникарту и выключил ее в АМ, при этом сохранив этот статус. В результате при загрузке миникарта инициализировалась и выключала компас. После этого АМ ее выгружал и получалось что ни миникарты ни компаса небыло.

Если б было это событие, то миникарта могла бы вновь вызвать компас перед выгрузкой

Ссылка на комментарий
Поделиться на другие сайты

просьба сделать так:

Code:
SLASH_COMMANDS = {  [1]  ="\/am",  [2]  = "\/фь" }

...

addon._R [ "EVENT_UNKNOWN_SLASH_COMMAND" ]  = function( event )

if addon.SLASH_COMMANDS [FrWS( event.text )]  then W( "MainPanel" ):Show( not W( "MainPanel" ):IsVisible() ) end

end

чтобы можно было не переключать кодировку на русскую вызвать окно. ну или локализацию сделать

Ссылка на комментарий
Поделиться на другие сайты

Заметил баг при написании аддона. Если выгрузить аддон, а потом загрузить, меняется его приоритет.

Ссылка на комментарий
Поделиться на другие сайты

Можно в АМ реализовать кнопку вызова настроек аддона. Рассмотрю реализацию на примере AOChatExtension. У аддона есть кнопка, которая занимает пространство на экране, при этом я ей пользовался пару раз, в ознакомительных целях.

И так излагаю мыслю. В списке аддонов добавить кнопку [Параметры], по нажатию на которую аддону будет посылаться событие. В ответ на это событие аддон будет отображать свое окно настроек.

Это приведет к навязыванию АМ. Чтобы этого небыло предлагаю еще одно событие. Через какое-то время N после инициализации АМ посылает всем аддонам событие, которым сообщает о том, что он установлен в игре. Так же сообшение посылать аддонам, которые были загружены (только что поставлена галочка) в АМ.

Вам спросите: "Зачем это надо?". Отвечаю на примере все того же AOChatExtension. При инициализации аддон по умолчанию отрисовывает свою кнопку настроек на экране. После получения события о том что АМ установлен, аддон понимает что настройки можно вызвать из АМ и скрывает свою кнопку с экрана.

Ссылка на комментарий
Поделиться на другие сайты

Идея понятна и уже реализована в тестовой версии. АМ при старте отправляет событие SCRIPT_ADDON_INFO_REQUEST { target = addonName }. Если ваш аддон принимает событие, он может скрыть свою кнопку вызова настроек и отправить ответ SCRIPT_ADDON_INFO_RESPONSE {

target [string] -- название аддона (common.GetAddonName() );desc [string/wstring] {optional} -- описание аддона;showDNDButton [boolean] {optional} -- показать кнопку переключения состояния DnD? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_TOGGLE_DND { target = addonName };showHideButton [boolean] {optional} -- показать кнопку переключения видимости аддона/элементов_аддона? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_TOGGLE_VISIBILITY { target = addonName };showSettingsButton [boolean] {optional} -- показать кнопку вызова настроек? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_SHOW_SETTINGS { target = addonName };list [table] {optional} -- массив, элементы -- названия аддонов, которые необходимо включить, при отключении целевого аддона.

}

Пока все в таком виде о_0

Ссылка на комментарий
Поделиться на другие сайты

Эм, приоритет главной формы? Не знаю, с чем это может быть связано, честно говоря.

Ссылка на комментарий
Поделиться на другие сайты

я тоже про это!

а то мой LootEDSchice спамит в чат у тех персов у кого он выгружен через AM.

по идее каждый аддон при загрузке должен объявить 2 события:

таймер на 5сек (запуск от события посозданию аватара) - который включит ваш аддон если от AM ничего не пришло - то есть АМ не установлен у пользователя, значит запуск аддона самопроизвольно

и событие, ловящее от AM команду. и если пришла команда - стоп/запуск то выгрузим таймер и подчинимся команде

Ссылка на комментарий
Поделиться на другие сайты

Тестовая версия. В общем, она практически финальная (осталось добавить подсказки и контекстное меню ), я надеюсь, но нужна проверка перед релизом о_0.

ВАЖНО! Данная версия НЕ для пользователей, а для разработчиков. Если вы это прочли и проигнорировали, "сами буратины".

Отличия от r1:

-- добавлена кнопка для вызова главного окна;

-- убрана кнопка "Скрыть все". Теперь должно скрываться самостоятельно (спасибо Setras'у за идею с таймером) при открытии главного меню игры/отключении интерфейса (отправляется событие SCRIPT_TOGGLE_UI);

-- немного изменены названия событий и добавлены новые:

SCRIPT_ADDON_INFO_RESPONSE {

sender (string) -- название аддона (common.GetAddonName() ); desc (string) {optional [/default: addonname] } -- описание аддона;showDNDButton (boolean) {optional [/default: false] } -- показать кнопку переключения состояния DnD? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_TOGGLE_DND { target = addonName }; showHideButton (boolean) {optional [/default: false] } -- показать кнопку переключения видимости аддона/элементов_аддона? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_TOGGLE_VISIBILITY { target = addonName }; showSettingsButton (boolean) {optional [/default: false] } -- показать кнопку вызова настроек? Если да, то при нажатии кнопки будет отправляться событие SCRIPT_SHOW_SETTINGS { target = addonName }; addonsBlocked (table) {optional [/default: nil] } -- массив, элементы -- названия аддонов, которые необходимо включить, при отключении целевого аддона. }

-- изменен механизм сохранения. В глобальную секцию записываются только комментарии, положения кнопки и окна (пока не реализовано). В секцию аватара состояние аддона и его "пристегнут ость";

-- небольшой ре-дизайн.

Перед пробой лучше сделать резервную копию user.cfg.

Взаимодействия проверял с CT_Total, добавив в CT.lua:

Code:
function SCRIPT_ADDON_INFO_REQUEST( params )

if params.target == common.GetAddonName() then

MainPanel:Show( false )

userMods.SendEvent( "SCRIPT_ADDON_INFO_RESPONSE", {

sender = params.target,

desc = "desc-desc! pew-pew!!!11oneone",

showDNDButton = true,

--showHideButton

showSettingsButton = true,

addonsBlocked = { "ContextDamageVisualization" }

} )

end

end

function SCRIPT_SHOW_SETTINGS( params )

if params.target == common.GetAddonName() then

Options:Show( true )

end

end

common.RegisterEventHandler( SCRIPT_ADDON_INFO_REQUEST, "SCRIPT_ADDON_INFO_REQUEST" )

common.RegisterEventHandler( SCRIPT_SHOW_SETTINGS, "SCRIPT_SHOW_SETTINGS" )

Несколько сумбурно, но голова уже не варит. Все, ушел спать :)

upd: Исправлена досадная ошибка при добавлении комментария в процессе создания элемента.

Ссылка на комментарий
Поделиться на другие сайты

1.

Я бы переименовал list (list = список - ничего не говорит) во что-нибудь более конкретное, чтобы из названия было понятно, что оно содержит список блокированных аддонов, например, addonsBlocked.

2.

В описании SCRIPT_ADDON_INFO_RESPONSE, сказано target, а в примере тот же параметр переименован в sender.

3.

В функции SCRIPT_ADDON_INFO_REQUEST( event ), есть лишняя строка, я так понимаю - MainPanel:Show( false )

Ссылка на комментарий
Поделиться на другие сайты

1. Хорошо, не вопрос.

2. Да, ошибка. Должен быть sender, исправил.

3. В CT_Total MainPanel -- это виджет с кнопкой, нажатие которой открывает панель с настройками. Виджет скрываю, т.к. настройки вызываются из АМ.

Ссылка на комментарий
Поделиться на другие сайты

Ыть. Тему только щас заметил

--

desc [string] {optional} - итп, которые оптионал. Дефолтные значения какие?

Эта, мне не влом посмотреть, просто наверно добавить надо в описании :)

Кнопку "А" еле заметил... "/am" уже не работает?

U_EVENT_ADDON_MEM_USAGE_REQUEST не будет?

Ссылка на комментарий
Поделиться на другие сайты

1.

В примере, ещё одна ошибка (в ДВУХ местах), вместо event.target должно быть params.target. UPD: А, понятно, переменная, приходящая в функцию, названа event. Может, тогда, в примере, event заменить на params, а то, имхо, params стал уже стандартом по-умолчанию.

2.

В описание лучше бы дописать, какая оптимальная длина desc (кол-во знаков). А то аддоостроители могу начать целые поэмы писать в desc :))

3.

Положение кнопки и окна AddonManager НЕ сохраняются между сессиями. Потому, что в обоих вызовах DnD:Init(), четвёртый параметр выставлен false, а не true.

4.

DND_ID_BUTTON_MAIN = 1024 и DND_ID_WINDOW_MAIN = 1025. Дело в том, что по ГОСТу :) до версии 2.0.01, этот диапазон дозволенных ID был ограничен 0-999. А начиная с патча 2.0.01, ограничение на дозволенный диапазон ID сняли. Но в EU/US/China/Japan/Brazil версиях, они всё ещё ограничены, значит там с числами > 999 могут быть проблемы, теоретически. В общем, они вылазят из дозволенного диапазона DND_WIDGET_MOVE (14000-14999), и попадают в соседний диапазон DND_WIDGET_RESIZE (15000-15999) - что там хранится, я понятия не имею, но лучше туда не лезть, и всё будет хорошо. Хотя, подозреваю, что там в АО 1.x занято только одно число - 1500 или 1501 (ресайз чата), но НЕ уверен, не знаю, не проверял.

5.

DnD:Enable() в этом аддоне используется НЕ по назначению, он тут не нужен, можно стереть оба её вызова.

Эта функция - НЕ замена "старым" DnD:Reg() и DnD:Unreg(). В современной LibDnD, больше НЕ нужно ничего дополнительно вызывать, при каждом показе/сокрытии перемещаемых виджетов - это теперь делается автоматически. А функция DnD:Enable() имеет другое назначение - перманентно пристёгивать виждет (виден он или нет - не важно), и кстати, создана как раз для облегчения аддонам реакции на SCRIPT_TOGGLE_DND). То есть, в AddonManager, эта функция НЕ нужна.

6.

Кнопка НАЖИМАЕТСЯ при перетаскивании. Исправляется это так - в реакции на нажатие кнопки, первой строкой нужно вписать:

if DnD:IsDragging() then return end

И всё :) Теперь кнопка будет различать, когда её тащат, а когда нажимают :)

7.

Лучше бы НЕ посылать SCRIPT_TOGGLE_UI аддонам при загрузке. (Если это возможно). А то, например, у меня в "ShowEnemyLevel" дебильно сделана реакция на SCRIPT_TOGGLE_UI - вместо того, чтобы прятать/показывать MainFrame (как мы научились делать благодаря Ciuine), мой старенький "ShowEnemyLevel", показывая виджеты, запускает те функции, которым требуется существование аватара. То есть, аддон просто не рассчитан на то, что кто-то ВНЕЗАПНО пришлёт SCRIPT_TOGGLE_UI ещё до появления аватара в игре... Это не проблема, могу обновить его, за 5 минут. Но дело в том, что может оказаться, что у нас на главной, таких "старых" аддонов ещё штук 20, которые будут строчить в Mods.txt из-за этого неожиданного SCRIPT_TOGGLE_UI.

8. GetGameLocalization() можно обновить. Два для назад в неё добавилась поддержка Португальского языка (Бразилия).

9.

Не баг, но, как бы, "украшательство" :) Отправляя событие SCRIPT_ADDON_INFO_REQUEST, можно было бы вложить в него ЯЗЫК ЛОКАЛИЗАЦИИ, полученный от GetGameLocalization(). То есть, в AddonManager в любом случае есть эта функция, и от него, как бы, нисколько не убудет. А вот, "мало-бюджетным" и редко обновляемым аддонам, это будет ценным подарком - поможет выдавать описания на языке локализации игры, при этом, НЕ имея собственной GetGameLocalization(). Есть же такие аддоны как тот же самый "ShowEnemyLevel" - за всё свою долгую жизнь, он ломался только 2 раза (оба раза - когда разработчики делали какие-то радикальные изменения в игре). Ну зачем ему нужна GetGameLocalization()? Не нужна, т.к. она гораздо чаще меняется или даже ломается. Значит, с "ShowEnemyLevel" есть только 2 разумных варианта - либо вообще не реагировать на SCRIPT_ADDON_INFO_REQUEST, либо реагировать, но только если AddonManager сообщит язык локализации игры.

P.S. А для чего там 3 узких колонки справа (в окне AddonManager)? И действительно, куда пропал MEM_USAGE_REQUEST? :)

Ссылка на комментарий
Поделиться на другие сайты

1.эээ. Где ты там params нашел?

2. Угу, там можно целую поэму нарисовать, а можно только название аддона. Может реализовать комментарии в виде тултипа? И(или) сделать 2 вида комментариев: укороченый вариант и расширеный

3.

Quote:
положения кнопки и окна (пока не реализовано ).

ЗЫ. Ты наверное реквест не проверял :) А куда совать кнопки "ДнД", "скрыть" и "настройки" для каждого аддона?

ЗЫЫ. С кнопками траблы какие то. У меня появляется только крайняя правая, и потом никак исчезать не хочет до перезапуска менеджера (перезаход)

Ссылка на комментарий
Поделиться на другие сайты

Quote:
1.эээ. Где ты там params нашел?

Ммм. Да, точно :) Может, тогда, в примере, event заменить на params, а то, имхо, params стал уже стандартом по-умолчанию.

Quote:
(пока не реализовано ).

Ну это я так, напомнил, чтоб это не было упущено :)
Ссылка на комментарий
Поделиться на другие сайты

Ещё нашёл кое-что:

1.

Приоритет панели ОКНА должен быть (например, на единицу) выше, чем приоритет панели КНОПКИ. А то, кнопка сейчас рисуется поверх окна - это же не логично. (я когда-то такой же баг исправил в "GuildGui1b").

P.S. И ещё, то, что кнопки "Загр. Выбранные" и "Выгр. Выбранные" - общие на обе закладки - это норма или баг? Например, я могу навыделять кучу аддонов на первой заклаадке, затем, на кучу аддонов на второй закладке, затем нажму "Выгрузить все" - и выгрузит с обоих закладок?

Ссылка на комментарий
Поделиться на другие сайты

Quote:
Дефолтные значения какие?

false/nil o_0
Quote:
"/am" уже не работает?

Пока закомментировал, дуамю, добавить в настройки editline, чтоб каждый забивал команду(-ы) по вкусу.
Quote:
U_EVENT_ADDON_MEM_USAGE_REQUEST не будет?

Будет посылаться один раз вызове подсказки.
Ссылка на комментарий
Поделиться на другие сайты

ВНИМАНИЕ!
Обязательна информация из \Personal\Logs\mods.txt для диагностики ошибки.
Иначе вам не помочь.
В игре включите в Меню → Интерфейс → Общие настройки → Запись ошибок пользовательских дополнений. Затем запустите аддон в игре.
Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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

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

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