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
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.
resources/[cars]/ .yft .ytd _hi.yft vehicles.meta carvariations.meta handling.meta 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.
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.
Crea la estructura de directorios en el servidor:
cd /ruta/del/servidor/resources
mkdir -p [cars]/lambo2024/stream
mkdir -p [cars]/lambo2024/dataUsa 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.
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.
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.
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.
Añade el resource al server.cfg:
# server.cfg
ensure [cars]
# o para resources individuales:
ensure lambo2024Si 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 lambo2024Validando 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.
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).
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.
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).
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.metapersonalizado para liberar tuning visual en tus coches (llantas, capós, escapes). - Implementar lazy load con
set sv_streamerMode 1en 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
.metafinal. - 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.