Как конвертировать мод машины для одиночной GTA 5 в аддон FiveM

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

Чтобы конвертировать мод машины для одиночной GTA 5 в FiveM, извлеките архив dlc.rpf, положите файлы .yft и .ytd в папку stream, а файлы .meta в папку data, и напишите fxmanifest.lua с одной строкой data_file на каждый meta-файл. Если мод заменяет стоковую машину, переименуйте его файлы в новое имя модели и добавьте запись в vehicles.meta, чтобы он стал аддоном.

Какие шаги нужны, если коротко?

  1. Откройте dlc.rpf мода в программе для работы с архивами и извлеките всё.
  2. Создайте папку ресурса с подпапками stream и data.
  3. Переместите файлы модели и текстур (.yft, .ytd) в stream.
  4. Переместите файлы .meta в data.
  5. Напишите fxmanifest.lua: каждый meta-файл в files и в строке data_file.
  6. Если это replace-мод, переименуйте файлы и напишите запись vehicles.meta для нового имени.
  7. Добавьте ensure в server.cfg, перезапустите сервер, заспавните машину и прочитайте консоль сервера.

Что внутри мода машины для одиночной игры?

Аддон-машина для одиночной игры приходит архивом dlc.rpf, который игрок добавляет в папку dlcpacks игры. Внутри лежат те же файлы, которые нужны ресурсу FiveM, но в структуре DLC одиночной игры:

dlc.rpf
  content.xml                     list of every file and its type
  setup2.xml                      name and load order of the pack
  data/                           (or common/data/)
    handling.meta
    vehicles.meta
    carcols.meta
    carvariations.meta
  x64/vehicles.rpf                (or x64/levels/gta5/vehicles/...rpf)
    mycar.yft
    mycar_hi.yft
    mycar.ytd

Имена папок у разных авторов отличаются. Что есть что, показывает файл content.xml: в нём перечислен каждый файл данных с его fileType, и эти имена типов совпадают с теми, что FiveM использует в строках data_file.

<Item>
  <filename>dlc_mycar:/data/vehicles.meta</filename>
  <fileType>VEHICLE_METADATA_FILE</fileType>
</Item>
<Item>
  <filename>dlc_mycar:/data/carvariations.meta</filename>
  <fileType>VEHICLE_VARIATION_FILE</fileType>
</Item>
<Item>
  <filename>dlc_mycar:/%PLATFORM%/vehicles.rpf</filename>
  <fileType>RPF_FILE</fileType>
</Item>
В dlc.rpfВ ресурсе FiveM
.yft, .ytd внутри vehicles.rpfstream/
Модели деталей тюнинга, в отдельном архиве, если они есть у машиныstream/
Файлы .metadata/, каждый со строкой data_file того типа, который указан в content.xml
content.xml, setup2.xmlНе используются. Их работу выполняет fxmanifest.lua.
Текстовые метки (.gxt2)Не используются. Название добавляется строкой скрипта, см. ниже.

Как извлечь dlc.rpf?

FiveM не загружает архивы .rpf из ресурса, поэтому файлы нужно достать. Подойдёт любая программа для архивов GTA V. В CodeWalker запустите RPF Explorer, откройте через File > Open Folder... папку, в которой лежит dlc.rpf, откройте архив и вложенные в него архивы, выберите файлы и извлеките их командой Extract Raw... или Extract All.... OpenIV делает то же самое.

Архивы вложены друг в друга: dlc.rpf содержит vehicles.rpf, а в нём лежат модели. Продолжайте, пока не дойдёте до отдельных файлов .yft, .ytd и .meta. Оба инструмента сравниваются в гайде CodeWalker или Sollumz.

Как собрать ресурс FiveM?

Разложите извлечённые файлы как в любом ресурсе с транспортом:

resources/
  mycar/
    fxmanifest.lua
    data/
      handling.meta
      vehicles.meta
      carcols.meta
      carvariations.meta
    stream/
      mycar.yft
      mycar_hi.yft
      mycar.ytd

Затем напишите манифест. Каждый meta-файл указывается дважды: один раз в files, чтобы сервер отправил его игрокам, и один раз в строке data_file, чтобы игра загрузила его как данные нужного типа.

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'
fileType в content.xmlФайл
HANDLING_FILEhandling.meta
VEHICLE_METADATA_FILEvehicles.meta
CARCOLS_FILEcarcols.meta
VEHICLE_VARIATION_FILEcarvariations.meta
VEHICLE_LAYOUTS_FILEvehiclelayouts.meta

Полный список типов и порядок их загрузки есть в гайде о fxmanifest.lua и data_file для транспорта. Запуск ресурса и спавн описаны в гайде о добавлении аддон-транспорта на сервер FiveM.

Как превратить replace-мод в аддон?

У replace-мода нет meta-файлов и нет нового имени. Его файлы названы именем стоковой машины, например sultan.yft, и игра рисует их вместо оригинала. При стриме из ресурса FiveM они работают так же: меняется каждый Sultan на сервере. Чтобы оставить стоковую машину и добавить свою рядом, дайте модели собственное имя.

  1. Переименуйте файлы. Имена файлов и есть имя модели.
    sultan.yft      ->  mycar.yft
    sultan_hi.yft   ->  mycar_hi.yft
    sultan.ytd      ->  mycar.ytd
    Текстуры внутри .ytd сохраняют свои имена. Словарь ищется по имени файла, а не по содержимому.
  2. Напишите запись vehicles.meta. Скопируйте запись заменяемой машины из vehicles.meta самой игры и измените modelName и txdName на новое имя, а также gameName для отображаемого названия. Оставьте handlingId, layout и audioNameHash как есть, и машина будет ездить, сажать педов и звучать как оригинал. Каждое поле объясняется в разборе vehicles.meta.
  3. Добавьте запись carvariations.meta с новым modelName, если хотите свои сочетания цветов. См. carvariations и carcols.
  4. Давайте машине свой handling, только если хотите его настраивать. Тогда скопируйте и запись handling, с новым handlingName, и укажите на неё в handlingId.

Отображаемое название берётся из текстовой метки. В FiveM её добавляет одна строка клиентского скрипта:

-- client script: readable name for <gameName>MYCAR</gameName>
AddTextEntry('MYCAR', 'My Car GT')

Что обычно идёт не так после конвертации?

СимптомПричинаГде смотреть
Консоль предупреждает об oversized assetsМоды для одиночной игры часто идут с текстурами 4096 и одним тяжёлым мешемОптимизация транспорта FiveM
Появляются детали тюнинга от другой машиныДва файла carcols.meta используют один и тот же ID китаcarvariations и carcols
Машина не спавнитсяMeta-файл отсутствует в files или data_file, либо не совпадает какое-то имяУстранение проблем с транспортом
Не хватает части текстурМод опирался на общий словарь текстур, который лежал в другом архивеДобавьте этот .ytd в stream и сохраните связь с родителем в txdRelationships.

Ещё одна проверка перед тем, как ставить чужой мод на публичный сервер: прочитайте условия автора. Некоторые моды для одиночной игры не разрешают распространение или использование на серверах.

Что делать, если модель ещё не мод для GTA 5?

У машины из другой игры или обычного 3D-файла нет скелета, шейдеров GTA и коллизии, поэтому извлекать и раскладывать нечего. Сначала её нужно пересобрать как транспорт GTA в 3D-редакторе. Этот процесс описан в гайде о создании транспорта FiveM в Blender с Sollumz.

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

Можно ли использовать мод машины для одиночной GTA 5 в FiveM?
Да, если автор это разрешает. Файлы модели и meta-файлы те же самые. Их нужно извлечь из dlc.rpf и разложить как ресурс с папкой stream, папкой data и fxmanifest.lua.
Можно ли положить dlc.rpf в папку stream?
Нет. FiveM не загружает архивы .rpf из ресурса. Сначала извлеките файлы.
Как конвертировать replace-машину в аддон?
Переименуйте файлы .yft, _hi.yft и .ytd в новое имя модели, затем добавьте запись vehicles.meta, скопированную с заменяемой машины, изменив modelName и txdName на это имя.
Нужны ли content.xml и setup2.xml в FiveM?
Нет. Они относятся к системе DLC одиночной игры. В FiveM файлы и их типы перечисляет fxmanifest.lua.
Какой тип data_file нужен каждому meta-файлу?
То же имя типа, которое ему даёт content.xml: HANDLING_FILE для handling.meta, VEHICLE_METADATA_FILE для vehicles.meta, CARCOLS_FILE для carcols.meta и VEHICLE_VARIATION_FILE для carvariations.meta.

Источники

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

Все гайды