Réglage des véhicules dans le contexte du jeu de rôle
La personnalisation des véhicules est l'une des fonctionnalités les plus populaires sur n'importe quel serveur de jeu de rôle FiveM. Les joueurs investissent beaucoup de temps et d'argent dans leurs voitures, et un atelier de tuning leur donne la possibilité de personnaliser leurs véhicules avec des améliorations de performances, des modifications visuelles, des travaux de peinture personnalisés et des pièces de rechange. Un système de réglage bien conçu fait plus que exposer les modifications natives du véhicule intégrées à GTA via un menu. Il crée tout un écosystème qui comprend des ateliers de mécanique exploités par les joueurs, des structures de prix qui servent de puits d'économie, des minuteries d'installation qui créent des temps d'attente réalistes et un marché de pièces détachées où les composants peuvent provenir de différents fournisseurs à différents niveaux de qualité. L'atelier de tuning devient un centre social où les passionnés de voitures se rassemblent, les mécaniciens bâtissent leur réputation et chaque véhicule modifié raconte une histoire sur les goûts et le budget de son propriétaire.
Comprendre les natifs de modification GTA Vehicle
GTA V expose les modifications du véhicule via une série de fonctions natives qui tu permettent d'appliquer des mises à niveau à des emplacements de modification spécifiques. Chaque véhicule dispose d'un ensemble de types de modules identifiés par des indices numériques : les améliorations du moteur utilisent l'indice 11, les freins utilisent l'indice 12, la transmission utilise l'indice 13, la suspension utilise l'indice 15 et les pièces visuelles comme les spoilers, les pare-chocs et les jupes utilisent les indices 0 à 10. Le SetVehicleMod native applique une modification spécifique parmi les options disponibles pour ce modèle de véhicule et ce type de mod. Tous les véhicules ne prennent pas en charge toutes les catégories de modifications, tu dois donc vérifier la disponibilité en utilisant GetNumVehicleMods avant de présenter les options au joueur. Les travaux de peinture utilisent des natifs distincts comme SetVehicleColours pour les couleurs primaires et secondaires, SetVehicleExtraColours pour les couleurs nacrées et les roues, et SetVehicleCustomPrimaryColour pour les valeurs RVB personnalisées :
-- Mod type indices reference
local ModTypes = {
spoiler = 0,
front_bumper = 1,
rear_bumper = 2,
side_skirt = 3,
exhaust = 4,
frame = 5,
grille = 6,
hood = 7,
fender = 8,
right_fender = 9,
roof = 10,
engine = 11,
brakes = 12,
transmission = 13,
horns = 14,
suspension = 15,
armor = 16,
turbo = 18,
xenon = 22,
front_wheels = 23,
back_wheels = 24,
plate_holder = 25,
vanity_plates = 26,
trim = 27,
ornaments = 28,
dashboard = 29,
dial = 30,
door_speaker = 31,
seats = 32,
steering_wheel = 33,
shifter_leavers = 34,
plaques = 35,
speakers = 36,
trunk = 37,
hydraulics = 38,
engine_block = 39,
air_filter = 40,
struts = 41,
arch_cover = 42,
aerials = 43,
trim2 = 44,
tank = 45,
windows = 46,
livery = 48,
}
function GetAvailableMods(vehicle, modType)
local count = GetNumVehicleMods(vehicle, modType)
local mods = {}
for i = 0, count - 1 do
table.insert(mods, {
index = i,
label = GetModTextLabel(vehicle, modType, i) or ('Option ' .. (i + 1)),
})
end
return mods
end
Configuration de l'atelier de réglage
Configurez les emplacements des magasins de tuning avec leurs services disponibles, leurs multiplicateurs de prix et les catégories de modifications qu'ils proposent. Tous les magasins ne doivent pas nécessairement offrir tous les services. Un magasin de douane haut de gamme à Vinewood pourrait se spécialiser dans les travaux de peinture de luxe et les mods visuels haut de gamme avec des prix plus élevés mais une meilleure qualité. Un garage au niveau de la rue dans South LS pourrait se concentrer sur des pièces de performance abordables et une carrosserie de base. Cette différenciation crée des raisons pour les joueurs de visiter des magasins différents et soutient l'identité de jeu de rôle de chaque entreprise. Chaque magasin a besoin d'un emplacement physique avec un point d'entrée du véhicule où le joueur conduit sa voiture à l'intérieur, une position de caméra pour l'aperçu des modifications et éventuellement un MLO intérieur pour l'environnement du garage :
Config.TuningShops = {
['benny_motorworks'] = {
label = "Benny's Original Motor Works",
coords = vector3(-205.67, -1312.58, 31.30),
vehicleSpot = vector4(-211.89, -1320.88, 31.09, 178.94),
camOffset = vector3(0.0, 5.5, 1.5),
blipSprite = 72,
categories = {'performance', 'visual', 'paint', 'wheels', 'lights', 'livery'},
priceMultiplier = 1.0,
restrictedTo = nil, -- Open to all
},
['ls_customs'] = {
label = 'LS Customs - Burton',
coords = vector3(-347.55, -133.00, 39.01),
vehicleSpot = vector4(-339.20, -136.73, 39.01, 116.89),
camOffset = vector3(0.0, 5.0, 1.5),
blipSprite = 72,
categories = {'performance', 'visual', 'paint', 'wheels'},
priceMultiplier = 0.85,
restrictedTo = nil,
},
}
Config.ModPrices = {
engine = {1500, 3500, 6000, 10000}, -- Level 1-4
brakes = {1000, 2500, 4500, 7500},
transmission = {1200, 3000, 5500, 9000},
turbo = {15000},
suspension = {800, 1500, 2500, 4000},
armor = {2500, 5000, 10000, 17500, 25000},
spoiler = 2000, -- Flat price per option
front_bumper = 1800,
rear_bumper = 1500,
side_skirt = 1200,
exhaust = 1000,
hood = 2500,
roof = 1500,
paint_standard = 500,
paint_metallic = 1500,
paint_custom_rgb = 5000,
wheels = 3000,
xenon = 3000,
livery = 2500,
}
Système de prévisualisation des véhicules en temps réel
Les joueurs doivent voir les modifications apportées à leur véhicule avant de s'engager dans un achat. Implémentez un système de prévisualisation en direct qui applique temporairement les modifications sélectionnées au véhicule pendant que le joueur parcourt les options, puis annule toutes les modifications si le joueur annule ou applique uniquement les modifications achetées. Lorsque le joueur entre dans le menu de réglage, stockez les propriétés actuelles du véhicule sous forme d'instantané. Pendant qu'ils parcourent différentes options, appliquez chaque modification temporairement à l'aide des modules natifs du véhicule afin que le changement soit immédiatement visible. Si le joueur sélectionne une option différente dans la même catégorie, annulez le mod temporaire précédent avant d'appliquer le nouveau. Lorsque le joueur confirme un achat, la modification devient permanente et est enregistrée dans la base de données du véhicule. S'ils annulent, restaurez le véhicule à l'état d'instantané enregistré. Positionnez la caméra de jeu en orbite autour du véhicule pendant l'aperçu, permettant au joueur de faire pivoter la vue et d'inspecter les modifications sous tous les angles :
local originalMods = {}
function SaveVehicleSnapshot(vehicle)
originalMods = QBCore.Functions.GetVehicleProperties(vehicle)
end
function PreviewMod(vehicle, modType, modIndex)
SetVehicleMod(vehicle, modType, modIndex, false)
end
function RevertToSnapshot(vehicle)
if originalMods then
QBCore.Functions.SetVehicleProperties(vehicle, originalMods)
end
end
function SetupTuningCamera(vehicle, shopConfig)
local coords = GetEntityCoords(vehicle)
local camCoords = coords + shopConfig.camOffset
tuningCam = CreateCam('DEFAULT_SCRIPTED_CAMERA', true)
SetCamCoord(tuningCam, camCoords.x, camCoords.y, camCoords.z)
PointCamAtEntity(tuningCam, vehicle, 0.0, 0.0, 0.0, true)
SetCamActive(tuningCam, true)
RenderScriptCams(true, true, 1000, true, false)
end
Intégration au poste de mécanicien
Transformez l'atelier de réglage d'un menu automatisé en une entreprise dirigée par les joueurs en l'intégrant à un système de tâches mécaniques. Les mécaniciens de service peuvent effectuer des modifications sur les véhicules pour les clients, créant ainsi une interaction de jeu de rôle axée sur le service. Lorsqu'un client amène son véhicule au garage, il peut soit utiliser la borne libre-service à un prix plus élevé, soit demander un mécanicien pour bénéficier d'un tarif réduit. Le mécanicien voit les demandes de service entrantes sur l'interface de sa tablette, accepte le travail, discute des modifications souhaitées avec le client et effectue le travail. Lors de l'installation, jouez des animations et des effets de particules appropriés pour simuler le mécanicien travaillant sur le véhicule. Ajoutez des minuteries d'installation qui varient en fonction de la complexité de la modification, les échanges de moteur prenant plusieurs minutes et les travaux de peinture prenant moins de temps. Les mécaniciens gagnent une commission sur chaque travail qu'ils effectuent, ce qui les motive à fournir un bon service et à se constituer une clientèle. Suivez les statistiques des mécaniciens telles que le nombre total de travaux terminés, les taux de satisfaction des clients et les domaines de spécialisation pour créer un système de progression au sein de la carrière du mécanicien.
Système de peinture et d'emballage personnalisé
Allez au-delà de la palette de couleurs standard de GTA en mettant en œuvre un système de peinture personnalisé avec des sélecteurs de couleurs RVB, des finitions métalliques et mates, des superpositions nacrées et des enveloppes personnalisées. Le sélecteur de couleurs NUI doit afficher une roue chromatique à spectre complet ou un curseur HSL qui permet aux joueurs de sélectionner n'importe quelle couleur imaginable. Appliquez la couleur sélectionnée à l'aide SetVehicleCustomPrimaryColour et SetVehicleCustomSecondaryColour avec les valeurs RVB du sélecteur. Pour les effets d'enveloppement, utilisez le système de livrée du véhicule combiné à un remplacement de texture personnalisé pour appliquer des motifs, des textures en fibre de carbone ou des designs de marque sur la carrosserie du véhicule. Proposez une option de peinture bicolore dans laquelle les panneaux de carrosserie primaires et secondaires peuvent être de couleurs différentes, créant ainsi des combinaisons de couleurs distinctives. Enregistrez les valeurs RVB exactes dans l'enregistrement de la base de données du véhicule afin que les couleurs personnalisées persistent au fil des sessions et des redémarrages du serveur. Prix des travaux de peinture personnalisés plus élevés que les couleurs standard pour refléter la nature haut de gamme du service et fournir un puits d'argent efficace.
Réglage des performances et tests Dyno
Les modifications des performances méritent plus de profondeur que la simple sélection d'une option de menu et l'obtention de résultats instantanés. Implémentez une fonction de test dynamométrique où les joueurs peuvent tester les statistiques de performances de leur véhicule avant et après les modifications. Le test dynamométrique simule le véhicule fonctionnant à plein régime et affiche des mesures telles que la puissance estimée, le couple, la vitesse de pointe et le temps d'accélération. Utilisez les données de manipulation des véhicules du jeu pour calculer ces valeurs en fonction des modifications installées. Affichez les résultats dans un tableau de bord NUI épuré qui compare les valeurs avant et après avec des graphiques à barres ou des affichages numériques. Cela donne aux joueurs un retour concret sur la manière dont chaque mise à niveau affecte les performances de leur véhicule, rendant ainsi la décision d'achat plus éclairée et plus satisfaisante. Pour une couche supplémentaire de réalisme, implémentez une puce de réglage ou un système de remappage de l'ECU où les joueurs peuvent affiner des paramètres tels que la réponse de l'accélérateur, les rapports de vitesse et l'équilibre des freins via une interface coulissante, avec des changements reflétés dans les caractéristiques de conduite réelles du véhicule en utilisant SetVehicleHandlingFloat indigènes.
Sauvegarde et persistance des modifications du véhicule
Chaque modification appliquée au véhicule d'un joueur doit être enregistrée dans la base de données afin qu'elle persiste entre les sessions. La plupart des frameworks FiveM stockent les propriétés des véhicules sous forme de blob JSON dans la table des véhicules du joueur. Lorsqu'une modification est appliquée et payée, mettez à jour les propriétés du véhicule stockées avec les nouvelles valeurs du mod. Lorsque le véhicule sort du garage, appliquez toutes les modifications enregistrées à l'aide du framework SetVehicleProperties fonction. Gérez les cas extrêmes, comme les sauvegardes partielles où le serveur plante lors d'une session de modification, ce qui pourrait laisser le véhicule dans un état incohérent. Utilisez un modèle de transaction dans lequel le paiement est traité et la modification est enregistrée en une seule opération de base de données atomique. Si l'une ou l'autre étape échoue, annulez les deux pour éviter que le joueur ne soit chargé sans recevoir le mod ou sans recevoir une modification gratuite. Enregistrez toutes les modifications avec les horodatages et les prix pour examen par l'administrateur et pour prendre en charge les restaurations potentielles si des exploits sont découverts.
Modifications illégales et courses de rue
Ajoutez une couche de gameplay criminel en implémentant des modifications illégales qui ne sont disponibles que dans les magasins de tuning clandestins. L'injection d'oxyde nitreux fournit une augmentation temporaire de la vitesse qui peut surchauffer et endommager le moteur si elle est utilisée de manière excessive. Les échanges de moteur qui dépassent la limite légale de puissance exposent le véhicule à une inspection policière et à une mise en fourrière s'il est attrapé. Les plaques d'immatriculation supprimées, les vitres noircies au-delà du pourcentage de teinte légal et les modifications de la suspension hydraulique donnent toutes à la police une raison probable pour un contrôle routier. Suivez les modifications apportées à un véhicule qui sont classées comme illégales et exposez ces informations à la police par l'intermédiaire d'un mécanicien d'inspection des véhicules. Les agents peuvent utiliser un scanner portatif pour vérifier l'état de modification d'un véhicule, révélant ainsi les pièces illégales qui justifient une citation ou une mise en fourrière. Cela crée une dynamique du chat et de la souris entre la culture du tuner et les forces de l'ordre qui enrichissent l'écosystème de jeu de rôle du serveur.
