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

Дайджест за декабрь

Улучшенный интерфейс и правки под 15.0

Подробнее

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

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

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

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

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

Подробнее

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

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

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

AOUIEditor - редактор интерфейсов аддонов 0.0.1.4


3 изображения

Информация о файле

Решает самое больное место в разработке аддонов - создание его графического интерфейса. Исходный код редактора открыт и доступен на github. Он разработан на C# в Microsoft Visual Studio 2022. Призываем помочь с развитием программы.

Использование

Делайте бэкапы своих аддонов! 

При первом открытии аддона в логе снизу выведется список ошибок, если они есть. Эти ошибки нужно устранить вручную. Обычно это ссылки на несуществующие файлы или нарушение разметки XML. Эти файлы редактор не смог обработать и мог удалить ссылки на такие файлы, либо мог прочитать не все свойства правильно из этих файлов. Сохранять аддон через редактор в таком случае категорически не рекомендуется. Сначала устраните ошибки, затем откройте аддон заново и убедитесь, что лог пустой.

Дерево виджетов

Виджеты основанные на прототипах выделены жирным цветом. Сам прототип и его свойства можно найти в окне свойств виджета, см. (Header) -> Prototype.

Зеленым цветом выделены виджеты, которые указаны внутри прототипа, а не в самом виджете, см. (Header) -> Prototype -> Children.

Курсивом и в квадратных скобках выделены виджеты, которые найдены не в свойстве Children, а в любых других (например, скроллбары, слайдеры указываются в отдельных свойствах).

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

Окно свойств

В окне свойств можно редактировать почти любые свойства любого типа вложенные на любую глубину, кроме:

ВНИМАНИЕ! Редактор не поддерживает именованные поля, которые можно связать с любым свойством в прототипе и затем задать их значения в хеадере наследника. Если вы пользуетесь такими переменными, то редактор не сможет загрузить и сохранить эту информацию.

Файлы xdb следующих типов не будут затронуты при сохранении: UITextureElement, UISingleTexture, UITexture, DecalTemplate, FMODProject, VisObjectTemplate, UISingleTexture. Вы можете указывать ссылки на файлы этого типа, видеть какие-то свойства, но при сохранении файлы эти файлы не будут перезаписаны. Такое поведение объясняется тем, что эти файлы не должны редактироваться вручную, а должны создаваться через специальные программы.

Из менее известного не поддерживается styleSheets у класса UIAddon, это массив WidgetCss но вряд ли вы знали о его существовании. Пример игрового WidgetCss от старой версии игры можно найти здесь.

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

Также редактор не поддерживает отмену действий 🙂

Ссылки href

Все ссылки (href) в редакторе указываются не относительно конкретного файла виджета, а относительно директории аддона, учитывайте это. При сохранении ссылки снова конвертируются в локальные для каждого файла.

В любом поле со ссылкой можно нажать на кнопку "..." и выбрать нужный файл.

Также можно напрямую вставить в текстовое поле полный путь до файла, либо путь относительно директории аддона и нажать Enter. Этим же способом можно вставить ссылку на внутриигровой ресурс, она должна начинаться с символа "/", например, "/Interface/...". Но редактор не может открыть внутриигровые xdb-файлы, поэтому никак не сможет нормально отобразить внутриигровые виджеты, текстурные слои и т.п.

Чтобы удалить ссылку нужно выделить всё в текстовом поле, нажать Del и Enter.

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

Имеется одна "фича". Если вы удалите где-то ссылку на любой xdb-файл, то он вместе с текущими значениями свойств всё равно останется в памяти, так как эта же ссылка может быть указана где-то еще. Двже если вы удалите все ссылки, то файл не удалится из памяти пока вы не откроете другой (или этот же заново) проект или не перезапустите редактор. Т.е. если снова указать ссылку на этот файл, то он не загрузится заново из файла с неизменёнными свойствами, а будет получен из памяти с изменёнными (если вы их меняли, конечно).

Окно графического редактора

С зажатой ПКМ можно перемещать камеру. Колёсиком зумить. Нажатие колёсика сбрасывает камеру в начальное состояние.

На данный момент поддерживаются далеко не все свойства и отрисовка виджетов может быть не совсем корректной. Не работает даже самый обычный clipContent. Что работает:

  1. Позиционирование виджетов: работает всё кроме WIDGET_SIZING_INTERNAL, в этом случае размер виджета считается как 45x15. Прототипы учитываются
  2. Текстуры виджетов: работает отрисовка только WidgetLayerSimpleTexture и WidgetLayerTiledTexture. Не до конца доделана отрисовка WidgetLayerAnimatedTexture, не работает scaling и отрисовка нескольких текстур, если массив frames содержит более одного элемента. Для обычных виджетов отрисовываются только BackLayer и FrontLayer, для кнопок только LayerHighlight и все State. Никакие маски не работают. Из BlendEffect поддерживается только BLEND_EFFECT_ALPHABLND и BLEND_EFFECT_ADD, BLEND_EFFECT_HIGHLIGHT отрисовывается как BLEND_EFFECT_ADD, всё остальное отрисовывается как BLEND_EFFECT_ALPHABLND. Прототипы самих виджетов учитываются при отрисовке, протипы текстурных слоёв и т.п. - нет.

Слои WidgetLayerTiledTexture могут отображаться не так, как в игре. Редактор никак не использует поля MiddleX и MiddleY в Layout, а просто считает за середины всё что осталось после вычета боковых или верхних-нижних частей. Плюс может тайлить любые мелкие текстуры бесконечное число раз, в игре это не так.

Комментарии разработчика игры UIAddon о тайловых текстурах:

Вот набор правил которым очень желательно следовать при работе с ними (работать будет и при нарушении этих правил, но хорошо оптимизирована только эта ветка кода)

  1. Если у текстуры LeftX и RightX (TopY и BottomY) нули, то размер виджета с этой текстурой по X (Y) никогда не должен быть 0
  2. Если MiddleX (MiddleY) нуль то RightX (BottomY) должны быть ноль
  3. MiddleX и MiddleY должны быть либо 0 либо 2^N (N>=5)
  4. Не стоит делать tlled текстуру у которой ненулевые только Middle и при этом тип SCALED - это эмулирует simple текстуру через tiled
  5. Не стоит делать tiled текстуру у которой оба Middle нулевые - это эмулирует simple текстуру через tiled

Общее

Чтобы любой аддон запускался и работал корректно, кодировки файлов должны быть следующими:

  1. Файлы XDB - UTF-8 (стандартный без спецификаций BOM)
  2. Файлы TXT - UTF-16 LE (Unicode Little Endian)
  3. Файлы LUA - ANSI (Windows-1251 для русской версии игры)

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

Примечания

"Аллоды Онлайн" является зарегистрированным товарным знаком и принадлежит правообладателям. В редакторе в качестве примеров и шаблонов в ознакомительных целях могут использоваться текстуры и/или их элементы принадлежащие ASTRUM LLC.

Использованные библиотеки:


Что нового в версии 0.0.1.4   Просмотр изменений

Размещено

  • Добавлен режим изоляции выбранного виджета
  • Спасибо 6
  • Плюсую 1

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

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

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