Permissions & Duration
Permissions & Duration
"Self" désigne toujours le propre corps du joueur. Tout ce qui vise un autre joueur est considéré comme une modification sur quelqu'un d'autre, et nécessite l'un des métiers configurés ou l'ACE.
Who may examine another player
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Option | Default | Purpose |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Métiers autorisés à annoter d'autres joueurs. Vide ({}) pour désactiver complètement. |
MinGrade |
0 |
Grade minimum requis pour ces métiers (0 = n'importe quel grade). |
UseAce |
false |
Accepte également une permission ACE au lieu d'un métier, pour les administrateurs. |
Ace |
bupa.syncstatus |
L'objet ACE vérifié lorsque UseAce est activé. |
MaxDistance |
3.0 |
La distance maximale à laquelle vous devez vous tenir pour examiner quelqu'un, en mètres. 0 désactive la vérification. |
Chacun de ces éléments est appliqué côté serveur, à chaque lecture, écriture et suppression — et pas seulement à l'ouverture du panneau.
Locked medic documentation
C'est l'option qui rend ce script indispensable.
| Option | Default | Effect |
|---|---|---|
LockStaffNotes |
true |
Une annotation placée par un médecin sur quelqu'un d'autre est verrouillée. Le patient ne peut pas la supprimer ; elle disparaît d'elle-même lorsque le compte à rebours se termine. |
AllowSelfRemove |
true |
Les joueurs peuvent-ils supprimer les annotations qu'ils ont placées sur eux-mêmes ? |
StaffCanRemoveLocked |
true |
Les métiers autorisés peuvent-ils retirer une note verrouillée avant son expiration ? À désactiver pour une documentation totalement immuable. |
Une annotation verrouillée est indiquée dans le panneau comme "Verrouillé par le médecin". Clear all et /statusclear conservent volontairement les notes verrouillées : le serveur supprime uniquement les lignes que l'auteur est réellement autorisé à retirer, et indique combien ont été supprimées.
Avec LockStaffNotes = true et StaffCanRemoveLocked = false, personne ne peut supprimer la note d'un médecin — pas même le médecin qui l'a rédigée. Elle ne disparaîtra que lorsque son minuteur expirera, évitez donc de combiner cela avec des durées permanentes.
Duration
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- minutes
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- minutes; 0 = permanent
CleanupInterval = 60, -- seconds
}Presetssont affichés sous forme d'un bouton par entrée dans le panneau, en minutes. Gardez la liste courte.Defaultest le bouton pré-sélectionné lorsqu'un médecin annoté un patient. Une durée non reconnue par le serveur est silencieusement remplacée par cette valeur, empêchant ainsi un client modifié d'inventer son propre minuteur.AllowPermanentajoute une option Permanent à côté des préréglages.SelfDefaultest utilisé pour les notes que les joueurs écrivent sur eux-mêmes —0signifie permanent.CleanupIntervaldéfinit la fréquence à laquelle le serveur nettoie les lignes expirées de la base de données et du statebag de tout le monde. La valeur minimale appliquée est de 10 secondes.
Définir Enabled = false rend chaque annotation permanente jusqu'à ce que quelqu'un la supprime ; le sélecteur de durée disparaît du panneau et le thread de nettoyage ne démarre jamais.
Limits
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- seconds between writes
}Le texte est nettoyé, débarrassé des caractères <, > et ~, et tronqué à MaxTextLength sur le serveur avant d'être stocké, de sorte qu'aucun texte saisi par un joueur ne puisse casser l'affichage.
Reading annotations from another resource
local list = exports['bupa-syncstatus']:GetStatuses(source)Renvoie la liste mise en cache pour ce joueur : id, bodypart, text, type, severity, locked, expires et remaining. La même liste est lisible côté client depuis le statebag via Player(serverId).state.bupaStatuses.