Разбор carvariations.meta и carcols.meta
carvariations.meta задаёт, как может выглядеть одна модель транспорта: её сочетания цветов, ливреи, мод-кит, настройки света и настройки сирен. carcols.meta служит библиотекой, на которую эти настройки ссылаются: в нём определены мод-киты с деталями тюнинга, настройки сирен и настройки света. carcols.meta нужен транспорту только тогда, когда у него свой кит, свои сирены или свой свет.
В чём разница между carvariations.meta и carcols.meta?
| carvariations.meta | carcols.meta | |
|---|---|---|
| Корневой элемент | CVehicleModelInfoVariation | CVehicleModelInfoVarGlobal |
| Область действия | Одна запись на модель транспорта | Общие определения, на которые может ссылаться любой транспорт |
| Содержит | Сочетания цветов, ливреи, имена китов, индекс света и сирен | Kits (детали тюнинга), Sirens, Lights, цвета, колёса |
| data_file в FiveM | VEHICLE_VARIATION_FILE | CARCOLS_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 | Вероятности для каждого стиля номерного знака. |
lightSettings | ID записи Lights в carcols.meta. |
sirenSettings | ID записи 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 кита. Должен быть уникальным среди всех китов, загруженных на сервере. |
kitType | MKT_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 | Текстовая метка, которая показывается в мастерской. |
linkedModels | Link 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. Её использует транспорт без сирен.
Источники
Товары из гайда
Все гайды
- Как установить ресурс FiveM из Cfx.re Escrow (Granted Assets)
- Как добавить кастомный транспорт на сервер ESX, QBCore или QBox
- Что такое LOD у транспорта в FiveM?
- Как добавить аддон-транспорт на сервер FiveM
- Разбор vehicles.meta по полям
- Разбор handling.meta: поля, единицы и флаги
- Разбор vehiclelayouts.meta: сиденья, точки входа и анимации
- Справочник data_file в fxmanifest для транспорта
- Файлы модели транспорта (yft, _hi.yft, ytd) и предупреждение oversized assets
- Проблемы с аддон-транспортом в FiveM: причины и решения
- Как исправить "You lack the required entitlement" на сервере FiveM
- Как конвертировать мод машины для одиночной GTA 5 в аддон FiveM
- Как ховерборд в FiveM работает без скрипта
- Как сделать транспорт для FiveM в Blender с Sollumz 2.9
- Как оптимизировать транспорт FiveM: полигоны, LOD и бюджет текстур
- Как настроить коллизию транспорта в Sollumz
- Покупка транспорта для FiveM: что проверить до оплаты
- Паки машин FiveM или отдельный транспорт
- Машины реальных брендов в FiveM: можно или нет?
- CodeWalker или Sollumz: какой инструмент нужен для транспорта FiveM?
