Разбор vehicles.meta по полям
vehicles.meta регистрирует модель транспорта в GTA V. В этом XML-файле каждый Item задаёт имя модели и её словаря текстур, связывает её с записью handling и layout сидений, определяет тип, класс, дистанции LOD и флаги поведения. Без записи в этом файле игра не считает .yft транспортом.
Что делает vehicles.meta?
vehicles.meta содержит по одному <Item> на каждый транспорт внутри <InitDatas>. При загрузке файла игра создаёт модель транспорта для каждого Item и находит всё, на что он ссылается: запись handling, layout, камеры и параметры взрыва. В FiveM файл загружается строкой data_file 'VEHICLE_METADATA_FILE'.
Имена тегов ниже взяты из схемы данных самой игры, поэтому они точные. Обычно запись аддона начинают с копии самого близкого стокового транспорта и меняют в ней идентифицирующие поля.
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfo__InitDataList>
<residentTxd>vehshare</residentTxd>
<residentAnims />
<InitDatas>
<Item>
<modelName>mycar</modelName>
<txdName>mycar</txdName>
<handlingId>MYCAR</handlingId>
<gameName>MYCAR</gameName>
<vehicleMakeName>KARIN</vehicleMakeName>
<audioNameHash>sultan</audioNameHash>
<layout>LAYOUT_STANDARD</layout>
<cameraName>DEFAULT_FOLLOW_VEHICLE_CAMERA</cameraName>
<wheelScale value="0.293000" />
<wheelScaleRear value="0.293000" />
<HDTextureDist value="5.000000" />
<lodDistances content="float_array">
10.000000
25.000000
50.000000
100.000000
500.000000
500.000000
</lodDistances>
<flags>FLAG_AVERAGE_CAR FLAG_POOR_CAR</flags>
<type>VEHICLE_TYPE_CAR</type>
<plateType>VPT_BACK_PLATES</plateType>
<dashboardType>VDT_SULTAN</dashboardType>
<vehicleClass>VC_SPORT</vehicleClass>
<wheelType>VWT_SPORT</wheelType>
<!-- copy the remaining tags from the stock vehicle you start from -->
</Item>
</InitDatas>
<txdRelationships>
<Item>
<parent>vehshare</parent>
<child>mycar</child>
</Item>
</txdRelationships>
</CVehicleModelInfo__InitDataList>Какие поля идентифицируют транспорт?
Пять полей связывают запись с файлами модели и с другими meta-файлами, и каждое должно точно совпадать со своей парой.
| Поле | Значение | Должно совпадать с |
|---|---|---|
modelName | Имя файла модели и имя для спавна. | stream/<modelName>.yft |
txdName | Имя файла словаря текстур. | stream/<txdName>.ytd |
handlingId | Имя записи handling для этого транспорта. | handlingName в handling.meta |
gameName | Ключ текстовой метки для отображаемого названия. Хранится в буфере на 12 символов, поэтому берите не больше 11 символов. | Метка, добавленная через AddTextEntry |
vehicleMakeName | Ключ текстовой метки производителя. То же ограничение длины. | Необязательная метка |
handlingId может указывать на стоковую запись handling, например SULTAN. В этом случае транспорту не нужен свой handling.meta.
Какие поля управляют сиденьями, камерами и звуком?
Эти поля выбирают готовые настройки по имени. Имена ссылаются на записи, которые уже есть в игре, или на те, что вы добавляете в другом meta-файле.
| Поле | Значение по умолчанию в схеме | Значение |
|---|---|---|
layout | LAYOUT_STANDARD | Layout сидений из vehiclelayouts.meta: сиденья, точки входа и анимации. См. разбор vehiclelayouts.meta. |
audioNameHash | пусто | Имя звуковой настройки, обычно это имя модели стокового транспорта. |
cameraName | DEFAULT_FOLLOW_VEHICLE_CAMERA | Следящая камера от третьего лица. |
aimCameraName | DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA | Камера при прицеливании из транспорта. |
bonnetCameraName, povCameraName | пусто | Камера на капоте и камера от первого лица. |
coverBoundOffsets | STANDARD_COVER_OFFSET_INFO | Позиции укрытия вокруг транспорта. |
explosionInfo | EXPLOSION_INFO_DEFAULT | Какую настройку взрыва игра берёт, когда транспорт взрывается. |
vfxInfoName | VFXVEHICLEINFO_CAR_GENERIC | Набор визуальных эффектов (выхлоп, эффекты колёс). |
numSeatsOverride | -1 | Принудительно задаёт число сидений. При -1 его определяет layout. |
Что означают lodDistances и HDTextureDist?
В lodDistances записаны шесть дистанций в метрах. Они определяют, какая версия модели отрисовывается. Первое значение задаёт дальность высокодетализированной модели; если оно больше нуля, игра также регистрирует второй файл модели с именем <modelName>_hi.
| Позиция | Внутреннее имя | Какая версия модели рисуется до этой дистанции |
|---|---|---|
| 1 | VLT_HD | Высокодетализированная модель (_hi.yft). |
| 2 | VLT_LOD0 | Самый детальный LOD внутри основного .yft. |
| 3 | VLT_LOD1 | Второй LOD. |
| 4 | VLT_LOD2 | Третий LOD. |
| 5 | VLT_LOD3 | Четвёртый LOD. |
| 6 | VLT_LOD_FADE | Транспорт перестаёт отрисовываться. Если здесь 0, игра берёт пятое значение. |
У стокового Sultan стоит 10, 25, 50, 100, 500, 500. HDTextureDist (по умолчанию 5.0) задаёт дистанцию для текстур высокого разрешения. Сами LOD разобраны в гайде о LOD в транспорте FiveM.
Другие поля отрисовки: wheelScale и wheelScaleRear задают масштаб передних и задних колёс, dirtLevelMin и dirtLevelMax (от 0 до 1) задают, насколько грязным спавнится транспорт, diffuseTint задаёт цветовой оттенок, а damageMapScale и damageOffsetScale (от 0 до 1) ограничивают визуальную деформацию.
Как шесть дистанций соотносятся с уровнями LOD модели и какие значения используем мы, описано в гайде как оптимизировать транспорт FiveM.
Какие значения допустимы для type, vehicleClass и других перечислений?
Каждое из пяти полей принимает одно значение из фиксированного списка. Всё, чего в списке нет, недопустимо.
| Поле | Значения |
|---|---|
type | VEHICLE_TYPE_CAR, _PLANE, _TRAILER, _QUADBIKE, _DRAFT, _SUBMARINECAR, _AMPHIBIOUS_AUTOMOBILE, _AMPHIBIOUS_QUADBIKE, _HELI, _BLIMP, _AUTOGYRO, _BIKE, _BICYCLE, _BOAT, _TRAIN, _SUBMARINE |
vehicleClass | VC_COMPACT (0), VC_SEDAN, VC_SUV, VC_COUPE, VC_MUSCLE, VC_SPORT_CLASSIC, VC_SPORT, VC_SUPER, VC_MOTORCYCLE, VC_OFF_ROAD, VC_INDUSTRIAL, VC_UTILITY, VC_VAN, VC_CYCLE, VC_BOAT, VC_HELICOPTER, VC_PLANE, VC_SERVICE, VC_EMERGENCY, VC_MILITARY, VC_COMMERCIAL, VC_RAIL, VC_OPEN_WHEEL (22) |
plateType | VPT_FRONT_AND_BACK_PLATES, VPT_FRONT_PLATES, VPT_BACK_PLATES, VPT_NONE |
wheelType | VWT_SPORT, VWT_MUSCLE, VWT_LOWRIDER, VWT_SUV, VWT_OFFROAD, VWT_TUNER, VWT_BIKE, VWT_HIEND, от VWT_SUPERMOD1 до VWT_SUPERMOD5 |
dashboardType | VDT_BANSHEE, VDT_BOBCAT, VDT_CAVALCADE, VDT_COMET, VDT_DUKES, VDT_FACTION, VDT_FELTZER, VDT_FEROCI, VDT_FUTO, VDT_GENTAXI, VDT_MAVERICK, VDT_PEYOTE, VDT_RUINER, VDT_SPEEDO, VDT_SULTAN, VDT_SUPERGT, VDT_TAILGATER, VDT_TRUCK, VDT_TRUCKDIGI, VDT_INFERNUS, VDT_ZTYPE, VDT_LAZER, VDT_SPORTBK, VDT_RACE, VDT_LAZER_VINTAGE, VDT_PBUS2 |
type должен согласовываться с handling: для VEHICLE_TYPE_BIKE нужна запись handling с блоком sub-handling для мотоцикла, для машины нужен блок для машины. wheelType определяет, какую категорию колёс предлагает меню тюнинга.
Что делают флаги в vehicles.meta?
<flags> содержит список имён, разделённых пробелами. Каждое имя включает одно поведение. В схеме их около 200. В таблице те, которые авторы аддонов трогают чаще всего, с описанием из данных игры.
| Флаг | Эффект |
|---|---|
FLAG_HAS_LIVERY | У транспорта есть ливреи; при спавне подменяется текстура. |
FLAG_EXTRAS_ALL | Включаются все подходящие экстры. |
FLAG_EXTRAS_REQUIRE | Должна быть выбрана одна из доступных экстр. |
FLAG_EXTRAS_STRONG | Экстры не отламываются. |
FLAG_IS_ELECTRIC | У транспорта нет бензобака. |
FLAG_NO_BOOT | Транспорт не учитывается для инвентаря багажника. |
FLAG_IS_VAN | Фургон: задние двери открываются в стороны. |
FLAG_LAW_ENFORCEMENT, FLAG_EMERGENCY_SERVICE | Помечает транспорт полиции и экстренных служб. |
FLAG_NO_RESPRAY | Нельзя перекрасить в гаражах. |
FLAG_CANNOT_BE_MODDED | Запрещает тюнинг транспорта. |
FLAG_DONT_SPAWN_AS_AMBIENT, FLAG_DONT_SPAWN_IN_CARGEN | Исключает транспорт из фонового трафика и из генераторов припаркованных машин. |
FLAG_DRIVER_NO_DRIVE_BY | Водитель не может делать drive-by. |
FLAG_HAS_BULLETPROOF_GLASS | Стёкла нельзя разбить. |
FLAG_RICH_CAR, FLAG_AVERAGE_CAR, FLAG_POOR_CAR | Какие типы педов могут быть водителями. |
FLAG_HEADLIGHTS_USE_ACTUAL_BONE_POS | Фары используют реальную позицию кости. |
Какие поля влияют на трафик и спавн?
Эта группа полей важна, только когда игра сама спавнит транспорт в трафике. На большинстве roleplay-серверов аддон-транспорт спавнят скрипты, поэтому эти поля можно оставить такими же, как у скопированного стокового транспорта.
frequencyиmaxNum: как часто транспорт появляется в фоновом трафике и сколько его может там быть.swankness: отSWANKNESS_0доSWANKNESS_5, от развалюхи до очень дорогого.identicalModelSpawnDistanceиmaxNumOfSameColor(по умолчанию 10): не дают одинаковому транспорту скапливаться.defaultBodyHealth: по умолчанию 1000.trailers,drivers,extraIncludes,requiredExtras: списки прицепов, которые можно прицепить, принудительных моделей водителей и экстр, которые спавнятся вместе.
Что такое residentTxd и txdRelationships?
residentTxd в начале файла называет словарь текстур, который остаётся загруженным для транспорта из этого файла. Стоковые файлы используют vehshare, общие текстуры транспорта. txdRelationships в конце файла содержит список пар «родитель и потомок»: если текстура не найдена в дочернем словаре, игра ищет её в родительском.
Так транспорт без общих текстур в своём .ytd всё равно находит их в vehshare. Так же несколько единиц транспорта могут делить один свой словарь: сделайте его родителем для txdName каждого транспорта.
Частые вопросы
- Где находится vehicles.meta в GTA 5?
- Базовый файл лежит в common.rpf по пути data/levels/gta5/vehicles.meta, а у каждого DLC-пака есть свой в common/data/levels/gta5/. В FiveM у аддон-транспорта свой vehicles.meta внутри ресурса.
- Какое имя для спавна у аддон-транспорта?
- Имя для спавна задаётся полем modelName в vehicles.meta, оно же имя файла модели .yft. gameName задаёт только отображаемую метку.
- Какой длины может быть gameName?
- Игра хранит gameName и vehicleMakeName в буферах на 12 символов, поэтому каждое может содержать не больше 11 символов.
- Могут ли два транспорта использовать одну запись handling?
- Да. Несколько записей vehicles.meta могут использовать один и тот же handlingId. Ездить они будут одинаково.
- Как загрузить vehicles.meta в FiveM?
- Укажите файл в files в fxmanifest.lua и добавьте data_file 'VEHICLE_METADATA_FILE' с тем же путём.
Источники
Товары из гайда
Все гайды
- Как установить ресурс FiveM из Cfx.re Escrow (Granted Assets)
- Как добавить кастомный транспорт на сервер ESX, QBCore или QBox
- Что такое LOD у транспорта в FiveM?
- Как добавить аддон-транспорт на сервер FiveM
- Разбор handling.meta: поля, единицы и флаги
- Разбор carvariations.meta и carcols.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?
