Skip to content

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, AutoFrame measures 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

  1. A write goes to the server through an ox_lib callback. The client is never trusted — identity, permissions, limits, duration and text sanitising are all decided server-side.
  2. The annotation is stored in MySQL against the character's citizen id.
  3. The character's full list is pushed into the bupaStatuses player statebag.
  4. 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.