Разбор carvariations.meta и carcols.meta

Автор: Nilo3D · Обновлено:

carvariations.meta задаёт, как может выглядеть одна модель транспорта: её сочетания цветов, ливреи, мод-кит, настройки света и настройки сирен. carcols.meta служит библиотекой, на которую эти настройки ссылаются: в нём определены мод-киты с деталями тюнинга, настройки сирен и настройки света. carcols.meta нужен транспорту только тогда, когда у него свой кит, свои сирены или свой свет.

В чём разница между carvariations.meta и carcols.meta?

carvariations.metacarcols.meta
Корневой элементCVehicleModelInfoVariationCVehicleModelInfoVarGlobal
Область действияОдна запись на модель транспортаОбщие определения, на которые может ссылаться любой транспорт
СодержитСочетания цветов, ливреи, имена китов, индекс света и сиренKits (детали тюнинга), Sirens, Lights, цвета, колёса
data_file в FiveMVEHICLE_VARIATION_FILECARCOLS_FILE
Нужен для аддона?Рекомендуется для любого транспортаТолько при своих деталях тюнинга, сиренах или свете

Как устроена запись carvariations.meta?

Каждый <Item> в variationData относится к транспорту, указанному в modelName. В нём перечислены сочетания цветов, доступные транспорту киты и два числа: они выбирают настройку света и настройку сирен.

<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVariation>
  <variationData>
    <Item>
      <modelName>mycar</modelName>
      <colors>
        <Item>
          <indices content="char_array">
            1
            4
            4
            156
            111
            111
          </indices>
          <liveries>
            <Item value="false" />
            <Item value="false" />
          </liveries>
        </Item>
      </colors>
      <kits>
        <Item>0_default_modkit</Item>
      </kits>
      <windowsWithExposedEdges />
      <plateProbabilities>
        <Probabilities />
      </plateProbabilities>
      <lightSettings value="1" />
      <sirenSettings value="0" />
    </Item>
  </variationData>
</CVehicleModelInfoVariation>
ПолеЗначение
modelNameТранспорт, к которому относится запись. Должно быть равно modelName в vehicles.meta.
colorsСписок сочетаний цветов. Одно из них игра выбирает, когда транспорт спавнится, а скрипт цвета не задаёт.
kitsИмена мод-китов, которые использует транспорт; они определены в carcols.meta.
windowsWithExposedEdgesИмена окон, у которых видны кромки.
plateProbabilitiesВероятности для каждого стиля номерного знака.
lightSettingsID записи Lights в carcols.meta.
sirenSettingsID записи Sirens в carcols.meta. 0 для транспорта без сирен.

Как работают индексы цветов?

В каждом сочетании цветов шесть чисел. Каждое число это индекс в игровом списке цветов транспорта (0 означает чёрный металлик, 111 белый металлик и так далее). Шесть слотов фиксированы:

ПозицияСлотНатив игры, который его задаёт
1Основной цветSET_VEHICLE_COLOURS
2Дополнительный цветSET_VEHICLE_COLOURS
3ПерламутрSET_VEHICLE_EXTRA_COLOURS
4Цвет колёсSET_VEHICLE_EXTRA_COLOURS
5Цвет салонаSET_VEHICLE_EXTRA_COLOUR_5
6Цвет приборной панелиSET_VEHICLE_EXTRA_COLOUR_6

Список liveries под каждым сочетанием указывает, с какими ливреями это сочетание может заспавниться. У транспорта может быть до 30 ливрей. Например, Coil S-Cooter поставляется с девятью сочетаниями цветов в этом файле, и их можно свободно редактировать, потому что meta-файлы оставлены открытыми.

Как работают ливреи?

Классическая система ливрей подменяет одну текстуру. Транспорту нужен FLAG_HAS_LIVERY в vehicles.meta и текстуры с суффиксами _sign_1, _sign_2 и так далее в его словаре текстур; игра считает их при загрузке модели. Скрипты переключают их нативом SET_VEHICLE_LIVERY.

Вторая система работает как слот тюнинга: это детали мод-кита типа VMT_LIVERY_MOD, отображаемые названия которых перечислены в liveryNames кита.

Что такое мод-кит и почему важен ID кита?

Мод-кит содержит список деталей тюнинга и улучшений характеристик, которые может получить транспорт. Киты лежат в секции Kits файла carcols.meta. У каждого кита есть имя, числовой ID и тип.

<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfoVarGlobal>
  <Kits>
    <Item>
      <kitName>mycar_modkit</kitName>
      <id value="850" />
      <kitType>MKT_SPECIAL</kitType>
      <visibleMods>
        <Item>
          <modelName>mycar_spoiler_a</modelName>
          <modShopLabel>MYCAR_SPL_A</modShopLabel>
          <linkedModels />
          <turnOffBones />
          <type>VMT_SPOILER</type>
          <bone>chassis</bone>
          <collisionBone>chassis</collisionBone>
          <cameraPos>VMCP_DEFAULT</cameraPos>
          <audioApply value="1.000000" />
          <weight value="0" />
          <turnOffExtra value="false" />
          <disableBonnetCamera value="false" />
          <allowBonnetSlide value="true" />
        </Item>
      </visibleMods>
      <linkMods />
      <statMods>
        <Item>
          <identifier />
          <modifier value="25" />
          <audioApply value="1.000000" />
          <weight value="0" />
          <type>VMT_ENGINE</type>
        </Item>
      </statMods>
      <slotNames />
      <liveryNames />
    </Item>
  </Kits>
</CVehicleModelInfoVarGlobal>
ПолеЗначение
kitNameИмя кита. Именно на него ссылается carvariations.meta.
idЧисловой ID кита. Должен быть уникальным среди всех китов, загруженных на сервере.
kitTypeMKT_STANDARD, MKT_SPORT, MKT_SUV или MKT_SPECIAL.
visibleModsДетали с 3D-моделью: спойлеры, бамперы, пороги и так далее.
linkModsМодели, которые появляются только вместе с другой деталью.
statModsУлучшения характеристик без модели: двигатель, тормоза, коробка передач, подвеска, броня.
slotNamesПереименовывает слот тюнинга в меню мастерской.
liveryNamesОтображаемые названия ливрей кита.

Игра ведёт одну таблицу ID китов. Когда приходит второй кит с уже занятым ID, загрузчик пишет в лог о дублирующемся ID кита и выдаёт ему другой свободный ID. Поэтому детали тюнинга обычно и пропадают, когда на сервер добавляют новый транспорт: в двух ресурсах один и тот же id. Дайте каждому киту свой номер.

Чтобы связать кит с транспортом, укажите его имя в carvariations.meta:

<!-- carvariations.meta -->
<kits>
  <Item>mycar_modkit</Item>
</kits>

Транспорт без своих деталей может использовать стоковый 0_default_modkit: он даёт стандартные улучшения характеристик. Пустой <kits /> убирает тюнинг у транспорта.

Чтобы найти, какие ID китов, сирен и фар повторяются во всех ваших ресурсах, перетащите файлы в проверку конфликтов ID в carcols.

Какие поля есть у детали тюнинга?

Каждый элемент в visibleMods описывает одну деталь. modelName задаёт имя файла модели детали в папке stream. type указывает слот тюнинга, где она появляется, а bone кость транспорта, к которой она крепится.

ПолеЗначение
modelNameМодель детали.
modShopLabelТекстовая метка, которая показывается в мастерской.
linkedModelsLink mods, которые крепятся вместе с этой деталью.
turnOffBonesСтоковые части, которые нужно скрыть при установке детали (например, стоковый бампер).
typeСлот: VMT_SPOILER, VMT_BUMPER_F, VMT_BUMPER_R, VMT_SKIRT, VMT_EXHAUST, VMT_CHASSIS, VMT_GRILL, VMT_BONNET, VMT_WING_L, VMT_WING_R, VMT_ROOF и другие.
bone, collisionBoneКость, к которой крепится деталь, и кость, для которой включается дополнительная коллизия: chassis, bodyshell, bumper_f, bumper_r, bonnet, boot, misc_a и так далее.
cameraPosКуда перемещается камера мастерской: VMCP_DEFAULT, VMCP_FRONT, VMCP_REAR, VMCP_LEFT, VMCP_RIGHT, VMCP_TOP и другие.
weightИзменение веса от детали, от 0 до 100 процентов.
turnOffExtraЕсли true, деталь скрывает экстры на той же кости.

Stat mods используют слоты VMT_ENGINE, VMT_BRAKES, VMT_GEARBOX, VMT_SUSPENSION, VMT_ARMOUR и VMT_HORN, а modifier задаёт силу улучшения.

Как работают lightSettings и sirenSettings?

В lightSettings и sirenSettings в carvariations.meta записаны идентификаторы. Они выбирают запись с тем же id в секции Lights или Sirens какого-либо carcols.meta. Если такого номера нет, игра берёт первую запись.

  • Запись Lights задаёт интенсивность, затухание, углы конуса и цвет для указателей поворота, задних фонарей, фар и фонарей заднего хода, а также размер и интенсивность их корон.
  • Запись Sirens содержит до 20 огней сирены. У каждого есть цвет, интенсивность, вращение и схема мигания (sequencer), а темп запись задаёт через sequencerBpm.

Как и ID китов, ID сирен и света общие для всего сервера, поэтому два экстренных транспорта с сиреной под ID 1 будут конфликтовать. Используйте отдельный ID для каждой настройки сирен и впишите то же число в sirenSettings.

Как эти два файла загружаются в FiveM?

Оба файла указываются в files в fxmanifest.lua. carcols.meta получает строку data_file 'CARCOLS_FILE', а carvariations.meta строку data_file 'VEHICLE_VARIATION_FILE'. Строку carcols ставьте первой, потому что carvariations ссылается на киты по имени. Полный манифест есть в гайде о добавлении аддон-транспорта в FiveM, а правила порядка в справочнике data_file. Если детали или цвета не появляются в игре, проверьте раздел о тюнинге в гайде по устранению проблем.

Частые вопросы

Нужен ли carcols.meta для аддон-машины?
Только если у машины свои детали тюнинга, своя настройка сирен или света. Машине со стоковым мод-китом и стоковыми настройками света нужен только carvariations.meta.
Почему детали тюнинга пропали или не те в FiveM?
Обычно дело в дублирующемся ID кита: два файла carcols.meta определяют кит с одинаковым значением id. Поменяйте один из них на номер, который не использует другой транспорт, а имя кита в carvariations.meta оставьте прежним.
Как добавить транспорту больше цветов?
Добавьте ещё один Item с шестью индексами в список colors этого транспорта в carvariations.meta. Порядок такой: основной, дополнительный, перламутр, колёса, салон и приборная панель.
Сколько ливрей может быть у транспорта?
В системе с подменой текстуры игра поддерживает до 30 ливрей на транспорт.
Что означает sirenSettings 0?
Выбирается запись сирен 0. Её использует транспорт без сирен.

Источники

Товары из гайда

Все гайды