Inventaires¶
Les clés de véhicule sont des objets système physiques à 0 kg. Elles peuvent être transférées, déposées et stockées normalement, mais ne peuvent pas être créées, renommées, retirées ou vidées par les outils génériques. Chaque double conserve son UUID et reste utilisable séparément ; la possession générale accepte une ou plusieurs clés valides présentes dans l'inventaire personnel, tandis qu'un clic contrôle toujours l'instance exacte. Voir Clés et verrouillage des véhicules.
Les badges immobiliers sont des items système non empilables, transférables mais protégés des mutations administratives génériques. Les stockages rattachés appliquent ownership, copropriété ou permission de groupe ciblée. Voir Immobilier et bâtiments.
Les stockages servent aussi d'entrées et de sorties aux établis de crafting. Leur suppression invalide immédiatement les liaisons concernées et met la production en attente plutôt que de perdre des objets.
Dépôts au sol¶
L'ouverture de l'inventaire personnel prépare un dépôt à droite sans placer d'objet dans le monde. Le carton prop_cs_cardbox_01 apparaît devant le personnage uniquement après le premier objet glissé dans le dépôt. Les objets se glissent dans les deux sens et chaque carton non vide peut être rouvert par interaction.
Un dépôt vide disparaît à la fermeture. Un dépôt rempli devient inactif et invisible au prochain redémarrage, puis est supprimé au suivant. Avec ADMIN_ALLOW_MANAGE_DROPS, un administrateur peut voir son contenu, le réactiver ou le supprimer dans le web admin.
Lorsque le dernier objet est retiré, l'interaction et le carton sont retirés ensemble immédiatement pour tous les joueurs.
Le dépôt reprend exactement la grammaire visuelle de l'inventaire personnel : console AR, télémétrie de capacité et de poids, matrice de cinq colonnes, cases carrées et panneau de scan d'objet. Cette présentation constitue le modèle des interfaces d'inventaire à venir, sans modifier la conception de l'inventaire personnel.
Les dépôts disposent de 25 emplacements configurables dans medusa-inventory/config.json. Un joueur peut déposer un objet directement dans n'importe quel emplacement de la matrice ; la position choisie est conservée. Si la case contient déjà un objet, celui-ci prend la place libérée dans l'inventaire d'origine. L'échange est refusé si l'un des deux inventaires dépasserait sa limite de poids.
Dans la matrice du dépôt, les objets peuvent aussi être réorganisés par glisser-déposer. Une case vide reçoit l'objet ; entre deux cases occupées, les objets échangent leurs positions. Tous les joueurs consultant ce dépôt voient immédiatement le nouvel ordre.
Modèle commun¶
Le système prévoit plusieurs catégories d'inventaire : personnage, coffre de véhicule, stockage,
réfrigérateur et drop/boîte. Chaque inventaire possède un nom, un nombre de slots, un poids maximal
et éventuellement des permissions d'accès. Une limite à 0 signifie illimitée. Les permissions
concernent les stockages et réfrigérateurs ; une liste vide les rend publics. Les coffres et drops
sont publics, tandis que l'inventaire personnel appartient exclusivement à son personnage.
Les inventaires personnels, dépôts au sol et stockages partagés sont exposés en jeu. Les coffres de véhicules et réfrigérateurs restent prévus par le modèle commun sans interaction dédiée à ce stade.
Stockages partagés¶
Un stockage est créé depuis F10 > World Edit > Stockages ou avec /placestorage. L'admin saisit
son nom, son nombre de slots et sa limite de poids (0 signifie illimité), puis choisit de placer
un nouveau prop ou de sélectionner un prop déjà présent dans le monde. Le stockage et son contenu
sont persistants et synchronisés immédiatement pour tous les joueurs.
L'interaction sur le prop ouvre l'inventaire personnel à gauche et le stockage à droite, avec la même grille AR à cinq colonnes que les dépôts. Les objets peuvent être glissés dans les deux sens, réorganisés ou échangés sur une case occupée. Plusieurs joueurs peuvent consulter le même stockage ; une modification concurrente obsolète est refusée puis corrigée par la synchronisation périodique.
Après validation du placement, l'interface attend désormais la confirmation du serveur avant de rouvrir World Edit. Un succès ou un échec est affiché en jeu et dans F9 ; un délai dépassé produit également une erreur explicite au lieu de fermer silencieusement le processus.
Les permissions administratives sont distinctes : ADMIN_ALLOW_VIEW_STORAGES affiche la liste,
ADMIN_ALLOW_EDIT_STORAGES permet création, configuration et déplacement, et
ADMIN_ALLOW_DELETE_STORAGES autorise la suppression définitive avec son contenu. Les commandes
associées sont /adminstorages, /placestorage, /movestorage <id> et
/delstorage <id> confirm. Sans le suffixe explicite, la suppression affiche seulement la commande
de confirmation à reprendre.
Inventaire personnel¶
Tab ouvre une matrice VR de 25 slots, cinq colonnes et 15 kg par défaut. Ces valeurs, la touche et
les libellés de raccourcis se configurent dans medusa-inventory/config.json. Les cinq premiers slots
forment la barre d'accès rapide et affichent les touches AZERTY &, é, ", ' et (. Les
raccourcis physiques correspondants utilisent les touches 1 à 5 configurables dans FiveM.
L'interface conserve le monde visible autour de modules AR translucides ; elle n'applique aucun
voile ou fond noir sur l'écran de jeu.
L'inventaire personnel reste entièrement contenu dans la moitié gauche de l'écran. Sa console VR
reprend le langage de l'atelier vestimentaire : châssis angulaire, scanlines, repères lumineux,
télémétrie de capacité et panneau d'analyse. Chaque slot occupé affiche directement le nom de
l'instance, en plus de son image et de sa quantité.
Les slots conservent toujours une forme carrée, quelle que soit la résolution ; la matrice défile
verticalement plutôt que de les étirer ou de les comprimer.
Un objet affiche son image, son nom d'instance, sa quantité, son poids, sa description et sa limite de pile. Le joueur peut renommer son instance, déplacer ou échanger des objets par glisser-déposer, et demander leur utilisation par double clic, bouton ou raccourci. L'événement d'utilisation est exposé aux futurs modules d'effets ; cette première version ne consomme ni n'applique d'effet. La clé de véhicule utilise une télécommande futuriste noire à noyau turquoise et accents violets, cohérente avec le langage AR/VR Medusa et distincte des autres outils en miniature. Le même visuel est distribué dans l'inventaire joueur, l'inventaire administrateur en jeu et la console web. Il peut déposer un objet dans n'importe quel slot de la matrice, même si plusieurs emplacements vides séparent la source de la destination, afin d'organiser librement son inventaire.
Le catalogue initial contient burger, eau, cola, café, bandage, kit médical, téléphone, radio, crochet et kit de réparation. Les images proviennent du dépôt public ImpulseFPS/icons et sont embarquées dans le projet.
Administration¶
La commande /giveitem <compte> <item_id> <quantité> exige ADMIN_ALLOW_GIVE_ITEM. Elle cible le
personnage actif de l'identifiant de compte et ignore volontairement les limites de slots et de
poids. Les piles existantes sont complétées avant de créer de nouveaux slots ; un débordement reste
visible dans la grille.
Les admins web et en jeu proposent une section Inventaires indépendante :
ADMIN_ALLOW_VIEW_INVENTORYautorise recherche, ouverture et consultation ;ADMIN_ALLOW_EDIT_INVENTORYautorise le changement de nom, quantité ou slot, le retrait d'une instance et le vidage complet après confirmation.
Toutes les mutations administratives en jeu sont réautorisées par le serveur et auditées. Founder dispose automatiquement des trois permissions.
Les inventaires admin web et en jeu reprennent la grille de slots carrés du joueur. Avec
ADMIN_ALLOW_EDIT_INVENTORY, un clic droit sur un slot occupé permet de modifier ou réduire sa
pile, renommer l'instance, supprimer l'objet ou ajouter une autre référence. Sur un slot vide, il
propose l'ajout par identifiant technique et quantité. Un administrateur en lecture seule ne peut
pas ouvrir ce menu de mutation.
Catalogue dynamique¶
Le catalogue peut évoluer sans redéploiement depuis World Edit > Catalogue d'objets.
ADMIN_ALLOW_ITEM_CREATE autorise la création d'une définition (identifiant, nom, poids, pile,
description et image locale ou HTTPS). ADMIN_ALLOW_ITEM_DELETE autorise sa suppression. Une
suppression retire aussi toutes les instances correspondantes des inventaires afin qu'aucun objet
orphelin ne subsiste.
Un objet nouvellement créé est immédiatement disponible dans le flux existant : ouvrir le personnage dans Communauté > Inventaires, faire un clic droit sur un slot puis choisir l'ajout par identifiant technique. La page Catalogue reste volontairement limitée à la création et à la suppression des définitions.
Chaque définition possède une catégorie technique (food, drink, medical, etc.), également
affichée dans la fiche de l'item en jeu. Dans le catalogue web, les objets sont regroupés par
catégorie et un filtre instantané recherche simultanément dans leur nom, identifiant et description.
ADMIN_ALLOW_ITEM_EDIT autorise la modification du nom, de la catégorie, du poids, de la limite de
pile, de la description et de l'image. L'identifiant technique reste immuable afin de préserver les
instances existantes. Les changements sont appliqués en base immédiatement et les inventaires
ouverts en jeu se resynchronisent automatiquement.
La réconciliation des drops au démarrage reprend automatiquement après une courte panne API tout en conservant l'identifiant unique du démarrage. Elle ne crée donc pas plusieurs cycles de vieillissement pour les mêmes drops et ne change pas leurs règles de persistance.
Clés et migrations de plaques¶
Les clés de véhicule restent des objets système de poids nul liés par vehicle_key_id. Une
migration de plaque conserve les instances et actualise leurs libellés ; une réinitialisation
révoque toutes les générations actives et crée exactement une clé principale au destinataire choisi.
Compartiments de véhicules¶
Le moteur de transfert commun gère désormais inventaires personnels, dépôts, stockages, coffres et boîtes à gants avec les mêmes règles : ordre de verrouillage déterministe, poids, slots, piles, échanges, révisions et snapshots. Un transfert n'est jamais implémenté par deux commits séparés ; un conflit ou une capacité insuffisante laisse les deux inventaires inchangés.
TAB résout le contexte avant de créer ou sélectionner un dépôt : coffre extérieur valide, boîte à
gants depuis un siège avant, puis parcours personnel/dépôt historique. Plusieurs coffres de même
priorité sont refusés comme ambigus au lieu d'ouvrir une cible arbitraire. Un refus explicite
consomme l'appui : le parcours personnel ne démarre que lorsqu'aucun contexte véhicule n'existe.
Le branchement reste fonctionnel quel que soit l'ordre de démarrage ou de redémarrage des ressources
Inventaire et Véhicules ; une erreur d'inscription est bornée et visible dans F8 au lieu de rendre
TAB silencieux. Si les capacités du véhicule sont encore en cours de réplication, une place avant
ou une zone de coffre réellement ciblée affiche brièvement Synchronisation en cours et consomme
l'appui : l'inventaire personnel ne s'ouvre jamais à sa place. Une nouvelle tentative ouvre le
compartiment dès que l'état est disponible. Les sièges arrière, une fonctionnalité désactivée et
l'absence réelle de véhicule conservent le parcours personnel/dépôt normal. Une session véhicule est
partagée et révisionnée ; sortie de siège, verrouillage, hayon fermé, vitesse, distance, despawn ou
expiration la ferment avec un message français.
Les résumés administratifs n'exposent que nombre d'objets, slots et poids. Le détail exige une
permission distincte ; transfert total et destruction sont atomiques, motivés, idempotents et
audités. La destruction demande la plaque et une seconde confirmation. Pour un véhicule PNJ, F10
revalide physiquement l'entité à chaque lecture ou mutation et ne révèle jamais son boot_token à
la NUI.
Contenants énergie¶
Le bidon universel est non empilable et conserve sur l'UUID exact de l'instance son produit thermique et ses 0 à 20 L. Son poids varie de 2 à 14 kg ; le produit ne change qu'à vide. Le pack électrique est non empilable, pèse 8 kg et disparaît uniquement après avoir livré 10 points à un EV admissible. La migration 0040 réactive ces deux références sans restaurer les anciennes instances supprimées en 0039. Capacités, poids dynamique et migration sont détaillés dans Énergie des véhicules.