Cómo añadir coches mods en FiveM GTA RP: guía paso a paso

Aprende a añadir coches mods (addon vehicles) en tu servidor FiveM GTA RP con resource propio, vehicles.meta, handling y stream organizado.

Añadir coches personalizados en un servidor FiveM RP es una de las demandas más comunes de los owners — y también una de las que más quebraderos de cabeza provoca por mala organización. El problema rara vez está en el archivo del coche en sí: está en la estructura del resource, en los metadatos obligatorios y en el orden de streaming.

Este tutorial es para owners y desarrolladores de servidores FiveM GTA RP que quieren añadir vehículos addon (que no sustituyen coches vanilla) de forma organizada, sin romper los concesionarios del framework y sin convertir la carpeta [cars] en algo ingobernable con 400 resources sueltos.

Tiempo estimado de ejecución: 20 a 30 minutos por coche, o 1 hora para montar un pack organizado con 10 a 20 vehículos. Voy a cubrir desde la estructura de carpetas hasta el registro en la base de datos para que el coche aparezca en el concesionario de tu framework.

Requisitos previos

Lo que necesitas antes de empezar

Servidor FiveM en funcionamiento (Linux o Windows), acceso al filesystem del servidor (SFTP o directo), framework instalado (ESX, QBCore o vRP) y los archivos del coche mod ya descargados — generalmente un zip con .yft, .ytd y _hi.yft. Cliente MySQL para editar la tabla de vehicles del framework.

Directorio base resources/[cars]/
Extensiones de archivo .yft .ytd _hi.yft
Metadatos obligatorios vehicles.meta carvariations.meta handling.meta
Comando de reload refresh; ensure nombre-resource

Asegúrate de que no estás corriendo en modo OneSync legacy en un servidor moderno — los addons de coche funcionan mejor en OneSync infinity, que es el estándar actual de FiveM.

Estructura de carpetas del resource

La primera regla: un resource por coche o un resource por pack temático (coches policiales, supercoches, sedanes). No mezcles coches aleatorios en un único resource gigante — depurar se vuelve imposible cuando uno de ellos se rompe.

La estructura estándar de un coche addon es:

resources/[cars]/lambo2024/
├── fxmanifest.lua
├── stream/
│   ├── lambo2024.yft
│   ├── lambo2024_hi.yft
│   └── lambo2024.ytd
└── data/
    ├── vehicles.meta
    ├── carvariations.meta
    ├── carcols.meta
    └── handling.meta

La carpeta [cars] con corchetes es una categoría — FiveM la reconoce automáticamente y organiza todos los resources de coches dentro de ella. No es obligatoria, pero mantiene el resources/ limpio cuando tienes 200 coches.

El nombre del modelo es case-sensitive en Linux

Si tu servidor corre en Linux (caso habitual en VPS Hostini), el nombre del archivo .yft debe coincidir EXACTAMENTE con el spawn name dentro del vehicles.meta — incluyendo mayúsculas y minúsculas. Lambo2024.yft es diferente de lambo2024.yft. En Windows pasa desapercibido, en Linux rompe la carga.

Creando el resource paso a paso

Voy a usar como ejemplo un coche ficticio llamado lambo2024. Sustituye por el nombre de tu modelo en todos los comandos.

01

Crea la estructura de directorios en el servidor:

cd /ruta/del/servidor/resources
mkdir -p [cars]/lambo2024/stream
mkdir -p [cars]/lambo2024/data

Usa el nombre del coche en minúsculas, sin acentos y sin espacios. Caracteres especiales o mayúsculas causarán problemas en el streaming en Linux.

02

Sube los archivos del modelo a la carpeta stream/:

# vía SFTP o cp local
cp lambo2024.yft     [cars]/lambo2024/stream/
cp lambo2024_hi.yft  [cars]/lambo2024/stream/
cp lambo2024.ytd     [cars]/lambo2024/stream/

El archivo _hi.yft es el modelo de alta resolución (LOD0) — algunos coches no lo incluyen. Si no viene, deja solo el .yft base. El .ytd contiene todas las texturas del vehículo.

03

Coloca los 4 archivos .meta en la carpeta data/. Estos archivos normalmente vienen junto con el pack del coche. Si falta alguno:

  • vehicles.meta — obligatorio. Define spawn name, clase, layouts.
  • carvariations.meta — obligatorio. Define colores y variaciones.
  • carcols.meta — opcional. Define mods y tuning visual.
  • handling.meta — obligatorio. Define la conducción.

Sin vehicles.meta el coche ni siquiera aparece para FiveM. Sin handling.meta usa el handling por defecto del adder y queda raro.

04

Crea el fxmanifest.lua en la raíz del resource:

fx_version 'cerulean'
game 'gta5'

author 'NombreDelCreador'
description 'Lamborghini 2024 Addon'
version '1.0.0'

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

El orden de las data_file importa: FiveM lee en la secuencia declarada. Si inviertes VEHICLE_METADATA_FILE con HANDLING_FILE, el coche aparece sin la física correcta.

05

Añade el resource al server.cfg:

# server.cfg
ensure [cars]
# o para resources individuales:
ensure lambo2024

Si usaste la categoría [cars], basta con ensure [cars] y todos los coches de dentro se cargan. Para hacer reload sin reiniciar el servidor entero, usa en la consola:

refresh
ensure lambo2024

Validando los metadatos

La mayoría de los bloqueos vienen de vehicles.meta o handling.meta mal formados. Vale la pena revisarlos manualmente antes del primer arranque.

06

Abre vehicles.meta y localiza la etiqueta <modelName>:

<Item>
    <modelName>lambo2024</modelName>
    <txdName>lambo2024</txdName>
    <handlingId>lambo2024</handlingId>
    <gameName>lambo2024</gameName>
    <vehicleMakeName>LAMBORGHINI</vehicleMakeName>
    <!-- resto de la config -->
</Item>

Los 4 campos (modelName, txdName, handlingId, gameName) deben tener el MISMO valor — y ese valor es el nombre del archivo .yft sin extensión. Una divergencia aquí es la razón número uno del “coche aparece chequered” (sin textura).

07

En handling.meta, confirma que el handlingName coincida:

<Item type="CHandlingData">
    <handlingName>lambo2024</handlingName>
    <fMass value="1700.00" />
    <fInitialDragCoeff value="9.85" />
    <!-- ... -->
</Item>

Si tienes varios coches en un único resource, cada uno necesita su propio <Item> dentro de <HandlingData>. No dupliques IDs.

No edites valores que no entiendes

Tocar a ciegas fMass, fInitialDriveForce o fSuspensionForce puede hacer que el coche salga volando al hacer spawn, se ponga del revés o cause un crash en el cliente. Si quieres ajustar, cambia un valor a la vez y prueba.

Registrando el coche en el framework RP

Añadir el resource no es suficiente — el coche tiene que estar en la tabla vehicles de la base de datos para aparecer en el concesionario y poder ser comprado por los jugadores.

ESX Framework

En ESX legacy, conecta al MySQL y ejecuta:

INSERT INTO vehicles (name, model, price, category)
VALUES ('Lamborghini 2024', 'lambo2024', 850000, 'super');

El campo model debe ser EXACTAMENTE el spawn name del coche (mismo valor que el <modelName> del vehicles.meta).

QBCore Framework

En QBCore, edita qb-core/shared/vehicles.lua:

['lambo2024'] = {
    ['name'] = 'Lamborghini 2024',
    ['brand'] = 'Lamborghini',
    ['model'] = 'lambo2024',
    ['price'] = 850000,
    ['category'] = 'super',
    ['hash'] = `lambo2024`,
    ['shop'] = 'pdm',
},

Reinicia qb-core después (restart qb-core en la consola).

Mantén un pack de pruebas separado

Crea un resource [cars-test]/staging donde sueltes los coches nuevos antes de moverlos al [cars] definitivo. Así pruebas en un entorno aislado sin ensuciar el pack de producción. Para retirarlo, basta con stop al resource — no hace falta borrar del disco.

Verificación

Para confirmar que todo funcionó, entra en el servidor como admin y usa:

/car lambo2024

O en frameworks con un comando propio de spawn (/spawncar en ESX, /admincar en algunos scripts QB). El coche debe aparecer con la textura completa, sonido de motor y física consistente.

Comprueba también la consola del servidor durante el arranque. Salida esperada:

Started resource lambo2024
Loading vehicle metadata: data/vehicles.meta
Loading handling: data/handling.meta

Si aparece Failed to load, Unable to parse XML o Duplicate handling ID, el error está en uno de los .meta. Mira la sección de resolución de problemas más abajo.

Resolución de problemas

El coche aparece sin textura (chequered)

Causa: divergencia entre modelName en el vehicles.meta y el nombre del .yft, o falta el .ytd en el stream. Solución: confirma que los 3 nombres coincidan (archivo, modelName, txdName) y que el .ytd esté en stream/.

Error “Vehicle not found” al usar /car

Causa: el resource no se ha cargado o ensure no está en el server.cfg. Solución: ejecuta refresh seguido de ensure lambo2024 en la consola. Si persiste, revisa que el fxmanifest.lua declare los 4 data_file correctamente.

El servidor se bloquea durante la carga

Causa: handling.meta con un valor inválido (texto donde espera número) o XML mal formado. Solución: ejecuta developer 1 en la consola del servidor antes del arranque para ver mensajes detallados. Generalmente el error apunta a la línea exacta.

El coche aparece en el concesionario pero no se puede comprar

Causa: el registro en la base de datos tiene un model incorrecto. Solución: confirma que el valor del campo model en la tabla vehicles sea idéntico al spawn name (case-sensitive).

Próximos pasos

Después de tener el primer coche funcionando, vale la pena automatizar el resto del flujo:

  • Crear un pack único con 10 a 30 coches agrupados por categoría (super, sport, sedan) en vez de 30 resources separados.
  • Añadir carcols.meta personalizado para liberar tuning visual en tus coches (llantas, capós, escapes).
  • Implementar lazy load con set sv_streamerMode 1 en servidores con 400+ vehículos para reducir el tiempo de descarga inicial.
  • Configurar un handling realista usando herramientas como el Handling Editor in-game antes de exportar al .meta final.
  • Versionar el [cars]/ en un git aparte para rastrear cambios y hacer rollback fácil.

Si estás corriendo un servidor FiveM RP en producción con un pack pesado de coches, una VPS dedicada para game servers de Hostini entrega CPU single-thread alto y SSD NVMe — lo que marca una diferencia real en el tiempo de stream de assets cuando 64 jugadores se conectan al mismo tiempo.

Preguntas frecuentes

¿Cuál es la diferencia entre un coche addon y un coche replace en FiveM?

Addon añade un vehículo nuevo con spawn name propio (ej: lambo2024) sin sustituir ningún coche vanilla. Replace sustituye un modelo base del GTA V (ej: reemplaza el adder por el lambo). En servidores RP, prefiere siempre addon — replace rompe misiones, NPCs y concesionarios que dependen de los modelos originales.

¿Puedo añadir todos los coches addon que quiera?

Técnicamente FiveM acepta miles, pero cada vehículo en stream consume RAM en el cliente y aumenta el tiempo de descarga inicial. Servidores RP sanos se mantienen entre 200 y 600 addons. Por encima de eso, considera usar lazy loading o dividir en packs opcionales.

¿Por qué el coche aparece sin textura (chequered) en FiveM?

Casi siempre es un archivo .ytd que falta, un nombre de modelo divergente entre vehicles.meta y el .yft, o un orden incorrecto en el stream. Confirma que el spawn name del vehicles.meta coincida exactamente con el nombre del .yft (sin extensión) y que el .ytd correspondiente esté en el stream.

¿Dónde edito el precio y la categoría del coche mod en FiveM RP?

El precio está en el script de concesionario del framework (ESX, QBCore, vRP). El coche debe estar registrado en la tabla vehicles de la base de datos con el mismo spawn name. La categoría visual (super, sports, sedan) se define en vehicles.meta en el campo vehicleClass.

El coche mod bloquea el servidor al hacer spawn — ¿qué puede ser?

Causas comunes: handling.meta con un valor inválido (NaN o texto donde espera número), vehicles.meta sin el fragmento layouts/handlingId correcto, o .yft corrupto. Revisa la consola del servidor con developer 1 y busca errores de streaming durante la carga del resource.

¿Necesito reiniciar todo el servidor para añadir un coche?

No. Usa 'refresh' seguido de 'ensure nombre-del-resource' en la consola. Los jugadores conectados tendrán que reconectarse para descargar los archivos nuevos del stream, pero el servidor no se cae.

Temas:
Próximos pasos VPS, dedicado o panel gestionado para FiveM, SAMP, MTA, Tibia y más.Aloja tu servidor de juegos con Hostini →
¿Te resultó útil este tutorial?
Hablar por WhatsApp