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

O que você precisa antes de começar

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.

Diretório base resources/[cars]/
Extensões de arquivo .yft .ytd _hi.yft
Metadados obrigatórios vehicles.meta carvariations.meta handling.meta
Comando de reload 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.

Nome do modelo é case-sensitive no Linux

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.

01

Crie a estrutura de diretórios no servidor:

cd /caminho/do/servidor/resources
mkdir -p [cars]/lambo2024/stream
mkdir -p [cars]/lambo2024/data

Use 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.

02

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.

03

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.

04

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.

05

Adicione o resource ao server.cfg:

# server.cfg
ensure [cars]
# ou pra resources individuais:
ensure lambo2024

Se 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 lambo2024

Validando os metadados

A maioria dos travamentos vem de vehicles.meta ou handling.meta malformados. Vale conferir manualmente antes do primeiro start.

06

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).

07

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.

Não edite valores que você não entende

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).

Mantenha um pack de teste separado

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.meta customizado pra liberar tuning visual nos seus carros (rodas, capôs, escapamentos).
  • Implementar lazy load com set sv_streamerMode 1 em 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 .meta final.
  • 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.

Tópicos:
Próximos passos VPS, dedicado ou painel gerenciado para FiveM, SAMP, MTA, Tibia e mais.Hospede seu servidor de jogos com a Hostini →
Esse tutorial foi útil?
Falar no WhatsApp