BUPA Sync Status
BUPA Sync Status
BUPA Sync Status 是一个用于医疗角色扮演的身体批注系统。玩家输入 /status 即可在他们的真实角色上方打开一个面板 —— 脚本化的相机会拍摄包含其服装、发型、纹理和道具的实时模型,可点击的区域标记会在每一帧从模型的骨骼投影出来,因此当身体转身时,标记会完美附着在身体上。
点击某个区域即可写下一条简短的备注。该备注随后会以 3D 浮动文字的形式显示在你的身体对应部位上,周围的所有玩家都能看到。医护人员可以通过 /status <id> 对患者执行相同操作:他们记录伤情,选择记录持续的时间,并且该备注会被锁定,防止患者在过期前将其撕掉。
ℹ
使用 /status 在自己身上打开面板。医护人员使用 /status 12 检查患者。/statusclear 会清除所有你可以移除的内容。
Key features
- 实时角色预览 — 无需假人,也不绘制玩偶。相机会框选玩家自己的模型,
AutoFrame会从头到脚对其进行测量,确保每个模型都被正确框选,且标记位于真实的骨骼坐标上。 - 16 个身体部位 — 头部、颈部、胸部、腹部、手臂、前臂、手部、大腿、膝盖和脚部,每个部位都绑定到 GTA 模型骨骼,并且都可以在配置中移除。
- 世界内浮动文字 — 其他玩家可以直接在身体上看到批注内容,根据严重程度显示不同颜色,且无需每帧进行网络同步:批注通过 player statebag 进行传输。
- 医护人员记录 — 可配置的工作(或 ACE 权限)允许在设定距离内批注其他玩家,从预设列表中选择持续时间,并锁定该备注使其无法被移除。
- 自动过期 — 服务器会通过定时器清理过期的批注,它们会在所有地方消失,无需你手动清理。
- 类型与严重程度 — 伤情 / 绷带 / 备注,轻度 / 中度 / 重度,两者均定义为简单的配置列表。
- 防滥用限制 — 每个角色的上限、每个部位一个批注、文字长度限制、写入冷却时间以及针对每个操作的距离检查。
- Discord 日志 — 针对添加、移除和清除的批注提供带颜色编码的嵌入消息,记录谁在谁身上写了什么、持续多长时间。
- 10 种语言 — 通过
ox_lib的本地化系统支持,英语作为默认备用语言。
Frameworks
框架由 shared/bridge.lua 自动检测 —— 无需任何设置:
| Framework | Detected resource |
|---|---|
| QBox | qbx_core |
| QB-Core | qb-core |
| ESX | es_extended |
| Standalone | 无 — 回退到 license: 标识符 |
框架仅提供两项内容:用作数据库键的稳定角色 ID,以及用于医护人员权限检查的玩家工作名称和等级。
How the data flows
- 写入操作通过
ox_lib回调发送至服务器。客户端绝不被信任 —— 身份、权限、限制、持续时间和文字过滤均在服务器端决定。 - 批注根据角色的公民 ID 存储在 MySQL 中.
- 角色的完整列表被推送至
bupaStatusesplayer statebag 中。 - 每个附近的客户端读取该 statebag 并将文字绘制在对应的骨骼上。
Dependencies
| Resource | Required | Purpose |
|---|---|---|
ox_lib |
Yes | 回调、通知和本地化系统 |
oxmysql |
Yes | 按角色存储批注 |
数据库表会在首次启动时自动创建 —— 无需导入 SQL。