Carburants, recharge électrique et stations physiques¶
Medusa gère trois propulsions actives et six produits. La source de vérité reste l’API Medusa : LC Fuel fournit son apparence, ses objets 3D et son parcours physique, mais ne possède ni argent, ni base MySQL, ni niveau de véhicule.
| Propulsion | Produits compatibles | Unité | Prix initial |
|---|---|---|---|
| Essence | Regular, Plus, Premium | litre | 1,55 $, 1,69 $, 1,98 $ |
| Diesel | Diesel | litre | 1,49 $ |
| Électrique | Charge normale, Charge rapide | point de pourcentage | 1,80 $, 2,50 $ |
Un produit incompatible est refusé avant toute réservation d’argent ou modification du véhicule. Regular, Plus et Premium peuvent être mélangés ; leur composition est conservée et influence uniquement la consommation. Aucun profil de handling, puissance ou vitesse maximale n’est modifié.
Niveau, capacité et consommation¶
- Le compteur existant reste l’unique jauge visible et affiche un pourcentage de 0 à 100 %.
- Les capacités thermiques sont exprimées en litres. Une batterie emploie un million de milliunités, soit 100 %.
- Regular et Diesel ont un facteur de consommation de 1,0 ; Plus 0,9 ; Premium 0,8.
- Voitures, motos, quads, poids lourds, bateaux, hélicoptères et avions consomment quand leur moteur tourne. Vélos, trains et véhicules spéciaux exclus ne consomment pas.
- Les véhicules PNJ naissent entre 20 et 80 %, restent purement runtime et ne créent aucune ligne persistante après leur disparition.
- Les véhicules enregistrés conservent pourcentage, propulsion, capacité et composition toutes les 20 secondes, à la sortie, au garage, à la restauration et après redémarrage. La valeur 0 % est conservée : aucun plein gratuit n’est appliqué.
- Les seuils 20/10/5/0 % ne notifient qu’une fois par franchissement. Sous 1 %, le moteur ne démarre pas ; à partir de 1 %, les règles existantes de la touche moteur et du délai de 60 secondes restent inchangées.
Au déploiement depuis une base 0039, le tarif historique gasoline/liter est remplacé par les six
produits avant que leurs nouvelles règles de validation ne soient activées. Si cette conversion ne
peut pas être menée à terme, la transaction PostgreSQL est annulée et l’API reste volontairement
indisponible ; FiveM ne démarre pas sur un schéma partiellement migré.
Stations routières¶
Le repère de carte, le GPS et la recherche de pompes utilisent la même ancre de station. Les coordonnées entières (notamment Pillbox) sont converties correctement pour FiveM : aucun décalage artificiel n'est ajouté aux positions enregistrées pour compenser un blip mal affiché.
La migration 0043 complète les zones routières LC manquantes, jusqu'à 16 ancres, sans ajouter de
pompe 3D. Une station déjà existante à moins de 80 m dans le même bucket, même personnalisée,
privée, désactivée ou archivée, empêche l'ajout d'un doublon. Les nouveaux lieux protégés
Station LC … restent déplaçables et restaurables dans F10 et l'administration web.
Les stations routières utilisent les pompes déjà présentes dans GTA. Aucun cercle, trait au sol ou prop supplémentaire n’est ajouté. Sept familles de pompes sont reconnues :
prop_gas_pump_1a,prop_gas_pump_1b,prop_gas_pump_1c,prop_gas_pump_1d;prop_gas_pump_old2,prop_gas_pump_old3,prop_vintage_pump.
À proximité, Alt+clic ou la touche d’interaction remappable ouvre le même panneau. Le joueur choisit Regular, Plus, Premium ou Diesel selon la propulsion du véhicule. Une pompe routière n’accepte que les véhicules terrestres. Le serveur vérifie l’identité réelle de la pompe, sa zone, l’instance, la distance, la clé, l’immobilité, le moteur coupé et la trappe avant de réserver les fonds.
La trappe n’est jamais devinée au centre du véhicule. Une correction Administrateur décrit un
point local complet depuis l’origine du véhicule. Une baseline parmi les 669 calibrations LC
Fuel décrit au contraire un décalage à appliquer depuis la première ancre réellement disponible
dans l’ordre exact de LC Fuel : petrolcap, petroltank, petroltank_l, petroltank_r,
wheel_lr, wheel_lf, engine, chassis_dummy. Les quatre dernières ancres ne sont admises que
si le hash du modèle possède cette baseline LC exacte : elles ne servent jamais de fallback brut.
Sans baseline exploitable, seuls les quatre bones dédiés au carburant, puis l’ancienne calibration
du point d’installation, restent des recours sûrs. Medusa transforme chaque source en un unique
point effectif. La Buffalo applique ainsi depuis son ancre LC la calibration exacte
forward=-0,45, right=-0,24, up=0,35, distance 1,3 m, y compris devant une pompe GTA native
qui n’a ni identifiant de point ni calibration JSON.
Ce catalogue de trappes est global : il est synchronisé séparément du profil et des comptes du
personnage. Une arrivée après le démarrage du serveur, une reconnexion ou un restart de ressource
déclenche automatiquement une demande ciblée et quelques nouvelles tentatives temporisées. Avant
la réception d’au moins 669 entrées valides, le ravitaillement reste fermé et affiche
SYNC-FUEL-PORT; le message de calibration F10 CAL-FUEL-PORT n’est utilisé qu’une fois le
catalogue prêt, pour un modèle réellement dépourvu d’ancre ou de calibration sûre. La première
erreur reste visible ; les répétitions E/Alt pour le même modèle et la même pompe sont dédupliquées
pendant 2,5 secondes afin de ne pas empiler les notifications.
Recharge électrique¶
La migration 0040 crée exactement 26 nouvelles bornes LC Fuel utilisant prop_electric_01. Chaque
borne propose :
- Charge normale : 0,5 point toutes les 2 secondes ;
- Charge rapide : 0,5 point toutes les 0,8 seconde.
Le câble mesure 7,5 m. Le niveau ne dépasse jamais 100 %. Les 22 anciens points électriques de la migration 0038 restent archivés et invisibles ; ils ne sont jamais réactivés par ce seed.
La migration corrective 0042 retourne de 180° uniquement les bornes canoniques encore restées sur leur orientation 0040. Une borne déjà tournée dans F10 conserve son angle. La commande explicite Restaurer utilise ensuite la nouvelle orientation canonique ; aucun autre déplacement, produit ou réglage de station n’est modifié.
Aviation et maritime¶
Quatorze points thermiques physiques sont seedés avec prop_gas_pump_1b, les quatre produits
thermiques et une corde de 14 m : neuf points Aviation, quatre Maritime et un point Route à Paleto.
Le point du porte-avions à 483.28, -3382.83, 5.07 est conservé désactivé tant que sa classification
et sa hauteur n’ont pas été vérifiées en jeu. Les quatre emplacements amont Mission Row PD, Pillbox,
Davis Hospital et Vespucci PD ne sont pas importés.
Une installation Aviation n’accepte que les avions et hélicoptères ; une installation Maritime n’accepte que les bateaux. Les coordonnées, headings, hauteurs, collisions et portées doivent être validés un par un sur le serveur avant activation globale.
Parcours de ravitaillement¶
Le panneau LC Fuel propose :
- plein ;
- quantité en litres pour un thermique ou en pourcentage pour un EV ;
- budget maximal ;
- paiement en liquide ou depuis un compte bancaire autorisé.
Avant confirmation, il affiche la cible, la durée estimée, le coût brut et la somme réellement débitée. La règle de facturation est unique : 0 livré = 0 $, tout coût brut non nul inférieur à 1 $ = 1 $, puis plafond au dollar entier supérieur. Une interruption facture uniquement la quantité confirmée et rend le reliquat sur la source d’origine.
Le matériel physique n’apparaît jamais pendant ce choix. Après confirmation et réservation des fonds seulement, le panneau principal se ferme, le focus est rendu au jeu, l’animation LC est jouée et le personnage prend un pistolet relié à la pompe par un flexible. Le pistolet et son état sont répliqués aux joueurs proches dans la même instance. Le serveur crée lui-même l’objet réseau après la réservation, le place dans la bonne instance et le conserve jusqu’à la fermeture du cycle. Le client attend ensuite que OneSync lui attribue naturellement l’objet avant de le mettre en main ; aucune demande de reprise de contrôle interdite par le serveur n’est nécessaire. Les contrôles stricts d’identité de l’objet, de propriétaire réseau et d’instance restent appliqués.
Les préférences et les tarifs sont chargés après l’entrée réelle du personnage, ainsi qu’après un
redémarrage de la ressource. Cette initialisation réessaie de façon bornée sans afficher d’erreur
pendant l’écran de sélection. Si le catalogue tarifaire utile n’est pas encore prêt, le panneau ne
s’ouvre pas avec de faux montants à 0 $ : SYNC-ENERGY-PRICES demande simplement de réessayer.
Le joueur marche ensuite jusqu’à la trappe sûre du véhicule. La touche d’interaction remappable
E ou Alt sur le véhicule propose Brancher le pistolet. Le carburant ne commence à être livré
qu’après validation serveur de cette attache ; pendant la livraison, seule la petite jauge LC Fuel
reste visible, sans focus ni fond noir. Elle est remontée au-dessus du panneau d’interaction Medusa
sur les résolutions prises en charge. Les versions thermique et électrique partagent exactement la
même zone responsive ; ni le panneau Medusa, ni le panneau LC complet ne sont déplacés. La même interaction arrête et
décroche le pistolet, facture
uniquement la quantité réellement confirmée, puis demande de le rendre à la pompe d’origine. Le
point reste réservé jusqu’à ce retour ou jusqu’au nettoyage forcé après 60 secondes.
Les modèles de pistolet, l’animation, la prise en main et les points d’ancrage du flexible viennent de la copie LC Fuel pinée. Les bidons et packs de dépannage restent volontairement séparés : ils utilisent leur prop portable sans créer un faux flexible vers une installation inexistante.
Une seule session peut occuper un point, un joueur ou un véhicule. Deux points distincts restent utilisables en parallèle. Sans progression, le verrou expire après 120 secondes. Annulation, éloignement, mort, entrée dans le véhicule, disparition, explosion, déconnexion ou redémarrage ferment ou placent la session en reprise idempotente sans double débit. Le pistolet, le flexible, les interactions, le focus et les state bags sont alors nettoyés de façon idempotente.
Objets de dépannage¶
Bidon de carburant universel¶
fuel_can_gasoline est non empilable et conserve un seul produit thermique à la fois. Il contient
0 à 20 L et pèse linéairement de 2 kg vide à 14 kg plein. Un bidon plein neuf coûte 300 $. Un bidon
partiellement rempli est facturé au prix Regular. Le produit ne peut changer que lorsque le bidon
est vide. Les métadonnées sont recalculées côté serveur ; une falsification échoue au poids plein et
ne donne aucun avantage.
Pack de recharge électrique¶
ev_charge_pack pèse 8 kg, coûte 500 $ et est non empilable. Il fonctionne une seule fois sur un
véhicule électrique immobile, moteur coupé, dont la batterie est à 20 % maximum. Un succès ajoute
exactement 10 points et consomme l’instance après la transaction. Tout échec conserve l’objet.
Les deux objets valident la trappe du véhicule mais n’inventent pas de pompe : ils emploient un prop tenu en main sans câble relié à une installation absente.
Le bouton Utiliser de l’inventaire et les cinq raccourcis rapides exécutent exactement le même parcours avec l’UUID de l’instance choisie. Le jeu sélectionne le véhicule compatible le plus proche, ferme l’inventaire, coupe puis synchronise son moteur et démarre directement le remplissage : aucun second menu de station n’est demandé. Un réservoir plein, un pack EV utilisé au-dessus de 20 %, un véhicule incompatible ou une autre action énergie en cours produit un refus lisible et ne consomme pas l’objet.
Le dépannage portable ne bloque plus physiquement le véhicule et ne neutralise aucune commande de conduite. Le véhicule doit rester immobile, moteur coupé, et le joueur doit rester à pied près de la trappe. Redémarrer le moteur, déplacer le véhicule au-delà de 0,55 m/s, entrer dedans, s’éloigner, mourir ou perdre l’entité annule immédiatement l’opération avant un nouveau tick. Chaque sortie retire le prop, rend les animations et force défensivement le dégel du véhicule.
Le geste de remplissage commence uniquement après l’acceptation de la session par le serveur. Le
bidon emploie l’animation GTA weapons@misc@jerrycan@ / fire et le pack électrique l’intervention
mini@repair / fixing_a_ped, après une orientation ponctuelle vers la trappe. Un refus ou un
timeout ne joue aucun faux succès. Si un dictionnaire visuel ne charge pas sous trois secondes,
l’opération métier continue normalement sans animation. Succès, annulation, mouvement, moteur,
éloignement, disparition, mort, remplacement et arrêt de ressource arrêtent le seul geste Medusa
associé à la session ; aucune tâche globale du personnage n’est utilisée comme preuve de livraison.
Le bidon possède désormais son propre point d’attache sur la main et cette attache est réappliquée
une seule fois après l’orientation du personnage, juste avant le geste. Le pack conserve son profil
historique. Aucun des deux objets n’est rattaché en boucle.
Dès l’acceptation serveur, la petite vue LC Fuel affiche une barre correspondant à l’opération confirmée — et non à une estimation cliente. Le bidon indique le pourcentage, les litres livrés et les litres restant à transférer. Le pack indique le pourcentage ainsi que le niveau initial et la cible exacte de +10 points. Le résultat final du pack peut rester affiché 650 ms, puis disparaît ; aucune barre ne prend le focus, ne bloque caméra/radio ou ne retarde la transaction.
Ils peuvent aussi être achetés directement sur une installation active sans véhicule : une pompe thermique propose uniquement le bidon à 300 $, une borne électrique uniquement le pack à 500 $. Cette boutique courte affiche les choix liquide/compte, mais aucun contrôle de réservoir. Elle ne demande pas le catalogue de trappes et ne crée ni session, réservation de carburant, pistolet, flexible ou état d’équipement. Le serveur reconstruit le point visé et vérifie station, type, instance et distance avant l’unique transaction paiement+inventaire. Un succès ferme la boutique ; un refus laisse une erreur lisible et ne débite rien. La capacité d’inventaire reste appliquée : un bidon plein demande 14 kg libres et un pack 8 kg libres. Les erreurs « inventaire trop lourd », « inventaire plein », « fonds insuffisants » et les indisponibilités techniques sont affichées explicitement au lieu d’être remplacées par un message générique.
Le clic Alt sur le vide, une entité sans intérêt ou l’absence de candidat ne déclenche plus de notification. Une cible périmée, un refus métier, une erreur fournisseur/action ou une panne de la NUI reste en revanche visible avec son code de corrélation.
Carte, F5 et graphique¶
- Les blips Route, Électrique, Aviation et Maritime sont distincts.
- La préférence de compte est
Tous,Plus procheouMasquéset survit à une reconnexion. - Même en mode
Tous, seules les stations à proximité s'affichent sur la minimap : les stations lointaines ne restent plus collées à son bord. Toutes les stations actives autorisées restent visibles sur la grande carte du menu pause.Plus procheconserve sa sélection par catégorie etMasquésmasque toujours les blips ; le GPS vers une station distante reste disponible. - F5 affiche propulsion, produit ou composition, capacité, niveau, consommation, autonomie, GPS et réglage des blips sans ajouter une seconde jauge.
- La touche graphique remappable ouvre le graphique LC Fuel pour le conducteur seulement. Aucun
slash
/fuel_typeou/fuel_chartn’est livré. - Une NUI fermée est entièrement transparente et ne garde aucun focus. Ouverte, elle neutralise caméra, radio, attaque et conduite jusqu’à fermeture ou arrêt de ressource.
Administration¶
F10 possède une section autonome Stations & carburants pour les actions spatiales : GPS, téléportation, placement, déplacement, rotation, calibration de trappe, test, restauration des seeds, création et duplication de points custom. Un seed protégé peut être déplacé, désactivé ou restauré, jamais supprimé définitivement.
La calibration de trappe vise un véhicule proche et enregistre un override pour son modèle, pas pour une station. Le marqueur turquoise démarre sur le point effectif LC/Admin réellement utilisé, puis est déplacé précisément sur le véhicule ; E confirme, Retour arrière ou Échap annule sans rien enregistrer. La liste indique la source effective LC Fuel ou Administrateur, la révision et permet de revenir à la baseline LC.
Medusa Admin web présente les mêmes stations, produits, prix, capacités, diagnostics, calibrations et révisions. Il permet de rechercher un modèle, de corriger numériquement sa trappe ou de revenir à LC ; il renvoie vers F10 lorsqu’une capture spatiale en jeu est nécessaire. Les deux surfaces utilisent la même API et les six permissions :
ADMIN_ALLOW_VIEW_ENERGY;ADMIN_ALLOW_MANAGE_ENERGY_STATIONS;ADMIN_ALLOW_MANAGE_ENERGY_PRICES;ADMIN_ALLOW_MANAGE_ENERGY_CATALOG;ADMIN_ALLOW_CORRECT_VEHICLE_ENERGY;ADMIN_ALLOW_VIEW_ENERGY_AUDIT.
Chaque mutation sensible exige un motif et conserve acteur, permission, surface, cible, avant, après et révision. Une erreur est visible dans l’interface avec un code corrélé ; F8 complète le diagnostic mais n’est jamais le seul retour.
Migration 0040 et rétention¶
0040_vehicle_lc_fuel est une migration forward-only depuis 0039_vehicle_energy_simple :
- elle ne modifie aucun
registered_vehicles.fuel_level; - elle crée un état de réservoir par véhicule et classe les modèles EV/Diesel connus côté serveur ;
- elle restaure les six prix, réactive les deux objets actuels et conserve les historiques terminaux ;
- elle seed les 26 chargeurs et 14 points spéciaux avec identifiants stables ;
- elle laisse les 22 anciens points EV archivés ;
- elle enregistre le commit LC Fuel
405c376529a48c8aa25c1553ca7e7ee6469a5b8cet le commit LC Utils4a2d705830428ef71f1bd2127f8470eb52046fe5dans l’audit.
La migration additive et forward-only 0041_vehicle_fuel_ports part ensuite de 0040. Elle crée le
catalogue protégé de 669 calibrations LC Fuel sans modifier véhicule, niveau, réservoir, station,
session ou paiement existant. Les overrides administrateur sont séparés de cette baseline ; une
remise à LC retire uniquement l’override. Chaque modification exige une justification et conserve
avant/après, acteur et révision optimiste dans l’audit.
0042_energy_charger_heading suit 0041 et ne change aucun schéma. Elle corrige les headings des
26 stations et points lc-charger-* uniquement lorsque la ligne est encore une seed protégée et
porte exactement l’orientation 0040. Toute rotation F10 divergente, installation personnalisée,
point spécial ou archive historique est préservé. Un événement d’audit agrégé indique combien de
stations et de points ont réellement été retournés.
0043_energy_station_anchors suit 0042 : elle recentre Paleto Bay sur la zone LC seulement si
l'ancienne station est intacte et sans session en cours. Elle complète les ancres routières absentes
avec des contrôles anti-doublons et un audit avant/après pour chaque décision. Les stations et points
électriques, les points spéciaux, les tarifs et les inventaires ne changent pas. L'ancienne station
routière LSIA est conservée : son absence du catalogue LC ne suffit pas à prouver qu'elle est inutile
sur la carte du serveur. Les choix F10 intervenus après migration ne sont pas écrasés par un rejeu.
Les détails techniques sont rédigés après 90 jours. Après 365 jours, les sessions anciennes sont agrégées anonymement, exportées sous une référence SHA-256, puis purgées. L’export ne contient ni joueur, compte, véhicule, station, coordonnées, identifiant Discord ou secret.
Configuration et activation¶
Les flags indépendants couvrent système, consommation, stations, électrique, objets, interfaces,
garages et détails. Le système démarre dans l’ordre medusa-vehicles, lc_utils, medusa-energy,
lc_fuel, medusa-admin. medusa-energy reste l’unique writer ; une ressource fuel concurrente ou
une façade LC incompatible bloque l’activation avec diagnostic.
Une reconstruction du conteneur remplace ensemble le writer medusa-energy et ses deux façades
pinées lc_utils/lc_fuel, y compris lorsqu’une ancienne copie existe déjà dans le volume FiveM.
Le joueur ne doit donc jamais perdre les stations parce qu’un ancien contrat LC serait resté dans
ce volume après une mise à jour.
Chaque coupure est immédiate pour les nouvelles actions : stations coupées signifie aucun prop, blip ou ravitaillement ; électrique coupé masque les 26 chargeurs et refuse aussi le pack EV ; objets coupés interdit achat, remplissage et usage ; interfaces coupées retire les accès joueur F5/F7, Alt/E et la NUI. Les sessions déjà commencées sont seulement finalisées ou remboursées par le recovery, jamais relancées gratuitement.
Si un flag devient incompatible avec une session déjà ouverte, le serveur la clôture au dernier
volume confirmé avant de retirer l’interface et l’équipement. L’arrêt ou le restart de lc_fuel
clôture de la même façon toutes les sessions physiques, rend le focus et nettoie pistolet, câble,
corde et verrous. Une fermeture demandée par un client ne peut pas usurper ces motifs système.
La migration, les tests locaux et les contrôles statiques ne prouvent pas le rendu en jeu. Avant activation globale, la recette doit encore vérifier chaque coordonnée, les câbles/trappes, les classes, deux joueurs, les performances 30/60/144 FPS, les garages, les interruptions, F5/F10/web et toutes les non-régressions véhicules.