Skip to content

BUPA Sync Status

BUPA Sync Status

BUPA Sync Status est un système d'annotation corporelle pour le roleplay médical. Un joueur tape /status et un panneau s'ouvre au-dessus de son vrai personnage — une caméra scriptée cadre le ped en direct avec ses vêtements, ses cheveux, ses tatouages et ses accessoires, et des marqueurs de région cliquables sont projetés depuis les os du ped à chaque frame, de sorte qu'ils restent collés au corps lorsqu'il pivote.

Cliquer sur une région vous permet d'écrire une courte note. Cette note est ensuite affichée dans le monde, flottant sur cette partie exacte de votre corps, pour chaque joueur se tenant près de vous. Les secouristes font de même sur un patient avec /status <id> : ils documentent la blessure, choisissent la durée de la documentation, et la note est verrouillée afin que le patient ne puisse pas l'arracher avant son expiration.

Ouvrez le panneau sur vous-même avec /status. Les médecins examinent un patient avec /status 12. /statusclear efface tout ce que vous êtes autorisé à retirer.

Key features

  • Aperçu du personnage en direct — pas de mannequin ni de dessin de poupée. La caméra cadre le propre ped du joueur, AutoFrame le mesure de la tête aux pieds afin que chaque modèle soit correctement cadré, et les osselets se posent sur de véritables coordonnées osseuses.
  • 16 régions corporelles — tête, cou, torse, estomac, bras, avant-bras, mains, cuisses, genoux et pieds, chacune liée à un os de ped GTA et chacune désactivable depuis la config.
  • Texte flottant dans le monde — les autres joueurs lisent l'annotation directement sur le corps, teintée selon la gravité, sans mise en réseau par frame : les annotations transitent via un player statebag.
  • Documentation médicale — des métiers configurables (ou un ACE) peuvent annoter un autre joueur à une distance définie, choisir une durée dans une liste prédéfinie, et verrouiller cette note contre la suppression.
  • Expiration automatique — le serveur nettoie les annotations expirées via un timer et elles disparaissent partout sans intervention de votre part.
  • Types et gravités — blessure / bandage / note, mineure / modérée / grave, tous deux définis sous forme de listes de configuration simples.
  • Limites anti-abus — une limite par personnage, une annotation par région, une limite de longueur de texte, un cooldown d'écriture, et une vérification de la distance à chaque action.
  • Logs Discord — des embeds avec code couleur pour les annotations ajoutées, supprimées et effacées, indiquant qui a écrit quoi, sur qui, et pour combien de temps.
  • 10 langues via le système de localisation d'or ox_lib, avec l'anglais comme langue par défaut.

Frameworks

Le framework est détecté automatiquement par shared/bridge.lua — il n'y a rien à configurer :

Framework Ressource détectée
QBox qbx_core
QB-Core qb-core
ESX es_extended
Standalone aucun — utilise l'identifiant license: par défaut

Le framework fournit uniquement deux éléments : un identifiant stable par personnage utilisé comme clé de base de données, ainsi que le nom et le grade du métier du joueur pour la vérification des permissions médicales.

How the data flows

  1. Une écriture est envoyée au serveur via un callback ox_lib. Le client n'est jamais de confiance — l'identité, les permissions, les limites, la durée et l'assainissement du texte sont entièrement décidés côté serveur.
  2. L'annotation est stockée dans MySQL en fonction du citizen id du personnage.
  3. La liste complète du personnage est injectée dans le player statebag bupaStatuses.
  4. Chaque client à proximité lit ce statebag et affiche le texte sur l'os correspondant.

Dependencies

Ressource Requis Objectif
ox_lib Oui Callbacks, notifications et système de localisation
oxmysql Oui Stockage des annotations par personnage

La table de la base de données est créée automatiquement au premier démarrage — il n'y a aucun SQL à importer.