Solução de problemas de veículo add-on no FiveM: causas e correções
A maioria dos veículos add-on quebrados no FiveM se resume a um nome que não bate entre dois arquivos, um arquivo meta que não é carregado ou um modelo pesado demais. Ache o sintoma abaixo: um veículo que não dá spawn aponta para o manifest ou para o vehicles.meta, texturas faltando para o nome do .ytd, e direção errada para o handling.meta.
Tabela rápida: sintoma, causa e correção
| Sintoma | Causa mais provável | Correção |
|---|---|---|
| O comando de spawn diz que o modelo não existe | Resource não iniciado, vehicles.meta não carregado, ou modelName diferente do nome do .yft | Não dá spawn |
| O veículo fica invisível ou demora a aparecer | Modelo ou texturas grandes demais; falta o _hi.yft | Veículo invisível |
| Texturas brancas, cinza ou faltando | txdName diferente do nome do .ytd, ou uma textura não está no dicionário | Texturas faltando |
| O veículo cai pelo chão | Modelo exportado sem colisão | Cai pelo mapa |
| Dirige como outro carro, ou as edições de handling não fazem nada | handlingId não bate, ou o nome é usado duas vezes | Handling errado |
| Sem peças de tuning, ou com peças de outro carro | ID de kit duplicado no carcols.meta | Problemas de tuning |
| O nome aparece como NULL ou como um código | Sem text label para o gameName | Nome errado |
| O jogador senta errado ou não consegue entrar | O layout não combina com os bones do modelo | Assentos e entrada |
Antes de qualquer coisa, olhe o console do servidor quando o resource inicia e o console do client (F8) quando você dá spawn no veículo. Os dois dizem o nome do arquivo com o qual têm problema.
Por que meu veículo add-on não dá spawn?
Se o jogo diz que o modelo não existe, o veículo nunca foi registrado. Confira nesta ordem:
- O resource está rodando.
ensure mycarestá no server.cfg e o nome da pasta está escrito igual. Uma pasta dentro de uma pasta de categoria como[cars]não é problema. - O vehicles.meta está tanto em
filesquanto emdata_file 'VEHICLE_METADATA_FILE', com o caminho certo. Veja a referência de data_file. - Os nomes batem. O nome de spawn é o
modelName, e o arquivo do modelo tem que serstream/<modelName>.yft. - O XML é válido. Uma tag sem fechar deixa o arquivo inteiro ilegível. Abra em um editor que valide XML.
- Os arquivos estão extraídos. O FiveM não carrega arquivos
.rpfcolocados emstream, então os arquivos.yfte.ytdtêm que ser tirados de dentro deles.
stream/mycar.yft <modelName>mycar</modelName>
stream/mycar.ytd <txdName>mycar</txdName>
handling.meta <handlingName> <handlingId>MYCAR</handlingId>
carvariations.meta <modelName> <modelName>mycar</modelName>
vehiclelayouts.meta <Name> <layout>LAYOUT_STANDARD</layout>
carcols.meta <kitName> carvariations.meta <kits><Item>
Se um resource pago nem inicia e o console mostra "You lack the required entitlement", a causa é a chave do servidor, não o veículo: veja como corrigir o erro de entitlement.
Por que meu veículo fica invisível ou demora a aparecer?
Um veículo que dá spawn (dá para sentar nele, a câmera segue) mas não aparece desenhado é quase sempre um problema de streaming.
- Arquivos grandes demais. Procure no console do servidor por "uses ... MiB of physical memory". O próprio FXServer diz que eles "lead to streaming issues (such as models not loading/rendering)". Reduza as texturas como descrito em arquivos de modelo do veículo e o aviso de 16 MiB.
- Falta o
_hi.yft. Quando o primeiro valor delodDistancesestá acima de zero, o jogo pede o<modelName>_hi.yftpara veículos perto da câmera. Inclua esse arquivo exatamente com esse nome. - Veículos pesados demais em um mesmo lugar. A memória se soma por modelo único, então um encontro de carros pode falhar onde um carro sozinho funciona.
Por que as texturas estão faltando?
- Nome do dicionário. O
txdNamedo vehicles.meta tem que ser igual ao nome do arquivo.ytdsem a extensão. - Textura fora do dicionário. Abra o
.ytde confira se toda textura que os materiais usam está lá com o mesmo nome. - Texturas compartilhadas. Se o modelo depende de texturas do
vehshareou de um dicionário compartilhado de um pacote de veículos, esse dicionário tem que ser o pai do dicionário do veículo emtxdRelationships. - Liveries. Elas precisam de
FLAG_HAS_LIVERYe de texturas terminando em_sign_1,_sign_2e assim por diante.
Por que o veículo cai pelo mapa?
A colisão de um veículo fica guardada dentro do .yft. Um modelo exportado sem os bounds de colisão não tem onde se apoiar, então ele atravessa a rua ou afunda até o teto. A correção é no modelo: abra na ferramenta em que ele foi feito, adicione a colisão e exporte de novo. Nenhum arquivo meta resolve isso.
Se só as rodas afundam ou a carroceria raspa no chão, a colisão existe e o problema é a suspensão: veja fSuspensionRaise e os limites de curso em handling.meta explicado.
Como adicionar os bounds no Blender está em como configurar a colisão de veículo no Sollumz.
Por que o handling está errado?
- Nome que não bate. O
handlingIddo vehicles.meta tem que ser igual aohandlingNamedo handling.meta. - Arquivo não carregado. O handling.meta precisa de
filesmaisdata_file 'HANDLING_FILE'. - Nome usado duas vezes. Se dois resources definem o mesmo
handlingName, suas edições podem estar indo para o que o jogo não está usando. Use um nome único por veículo. - Bloco de sub-handling errado. Um
VEHICLE_TYPE_BIKEprecisa deCBikeHandlingData, um carro deCCarHandlingData. - Edições não aplicadas. Reinicie o resource, reconecte e dê spawn em um veículo novo antes de julgar uma mudança.
Por que as peças de tuning estão faltando ou são de outro carro?
Os IDs de kit do carcols.meta são compartilhados por todos os veículos do servidor. Quando dois kits têm o mesmo id, o jogo move um deles para outro ID, e os veículos que usam aquele kit podem acabar com as peças erradas ou sem nenhuma. Troque o id para um número que nenhum outro veículo usa. Os IDs de sirene e de luz entram em conflito do mesmo jeito.
Confira também se o nome do kit na lista kits do carvariations.meta é igual ao kitName do carcols.meta, e se todo modelo de peça indicado no kit está na pasta stream. Detalhes em carvariations e carcols explicados.
O verificador de conflito de IDs do carcols lista todo ID de kit usado por mais de um carcols.meta no servidor.
Por que o nome do veículo aparece como NULL?
O gameName é uma chave de text label, não o nome em si. Adicione o label em um script de client, e mantenha a chave com 11 caracteres ou menos:
-- client script: readable name for <gameName>MYCAR</gameName>
AddTextEntry('MYCAR', 'My Car GT')Por que o jogador senta errado ou não consegue entrar?
O layout do vehicles.meta decide os assentos e as animações de entrada, e ele espera certos bones no modelo: bones de assento como seat_dside_f e bones de porta como door_dside_f. Escolha um layout feito para o mesmo tipo de veículo (um layout de moto para uma moto, um layout de duas portas para um carro de duas portas), e confira se o modelo tem os bones que o layout indica. Como os layouts são montados está em vehiclelayouts.meta explicado.
Se nada disso ajudar, remonte o resource do zero com como adicionar um veículo add-on ao FiveM e teste depois de cada arquivo.
Perguntas frequentes
- Por que meu carro de FiveM não dá spawn?
- O resource não foi iniciado, o vehicles.meta está faltando em files ou em data_file no fxmanifest.lua, ou o modelName não bate com o nome do arquivo .yft. Olhe o console do servidor quando o resource inicia para ver de qual arquivo ele reclama.
- Por que meu carro add-on fica invisível no FiveM?
- Normalmente porque os arquivos dele são pesados demais para o streaming. Procure o aviso "uses MiB of physical memory" no console do servidor e reduza o tamanho das texturas. A falta do arquivo _hi.yft é a outra causa comum.
- Por que meu carro cai pelo mapa no FiveM?
- O modelo .yft não tem colisão. Ela tem que ser adicionada na ferramenta 3D e o modelo exportado de novo. Arquivos meta não resolvem isso.
- Por que minhas mudanças no handling.meta não funcionam?
- Confira se o handlingId bate com o handlingName, se o arquivo é carregado como HANDLING_FILE, se nenhum outro resource usa o mesmo nome de handling, e dê spawn em um veículo novo depois de reiniciar o resource.
- Como corrigir peças de tuning aparecendo no carro errado?
- Dê a cada mod kit do carcols.meta um valor de id único. IDs de kit duplicados entre resources são a causa.
Fontes
- FXServer source: asset size check (ResourceStreamComponent.cpp)
- FiveM docs: Resource manifest
- FiveM docs: Data files
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
- vehicles.meta explicado, campo por campo
- 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
- 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?
