Агрегатор стилей – интеграция кастомных стилей
Внимание!
Этот раздел документации не завершён. Если вы готовы помочь — сообщите об этом главному разработчику мода.
Хотите интегрировать свой камуфляж в игру, не меняя при этом игровые стили? Используйте Агрегатор стилей!
Пример интегрированного стиля:
- Изображение пока не готово -
Основные этапы работы модификации заключаются в следующем:
- При загрузке клиента мод читает элементы кастомизации из папки
valberton/user_customization/xml. В случае ошибки чтения клиент намеренно крашится. - В момент подключения игрока к серверу собираются данные о всех стилях (в том числе и интегрированных) с целью оптимизации работы с экраном стилизатора.
- При нажатии на кнопку
Внешний видигрок выбирает, к какому окну кастомизации перейти: стандартному или стилизатору. Если на сервере камуфляжа нет, во время выбора игрока предупреждают об этом. - При переходе к окну стилизатора игрок выбирает категорию стиля (по умолчанию: Пользовательский 2D-стиль) и сам камуфляж. Для применения игрок нажимает соответствующую кнопку.
Интеграция стиля
Для того чтобы встроить свой камуфляж в игру, нам потребуются:
- Текстуры (камуфляж, надписи, эмблемы и т. д. в формате
.dds). - Локализация (название и описание стиля в формате
.mo). - Скрипты (описание элементов стиля в формате
.xmlна каждую группу элементов).
Для 3D-стилей ещё необходимо:
- Модели (изменённые модели танка в форматах
.model,.primitives,.visual). - При необходимости! Префабы (эффекты и двигающиеся части танка в формате
.prefab).
Текстуры
Внимание!
Данный раздел не завершён. Автор UotsonDesign допишет его, как разберётся с делами IRL.
Здесь будет использоваться следующая терминология:
Паттерн (Pattern)— зацикленный узор.
В камуфляжах существует несколько возможных типов текстур:
AM (AlbedoMap)— паттерн камуфляжа, выполняется в цвете.GMM (GlossMetallicMap)— текстура металлических отражений, выполняется по определённому алгоритму.EmissionMap— карта свечения, на ней указываются элементы, которые будут излучать свет.PatternMap— карта анимации, эта карта показывает игре, какую область «подсвечивать» наEmissionMap. Работает циклично.
Скорость анимации PatternMap и яркость EmissionMap регулируются в скрипте камуфляжа следующими параметрами:
<forwardEmissionBrightness> 7 </forwardEmissionBrightness>
<deferredEmissionBrightness> 7 </deferredEmissionBrightness>
<emissionAnimationSpeed> 0.3 </emissionAnimationSpeed>Рисование камуфляжа
Подготовка рабочей среды
Для начала работы вам потребуются следующие программы:
- Мир Танков (обязательно).
- Photoshop или Paint.NET.
Мир Танков
- Текст пока не готов. -
Photoshop
После скачивания Photoshop вам потребуется
DDS-расширениедля создания текстурных файлов с расширением.dds. Скачать расширение вы можете здесь. Для установки запустите инсталлер, соответствующий разрядности вашей ОС.После установки расширения в
папке установки Photoshopу вас должна появиться папкаNVTT:
Теперь запускаем или перезапускаем (если он был запущен)
Photoshopи создаём файл с размерами, имеющими соотношение сторон1:1.
Примеры размеров текстуры для «Мира Танков»
- 512x512
- 1024x1024
- 2048x2048
- 4096x4096 (по желанию; трудно рисовать, весят много и могут уменьшать быстродействие игры и вашего компьютера)
Paint.NET
- Текст пока не готов. —
AM — текстура
Создание камуфляжа начинается с рисования основного паттерна — AM-текстуры. Для создания текстуры можно использовать Photoshop или Paint.NET. Ниже описаны действия для каждого приложения.
В рисовании узора есть несколько техник:
Прямоугольный узор— его легко зациклить, не надо прибегать к каким-то сложным методам.Узор не касается краёв— соответственно, не надо зацикливать, но нужно учесть, что если у вас какая-нибудь голова дракона,то её надо рисовать только на одной половине текстуры— нижней или верхней — и зеркалить по месту.Узор по диагонали— его я и буду рассматривать ниже.
Photoshop
Создаём основу узора.

IMPORTANT
Размер узора должен совпадать с размером квадрата под ним. Как пользоваться инструментом
выделение, можете найти в интернете.
Заходим в контекстное меню, выбираем
Фильтр->Другое->Сдвиг. Дальше выставляем параметры сдвига, равные половине от ширины и половине от высоты изображения, и ставим галочку наСделать прозрачным.
TIP
У вас файл 1024x1024 => смещение будет равняться 1024x0,5 × 1024x0,5 = 512 × 512.
У вас должен получиться кусок узора, равный 1/4 от всего холста. Теперь мы его копируем (
CTRL+J).Нажимаем ПКМ по копии, выбираем
Отразить по горизонтали(или по вертикали, это не принципиально) и тащим отражённую копию в противоположный угол с зажатымSHIFT.
Повторяем пункт 4, но теперь выбираем два кусочка, нажимаем
CTRL+Jи теперьотражаем копию по вертикали(или по горизонтали, смотря какой вариант вы выбрали в 4 пункте). Результат должен получиться таким:
Сохраняем получившийся файл в папку
camouflagesпо алгоритму:Файл->Сохранить как...->DDS.
Модели
- Текст пока не готов. -
Префабы
- Текст пока не готов. -
Локализация
Локализация строк для стиля хранится в файлах формата .mo, которые делаются из файлов формата .po, которые имеют следующий вид:
msgid ""
msgstr ""
"Project-Id-Version: Your Project\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "style/title"
msgstr "Название стиля"
msgid "style/description"
msgstr ""
"Описание стиля\n"
"В нескольких строках".po — это просто текстовые файлы. Чтобы преобразовать его в .mo, потребуется одно из двух:
Рассмотрим важные для изменения строки:
Project-Id-Version— это название проекта, вписывайте сюда всё, что угодно.msgid— это путь к строке.msgstr— это сама локализированная строка.
Как делать многострочные строки?
msgid "style/description"
msgstr ""
"Описание стиля\n"
"В нескольких строках"В этом примере перевод строки осуществляется символом \n; без него строка «слипнется» в единое целое.
Чтобы использовать локализацию строки, используйте следующее выражение:
#<имя_файла_локализации>:<путь_до_строки><имя_файла_локализации>— это название файла без расширения.mo, в котором находится нужная строка. Например,user_styles.<путь_до_строки>— это как разmsgid. Например,style/title.
Таким образом, в нашем примере для получения строки Название стиля ссылка на неё должна быть такой:
#user_styles:style/titleСкрипты
Скрипты элементов стиля хранятся в формате .xml и полностью идентичны по строению внутриигровым файлам в папке scripts/item_defs/customization/<mod_id>_<element_type>.xml, где
mod_id— уникальный строковый идентификатор мода.element_type— тип элемента (в объяснениях будет указано, как его именовать).
Например, для камуфляжей прописывайте user_camouflages.xml, для отметок — user_insignias.xml и т. д.
В одном скрипте может быть описано множество элементов одного типа.
XML — это древовидный язык разметки, поэтому когда будут расписываться секции, имейте в виду, что запись типа x.y.z в файле будет выглядеть так:
<x>
<y>
<z> значение </z>
</y>
</x>Ниже приведены «пустышки» для всех импортируемых элементов кастомизации. Нужные для редактирования строки будут подсвечены.
Общие положения
root.itemGroup.season— тип карты для определённого типа элемента. В данный момент поддерживается 3 типа карт:WINTER— зимняя.SUMMER— летняя.DESERT— песчаная.
Совет
Для разных типов карт можно описать разные камуфляжи, но они должны находиться в разных itemGroup.
Камуфляж
element_type = camouflages
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<userString> #vehicle_customization:camouflage/transparent </userString>
<season> ALL </season>
<historical> true </historical>
<tags> questsProgression fullRGB styleOnly </tags>
<priceGroup> MT camouflages 50g notInShop </priceGroup>
<vehicleFilter>
<include/>
</vehicleFilter>
<camouflage>
<id> 10000 </id>
<texture> valberton/user_customization/camouflages/ous_test_camo.dds </texture>
<description> #vehicle_customization:camouflage/christmas_chinese/description </description>
<scales> 1.3 1 0.5 </scales>
<userString> #vehicle_customization:camouflage/christmas_chinese/label </userString>
<tags> hiddenInUI </tags>
<invisibilityFactor> 1 </invisibilityFactor>
<palettes>
<palette>
<c0> 255 0 0 255 </c0>
<c1> 0 255 0 255 </c1>
<c2> 0 0 255 255 </c2>
<c3> 0 0 0 255 </c3>
</palette>
</palettes>
<rotation>
<HULL> -0.234747 </HULL>
<TURRET> 1.610764 </TURRET>
<GUN> -0.234747 </GUN>
</rotation>
<tiling/>
<tilingSettings>
<type> relative </type>
<factor> 2.574355 2.582175 </factor>
<offset> 0.000000 0.000000 </offset>
</tilingSettings>
<gloss> 0.509 0.509 0.409 0.509 </gloss>
<metallic> 0.23 0.2 0.19 0.23 </metallic>
<glossMetallicMap> valberton/user_customization/camouflages/example_gm.dds </glossMetallicMap>
<emissionMap> valberton/user_customization/camouflages/example_em.dds </emissionMap>
<emissionPatternMap> valberton/user_customization/camouflages/example_pat.dds </emissionPatternMap>
<forwardEmissionBrightness> 7 </forwardEmissionBrightness>
<deferredEmissionBrightness> 7 </deferredEmissionBrightness>
<emissionAnimationSpeed> 0.3 </emissionAnimationSpeed>
</camouflage>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента camouflage, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.camouflage.id— уникальный числовой идентификатор.root.itemGroup.camouflage.texture— путь до текстуры.root.itemGroup.camouflage.scales— масштаб для разных размеров паттернов (см.<ссылка_на_объяснение_стилей>).root.itemGroup.camouflage.palettes— палитры камуфляжа.root.itemGroup.camouflage.rotation— угол поворота текстуры.
Необязательные параметры
Для эффекта металла и бликов используйте либо:
root.itemGroup.camouflage.gloss— величина блеска в формате RGBA.root.itemGroup.camouflage.metallic— величина эффекта металла в формате RGBA.
либо:
root.itemGroup.camouflage.glossMetallicMap— путь к текстуреglossMetallicMap(см. Текстуры).root.itemGroup.camouflage.emissionMap— путь к текстуре маски свечения (см. Текстуры).root.itemGroup.camouflage.emissionPatternMap— путь к текстуре паттерна свечения (см. Текстуры).root.itemGroup.camouflage.forwardEmissionBrightness— интенсивность свечения в стандартном рендере.root.itemGroup.camouflage.deferredEmissionBrightness— интенсивность свечения в улучшенном рендере.root.itemGroup.camouflage.emissionAnimationSpeed— скорость анимации свечения.
Декали: эмблемы и надписи
element_type = decals
Эмблемы и надписи являются одним типом элемента — декалями. Не путайте их с проекционными декалями!
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<name/>
<userString/>
<season> ALL </season>
<historical> true </historical>
<priceGroup> MT emblems 25g notInShop </priceGroup>
<type> EMBLEM </type>
<decal>
<id> 10000 </id>
<tags> hiddenInUI </tags>
<texture> valberton/user_customization/decals/example_emblem.dds </texture>
<userString />
<mirror> false </mirror>
</decal>
</itemGroup>
<itemGroup>
<name> user_inscriptions </name>
<userString> empty </userString>
<season> ALL </season>
<historical> true </historical>
<priceGroup> MT inscriptions 25g notInShop </priceGroup>
<type> INSCRIPTION </type>
<decal>
<id> 20000 </id>
<tags> hiddenInUI </tags>
<texture> valberton/user_customization/decals/example_inscr.dds </texture>
<userString />
<mirror> false </mirror>
</decal>
</itemGroup>
</root>Необходимые для редактирования секции:
root.itemGroup.type— тип декали.EMBLEM— эмблема,INSCRIPTION— надпись.
Внимание!
Далее описываются секции для типа элемента decal, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.decal.id— уникальный числовой идентификатор.root.itemGroup.decal.texture— путь до текстуры.root.itemGroup.decal.mirror— булевое значение (истина, ложь), означающее необходимость отразить по горизонтали декаль.
Присоединяемые элементы
element_type = attachments
Внимание!
Полная поддержка этого типа элемента не подтверждена, при попытке его использования могут возникнуть проблемы. Просим сообщить о состоянии поддержки разработчику.
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<name> attachments </name>
<userString> #vehicle_customization:attachment/general </userString>
<season> ALL </season>
<historical> true </historical>
<priceGroup> attachments 50g notInShop </priceGroup>
<tags> hiddenInUI </tags>
<attachment>
<id> 10000 </id>
<name> attachment_01 </name>
<modelName> content/Hangars/CharacterAnimations/Flag/normal/lod0/shaft_hd.model </modelName>
<attachmentLogic> flagPart </attachmentLogic>
<initialVisibility> false </initialVisibility>
</attachment>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента attachment, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.attachment.id— уникальный числовой идентификатор.root.itemGroup.attachment.modelName— путь до модели/префаба (см.<ссылка_на_объяснение_моделей>).root.itemGroup.attachment.attachmentLogic— схема логики элемента. На данный момент известно 3 схемы:flagPart— флаг.flagAnimation— анимация флага.prefab— префаб (см.<ссылка_на_объяснение_моделей>).
Отметки на стволе
element_type = insignias
<?xml version="1.0" encoding="utf-8"?>
<root>
<itemGroup>
<name/>
<userString/>
<season> ALL </season>
<historical> 1 </historical>
<priceGroup> insignias 50g notInShop </priceGroup>
<tags> hiddenInUI </tags>
<insignia>
<id> 10000 </id>
<atlas> valberton/user_customization/decals/insignias.dds </atlas>
<alphabet> valberton/user_customization/decals/insignias.xml </alphabet>
<texture> valberton/user_customization/decals/insignias.dds </texture>
</insignia>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента insignia, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.insignia.id— уникальный числовой идентификатор.root.itemGroup.insignia.atlas— путь к атласу (см.<ссылка_на_объяснение_отметок>).root.itemGroup.insignia.alphabet— путь к «алфавиту».
Пример «алфавита»
«Алфавит» описывает используемые координаты отображения отметок.
На первое время используйте этот пример:
<?xml version="1.0" encoding="utf-8"?>
<root>
<glyph>
<name> * </name>
<begin> 0.0 0.0 </begin>
<end> 1.0 1.0 </end>
</glyph>
</root>где begin и end — начальные и конечные координаты используемой области относительно левого верхнего угла изображения в процентах (1.0 = 100%).
root.itemGroup.insignia.texture— путь к текстуре одной отметки.
Потёртости
element_type = modifications
Этот элемент отвечает за наличие царапин и дополнительного слоя грязи на танке.
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<season> ALL </season>
<historical> 0 </historical>
<priceGroup> modifications 300g </priceGroup>
<vehicleFilter>
<include/>
</vehicleFilter>
<modification>
<id> 10000 </id>
<texture> gui/maps/vehicles/modifications/effect.png </texture>
<description> #vehicle_customization:modifications/age_effect_01/description </description>
<effects>
<effect>
<type> paint_age </type>
<value> 0.3 </value>
</effect>
<effect>
<type> paint_fading </type>
<value> 0.1 </value>
</effect>
</effects>
<userString> #vehicle_customization:modifications/age_effect_01 </userString>
</modification>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента modification, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.modification.id— уникальный числовой идентификатор.root.itemGroup.modification.texture— путь к иконке в интерфейсе.root.itemGroup.modification.effects— применяемые эффекты, могут принимать отрицательные значения:paint_age— степень смешивания потёртостей сdetailMapтанка.paint_fading— яркость краски.
Краски
element_type = paints
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<name/>
<userString/>
<season> ALL </season>
<historical> false </historical>
<priceGroup> paints 20g notInShop </priceGroup>
<paint>
<id> 10000 </id>
<texture> valberton/user_customization/paints/example_paint.png </texture>
<color> 00 00 255 255 </color>
<gloss> 0.753 </gloss>
<metallic> 0.576 </metallic>
<userString> blue paint </userString>
<tags> hiddenInUI </tags>
</paint>
<usages>
<item>
<componentType> ALL </componentType>
<cost> 1 </cost>
</item>
</usages>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента paint, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.paint.id— уникальный числовой идентификатор.root.itemGroup.paint.texture— путь к иконке в интерфейсе.root.itemGroup.paint.color— цвет в формате RGBA.root.itemGroup.paint.gloss— величина блеска.root.itemGroup.paint.metallic— величина эффекта металла.
Совет
Секция root.itemGroup.paint.userString, хоть и не будет отображаться в клиенте, может быть использована для удобства ориентирования в коде.
Персональный номер
element_type = personalnumbers
Внимание!
Полная поддержка этого типа элемента не подтверждена, при попытке его использования могут возникнуть проблемы. Просим сообщить о состоянии поддержки разработчику.
Внимание!
В случае если вы хотите встроить свой шрифт для персонального номера, вам потребуется сделать это через отдельный элемент — «Шрифт».
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<userString> #vehicle_customization:personal_number/general </userString>
<season> ALL </season>
<historical> 0 </historical>
<priceGroup> MT personal_numbers 25g notInShop </priceGroup>
<personal_number>
<id> 14 </id>
<digitsCount> 3 </digitsCount>
<texture> gui/maps/vehicles/personal_numbers/font_14.png </texture>
<preview_texture> gui/maps/vehicles/personal_numbers/font_14_preview.png </preview_texture>
<userString> #vehicle_customization:personal_number/fonts/font_14 </userString>
<fontId> 14 </fontId>
<tags> styleOnly </tags>
</personal_number>
<name> Collapsible style numbers </name>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента personal_number, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.personal_number.id— уникальный числовой идентификатор.root.itemGroup.personal_number.texture— путь к иконке в интерфейсе.root.itemGroup.personal_number.fontId— уникальный числовой идентификатор шрифта.
Шрифт
element_type = fonts
Этот элемент нужен в случае, если для персонального номера нужен вид символов, отличный от того, что есть в игре.
Внимание!
Полная поддержка этого типа элемента не подтверждена, при попытке его использования могут возникнуть проблемы. Просим сообщить о состоянии поддержки разработчику.
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<font>
<id> 10000 </id>
<name> font_01 </name>
<texture> gui/maps/vehicles/font_maps/font_01.dds </texture>
<alphabet> gui/maps/vehicles/font_maps/font_01.xml </alphabet>
</font>
</root>Необходимые для редактирования секции:
Внимание!
В этом типе элемента нет секции itemGroup. В этом файле также могут быть описаны несколько шрифтов.
root.font.id— уникальный числовой идентификатор.root.font.texture— путь к текстуре.root.font.alphabet— путь к «алфавиту».
Пример «алфавита»
В каждом «алфавите» шрифта прописывается:
root.glyph.name— к какой цифре (букве?) относится символ.root.glyph.begin— начальные координаты символа.root.glyph.end— конечные координаты символа.
Начальные и конечные координаты указываются в процентах (1.0 = 100%).
<root>
<glyph>
<name> 0 </name>
<begin> 0.000000 0.000000 </begin>
<end> 0.121 0.5 </end>
</glyph>
<glyph>
<name> 1 </name>
<begin> 0.121 0.000000 </begin>
<end> 0.2089 0.5 </end>
</glyph>
<glyph>
<name> 2 </name>
<begin> 0.2089 0.000000 </begin>
<end> 0.33 0.5 </end>
</glyph>
<glyph>
<name> 3 </name>
<begin> 0.33 0.000000 </begin>
<end> 0.4492 0.5 </end>
</glyph>
<glyph>
<name> 4 </name>
<begin> 0.4492 0.000000 </begin>
<end> 0.5742 0.5 </end>
</glyph>
<glyph>
<name> 5 </name>
<begin> 0.5742 0.000000 </begin>
<end> 0.6933 0.5 </end>
</glyph>
<glyph>
<name> 6 </name>
<begin> 0.6933 0.000000 </begin>
<end> 0.8144 0.5 </end>
</glyph>
<glyph>
<name> 7 </name>
<begin> 0.8144 0.000000 </begin>
<end> 0.9257 0.5 </end>
</glyph>
<glyph>
<name> 8 </name>
<begin> 0.000000 0.5 </begin>
<end> 0.1152 1 </end>
</glyph>
<glyph>
<name> 9 </name>
<begin> 0.1152 0.5 </begin>
<end> 0.2363 1 </end>
</glyph>
</root>Проекционные декали
element_type = projectiondecals
Внимание!
На момент публичного тестирования мода крайне не рекомендуется использовать этот элемент ввиду его существенной нестабильности.
<?xml version="1.0" encoding="utf-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<userString> #vehicle_customization:projection_decals/damage </userString>
<season> ALL </season>
<historical> 1 </historical>
<priceGroup> MT projection_decals 100g </priceGroup>
<vehicleFilter>
<include/>
</vehicleFilter>
<projection_decal>
<id> 10000 </id>
<texture> gui/maps/vehicles/decals/projection_decals/damage/projection_decal_01.dds </texture>
<userString> #vehicle_customization:projection_decals/damage/projection_decal_01 </userString>
<tags> direction_right_to_left formfactor_square </tags>
<mirror> true </mirror>
</projection_decal>
<name/>
</itemGroup>
</root>Необходимые для редактирования секции:
Внимание!
Далее описываются секции для типа элемента projection_decal, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.projection_decal.id— уникальный числовой идентификатор.root.itemGroup.projection_decal.texture— путь к текстуре.root.itemGroup.projection_decal.mirror— булевое значение (истина, ложь), означающее возможность отразить по горизонтали и по вертикали проекционную декаль.
Стиль
element_type = styles
Все предыдущие элементы необходимо описывать только для финального действия — соединить их в стиль.
<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:china="china" xmlns:czech="czech" xmlns:france="france" xmlns:germany="germany" xmlns:italy="italy" xmlns:japan="japan" xmlns:poland="poland" xmlns:sweden="sweden" xmlns:uk="uk" xmlns:usa="usa" xmlns:ussr="ussr" xmlns:xmlref="http://bwt/xmlref">
<itemGroup>
<userString/>
<season> ALL </season>
<historical> true </historical>
<priceGroup> MT 2D styles universal 1000g notInShop </priceGroup>
<vehicleFilter>
<exclude>
<vehicles> china:Ch01_Type59_Gold </vehicles>
</exclude>
</vehicleFilter>
<style>
<id> 10000 </id>
<texture> gui/maps/vehicles/styles/example.png </texture>
<userString> #pb_octopus_mod:octopus/styleName </userString>
<longDescriptionSpecial> #vehicle_customization:ny_style/asian_ny_style_01_desc/long </longDescriptionSpecial>
<tags> hiddenInUI </tags>
<alternateItems>
<camouflage>
<id> 20010 20020 </id>
</camouflage>
<decal>
<id> 40010 40020 30010 40011 </id>
</decal>
</alternateItems>
<outfits>
<outfit>
<season> ALL </season>
<camouflages>
<item>
<id> 20010 </id>
<appliedTo> 4368 </appliedTo>
<patternSize> 1 </patternSize>
<palette> 0 </palette>
</item>
</camouflages>
<modification>
<item> 5 </item>
</modification>
<insignias>
<item>
<id> 10001 </id>
<appliedTo> 4096 </appliedTo>
</item>
</insignias>
<decals>
<item>
<id> 30010 </id>
<appliedTo> 13104 </appliedTo>
</item>
<item>
<id> 40010 </id>
<appliedTo> 52416 </appliedTo>
</item>
</decals>
</outfit>
</outfits>
</style>
</itemGroup>
</root>Необходимые для редактирования секции:
root.itemGroup.vehicleFilter— фильтр по технике:
Фильтр по технике
С помощью этой секции вы можете обозначить, на какой танк/нацию можно нанести стиль.
<vehicleFilter>
<include>
<vehicles> germany:G98_Waffentrager_E100 </vehicles>
</include>
<exclude>
<vehicles> china:Ch01_Type59_Gold </vehicles>
</exclude>
</vehicleFilter>vehicleFilter.include— позволить наносить стиль только для определённых танков/нации.vehicleFilter.exclude— не наносить стиль на определённых танках/нации.
Если нужно обозначить всю нацию, замените vehicleFilter.include.vehicles или vehicleFilter.exclude.vehicles на vehicleFilter.include.nations или vehicleFilter.exclude.nations соответственно.
В данном примере указывается, что стиль можно нанести только на танк Waffentrager auf. E 100 и нужно исключить нанесение стиля на танк Type 59 Gold. Логически это бесполезно, но это лучше объяснит, как это работает.
Внимание!
Далее описываются секции для типа элемента style, которых в одной itemGroup может находиться несколько. Точные ограничения не регламентированы.
root.itemGroup.style.id— уникальный числовой идентификатор.root.itemGroup.style.texture— путь к иконке в интерфейсе.root.itemGroup.style.userString— название стиля в интерфейсе.root.itemGroup.style.longDescriptionSpecial— описание стиля в интерфейсе.
Совет
Для userString и longDescriptionSpecial лучше использовать локализацию для корректного отображения кириллицы.
root.itemGroup.style.alternateItems— дополнительные элементы стиля.
Дополнительные элементы стиля
В моде есть возможность прописать альтернативные элементы стиля для более гибкой кастомизации.
<alternateItems>
<camouflage>
<id> 20010 20020 </id>
</camouflage>
<decal>
<id> 40010 40020 30010 40011 </id>
</decal>
</alternateItems>alternateItems.<element_type>— перечень альтернативных элементов, гдеelement_type— тип элемента так, как вы его называли в XML-файлах. Например, неpaints, аpaint. Неpersonalnumbers, аpersonal_number.alternateItems.<element_type>.id— перечень идентификаторов элементов через пробел. Указывается как исходный элемент, так и альтернативные варианты.
Внимание!
Далее описываются секции для субэлемента outfit, которых в outfits может находиться несколько. Точные ограничения не регламентированы.
Далее идёт перечисление основных элементов стиля.
Основные элементы стиля
Общие положения
id— числовой идентификатор элемента.appliedTo— область применения элемента. Каждая такая область имеет своё числовое значение. Этот параметр — сумма этих чисел.
Камуфляж
<camouflages>
<item>
<id> 20010 </id>
<appliedTo> 4368 </appliedTo>
<patternSize> 1 </patternSize>
<palette> 0 </palette>
</item>
</camouflages>- Области применения камуфляжа:
- Орудие —
4096 - Башня —
256 - Корпус —
16
- Орудие —
camouflages.item.patternSize— порядковый номер паттерна от 0 до 5.camouflages.item.palette— порядковый номер палитры, которые указаны в файле камуфляжей.
Декали
<decals>
<item>
<id> 30010 </id>
<appliedTo> 13104 </appliedTo>
</item>
<item>
<id> 40010 </id>
<appliedTo> 52416 </appliedTo>
</item>
</decals>Области применения эмблем:
- Орудие —
4096,8192 - Башня —
256,512 - Корпус —
16,32
Области применения надписей:
- Орудие —
16384,32768 - Башня —
1024,2048 - Корпус —
64,128
Присоединяемые объекты
<attachments>
<item>
<id> 31014 </id>
<slotId> 18000 </slotId>
</item>
</attachments>attachments.item.slotId— идентификатор слота аттачмента танка, которые прописываются внутри скрипта танка (item_defs/vehicles/<нация>/<имя_танка>.xml).
Отметки на стволе
<insignias>
<item>
<id> 10000 </id>
<appliedTo> 4096 </appliedTo>
</item>
</insignias>Области применения отметок:
- Орудие —
4096
Потёртости
<modification>
<item> 5 </item>
</modification>modification.item=id
Краски
<paints>
<item>
<id> 256 </id>
<appliedTo> 30576 </appliedTo>
</item>
</paints>Области применения красок:
- Орудие —
4096,8192,16384 - Башня —
256,512,1024 - Корпус —
16,32,64 - Гусеницы —
1,2,4
Персональный номер
<personal_numbers>
<item>
<id> 256 </id>
<number> 111 </number>
<appliedTo> 52416 </appliedTo>
</item>
</personal_numbers>Области применения персонального номера такие же, как и у надписей.
Проекционная декаль
<projection_decals>
<item>
<id> 31312 </id>
<scaleFactorId> 2 </scaleFactorId>
<tags> formfactor_square safe left </tags>
</item>
</projection_decals>projection_decals.item.scaleFactorId— идентификатор фактора масштабирования от 0 до 3.- В
projection_decals.item.tagsсамым важным тегом является положение декали на танке (right,front,left).
Roman Levchencko
Andrei Soprachev