vehicles.meta explicado, campo por campo
vehicles.meta es el archivo XML que registra un modelo de vehículo en GTA V. Cada Item nombra el modelo y su diccionario de texturas, lo enlaza a una entrada de handling y a un layout de asientos, y define su tipo, clase, distancias de LOD y flags de comportamiento. Sin una entrada aquí, el juego no trata un .yft como un vehículo.
¿Qué hace vehicles.meta?
vehicles.meta contiene un <Item> por vehículo dentro de <InitDatas>. Cuando se carga el archivo, el juego crea un modelo de vehículo por cada Item y resuelve todo lo que referencia: la entrada de handling, el layout, las cámaras y la información de explosión. En FiveM se carga con data_file 'VEHICLE_METADATA_FILE'.
Los nombres de las etiquetas de abajo salen del propio esquema de datos del juego, así que son exactos. Una entrada add-on típica empieza como una copia del vehículo original más parecido, con los campos de identidad cambiados.
<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfo__InitDataList>
<residentTxd>vehshare</residentTxd>
<residentAnims />
<InitDatas>
<Item>
<modelName>mycar</modelName>
<txdName>mycar</txdName>
<handlingId>MYCAR</handlingId>
<gameName>MYCAR</gameName>
<vehicleMakeName>KARIN</vehicleMakeName>
<audioNameHash>sultan</audioNameHash>
<layout>LAYOUT_STANDARD</layout>
<cameraName>DEFAULT_FOLLOW_VEHICLE_CAMERA</cameraName>
<wheelScale value="0.293000" />
<wheelScaleRear value="0.293000" />
<HDTextureDist value="5.000000" />
<lodDistances content="float_array">
10.000000
25.000000
50.000000
100.000000
500.000000
500.000000
</lodDistances>
<flags>FLAG_AVERAGE_CAR FLAG_POOR_CAR</flags>
<type>VEHICLE_TYPE_CAR</type>
<plateType>VPT_BACK_PLATES</plateType>
<dashboardType>VDT_SULTAN</dashboardType>
<vehicleClass>VC_SPORT</vehicleClass>
<wheelType>VWT_SPORT</wheelType>
<!-- copy the remaining tags from the stock vehicle you start from -->
</Item>
</InitDatas>
<txdRelationships>
<Item>
<parent>vehshare</parent>
<child>mycar</child>
</Item>
</txdRelationships>
</CVehicleModelInfo__InitDataList>¿Qué campos identifican al vehículo?
Cinco campos enlazan la entrada con los archivos del modelo y con los demás metas, y cada uno tiene que coincidir exactamente con su equivalente.
| Campo | Significado | Debe coincidir con |
|---|---|---|
modelName | Nombre del archivo del modelo y nombre de spawn. | stream/<modelName>.yft |
txdName | Nombre del archivo del diccionario de texturas. | stream/<txdName>.ytd |
handlingId | Nombre de la entrada de handling que se usa. | handlingName en handling.meta |
gameName | Clave de la etiqueta de texto del nombre mostrado. Se guarda en un búfer de 12 caracteres, así que no pases de 11 caracteres. | Una etiqueta añadida con AddTextEntry |
vehicleMakeName | Clave de la etiqueta de texto del fabricante. Mismo límite de longitud. | Etiqueta opcional |
handlingId puede apuntar a una entrada de handling original como SULTAN. En ese caso el vehículo no necesita un handling.meta propio.
¿Qué campos controlan los asientos, las cámaras y el sonido?
Estos campos eligen por nombre configuraciones ya hechas. Los nombres se refieren a entradas que ya existen en el juego, o a las que añades en otro archivo meta.
| Campo | Valor por defecto del esquema | Significado |
|---|---|---|
layout | LAYOUT_STANDARD | Layout de asientos de vehiclelayouts.meta: asientos, puntos de entrada y animaciones. Consulta vehiclelayouts.meta explicado. |
audioNameHash | vacío | Nombre de la configuración de audio que se usa, normalmente el nombre de modelo de un vehículo original. |
cameraName | DEFAULT_FOLLOW_VEHICLE_CAMERA | Cámara de seguimiento en tercera persona. |
aimCameraName | DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA | Cámara que se usa al apuntar desde el vehículo. |
bonnetCameraName, povCameraName | vacío | Cámaras de capó y de primera persona. |
coverBoundOffsets | STANDARD_COVER_OFFSET_INFO | Posiciones de cobertura alrededor del vehículo. |
explosionInfo | EXPLOSION_INFO_DEFAULT | Qué configuración de explosión se usa cuando el vehículo estalla. |
vfxInfoName | VFXVEHICLEINFO_CAR_GENERIC | Conjunto de efectos visuales (escape, efectos de las ruedas). |
numSeatsOverride | -1 | Fuerza el número de asientos; -1 lo deja en manos del layout. |
¿Qué significan lodDistances y HDTextureDist?
lodDistances es una lista de seis distancias en metros que deciden qué versión del modelo se dibuja. El primer valor es el alcance del modelo de alto detalle; cuando es mayor que cero, el juego registra además un segundo archivo de modelo llamado <modelName>_hi.
| Posición | Nombre interno | Versión del modelo que se dibuja hasta esta distancia |
|---|---|---|
| 1 | VLT_HD | Modelo de alto detalle (_hi.yft). |
| 2 | VLT_LOD0 | LOD más alto dentro del .yft principal. |
| 3 | VLT_LOD1 | Segundo LOD. |
| 4 | VLT_LOD2 | Tercer LOD. |
| 5 | VLT_LOD3 | Cuarto LOD. |
| 6 | VLT_LOD_FADE | El vehículo deja de dibujarse. Si es 0, el juego usa el quinto valor. |
El Sultan original usa 10, 25, 50, 100, 500, 500. HDTextureDist (5.0 por defecto) es la distancia de las texturas de alta resolución. Los LOD en sí se explican en qué son los LOD en los vehículos de FiveM.
Otros campos de renderizado: wheelScale y wheelScaleRear definen la escala de las ruedas delanteras y traseras, dirtLevelMin y dirtLevelMax (0 a 1) definen lo sucio que aparece el vehículo, diffuseTint es un tinte de color, y damageMapScale y damageOffsetScale (0 a 1) limitan la deformación visual.
Cómo se corresponden las seis distancias con los niveles de LOD del modelo, con los valores que usamos, está en cómo optimizar un vehículo FiveM.
¿Cuáles son los valores válidos de type, vehicleClass y los demás enums?
Cinco campos aceptan, cada uno, un valor de una lista fija. Lo que no esté en la lista no vale.
| Campo | Valores |
|---|---|
type | VEHICLE_TYPE_CAR, _PLANE, _TRAILER, _QUADBIKE, _DRAFT, _SUBMARINECAR, _AMPHIBIOUS_AUTOMOBILE, _AMPHIBIOUS_QUADBIKE, _HELI, _BLIMP, _AUTOGYRO, _BIKE, _BICYCLE, _BOAT, _TRAIN, _SUBMARINE |
vehicleClass | VC_COMPACT (0), VC_SEDAN, VC_SUV, VC_COUPE, VC_MUSCLE, VC_SPORT_CLASSIC, VC_SPORT, VC_SUPER, VC_MOTORCYCLE, VC_OFF_ROAD, VC_INDUSTRIAL, VC_UTILITY, VC_VAN, VC_CYCLE, VC_BOAT, VC_HELICOPTER, VC_PLANE, VC_SERVICE, VC_EMERGENCY, VC_MILITARY, VC_COMMERCIAL, VC_RAIL, VC_OPEN_WHEEL (22) |
plateType | VPT_FRONT_AND_BACK_PLATES, VPT_FRONT_PLATES, VPT_BACK_PLATES, VPT_NONE |
wheelType | VWT_SPORT, VWT_MUSCLE, VWT_LOWRIDER, VWT_SUV, VWT_OFFROAD, VWT_TUNER, VWT_BIKE, VWT_HIEND, VWT_SUPERMOD1 a VWT_SUPERMOD5 |
dashboardType | VDT_BANSHEE, VDT_BOBCAT, VDT_CAVALCADE, VDT_COMET, VDT_DUKES, VDT_FACTION, VDT_FELTZER, VDT_FEROCI, VDT_FUTO, VDT_GENTAXI, VDT_MAVERICK, VDT_PEYOTE, VDT_RUINER, VDT_SPEEDO, VDT_SULTAN, VDT_SUPERGT, VDT_TAILGATER, VDT_TRUCK, VDT_TRUCKDIGI, VDT_INFERNUS, VDT_ZTYPE, VDT_LAZER, VDT_SPORTBK, VDT_RACE, VDT_LAZER_VINTAGE, VDT_PBUS2 |
type tiene que concordar con el handling: un VEHICLE_TYPE_BIKE necesita una entrada de handling con un bloque de sub-handling de moto, un coche necesita un bloque de coche. wheelType decide qué categoría de ruedas ofrece el menú de tuning.
¿Qué hacen los flags de vehicles.meta?
<flags> es una lista de nombres separados por espacios. Cada nombre activa un comportamiento. El esquema define unos 200. En la tabla están los que más tocan los autores de add-ons, con la descripción de los datos del juego.
| Flag | Efecto |
|---|---|
FLAG_HAS_LIVERY | El vehículo tiene liveries; se cambia una textura cuando hace spawn. |
FLAG_EXTRAS_ALL | Se activan todos los extras adecuados. |
FLAG_EXTRAS_REQUIRE | Hay que elegir uno de los extras disponibles. |
FLAG_EXTRAS_STRONG | Los extras no se desprenden. |
FLAG_IS_ELECTRIC | El vehículo no tiene depósito de gasolina. |
FLAG_NO_BOOT | El vehículo no se tiene en cuenta para el inventario del maletero. |
FLAG_IS_VAN | Furgoneta: las puertas traseras se abren hacia los lados. |
FLAG_LAW_ENFORCEMENT, FLAG_EMERGENCY_SERVICE | Marca los vehículos de policía y de emergencias. |
FLAG_NO_RESPRAY | No se puede repintar en los talleres. |
FLAG_CANNOT_BE_MODDED | Impide que el vehículo se modifique. |
FLAG_DONT_SPAWN_AS_AMBIENT, FLAG_DONT_SPAWN_IN_CARGEN | Mantiene el vehículo fuera del tráfico ambiental y fuera de los generadores de coches aparcados. |
FLAG_DRIVER_NO_DRIVE_BY | El conductor no puede hacer drive-by. |
FLAG_HAS_BULLETPROOF_GLASS | Los cristales no se pueden romper. |
FLAG_RICH_CAR, FLAG_AVERAGE_CAR, FLAG_POOR_CAR | Qué tipos de peds pueden usarse como conductores. |
FLAG_HEADLIGHTS_USE_ACTUAL_BONE_POS | Los faros usan la posición real del bone. |
¿Qué campos afectan al tráfico y al spawn?
Hay un grupo de campos que solo importa cuando es el propio juego el que hace spawn del vehículo en el tráfico. En la mayoría de los servidores de roleplay los vehículos add-on se spawnean por script, así que pueden quedarse con los valores del vehículo original que copiaste.
frequencyymaxNum: con qué frecuencia y cuántos pueden existir en el tráfico ambiental.swankness: deSWANKNESS_0aSWANKNESS_5, de destartalado a muy lujoso.identicalModelSpawnDistanceymaxNumOfSameColor(10 por defecto): evitan que se agrupen vehículos idénticos.defaultBodyHealth: 1000 por defecto.trailers,drivers,extraIncludes,requiredExtras: listas de los remolques que se pueden enganchar, de modelos de conductor forzados y de extras que aparecen juntos.
¿Qué son residentTxd y txdRelationships?
residentTxd, al principio del archivo, nombra un diccionario de texturas que permanece cargado para los vehículos del archivo. Los archivos originales usan vehshare, las texturas compartidas de vehículos. txdRelationships, al final, es una lista de pares padre e hijo: cuando una textura no se encuentra en el diccionario hijo, el juego la busca en el padre.
Por eso un vehículo cuyo .ytd no trae las texturas comunes las encuentra igual en vehshare. Del mismo modo, varios vehículos pueden compartir un diccionario personalizado: hazlo padre del txdName de cada uno.
Preguntas frecuentes
- ¿Dónde está vehicles.meta en GTA 5?
- El archivo base está en common.rpf, en data/levels/gta5/vehicles.meta, y cada pack de DLC tiene el suyo en common/data/levels/gta5/. En FiveM un vehículo add-on trae su propio vehicles.meta dentro del resource.
- ¿Cuál es el nombre de spawn de un vehículo add-on?
- El nombre de spawn es el campo modelName de vehicles.meta, que también es el nombre del archivo del modelo .yft. gameName es solo la etiqueta que se muestra.
- ¿Qué longitud puede tener gameName?
- El juego guarda gameName y vehicleMakeName en búferes de 12 caracteres, así que cada uno puede tener como máximo 11 caracteres.
- ¿Pueden dos vehículos compartir una entrada de handling?
- Sí. Varias entradas de vehicles.meta pueden usar el mismo handlingId. Se conducirán igual.
- ¿Cómo cargo vehicles.meta en FiveM?
- Declara el archivo en files en fxmanifest.lua y añade data_file 'VEHICLE_METADATA_FILE' con la misma ruta.
Fuentes
Productos de esta guía
Todas las guías
- Cómo instalar un resource FiveM de Cfx.re Escrow (Granted Assets)
- Cómo añadir un vehículo custom a un servidor ESX, QBCore o QBox
- ¿Qué son los LODs en los vehículos de FiveM?
- Cómo añadir un vehículo add-on a un servidor FiveM
- handling.meta explicado: campos, unidades y flags
- carvariations.meta y carcols.meta explicados
- vehiclelayouts.meta explicado: asientos, puntos de entrada y animaciones
- Referencia de data_file de fxmanifest para vehículos
- Archivos de modelo del vehículo (yft, _hi.yft, ytd) y el aviso de assets sobredimensionados
- Solución de problemas de vehículos add-on en FiveM: causas y soluciones
- Cómo arreglar "You lack the required entitlement" en un servidor FiveM
- Cómo convertir un mod de coche de un jugador de GTA 5 en un add-on de FiveM
- Cómo funciona un hoverboard de FiveM sin script
- Cómo hacer un vehículo de FiveM en Blender con Sollumz 2.9
- Cómo optimizar un vehículo de FiveM: polígonos, LOD y presupuesto de texturas
- Cómo configurar la colisión de un vehículo en Sollumz
- Comprar vehículos FiveM: qué revisar antes de pagar
- Packs de coches FiveM vs vehículos sueltos
- Coches de marcas reales en FiveM: ¿se permiten?
- CodeWalker vs Sollumz: ¿qué herramienta usar para vehículos de FiveM?
