vehicles.meta explicado, campo por campo
O vehicles.meta é o arquivo XML que registra um modelo de veículo no GTA V. Cada Item dá o nome do modelo e do seu dicionário de texturas, liga o veículo a uma entrada de handling e a um layout de assentos, e define o tipo, a classe, as distâncias de LOD e as flags de comportamento. Sem uma entrada aqui o jogo não trata um .yft como veículo.
O que o vehicles.meta faz?
O vehicles.meta guarda um <Item> por veículo dentro de <InitDatas>. Quando carrega o arquivo, o jogo cria um modelo de veículo para cada Item e resolve tudo o que ele referencia: a entrada de handling, o layout, as câmeras e as informações de explosão. No FiveM ele é carregado com data_file 'VEHICLE_METADATA_FILE'.
Os nomes das tags abaixo vêm do schema de dados do próprio jogo, então são exatos. Uma entrada típica de add-on começa como cópia do veículo original mais parecido, com os campos de identidade trocados.
<?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>Quais campos identificam o veículo?
Cinco campos ligam a entrada aos arquivos do modelo e aos outros metas, e cada um tem que bater exatamente com o seu par.
| Campo | Significado | Precisa bater com |
|---|---|---|
modelName | Nome do arquivo do modelo e nome de spawn. | stream/<modelName>.yft |
txdName | Nome do arquivo do dicionário de texturas. | stream/<txdName>.ytd |
handlingId | Nome da entrada de handling a usar. | handlingName no handling.meta |
gameName | Chave de text label do nome de exibição. Fica em um buffer de 12 caracteres, então use 11 caracteres ou menos. | Um label adicionado com AddTextEntry |
vehicleMakeName | Chave de text label do fabricante. Mesmo limite de tamanho. | Label opcional |
O handlingId pode apontar para uma entrada de handling original, como SULTAN. Nesse caso o veículo não precisa de um handling.meta próprio.
Quais campos controlam assentos, câmeras e som?
Esses campos escolhem configurações prontas pelo nome. Os nomes se referem a entradas que já existem no jogo, ou a entradas que você adiciona em outro arquivo meta.
| Campo | Padrão do schema | Significado |
|---|---|---|
layout | LAYOUT_STANDARD | Layout de assentos do vehiclelayouts.meta: assentos, pontos de entrada e animações. Veja vehiclelayouts.meta explicado. |
audioNameHash | vazio | Nome da configuração de áudio a usar, normalmente o nome de modelo de um veículo original. |
cameraName | DEFAULT_FOLLOW_VEHICLE_CAMERA | Câmera de perseguição em terceira pessoa. |
aimCameraName | DEFAULT_THIRD_PERSON_VEHICLE_AIM_CAMERA | Câmera usada ao mirar de dentro do veículo. |
bonnetCameraName, povCameraName | vazio | Câmeras do capô e de primeira pessoa. |
coverBoundOffsets | STANDARD_COVER_OFFSET_INFO | Posições de cobertura em volta do veículo. |
explosionInfo | EXPLOSION_INFO_DEFAULT | Configuração de explosão usada quando o veículo explode. |
vfxInfoName | VFXVEHICLEINFO_CAR_GENERIC | Conjunto de efeitos visuais (escapamento, efeitos das rodas). |
numSeatsOverride | -1 | Força a quantidade de assentos; -1 deixa isso com o layout. |
O que significam lodDistances e HDTextureDist?
lodDistances é uma lista de seis distâncias em metros que decidem qual versão do modelo é desenhada. O primeiro valor é o alcance do modelo de alto detalhe; quando ele é maior que zero, o jogo também registra um segundo arquivo de modelo chamado <modelName>_hi.
| Posição | Nome interno | Versão do modelo desenhada até essa distância |
|---|---|---|
| 1 | VLT_HD | Modelo de alto detalhe (_hi.yft). |
| 2 | VLT_LOD0 | LOD mais alto dentro do .yft principal. |
| 3 | VLT_LOD1 | Segundo LOD. |
| 4 | VLT_LOD2 | Terceiro LOD. |
| 5 | VLT_LOD3 | Quarto LOD. |
| 6 | VLT_LOD_FADE | O veículo deixa de ser desenhado. Se for 0 o jogo usa o quinto valor. |
O Sultan original usa 10, 25, 50, 100, 500, 500. HDTextureDist (padrão 5.0) é a distância das texturas de alta resolução. Os LODs em si são explicados em o que são LODs em veículos de FiveM.
Outros campos de renderização: wheelScale e wheelScaleRear definem a escala das rodas dianteiras e traseiras, dirtLevelMin e dirtLevelMax (0 a 1) definem com quanta sujeira o veículo dá spawn, diffuseTint é um tom de cor, e damageMapScale e damageOffsetScale (0 a 1) limitam a deformação visual.
Como as seis distâncias correspondem aos níveis de LOD do modelo, com os valores que usamos, está em como otimizar um veículo FiveM.
Quais são os valores válidos de type, vehicleClass e dos outros enums?
Cinco campos recebem, cada um, um valor de uma lista fixa. Qualquer coisa fora da lista é inválida.
| 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 |
O type tem que combinar com o handling: um VEHICLE_TYPE_BIKE precisa de uma entrada de handling com um bloco de sub-handling de moto, um carro precisa de um bloco de carro. O wheelType decide qual categoria de rodas o menu de tuning oferece.
O que as flags do vehicles.meta fazem?
<flags> é uma lista de nomes separados por espaço. Cada nome liga um comportamento. O schema define cerca de 200. A tabela traz aquelas em que quem faz add-on mais mexe, com a descrição que está nos dados do jogo.
| Flag | Efeito |
|---|---|
FLAG_HAS_LIVERY | O veículo tem liveries; uma textura é trocada quando ele dá spawn. |
FLAG_EXTRAS_ALL | Todos os extras adequados são ligados. |
FLAG_EXTRAS_REQUIRE | Um dos extras disponíveis precisa ser escolhido. |
FLAG_EXTRAS_STRONG | Os extras não se soltam. |
FLAG_IS_ELECTRIC | O veículo não tem tanque de combustível. |
FLAG_NO_BOOT | O veículo não é considerado para inventário de porta-malas. |
FLAG_IS_VAN | Van: as portas traseiras abrem para os lados. |
FLAG_LAW_ENFORCEMENT, FLAG_EMERGENCY_SERVICE | Marca veículos de polícia e de emergência. |
FLAG_NO_RESPRAY | Não pode ser repintado nas oficinas. |
FLAG_CANNOT_BE_MODDED | Impede que o veículo seja modificado. |
FLAG_DONT_SPAWN_AS_AMBIENT, FLAG_DONT_SPAWN_IN_CARGEN | Mantém o veículo fora do trânsito ambiente e fora dos geradores de carros estacionados. |
FLAG_DRIVER_NO_DRIVE_BY | O motorista não pode fazer drive-by. |
FLAG_HAS_BULLETPROOF_GLASS | O vidro não pode ser quebrado. |
FLAG_RICH_CAR, FLAG_AVERAGE_CAR, FLAG_POOR_CAR | Quais tipos de peds podem ser usados como motoristas. |
FLAG_HEADLIGHTS_USE_ACTUAL_BONE_POS | Os faróis usam a posição real do bone. |
Quais campos afetam o trânsito e o spawn?
Um grupo de campos só importa quando o próprio jogo dá spawn no veículo no trânsito. Na maioria dos servidores de roleplay, quem dá spawn nos veículos add-on são os scripts, então esses campos podem ficar com os valores do veículo original que você copiou.
frequencyemaxNum: com que frequência e quantos podem existir no trânsito ambiente.swankness:SWANKNESS_0aSWANKNESS_5, de caindo aos pedaços a muito bonito.identicalModelSpawnDistanceemaxNumOfSameColor(padrão 10): evitam que veículos idênticos se aglomerem.defaultBodyHealth: padrão 1000.trailers,drivers,extraIncludes,requiredExtras: listas de trailers que podem ser engatados, modelos de motorista forçados e extras que dão spawn juntos.
O que são residentTxd e txdRelationships?
residentTxd, no topo do arquivo, dá o nome de um dicionário de texturas que fica carregado para os veículos do arquivo. Os arquivos originais usam vehshare, as texturas compartilhadas de veículos. txdRelationships, no fim, é uma lista de pares pai e filho: quando o jogo não encontra uma textura no dicionário filho, procura no pai.
É assim que um veículo cujo .ytd não contém as texturas comuns ainda as encontra no vehshare, e é assim que vários veículos podem compartilhar um dicionário personalizado: faça dele o pai do txdName de cada veículo.
Perguntas frequentes
- Onde fica o vehicles.meta no GTA 5?
- O arquivo base está no common.rpf em data/levels/gta5/vehicles.meta, e cada pacote de DLC tem o seu em common/data/levels/gta5/. No FiveM um veículo add-on traz seu próprio vehicles.meta dentro do resource.
- Qual é o nome de spawn de um veículo add-on?
- O nome de spawn é o campo modelName do vehicles.meta, que também é o nome do arquivo do modelo .yft. O gameName é só o label de exibição.
- Qual o tamanho máximo do gameName?
- O jogo guarda gameName e vehicleMakeName em buffers de 12 caracteres, então cada um pode ter no máximo 11 caracteres.
- Dois veículos podem compartilhar uma entrada de handling?
- Sim. Várias entradas do vehicles.meta podem usar o mesmo handlingId. Os veículos vão andar exatamente igual.
- Como carrego o vehicles.meta no FiveM?
- Liste o arquivo em files no fxmanifest.lua e adicione data_file 'VEHICLE_METADATA_FILE' com o mesmo caminho.
Fontes
Produtos deste guia
Todos os guias
- Como instalar um resource FiveM do Cfx.re Escrow (Granted Assets)
- Como adicionar um veículo custom num servidor ESX, QBCore ou QBox
- O que são LODs em veículos FiveM?
- Como adicionar um veículo add-on a um servidor FiveM
- handling.meta explicado: campos, unidades e flags
- carvariations.meta e carcols.meta explicados
- vehiclelayouts.meta explicado: assentos, pontos de entrada e animações
- Referência de data_file do fxmanifest para veículos
- Arquivos de modelo do veículo (yft, _hi.yft, ytd) e o aviso de asset grande demais
- Solução de problemas de veículo add-on no FiveM: causas e correções
- Como resolver "You lack the required entitlement" em um servidor FiveM
- Como converter um mod de carro single-player do GTA 5 em add-on de FiveM
- Como um hoverboard de FiveM funciona sem script
- Como fazer um veículo de FiveM no Blender com o Sollumz 2.9
- Como otimizar um veículo de FiveM: polígonos, LODs e orçamento de texturas
- Como configurar a colisão de veículo no Sollumz
- Comprar veículos FiveM: o que conferir antes de pagar
- Pack de carros FiveM vs veículos avulsos
- Carro de marca real no FiveM: pode ou não?
- CodeWalker vs Sollumz: qual ferramenta usar em veículos de FiveM?
