Streamer des véhicules custom sur FiveM (vehicles.meta, ytd, yft)

Streamer des véhicules custom sur FiveM (vehicles.meta, ytd, yft)

Comment ajouter des voitures custom (modèles 3D non-vanilla) à ton serveur FiveM Wisp chez VeryCloud : structure des fichiers, vehicles.meta, handling, optimisation.

Introduction

Streamer un véhicule custom = ajouter un modèle 3D, ses textures et ses metadata à ton serveur. Les joueurs téléchargent les fichiers à la connexion et le véhicule est ensuite spawnable comme un véhicule vanilla. C'est ce qui permet d'avoir des Lamborghini, polices custom, voitures de roleplay sur ton serveur.

Prérequis

  • Un serveur FiveM chez VeryCloud
  • Accès Files dans Wisp
  • Un véhicule custom acheté ou téléchargé légalement (.zip avec ytd, yft, meta)
  • Un trainer admin pour tester le spawn (vMenu fait l'affaire)

Étape 1 : Comprendre la structure d'un véhicule FiveM

Un véhicule FiveM contient au minimum :

FichierRôle
<vehicle>.yftModèle 3D du véhicule
<vehicle>_hi.yftLOD haute résolution
<vehicle>.ytdTextures (skins, decals)
vehicles.metaDéfinition véhicule (specs, classe)
handling.metaTenue de route, masse, vitesse
carcols.metaCouleurs primaires/secondaires
carvariations.metaCombinaisons couleurs/extras

Certains véhicules ajoutent _hi, +hi, fichiers de damage models, etc.

Étape 2 : Créer la ressource

Dans Wisp → Files/resources/[vehicles]/[custom_cars]/myveh/ :

Structure recommandée :

/resources/
└── [vehicles]/
    └── [custom_cars]/
        └── myveh/
            ├── fxmanifest.lua
            └── stream/
                ├── myveh.yft
                ├── myveh_hi.yft
                ├── myveh.ytd
                └── data/
                    ├── vehicles.meta
                    ├── handling.meta
                    ├── carcols.meta
                    └── carvariations.meta

Étape 3 : Le fxmanifest.lua

fx_version 'cerulean'
game 'gta5'
author 'VeryCloud'
description 'Custom vehicle: myveh'
version '1.0.0'

files {
    'data/vehicles.meta',
    'data/handling.meta',
    'data/carcols.meta',
    'data/carvariations.meta'
}

data_file 'HANDLING_FILE'         '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'

Ces data_file indiquent à FiveM comment interpréter chaque fichier meta.

Étape 4 : vehicles.meta (le minimum vital)

Structure simplifiée :

<?xml version="1.0" encoding="UTF-8"?>
<CVehicleModelInfo__InitDataList>
  <InitDatas>
    <Item>
      <modelName>myveh</modelName>
      <txdName>myveh</txdName>
      <handlingId>myveh</handlingId>
      <gameName>myveh</gameName>
      <vehicleMakeName>VeryCloud</vehicleMakeName>
      <vehicleClass>VC_SPORT</vehicleClass>
      <type>VEHICLE_TYPE_CAR</type>
      <plateType>VPT_FRONT_AND_BACK_PLATES</plateType>
      <wheelType>VWT_SPORT</wheelType>
      <seats value="2"/>
      <!-- bien d'autres champs ... -->
    </Item>
  </InitDatas>
</CVehicleModelInfo__InitDataList>

Le <modelName> est l'identifiant que tu utiliseras pour spawn (/car myveh par exemple).

Étape 5 : Ajouter à server.cfg

ensure myveh

Restart le serveur.

Étape 6 : Tester en jeu

Connecte-toi, ouvre le trainer (vMenu : M) → Vehicle Spawner → Spawn by Name → tape myveh.

Si le véhicule apparaît, c'est gagné. Sinon, voir le dépannage.

Étape 7 : Plusieurs véhicules dans une seule ressource

Tu peux regrouper plusieurs véhicules dans une seule ressource pour gérer un pack :

/resources/[vehicles]/sport_pack/
├── fxmanifest.lua
└── stream/
    ├── car1.yft, car1.ytd
    ├── car2.yft, car2.ytd
    └── data/
        ├── vehicles.meta (avec multiple <Item>)
        ├── handling.meta (avec multiple <Item>)
        └── ...

Avantage : un seul ensure au lieu de N.

Étape 8 : Optimisation des assets

Pour éviter de saturer le download des joueurs :

  • Compresse les YTD : OpenIV permet de réencoder à plus bas bitrate (perte visuelle négligeable)
  • Pas de LOD inutiles : un _hi qui pèse 50 Mo n'est pas nécessaire pour une voiture de fond
  • Pas de fichiers en doublon : un seul .yft suffit pour un modèle, n'embarque pas les sources Blender

Un véhicule custom propre = 10-30 Mo. Si tu vois 100+ Mo, optimise.

Étape 9 : Permissions de spawn

Si tu veux limiter le spawn de certains véhicules custom à des groupes (VIP par ex), utilise ACE :

add_ace group.vip "vehicle.spawn.myveh" allow
add_ace group.user "vehicle.spawn.myveh" deny

Et côté ressource, check la permission avant de spawn.

Étape 10 : Gérer les conflits

Plusieurs véhicules peuvent partager le même modelName si tu utilises des packs téléchargés sur des sites random. Conflit garanti.

Pour vérifier :

grep -r "<modelName>" /resources/ | sort | uniq -d

Renomme ceux en conflit (modifier modelName dans vehicles.meta + fichiers .yft/.ytd).

Dépannage

Le véhicule n'apparaît pas dans le trainer

  • ensure manquant dans server.cfg
  • Erreur de parsing dans vehicles.meta → check console F8

Spawn mais véhicule transparent / noir

  • Le YTD ne se charge pas (faute de cohérence avec le YFT)
  • Vérifie que le txdName dans vehicles.meta matche bien le fichier YTD

Crash du joueur au spawn

  • Modèle 3D mal exporté (souvent depuis Blender / 3ds Max avec mauvais réglages)
  • LOD trop élevé / fichiers corrompus

Handling chelou (voiture qui ne tient pas la route)

  • handling.meta absent ou avec <handlingId> ne matchant pas
  • Copie-colle un handling vanilla similaire en base

Commandes utiles

# Verifier le fxmanifest
cat /resources/[vehicles]/myveh/fxmanifest.lua

# Spawner via console serveur
sv echo "Use vMenu in-game to spawn"

# Voir la taille des assets
du -sh /resources/[vehicles]/myveh/

Conclusion

Streamer un véhicule custom FiveM = structure fichiers + fxmanifest + ensure. Le boulot principal est l'optimisation : un pack de 50 véhicules mal compressés = 2 Go que tes joueurs téléchargent à chaque connexion (cache aidant). Reste à <500 Mo total custom assets pour une UX raisonnable.

Pour aller plus loin : custom liveries (textures par joueur), tuning custom (extras dans GTA V), véhicules emergency/police avec sirens et lights custom.

Ressources

Rejoignez notre serveur communautaire Discord

Pour toute question, suggestion ou simplement pour discuter avec la communauté, rejoignez-nous sur Discord !

900+Membres