Envie de freins plus précis, de pneus plus adhérents ou d'une véritable physique de drift ? Dans FiveM, vous pouvez modifier le comportement de votre véhicule de deux manières simples :
- Modifier
handling.metapour un réglage permanent par modèle. - Gestion des remplacements lors de l'exécution avec des natifs de FiveM dans un script.
Ce guide montre les deux, explique chaque valeur importante et vous fournit des flux de travail de test sûrs qui empêchent la désynchronisation et le chaos sur votre serveur.
Nous fournissons également un outil permettant de modifier toutes les tenues de route du véhicule.
Résumé rapide
- Pour les voitures supplémentaires: modifier cette ressource
handling.metaet assurer le bon fonctionnement du véhiculevehicles.metale montre. - Pour les voitures de base GTA: ajoutez une entrée de gestion personnalisée et référencez-la dans une ressource légère ; ne modifiez pas les fichiers du jeu.
- Pour des ajustements en direct: utiliser
SetVehicleHandlingFloat/Int/Vectorsur le client qui possède le véhicule, puis verrouillez les valeurs par défaut avec une porte côté serveur si nécessaire. - Tester correctement: mesurez la vitesse de 0 à 100 km/h, la vitesse de pointe, la distance d'arrêt et les virages ; enregistrez les changements ; revenez rapidement en arrière si la conduite est plus mauvaise.
Prérequis
- Un serveur FiveM fonctionnel et une ressource de développement pour tester les modifications.
- Connaissances de base de la structure des ressources FiveM :
fxmanifest.lua,client.lua,server.lua. - Un éditeur de texte (VS Code) et un accès à votre dossier de ressources.
Conseil : conservez toutes les modifications de manipulation dans un ressource distincte
handling_tuning/afin que vous puissiez le désactiver rapidement si quelque chose se casse.
Méthode 1 : Modifier handling.meta (permanent)
Où le trouver
- Les véhicules complémentaires sont généralement livrés avec
data/handling.meta. - Sinon, créez-en un et référencez-le dans
fxmanifest.lua.
Exemple de structure de ressources
resources/ handling_tuning/ fxmanifest.lua data/ handling.meta vehicles.meta (only if you need to bind new handlingId) carvariations.meta (optional)
Minimal fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
files {
'data/handling.meta',
'data/vehicles.meta'
}
-- Tell the game what each file is
data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
Exemple handling.meta entrée (voiture)
<HandlingData> <Item type="CHandlingData"> <handlingName>MY_TUNED_SULTAN</handlingName> <fMass value="1400.0"/> <fInitialDragCoeff value="8.0"/> <fPercentSubmerged value="85.0"/> <!-- Engine / drivetrain --> <fInitialDriveForce value="0.31"/> <!-- Acceleration strength --> <fDriveInertia value="1.0"/> <fClutchChangeRateScaleUpShift value="2.5"/> <fClutchChangeRateScaleDownShift value="2.0"/> <fInitialDriveMaxFlatVel value="190.0"/> <!-- Approx top speed (km/h proxy) --> <!-- Brakes --> <fBrakeForce value="1.0"/> <fBrakeBiasFront value="0.55"/> <fHandBrakeForce value="0.65"/> <!-- Steering --> <fSteeringLock value="40.0"/> <!-- Grip / traction --> <fTractionCurveMax value="2.4"/> <!-- Peak grip --> <fTractionCurveMin value="2.1"/> <!-- Mid‑corner grip --> <fTractionCurveLateral value="22.0"/> <fTractionSpringDeltaMax value="0.14"/> <fLowSpeedTractionLossMult value="0.6"/> <!-- Suspension --> <fSuspensionForce value="2.0"/> <fSuspensionCompDamp value="1.5"/> <fSuspensionReboundDamp value="2.0"/> <fSuspensionUpperLimit value="0.08"/> <fSuspensionLowerLimit value="-0.10"/> <fSuspensionRaise value="0.00"/> <fAntiRollBarForce value="0.7"/> <!-- Weight balance / roll --> <fRollCentreHeightFront value="0.32"/> <fRollCentreHeightRear value="0.33"/> <!-- Model flags (optional) --> <strModelFlags>440010</strModelFlags> <strHandlingFlags>0</strHandlingFlags> </Item> </HandlingData>
Lier la manutention à un véhicule
Si vous avez introduit un nouveau <handlingName>, pointez votre véhicule vers lui vehicles.meta:
<CVehicleModelInfo__InitDataList> <Item> <modelName>sultan</modelName> <handlingId>MY_TUNED_SULTAN</handlingId> </Item> </CVehicleModelInfo__InitDataList>
Objectifs de réglage communs
| But | Modifiez ces valeurs | Remarques |
|---|---|---|
| Accélération plus rapide | fInitialDriveForce légèrement en hausse; fDriveInertia un peu plus haut | Évitez les sauts brusques. Petits incréments de 0,02 à 0,05. |
| Vitesse de pointe plus élevée | fInitialDriveMaxFlatVel en haut | Restez réaliste pour trouver l’équilibre. |
| De meilleurs freins | fBrakeForce vers le haut ; biais 0,55–0,65 avant | Une position trop haute bloque les roues de manière irréaliste. |
| Plus d'adhérence | fTractionCurveMax/Min en haut; en bas fLowSpeedTractionLossMult | Une adhérence élevée réduit les glissades amusantes. |
| Configuration de dérive | Inférieur fTractionCurveMax/Min; augmenter fLowSpeedTractionLossMult; réduire fBrakeBiasFront | Combiner avec des niveaux supérieurs fSteeringLock. |
| Conduite plus douce | Inférieur fSuspensionForce; inférieur fCompDamp/ReboundDamp | Attention au creux. |
| Virages plus plats | Augmenter fAntiRollBarForce; ajuster les centres de roulis | Une rigidité excessive provoque un survirage brutal. |
Gardez un journal des modifications par véhicule : ce que vous avez modifié, dans quelle mesure et les résultats de vos tests.
Méthode 2 : Remplacer la gestion par les natifs (exécution)
Utilisez ceci lorsque vous en avez besoin dynamique configurations (événements de course, emplois, locations) ou souhaitez effectuer des tests A/B avant de verrouiller les valeurs dans handling.meta.
Exemple de script client
-- client.lua
local function setHandlingFloat(model, field, value)
local mhash = type(model) == 'string' and GetHashKey(model) or model
SetVehicleHandlingFloat(mhash, 'CHandlingData', field, value)
end
CreateThread(function()
-- Example: buff Sultan acceleration a bit
setHandlingFloat('sultan', 'fInitialDriveForce', 0.33)
setHandlingFloat('sultan', 'fInitialDriveMaxFlatVel', 195.0)
end)
S'applique uniquement aux véhicules possédés
Le client qui possède L'entité doit appliquer la modification pour éviter la désynchronisation. Si vous avez besoin d'une autorité serveur, associez un événement serveur à une vérification du propriétaire de l'entité et réappliquez-la. playerEnteredVehicle.
-- server.lua
RegisterNetEvent('tune:apply')
AddEventHandler('tune:apply', function(netId, changes)
local src = source
-- validate permissions here
TriggerClientEvent('tune:applyClient', -1, netId, changes)
end)
-- client.lua
RegisterNetEvent('tune:applyClient')
AddEventHandler('tune:applyClient', function(netId, changes)
local veh = NetToVeh(netId)
if DoesEntityExist(veh) and NetworkHasControlOfEntity(veh) then
for _, c in ipairs(changes) do
SetVehicleHandlingFloat(GetEntityModel(veh), 'CHandlingData', c.field, c.value)
end
end
end)
Pour les boosts temporaires (nitreux, événements), stockez les valeurs d'origine et les restaurer après la séance.
Flux de travail de test sécurisé
- Véhicule clone:testez d'abord sur un modèle, pas sur toute la classe.
- Définir des lignes de base: stock 0–100, vitesse de pointe, distance de freinage 100–0, un slalom standard.
- Changer une variable: valider de petits incréments, tester après chacun.
- Utilisez des itinéraires et des conditions météorologiques identiques: supprimer le caractère aléatoire.
- Recueillir des commentaires: laissez plusieurs joueurs tester ; contrôleur de notes contre clavier.
- Surveiller les performances: vérifier
resmonpour les pics lorsque vous écrivez des changements par tick.
Liste de contrôle simple des indicateurs clés de performance
- Le 0–100 km/h s'améliore de 5–10% sans patinage des roues.
- La vitesse de pointe n'augmente pas plus que nécessaire pour l'équilibre des classes.
- La distance de freinage diminue mais reste réaliste.
- La voiture reste rattrapable à la limite ; pas de survirage brusque.
Règles d'équilibre et anti-chaos
- Ensemble plafonds de classe: vitesse de pointe, puissance, adhérence par classe (A, S, X). Documentez les limites.
- Appliquez la validation côté serveur afin que les joueurs ne puissent pas empiler des valeurs illégales.
- Garder police et urgences véhicules prévisibles ; ne pas trop polir.
- Pour les serveurs de dérive, publiez un pack de base de dérive avec des valeurs partagées pour réduire les plaintes.
Dépannage
Le véhicule ignore votre handlingId
- Assurer la
vehicles.metaentrées<handlingId>correspond exactement<handlingName>. - Assurez-vous d'avoir chargé
vehicles.metaviadata_file 'VEHICLE_METADATA_FILE'.
Les modifications de maniabilité ne s'appliquent pas aux voitures supplémentaires
- Certains packs intègrent leurs propres
handling.metaSupprimez les doublons ou assurez-vous que votre fichier se charge après la leur.
Désynchronisation entre les joueurs
- Appliquer les remplacements d'exécution sur le client propriétaire. Éviter les boucles de spam ; définir une seule fois par génération.
La voiture se retourne trop facilement
- Centre de masse inférieur : augmentation légère
fRollCentreHeightFront/Rearet réduirefSuspensionRaise.
Sous-virage
- Augmenter
fTractionCurveMinlégèrement etfSteeringLockEnvisagez une répartition plus importante du freinage arrière.
Survirage
- Augmenter légèrement l'adhérence arrière ou l'anti-roulis. Abaisser
fLowSpeedTractionLossMult.
Référence : Valeurs de gestion des clés
- Moteur:
fInitialDriveForce,fDriveInertia,fInitialDriveMaxFlatVel,fClutchChangeRateScaleUpShift/DownShift - Freins:
fBrakeForce,fBrakeBiasFront,fHandBrakeForce - Pilotage:
fSteeringLock - Traction:
fTractionCurveMax/Min/Lateral,fLowSpeedTractionLossMult,fTractionSpringDeltaMax - Suspension:
fSuspensionForce,fSuspensionCompDamp,fSuspensionReboundDamp,fSuspensionUpper/LowerLimit,fSuspensionRaise,fAntiRollBarForce - Stabilité:
fRollCentreHeightFront/Rear,fMass,fInitialDragCoeff
Exemple : configuration de rue équilibrée (copier et adapter)
<Item type="CHandlingData"> <handlingName>MX_STREET_BALANCED</handlingName> <fMass value="1500.0"/> <fInitialDragCoeff value="9.0"/> <fInitialDriveForce value="0.30"/> <fDriveInertia value="1.05"/> <fClutchChangeRateScaleUpShift value="2.2"/> <fClutchChangeRateScaleDownShift value="1.9"/> <fInitialDriveMaxFlatVel value="200.0"/> <fBrakeForce value="1.0"/> <fBrakeBiasFront value="0.60"/> <fHandBrakeForce value="0.55"/> <fSteeringLock value="38.0"/> <fTractionCurveMax value="2.35"/> <fTractionCurveMin value="2.05"/> <fLowSpeedTractionLossMult value="0.7"/> <fSuspensionForce value="2.2"/> <fSuspensionCompDamp value="1.6"/> <fSuspensionReboundDamp value="2.2"/> <fSuspensionUpperLimit value="0.07"/> <fSuspensionLowerLimit value="-0.09"/> <fAntiRollBarForce value="0.75"/> <fRollCentreHeightFront value="0.31"/> <fRollCentreHeightRear value="0.32"/> </Item>
FAQ
Comment puis-je modifier la tenue de route d'une seule voiture ?
Créer un nouveau <handlingName> dans handling.meta et le référencer via <handlingId> dans vehicles.meta pour ce modèle.
Puis-je appliquer des modifications de gestion par joueur ou par travail ?
Oui. Utilisez des remplacements d'exécution dans un script client au démarrage d'une tâche et restaurez les valeurs d'origine à la fin.
Pourquoi la vitesse de pointe semble-t-elle limitée ?fInitialDriveMaxFlatVel Agit comme un bouchon souple. La traînée aérodynamique et les rapports de démultiplication influencent toujours la vitesse de pointe réelle.
Les modifications de gestion affectent-elles les performances du serveur ?
Statique handling.meta Les modifications ne le sont pas. Les ajustements de script par tick peuvent être définis une fois au lancement et éviter les boucles.
Liens internes
- Installer correctement les voitures supplémentaires
- Utiliser Resmon pour évaluer vos modifications
- Guide complet de réglage des performances FiveM
- Meilleurs paramètres FiveM pour un gameplay plus fluide
- Comment corriger la perte de texture dans FiveM
Références externes
- Référence des natifs FiveM pour la gestion des remplacements
- Communauté
handling.metadocumentation pour les valeurs de GTA V
Liste de contrôle de publication
- Ajoutez des blocs de code avec des boutons de copie.
- Reliez les cinq guides internes ci-dessus.
- Ajoutez un court clip de démonstration de la distance de freinage avant/après.
- Examiner le comportement multiplateforme (clavier/contrôleur).
- Exécutez un test A/B pendant 7 jours avant de déployer le site sur l’ensemble du site.
Examen éditorial et politique des sources
Les modifications de maniabilité des véhicules doivent être versionnées par ressource. Modifiez un paramètre, testez le freinage, la direction, les collisions et le comportement en réseau, puis comparez-le à l'original handling.meta. Ne modifiez pas un pack partagé en direct sans une copie de restauration.