Como adicionar carros mods no FiveM GTA RP: passo a passo completo
Aprenda a adicionar carros mods (addon vehicles) no seu servidor FiveM GTA RP com resource próprio, vehicles.meta, handling e stream organizado.
Adicionar carros customizados num servidor FiveM RP é uma das demandas mais comuns de owners — e também uma das que mais geram dor de cabeça por organização ruim. O problema raramente é o arquivo do carro em si: é a estrutura de resource, os metadados obrigatórios e a ordem de streaming.
Este tutorial é para owners e desenvolvedores de servidores FiveM GTA RP que querem adicionar veículos addon (que não substituem carros vanilla) de forma organizada, sem quebrar concessionárias do framework e sem virar uma pasta [cars] ingovernável com 400 resources soltos.
Tempo estimado de execução: 20 a 30 minutos por carro, ou 1 hora para montar um pack organizado com 10 a 20 veículos. Vou cobrir desde a estrutura de pastas até o registro no banco de dados pro carro aparecer na concessionária do seu framework.
Pré-requisitos
Servidor FiveM rodando (Linux ou Windows), acesso ao filesystem do servidor (SFTP ou direto), framework instalado (ESX, QBCore ou vRP) e os arquivos do carro mod já baixados — geralmente um zip com .yft, .ytd e _hi.yft. Cliente MySQL pra editar a tabela de vehicles do framework.
resources/[cars]/ .yft .ytd _hi.yft vehicles.meta carvariations.meta handling.meta refresh; ensure nome-resource Garanta que você não está rodando em modo OneSync legacy num servidor moderno — addons de carro funcionam melhor em OneSync infinity, que é o padrão atual do FiveM.
Estrutura de pastas do resource
A primeira regra: um resource por carro ou um resource por pack temático (carros policiais, supercarros, sedans). Não misture carros aleatórios num único resource gigante — debugar fica impossível quando um deles quebra.
A estrutura padrão de um carro addon é:
resources/[cars]/lambo2024/
├── fxmanifest.lua
├── stream/
│ ├── lambo2024.yft
│ ├── lambo2024_hi.yft
│ └── lambo2024.ytd
└── data/
├── vehicles.meta
├── carvariations.meta
├── carcols.meta
└── handling.meta
A pasta [cars] com colchetes é uma categoria — o FiveM reconhece automaticamente e organiza todos os resources de carros dentro dela. Não é obrigatório, mas mantém o resources/ limpo quando você tem 200 carros.
Se seu servidor roda em Linux (caso comum em VPS Hostini), o nome do arquivo .yft precisa bater EXATAMENTE com o spawn name dentro do vehicles.meta — incluindo maiúsculas e minúsculas. Lambo2024.yft é diferente de lambo2024.yft. Em Windows passa despercebido, em Linux quebra.
Criando o resource passo a passo
Vou usar como exemplo um carro fictício chamado lambo2024. Substitua pelo nome do seu modelo em todos os comandos.
Crie a estrutura de diretórios no servidor:
cd /caminho/do/servidor/resources
mkdir -p [cars]/lambo2024/stream
mkdir -p [cars]/lambo2024/dataUse o nome do carro em minúsculas, sem acentos e sem espaços. Caracteres especiais ou maiúsculas vão causar problemas no streaming em Linux.
Faça upload dos arquivos do modelo pra pasta stream/:
# via SFTP ou cp local
cp lambo2024.yft [cars]/lambo2024/stream/
cp lambo2024_hi.yft [cars]/lambo2024/stream/
cp lambo2024.ytd [cars]/lambo2024/stream/O arquivo _hi.yft é o modelo de alta resolução (LOD0) — alguns carros não vêm com ele. Se não veio, deixe só o .yft base. O .ytd contém todas as texturas do veículo.
Coloque os 4 arquivos .meta na pasta data/. Esses arquivos geralmente vêm junto com o pack do carro. Se algum estiver faltando:
vehicles.meta— obrigatório. Define spawn name, classe, layouts.carvariations.meta— obrigatório. Define cores e variações.carcols.meta— opcional. Define mods e tuning visual.handling.meta— obrigatório. Define dirigibilidade.
Sem vehicles.meta o carro nem aparece pro FiveM. Sem handling.meta ele usa o handling default do adder e fica esquisito.
Crie o fxmanifest.lua na raiz do resource:
fx_version 'cerulean'
game 'gta5'
author 'NomeDoCriador'
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'A ordem das data_file importa: o FiveM lê na sequência declarada. Se você inverter VEHICLE_METADATA_FILE com HANDLING_FILE, o carro spawna sem física correta.
Adicione o resource ao server.cfg:
# server.cfg
ensure [cars]
# ou pra resources individuais:
ensure lambo2024Se você usou a categoria [cars], basta ensure [cars] que todos os carros dentro carregam. Pra reload sem reiniciar o servidor inteiro, use no console:
refresh
ensure lambo2024Validando os metadados
A maioria dos travamentos vem de vehicles.meta ou handling.meta malformados. Vale conferir manualmente antes do primeiro start.
Abra vehicles.meta e localize a tag <modelName>:
<Item>
<modelName>lambo2024</modelName>
<txdName>lambo2024</txdName>
<handlingId>lambo2024</handlingId>
<gameName>lambo2024</gameName>
<vehicleMakeName>LAMBORGHINI</vehicleMakeName>
<!-- resto da config -->
</Item>Os 4 campos (modelName, txdName, handlingId, gameName) devem ter o MESMO valor — e esse valor é o nome do arquivo .yft sem extensão. Divergência aqui é o motivo número um de “carro aparece chequered” (sem textura).
Em handling.meta, confirme que o handlingName bate:
<Item type="CHandlingData">
<handlingName>lambo2024</handlingName>
<fMass value="1700.00" />
<fInitialDragCoeff value="9.85" />
<!-- ... -->
</Item>Se você tem múltiplos carros num único resource, cada um precisa de um <Item> próprio dentro de <HandlingData>. Não duplique IDs.
Mexer cegamente em fMass, fInitialDriveForce ou fSuspensionForce pode fazer o carro voar ao spawnar, virar de cabeça pra baixo ou crashar o cliente. Se quiser ajustar, mude um valor por vez e teste.
Registrando o carro no framework RP
Adicionar o resource não é suficiente — o carro precisa estar na tabela vehicles do banco pra aparecer na concessionária e ser comprável pelos jogadores.
ESX Framework
Em ESX legacy, conecte no MySQL e rode:
INSERT INTO vehicles (name, model, price, category)
VALUES ('Lamborghini 2024', 'lambo2024', 850000, 'super');
O campo model precisa ser EXATAMENTE o spawn name do carro (mesmo valor do <modelName> do vehicles.meta).
QBCore Framework
Em QBCore, edite qb-core/shared/vehicles.lua:
['lambo2024'] = {
['name'] = 'Lamborghini 2024',
['brand'] = 'Lamborghini',
['model'] = 'lambo2024',
['price'] = 850000,
['category'] = 'super',
['hash'] = `lambo2024`,
['shop'] = 'pdm',
},
Reinicie o qb-core depois (restart qb-core no console).
Crie um resource [cars-test]/staging onde você joga carros novos antes de mover pro [cars] definitivo. Assim você testa em ambiente isolado sem poluir o pack de produção. Pra remover, basta stop o resource — não precisa deletar do disco.
Verificação
Pra confirmar que tudo funcionou, entre no servidor como admin e use:
/car lambo2024
Ou em frameworks com command de spawn próprio (/spawncar no ESX, /admincar em alguns scripts QB). O carro deve aparecer com textura completa, som de motor e física consistente.
Verifique também o console do servidor durante o start. Output esperado:
Started resource lambo2024
Loading vehicle metadata: data/vehicles.meta
Loading handling: data/handling.meta
Se aparecer Failed to load, Unable to parse XML ou Duplicate handling ID, o erro está num dos .meta. Veja a seção de resolução de problemas abaixo.
Resolução de problemas
Carro spawna sem textura (chequered)
Causa: divergência entre modelName no vehicles.meta e o nome do .yft, ou .ytd faltando no stream. Solução: confirme que os 3 nomes batem (arquivo, modelName, txdName) e que o .ytd está em stream/.
Erro “Vehicle not found” ao usar /car
Causa: resource não foi carregado ou ensure não está no server.cfg. Solução: rode refresh seguido de ensure lambo2024 no console. Se persistir, confira que o fxmanifest.lua declara os 4 data_file corretamente.
Servidor trava durante o load
Causa: handling.meta com valor inválido (texto onde espera número) ou XML malformado. Solução: rode developer 1 no console do servidor antes do start pra ver mensagens detalhadas. Geralmente o erro aponta a linha exata.
Carro aparece na concessionária mas não compra
Causa: registro no banco está com model errado. Solução: confirme que o valor do campo model na tabela vehicles é idêntico ao spawn name (case-sensitive).
Próximos passos
Depois do primeiro carro funcionando, vale automatizar o resto do fluxo:
- Criar um pack único com 10 a 30 carros agrupados por categoria (super, sport, sedan) em vez de 30 resources separados.
- Adicionar
carcols.metacustomizado pra liberar tuning visual nos seus carros (rodas, capôs, escapamentos). - Implementar lazy load com
set sv_streamerMode 1em servidores com 400+ veículos pra reduzir tempo de download inicial. - Configurar handling realista usando ferramentas como o Handling Editor in-game antes de exportar pro
.metafinal. - Versionar o
[cars]/em git separado pra rastrear mudanças e fazer rollback fácil.
Se você está rodando um servidor FiveM RP em produção com pack pesado de carros, uma VPS dedicada pra game servers da Hostini entrega CPU single-thread alto e SSD NVMe — o que faz diferença real no tempo de stream de assets quando 64 jogadores conectam ao mesmo tempo.
Perguntas frequentes
Qual a diferença entre carro addon e carro replace no FiveM?
Addon adiciona um novo veículo com spawn name próprio (ex: lambo2024) sem substituir nenhum carro vanilla. Replace troca um modelo base do GTA V (ex: substitui o adder pelo lambo). Em servidores RP, sempre prefira addon — replace quebra missões, NPCs e dealerships que dependem dos modelos originais.
Posso adicionar quantos carros addon eu quiser?
Tecnicamente o FiveM aceita milhares, mas cada veículo streamado consome RAM no cliente e aumenta o tempo de download inicial. Servidores RP saudáveis ficam entre 200 e 600 addons. Acima disso, considere usar lazy loading ou dividir em packs opcionais.
Por que o carro aparece sem textura (chequered) no FiveM?
Quase sempre é arquivo .ytd faltando, nome de modelo divergente entre vehicles.meta e o .yft, ou ordem errada no stream. Confirme que o spawn name no vehicles.meta bate exatamente com o nome do .yft (sem extensão) e que o .ytd correspondente está no stream.
Onde edito o preço e a categoria do carro mod no FiveM RP?
Preço fica no script de dealership/concessionária do framework (ESX, QBCore, vRP). O carro precisa estar registrado na tabela vehicles do banco com o mesmo spawn name. Categoria visual (super, sports, sedan) é definida em vehicles.meta no campo vehicleClass.
O carro mod trava o servidor ao spawnar — o que pode ser?
Causas comuns: handling.meta com valor inválido (NaN ou string onde espera número), vehicles.meta sem o fragmento layouts/handlingId correto, ou .yft corrompido. Verifique o console do servidor com developer 1 e procure erros de streaming durante o load do resource.
Preciso reiniciar o servidor inteiro pra adicionar um carro?
Não. Use 'refresh' seguido de 'ensure nome-do-resource' no console. Jogadores conectados precisarão reconectar pra baixar os novos arquivos do stream, mas o servidor não cai.