Cómo añadir coches addon a un servidor FiveM: ficheros stream y data

Añade coches addon a FiveM paso a paso: la carpeta stream, vehicles.meta, carvariations.meta, carcols.meta, handling.meta, líneas de data_file en fxmanifest, addon vs reemplazar.

Tienes un pack de coches que quieres en tu servidor, y la carpeta contiene ficheros como .yft, .ytd y varios ficheros .meta. Esta guía explica dónde va cada fichero, qué necesita el fxmanifest.lua y cómo invocar el coche, con la diferencia entre coches addon y de reemplazo.

Qué contiene un pack de coches addon

Un coche viene en dos tipos de ficheros:

  • Ficheros de modelo y textura, que van en una carpeta stream: mycar.yft (el modelo), mycar_hi.yft (el modelo de alto detalle), mycar.ytd (texturas) y a veces ficheros .ydr o .ytyp.
  • Ficheros de datos, que van en una carpeta data: vehicles.meta, carvariations.meta, carcols.meta y handling.meta, y a veces vehiclelayouts.meta.

El primer conjunto es cómo se ve el coche, el segundo conjunto es qué es: su nombre, colores, conducción y asientos.

La estructura de carpetas

Crea un recurso para el coche, o uno para un pack completo:

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

Los ficheros en stream se envían a los jugadores automáticamente. No los listas en el manifest. Los ficheros en data no se transmiten, y el manifest debe declararlos.

El fxmanifest.lua

lua
fx_version 'cerulean'
game 'gta5'

files {
    'data/vehicles.meta',
    'data/carvariations.meta',
    'data/carcols.meta',
    'data/handling.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'

El bloque files {} hace que los ficheros estén disponibles para el cliente del juego. Cada línea de data_file le dice al juego qué tipo es un fichero. Dos reglas importan:

  • Cada fichero necesita ambos: una entrada en files y una línea de data_file con el tipo correcto.
  • Un pack con muchos coches a menudo tiene una carpeta data por coche. Puedes usar un patrón como 'data/**/*.meta' en files {}, pero las líneas de data_file para estos ficheros aún deben escribirse, una por tipo, y las líneas de tipo aceptan el mismo patrón.
lua
files { 'data/**/*.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'

Si el pack también tiene un vehiclelayouts.meta, decláralo también, con data_file 'VEHICLE_LAYOUTS_FILE' 'data/vehiclelayouts.meta'.

Inicia e invoca

En server.cfg, añade el recurso:

cfg
ensure mycar

El nombre de la carpeta del recurso y el nombre del ensure deben coincidir. Si usas una carpeta de bracket como [cars], ensure [cars] inicia todo lo que hay dentro.

El nombre de invocación es el modelName en vehicles.meta:

xml
<Item>
  <modelName>mycar</modelName>
  <txdName>mycar</txdName>
  <handlingId>MYCAR</handlingId>
  ...
</Item>

Aquí lo invocas con mycar. En un script:

lua
local model = joaat('mycar')
lib.requestModel(model)
local veh = CreateVehicle(model, coords.x, coords.y, coords.z, heading, true, false)

lib.requestModel es de ox_lib. Sin él, llama a RequestModel(model) y espera hasta que HasModelLoaded(model) sea verdadero. La mayoría de menús de administrador y el menú de txAdmin invocan un coche con el mismo nombre.

Consejo: el modelName, los nombres de fichero .yft/.ytd y el txdName deben coincidir todos. Un desajuste es lo primero que debes comprobar cuando un coche no aparece.

Coches addon versus coches de reemplazo

Un coche addon tiene un nuevo nombre que el juego base no usa, por ejemplo mycar. Necesita los ficheros de datos anteriores, y añade un coche a la lista. Tu nuevo coche y los coches originales existen. Esta es la opción correcta para casi todos los coches hoy en día.

Un coche de reemplazo usa los nombres de fichero de un coche del juego base, como sultan.yft, y los pone en una carpeta stream. FiveM carga entonces la tuya en lugar de la original, en todas partes donde aparece ese coche, incluso en el tráfico. Normalmente no necesita un vehicles.meta para el modelo, ya que el juego ya conoce el nombre. Un coche de reemplazo solo cambia la apariencia. Si quieres otra conducción, necesitas el handling.meta coincidente con el id de conducción original.

No mezcles las dos ideas en una carpeta. Un pack que mezcla ficheros de reemplazo y addon es una fuente común de errores confusos.

Comprueba el resultado

  • Inicia el servidor y lee la consola. Los errores de recursos, como un fichero faltante listado en files, aparecen al iniciar. Si el recurso no inicia en absoluto, ver couldn't start resource.
  • Únete e invoca el coche. Si no se encuentra un coche, el nombre no coincide con el modelName, o el recurso no se ha iniciado.
  • Abre los colores y conducción del coche en el juego para comprobar que los ficheros carcols.meta y handling.meta están en uso.

Problemas comunes

  • El coche no existe. Comprueba ensure, las entradas de files y el modelName. Un error tipográfico en una ruta en files detiene el recurso.
  • El coche es invisible, blanco, o tiene texturas incorrectas. El .ytd falta o tiene un nombre diferente al del modelo. Ver oversized assets si también ves advertencias de streaming.
  • El coche conduce como un coche de base. El handling.meta no se ha declarado, o su handlingId no coincide con el de vehicles.meta.
  • Un coche basado en DLC se muestra como roto. Algunos coches necesitan una compilación de juego más reciente. Establece uno con sv_enforceGameBuild en server.cfg: ver sv_enforceGameBuild and DLC.

Lista de verificación

Síntoma Solución
El recurso no inicia Comprueba que cada ruta en files {} existe y que el manifest no tiene errores tipográficos
El coche no puede invocarse Invoca con el modelName de vehicles.meta; ensure el recurso
El coche es blanco o sin texturas Comprueba el fichero .ytd y su nombre contra el modelo
El coche conduce mal Añade la línea HANDLING_FILE y coincide el handlingId
Sin colores o colores incorrectos Añade líneas CARCOLS_FILE y VEHICLE_VARIATION_FILE
El coche original cambió Usaste un nombre de reemplazo: renombra los ficheros y el modelo para un addon
Coche roto con modelo DLC Aumenta la compilación del juego con sv_enforceGameBuild

Respuestas rápidas

¿Qué nombre uso para invocar un coche addon?

El valor modelName en vehicles.meta. Si dice <modelName>mycar</modelName>, lo invocas con mycar, que también debe coincidir con los nombres de los ficheros .yft y .ytd.

¿Cuál es la diferencia entre un coche addon y un coche de reemplazo?

Un coche de reemplazo sobrescribe un coche del juego base usando sus nombres de fichero, así que el original desaparece. Un coche addon tiene un nuevo nombre único y sus propios ficheros meta, y se sitúa junto a los coches originales.

Mi coche aparece pero conduce mal o se ve blanco. ¿Qué debo comprobar?

La conducción incorrecta apunta a handling.meta y su línea de data_file. Un coche blanco o con texturas faltantes apunta a un .ytd faltante o a un nombre que no coincide con el modelo.

Scripts que evitan este problema

Chameleon Paints82 pinturas camaleón que cambian de color, en un menú de un clic.Ver script →Advanced BoostingBoosting de vehículos desde una tablet: contratos de clase D a S+, crews y cola en vivo.Ver script →Car BombColoca, detecta y desactiva bombas en coches — con detonador y minijuego de C4.Ver script →

Sigue leyendo