☰

Начало работы с редактором XML

Модуль

Bannerlord состоит из разных модулей, которые придают ему различную функциональность. Их можно рассматривать как игровые моды. Такой подход позволяет игрокам легко модифицировать игру. Модули находятся внутри папки установки Mount & Blade II Bannerlord, в каталоге с названием Modules.

XML

XML расшифровывается как Extensible Markup Language (расширяемый язык разметки), который позволяет хранить данные, связанные с игрой. Если мы хотим добавить какие-то данные в модуль, мы создаём XML-документ внутри него или добавляем данные в существующий XML-документ.

XSD (файлы схем)

XSD расшифровывается как XML Schema Definition (определение схемы XML). Он обеспечивает уровень валидации для данных, предоставляемых через XML-файлы. Каждый XML-файл в Bannerlord имеет связанный файл схемы. Например, файлы схем определяют схему для объекта культуры, и она выглядит примерно так:

Как видите, эти файлы являются схемой того, как мы будем структурировать наши XML-файлы. В 99% случаев редактор XML предотвращает внесение изменений, недопустимых в файлах схемы. Если вдруг вы внесёте изменение, из-за которого XML-файл перестанет соответствовать файлу схемы, при сохранении файла вы получите ошибку, что позволит вам исправить свою ошибку.

XSLT

XSLT расшифровывается как Extensible Stylesheet Language Transformations (расширяемый язык преобразований таблиц стилей). Он позволяет преобразовывать существующие XML-файлы в новые на основе определённых правил. Эти правила применяются к XML-файлам при их загрузке в игру.

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

Поэтому вместо изменения XML-файла мы создаём правила с помощью XSLT внутри нашего собственного модуля, которые преобразуют существующий XML-файл в соответствующем официальном модуле.

Начало работы с редактором XML

Редактор XML — это программа, которая позволяет вам:

Вы можете получить доступ к редактору XML через Mount & Blade II: Bannerlord Modding Kit в Steam. После установки Kit вы найдёте редактор XML внутри папки XMLEditor в корневом каталоге игры.

При первом запуске редактора XML вам будет предложено настроить параметры редактора. Выберите “да”, и вы увидите окно настроек.

Сначала вам нужно выбрать папку с игрой. По умолчанию используется версия игры из Steam. Остальные настройки необязательны, и вы можете оставить их как есть.

Файл конфигурации редактора сохраняется прямо рядом с папкой конфигурационного файла Bannerlord — Documents\Mount and Blade II Bannerlord\Configs\xml_editor_config.json. Если с вашими настройками возникнет какая-либо проблема, вы всегда можете удалить файл конфигурации и перезапустить редактор, который заново создаст файл настроек.

Вы можете получить доступ к настройкам из панели инструментов главного окна, File -> Settings, или выбрав опцию Change Settings в окне выбора модуля.

После подтверждения настроек нажмите кнопку Save and Close. Вы перейдёте в окно выбора модуля.

Что такое активный модуль?

Активный модуль используется для описания редактору ваших намерений. Он позволяет редактору выбирать между прямым редактированием XML-файла или созданием правила путём создания файла XSLT.

В окне выбора модуля вы увидите модули, расположенные в выбранной вами папке игры. Отсюда вы хотите выбрать модуль, частью которого должна быть ваша работа. Редактор XML поддерживает только прямое редактирование ваших собственных или сторонних модулей. Если вы хотите изменить значения официальных модулей, вам нужно выбрать свой мод как активный и использовать редактирование XSLT для редактирования официальных модулей.

Интерфейс редактора и редактирование XML-файлов

После выбора модуля, с которым вы хотите работать, перед вами откроется редактор XML. В нашем случае мы выбрали пустой мод, у которого есть только файл items.xml.

Чтобы быстро пройтись по начальному интерфейсу:

Поскольку наш пример мода содержит только items.xml, связанный со схемой Items, мы продолжим наше руководство, выбрав схему Items.

Выбор схемы открывает окно обозревателя документов. Обозреватель документов показывает все XML-файлы, связанные с выбранной схемой. Вы также можете создать новый XML-документ для выбранного модуля и схемы. Названия этих файлов отображаются как [Module Name].[Xml Name]. Продолжим, выбрав файл Example Mod.items.

После выбора целевого документа перед нами открывается окно Element Explorer (Обозреватель элементов), которое показывает нам элементы верхнего уровня в нашем XML-файле. Вы можете сравнить обозреватель элементов с тем же самым скриншотом документа, который мы добавили ниже, чтобы помочь вам понять именно то, что вы видите. Внизу вы увидите кнопку для создания новых элементов верхнего уровня и кнопку сохранения файла для сохранения ваших изменений.

Чтобы отредактировать один из этих элементов, вы можете нажать на элемент в окне обозревателя элементов. Это откроет наше последнее окно — Inspector Window (окно инспектора). Окно инспектора позволяет вам увидеть все атрибуты и дочерние элементы, связанные с выбором в окне обозревателя элементов.

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

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

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

После внесения изменений обязательно нажмите кнопку сохранения. Также важно отметить, что функции сохранения на уровне элемента не существует. После внесения изменений вам нужно сохранить весь документ.

Редактирование официальных модулей с помощью XSLT

Чтобы редактировать официальные модули, вам нужно включить режим редактирования XSLT. Откройте окно настроек через File -> Settings и убедитесь, что флажок Enable XSLT editing установлен. После этого, если мы нажмём на любой файл схемы, мы также увидим связанные XML-файлы из других модулей. Мы можем отличить редактирование XSLT по жёлтому значку предупреждения справа от XML-файла.

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

Теперь мы можем видеть элементы, являющиеся частью файла Native.mpitems. Здесь стоит отметить, что редактирование XSLT не поддерживает удаление элемента. Вместо этого мы можем заменить элемент на пустой. Продолжим, выбрав элемент для редактирования.

Мы выбрали предмет mp_pointed_skullcap_over_cloth_headwrap. Вы можете увидеть, что в инспекторе есть ошибка, препятствующая внесению каких-либо изменений. Это происходит потому, что для внесения изменений через XSLT наш модуль должен зависеть от целевого модуля, в данном случае Native. Мы можем быстро исправить эту ошибку, перейдя в Window -> Dependency Editor.

Dependency Editor (редактор зависимостей) позволяет нам редактировать зависимости нашего модуля. Слева мы видим модули, от которых мы не зависим. Мы можем нажать на модуль слева и добавить его как зависимость. Мы выберем Native, поскольку mpitems является частью Native, а затем выберем Add Dependency. В итоге это будет выглядеть так:

Теперь мы можем закрыть редактор зависимостей и вернуться к инспектору. Вы увидите, что ошибка исчезла, и осталось только предупреждение, сообщающее нам, что мы используем XSLT, а не прямое редактирование XML. Это предупреждение можно игнорировать.

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

Эта страница переведена с помощью ИИ и может содержать неточности. Оригинал на английском языке является основным источником.