Cómo convertir un mod de coche de un jugador de GTA 5 en un add-on de FiveM

Por Nilo3D · Actualizado:

Para convertir a FiveM un mod de coche de un jugador de GTA 5, extrae el archivo dlc.rpf, pon los archivos .yft y .ytd en una carpeta stream y los archivos .meta en una carpeta data, y escribe un fxmanifest.lua con una línea data_file por cada meta. Si el mod reemplaza a un coche original, renombra sus archivos con un nombre de modelo nuevo y añade una entrada en vehicles.meta para que pase a ser un add-on.

¿Cuáles son los pasos, en resumen?

  1. Abre el dlc.rpf del mod en una herramienta de archivos y extráelo todo.
  2. Crea una carpeta de resource con las subcarpetas stream y data.
  3. Mueve los archivos de modelo y de texturas (.yft, .ytd) a stream.
  4. Mueve los archivos .meta a data.
  5. Escribe el fxmanifest.lua: cada meta en files y en una línea data_file.
  6. Si es un mod de reemplazo, renombra los archivos y escribe una entrada de vehicles.meta para el nombre nuevo.
  7. Añade ensure a server.cfg, reinicia, haz spawn del coche y lee la consola del servidor.

¿Qué hay dentro de un mod de coche de un jugador?

Un coche add-on para un jugador viene como un archivo dlc.rpf que el jugador añade a la carpeta dlcpacks del juego. Dentro están los mismos archivos que necesita un resource de FiveM, envueltos en la estructura de DLC del modo de un jugador:

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

Los nombres de las carpetas varían según el autor. El archivo que te dice qué es cada cosa es content.xml: enumera cada archivo de datos con un fileType, y esos nombres de tipo son los mismos que FiveM usa en las líneas 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>
En el dlc.rpfEn el resource de FiveM
.yft, .ytd dentro de vehicles.rpfstream/
Modelos de piezas de tuning, en su propio archivo cuando el coche las tienestream/
Archivos .metadata/, cada uno con una línea data_file del tipo indicado en content.xml
content.xml, setup2.xmlNo se usan. fxmanifest.lua hace su trabajo.
Etiquetas de texto (.gxt2)No se usan. Añade el nombre con una línea de script, ver abajo.

¿Cómo extraigo el dlc.rpf?

FiveM no carga archivos .rpf desde un resource, así que hay que sacar los archivos. Sirve cualquier herramienta de archivos para GTA V. En CodeWalker, abre el RPF Explorer, usa File > Open Folder... sobre la carpeta que contiene el dlc.rpf, abre el archivo y los archivos que tiene dentro, selecciona los archivos y extráelos con Extract Raw... o Extract All.... OpenIV hace el mismo trabajo.

Los archivos están anidados: dlc.rpf contiene vehicles.rpf, que contiene los modelos. Sigue hasta llegar a archivos .yft, .ytd y .meta sueltos. Las dos herramientas se comparan en CodeWalker vs Sollumz.

¿Cómo monto el resource de FiveM?

Ordena los archivos extraídos como en cualquier resource de vehículo:

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

Después escribe el manifest. Cada meta se declara dos veces: una en files, para que el servidor lo envíe a los jugadores, y otra en una línea data_file, para que el juego lo cargue como el tipo correcto.

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 en content.xmlArchivo
HANDLING_FILEhandling.meta
VEHICLE_METADATA_FILEvehicles.meta
CARCOLS_FILEcarcols.meta
VEHICLE_VARIATION_FILEcarvariations.meta
VEHICLE_LAYOUTS_FILEvehiclelayouts.meta

La lista completa de tipos y el orden en que se cargan está en fxmanifest.lua y data_file para vehículos. Cómo iniciar el resource y hacer spawn está en cómo añadir un vehículo add-on a un servidor FiveM.

¿Cómo convierto un mod de reemplazo en un add-on?

Un mod de reemplazo no tiene metas ni nombre nuevo. Sus archivos llevan el nombre de un coche original, por ejemplo sultan.yft, y el juego los dibuja en lugar del original. En stream desde un resource de FiveM funcionan igual: cambian todos los Sultan del servidor. Para conservar el coche original y añadir el tuyo al lado, dale al modelo su propio nombre.

  1. Renombra los archivos. Los nombres de los archivos son el nombre del modelo.
    sultan.yft      ->  mycar.yft
    sultan_hi.yft   ->  mycar_hi.yft
    sultan.ytd      ->  mycar.ytd
    Las texturas de dentro del .ytd conservan sus nombres. El diccionario se encuentra por su nombre de archivo, no por lo que lleva dentro.
  2. Escribe una entrada de vehicles.meta. Copia la entrada del coche reemplazado del vehicles.meta del propio juego y cambia modelName y txdName al nombre nuevo, además de gameName para el nombre mostrado. Deja handlingId, layout y audioNameHash como están y el coche se conduce, tiene los asientos y suena como el original. Cada campo se explica en vehicles.meta explicado.
  3. Añade una entrada de carvariations.meta con el modelName nuevo si quieres tus propias combinaciones de color. Consulta carvariations y carcols.
  4. Dale un handling propio solo si quieres ajustarlo. En ese caso copia también la entrada de handling, con un handlingName nuevo, y apunta handlingId a ella.

El nombre mostrado sale de una etiqueta de texto. En FiveM la añade una línea de script de cliente:

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

¿Qué suele fallar después de convertir?

SíntomaCausaDónde mirar
La consola avisa de assets sobredimensionadosLos mods de un jugador suelen traer texturas de 4096 y una sola malla pesadaOptimizar un vehículo de FiveM
Aparecen piezas de tuning de otro cocheDos archivos carcols.meta usan el mismo ID de kitcarvariations y carcols
El coche no hace spawnFalta un meta en files o en data_file, o un nombre no coincideSolución de problemas de vehículos
Faltan algunas texturasEl mod dependía de un diccionario de texturas compartido que estaba en otro archivoAñade ese .ytd a stream y conserva el enlace al padre en txdRelationships.

Una comprobación más antes de poner el mod de otra persona en un servidor público: lee las condiciones del autor. Algunos mods de un jugador no permiten la redistribución ni el uso en servidores.

¿Y si el modelo todavía no es un mod de GTA 5?

Un coche de otro juego o un archivo 3D cualquiera no tiene esqueleto, ni shaders de GTA, ni colisión, así que no hay nada que extraer y reordenar. Primero hay que reconstruirlo como vehículo de GTA en una herramienta 3D. Ese proceso está en cómo hacer un vehículo de FiveM en Blender con Sollumz.

Preguntas frecuentes

¿Puedo usar en FiveM un mod de coche de un jugador de GTA 5?
Sí, si el autor lo permite. Los archivos de modelo y los metas son los mismos. Hay que extraerlos del dlc.rpf y ordenarlos como un resource con una carpeta stream, una carpeta data y un fxmanifest.lua.
¿Puedo poner un dlc.rpf en la carpeta stream?
No. FiveM no carga archivos .rpf desde un resource. Extrae primero los archivos.
¿Cómo convierto un coche de reemplazo en un add-on?
Renombra los archivos .yft, _hi.yft y .ytd con un nombre de modelo nuevo y añade una entrada de vehicles.meta copiada del coche reemplazado, con modelName y txdName cambiados a ese nombre.
¿Necesito content.xml y setup2.xml en FiveM?
No. Pertenecen al sistema de DLC del modo de un jugador. En FiveM, el fxmanifest.lua declara los archivos y sus tipos.
¿Qué tipo de data_file necesita cada meta?
El mismo nombre de tipo que le da content.xml: HANDLING_FILE para handling.meta, VEHICLE_METADATA_FILE para vehicles.meta, CARCOLS_FILE para carcols.meta y VEHICLE_VARIATION_FILE para carvariations.meta.

Fuentes

Productos de esta guía

Todas las guías