BUPA Sync Status
BUPA Sync Status
BUPA Sync Status is a body annotation system for medical roleplay. A player types /status and a panel opens over their real character — a scripted camera frames the live ped with its clothes, hair, tattoos and props, and clickable region markers are projected from the ped's bones every frame, so they stay glued to the body as it turns.
Clicking a region lets you write a short note. That note is then drawn in the world, floating on that exact part of your body, for every player standing near you. Paramedics do the same to a patient with /status <id>: they document the injury, choose how long the documentation lasts, and the note is locked so the patient cannot rip it off before it expires.
Open the panel on yourself with /status. Medics examine a patient with /status 12. /statusclear wipes everything you are allowed to remove.
Key features
- Live character preview — no mannequin and no doll drawing. The camera frames the player's own ped,
AutoFramemeasures it head to feet so every model is framed correctly, and the markers sit on real bone coordinates. - 16 body regions — head, neck, chest, stomach, arms, forearms, hands, thighs, knees and feet, each bound to a GTA ped bone and each removable from the config.
- Floating in-world text — other players read the annotation on the body itself, tinted by severity, with no per-frame networking: annotations travel through a player statebag.
- Medic documentation — configurable jobs (or an ACE) may annotate another player within a set distance, pick a duration from a preset list, and have that note locked against removal.
- Automatic expiry — the server sweeps expired annotations on a timer and they disappear everywhere with no cleanup on your part.
- Types and severities — injury / bandage / note, minor / moderate / severe, both defined as plain config lists.
- Anti-abuse limits — a per-character cap, one annotation per region, a text length limit, a write cooldown, and a distance check on every action.
- Discord logging — colour-coded embeds for annotations added, removed and cleared, with who wrote what, on whom, for how long.
- 10 languages through
ox_lib's locale system, with English as the fallback.
Frameworks
The framework is auto-detected by shared/bridge.lua — there is nothing to set:
| Framework | Detected resource |
|---|---|
| QBox | qbx_core |
| QB-Core | qb-core |
| ESX | es_extended |
| Standalone | none — falls back to the license: identifier |
The framework supplies two things only: a stable per-character id used as the database key, and the player's job name and grade for the medic permission check.
How the data flows
- A write goes to the server through an
ox_libcallback. The client is never trusted — identity, permissions, limits, duration and text sanitising are all decided server-side. - The annotation is stored in MySQL against the character's citizen id.
- The character's full list is pushed into the
bupaStatusesplayer statebag. - Every nearby client reads that statebag and draws the text on the matching bone.
Dependencies
| Resource | Required | Purpose |
|---|---|---|
ox_lib |
Yes | Callbacks, notifications and the locale system |
oxmysql |
Yes | Storing annotations per character |
The database table is created automatically on first start — there is no SQL to import.