Справочник data_file в fxmanifest для транспорта

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

Строка data_file в fxmanifest.lua говорит FiveM, что файл из ресурса нужно загрузить в игру как игровые данные определённого типа. Транспорт использует HANDLING_FILE для handling.meta, VEHICLE_METADATA_FILE для vehicles.meta, CARCOLS_FILE для carcols.meta, VEHICLE_VARIATION_FILE для carvariations.meta и VEHICLE_LAYOUTS_FILE для vehiclelayouts.meta. Каждый файл нужно указать ещё и в files.

Что делает data_file?

По документации FiveM, data_file добавляет "a data file of a specified type to the game extra content system", то есть файл данных указанного типа в систему дополнительного контента игры. На практике это тот же механизм, который игра использует для собственных DLC-паков: каждый тип обрабатывает свой загрузчик, умеющий читать такие файлы.

В строке два строковых значения: тип и путь внутри ресурса.

fx_version 'cerulean'
game 'gta5'

files {
  'data/handling.meta',
  'data/vehicles.meta',
  'data/carcols.meta',
  'data/carvariations.meta',
}

data_file 'HANDLING_FILE'          'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE'  'data/vehicles.meta'
data_file 'CARCOLS_FILE'           'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'

Файл должен быть и в files. files заставляет сервер отправить файл игрокам, а data_file заставляет игру его прочитать. Одно без другого ничего не даёт.

Какой тип data_file соответствует какому файлу транспорта?

Типы, важные для транспорта, взяты из справочника FiveM по файлам данных.

Тип data_fileФайлКорневой элементНазначение
HANDLING_FILEhandling.metaCHandlingDataMgrФизические профили. Гайд
VEHICLE_METADATA_FILEvehicles.metaCVehicleModelInfo__InitDataListРегистрирует модели транспорта. Гайд
CARCOLS_FILEcarcols.metaCVehicleModelInfoVarGlobalМод-киты, сирены, свет. Гайд
VEHICLE_VARIATION_FILEcarvariations.metaCVehicleModelInfoVariationЦвета, киты и настройки света для каждой модели.
VEHICLE_LAYOUTS_FILEvehiclelayouts.metaCVehicleMetadataMgrСиденья, точки входа, анимации. Гайд
CLIP_SETS_FILEclip_sets.xmlfwClipSetManagerClip set для своих анимаций.
EXPLOSION_INFO_FILEexplosion.metaCExplosionInfoManagerСвои настройки взрывов.
VFXVEHICLEINFO_FILEvfxvehicleinfo.metaНаборы визуальных эффектов транспорта.
PTFXASSETINFO_FILEptfxassetinfo.metaИнформация об ассетах эффектов частиц.
AUDIO_GAMEDATA, AUDIO_SOUNDDATA, AUDIO_WAVEPACK.dat151.rel, .dat54.rel, папка с файлами .awcСвои звуки двигателя.
VEHICLE_SHOP_DLC_FILEshop_vehicle.metaДанные магазина транспорта из DLC-паков.
CONTENT_UNLOCKING_META_FILEУказан в справочнике без описания. Для аддон-транспорта не нужен.

Тип нужно писать точно и заглавными буквами.

Важен ли порядок строк data_file?

Частично. FiveM всегда загружает записи HANDLING_FILE и VEHICLE_LAYOUTS_FILE раньше всех остальных типов, в каком бы порядке вы их ни написали. Все остальные типы сохраняют порядок манифеста. Так устроен код клиента FiveM: перед загрузкой он сортирует список именно так.

Причина на стороне игры: при чтении vehicles.meta игра сразу же ищет по имени запись handling и layout транспорта. Если они ещё не загружены, транспорт регистрируется без них.

Остальные типы пишите в порядке зависимостей: сначала то, на что ссылаются.

fx_version 'cerulean'
game 'gta5'

files {
  'data/handling.meta',
  'data/vehiclelayouts.meta',
  'data/clip_sets.xml',
  'data/vehicles.meta',
  'data/carcols.meta',
  'data/carvariations.meta',
}

-- 1. things vehicles.meta points at
data_file 'HANDLING_FILE'          'data/handling.meta'
data_file 'CLIP_SETS_FILE'         'data/clip_sets.xml'
data_file 'VEHICLE_LAYOUTS_FILE'   'data/vehiclelayouts.meta'
-- 2. the vehicle itself
data_file 'VEHICLE_METADATA_FILE'  'data/vehicles.meta'
-- 3. kits, then the variations that reference them
data_file 'CARCOLS_FILE'           'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'
  • CLIP_SETS_FILE ближе к началу, потому что layout ссылаются на clip set по имени.
  • Затем VEHICLE_METADATA_FILE.
  • CARCOLS_FILE перед VEHICLE_VARIATION_FILE, потому что carvariations.meta ссылается на киты, которые определяет carcols.meta.

Можно ли загрузить много транспорта одной строкой?

Да. И files, и data_file принимают glob-шаблоны в пути. * совпадает в пределах одной папки, а ** на любой глубине. Пак транспорта, где у каждого транспорта своя подпапка, можно объявить один раз:

files {
  'data/**/handling.meta',
  'data/**/vehicles.meta',
  'data/**/carcols.meta',
  'data/**/carvariations.meta',
}

data_file 'HANDLING_FILE'          'data/**/handling.meta'
data_file 'VEHICLE_METADATA_FILE'  'data/**/vehicles.meta'
data_file 'CARCOLS_FILE'           'data/**/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/**/carvariations.meta'

После этого новый транспорт в data/ подхватывается без правки манифеста.

Почему файлов .yft и .ytd нет в манифесте?

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

Как распаковать dlc.rpf из одиночной игры и разложить файлы по ресурсу, описано в гайде как конвертировать мод машины из одиночной игры в аддон FiveM.

Можно ли редактировать meta-файлы в ресурсе под escrow?

У платных ресурсов, которые поставляются через Cfx.re Asset Escrow, скрипты и файлы моделей защищены, а в записи манифеста escrow_ignore перечислены файлы, которые система escrow не трогает. Какие файлы остаются открытыми, решает автор, поэтому смотрите страницу продукта. Чаще всего владелец сервера хочет редактировать такие meta-файлы:

  • handling.meta, чтобы изменить скорость, сцепление и торможение.
  • carvariations.meta, чтобы изменить сочетания цветов.
  • vehicles.meta, чтобы изменить флаги, класс или ключ отображаемого названия.

В транспорте Nilo3D, например в Coil S-Cooter, meta-файлы handling и vehicles остаются открытыми. Как устанавливаются ресурсы под escrow, описано в гайде об установке ресурса FiveM из Cfx.re Escrow.

Если ресурс с escrow не запускается с ошибкой "You lack the required entitlement", смотрите гайд как исправить ошибку entitlement.

Какие ошибки в манифесте встречаются чаще всего?

ОшибкаРезультатРешение
Meta-файл есть в data_file, но его нет в filesФайл не доходит до игрока.Добавьте тот же путь в files.
Неверный путь или имя папкиНичего не загружается.Пути задаются относительно папки ресурса и пишутся через прямую косую черту.
Неверный тип для файлаФайл попадает не к тому загрузчику, и его данные не применяются.Используйте тип из таблицы выше.
Meta-файлы лежат в stream/Они не загружаются как файлы данных.Держите meta-файлы вне stream и объявляйте их.
Нет fx_version или gameРесурс загружается некорректно.Начинайте манифест с fx_version 'cerulean' и game 'gta5'.

Весь процесс, от папок до спавна, описан в гайде о добавлении аддон-транспорта в FiveM.

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

Какой data_file нужен для handling.meta?
data_file 'HANDLING_FILE' и следом путь к handling.meta, при этом тот же путь указан в files.
Какой data_file нужен для carcols.meta и carvariations.meta?
Для carcols.meta нужен CARCOLS_FILE, для carvariations.meta нужен VEHICLE_VARIATION_FILE.
Нужно ли указывать meta-файлы и в files, и в data_file?
Да. files заставляет сервер отправить файл игрокам, а data_file заставляет игру его загрузить. Meta-файл, которого нет в files, не скачивается.
Поддерживает ли data_file подстановочные знаки?
Да. В справочнике FiveM по манифесту сказано, что data_file поддерживает glob-шаблоны в имени файла, например data/**/handling.meta.
В каком порядке FiveM загружает файлы данных транспорта?
Записи HANDLING_FILE и VEHICLE_LAYOUTS_FILE загружаются первыми. Все остальные типы загружаются в том порядке, в котором они идут в манифесте.

Источники

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

Все гайды