Permissions & Duration
Permissions & Duration
"Self" bedeutet immer den eigenen Körper des Spielers. Alles, was auf einen anderen Spieler abzielt, wird als Bearbeitung von jemand anderem behandelt und erfordert einen der konfigurierten Jobs oder ein ACE.
Wer einen anderen Spieler untersuchen darf
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Option | Standard | Zweck |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Jobs, die Notizen bei anderen Spielern hinterlassen dürfen. Leer ({}) deaktiviert dies vollständig. |
MinGrade |
0 |
Mindest-Jobrang für diese Jobs (0 = jeder Rang). |
UseAce |
false |
Akzeptiert für Admins zusätzlich eine ACE-Berechtigung anstelle eines Jobs. |
Ace |
bupa.syncstatus |
Das ACE-Objekt, das überprüft wird, wenn UseAce aktiv ist. |
MaxDistance |
3.0 |
Wie nah man an jemandem stehen muss, um ihn zu untersuchen, in Metern. 0 deaktiviert die Prüfung. |
Jede einzelne dieser Regeln wird serverseitig bei jedem einzelnen Lese-, Schreib- und Löschvorgang durchgesetzt – nicht nur beim Öffnen des Panels.
Gesperrte Sanitäter-Dokumentation
Dies ist die Option, die das Script wirklich wertvoll macht.
| Option | Standard | Effekt |
|---|---|---|
LockStaffNotes |
true |
Eine Notiz, die ein Sanitäter bei jemand anderem hinterlässt, ist gesperrt. Der Patient kann sie nicht löschen; sie verschwindet von selbst, wenn der Timer abläuft. |
AllowSelfRemove |
true |
Dürfen Spieler Notizen entfernen, die sie bei sich selbst hinterlassen haben? |
StaffCanRemoveLocked |
true |
Dürfen autorisierte Jobs eine gesperrte Notiz vor ihrem Ablauf entfernen? Für absolut unveränderliche Dokumentation deaktivieren. |
Eine gesperrte Notiz wird im Panel als "Gesperrt von Sanitäter" markiert. Clear all und /statusclear behalten gesperrte Notizen absichtlich bei: Der Server löscht nur Zeilen, die der Aufrufende tatsächlich entfernen darf, und gibt aus, wie viele das waren.
Mit LockStaffNotes = true und StaffCanRemoveLocked = false kann niemand die Notiz eines Sanitäters entfernen – nicht einmal der Sanitäter, der sie geschrieben hat. Sie verschwindet erst, wenn ihr Timer abläuft. Vermeide daher diese Kombination mit permanenten Laufzeiten.
Dauer
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- Minuten
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- Minuten; 0 = permanent
CleanupInterval = 60, -- Sekunden
}Presetswerden im Panel als ein Chip pro Eintrag in Minuten angezeigt. Halte die Liste kurz.Defaultist der vorausgewählte Chip, wenn ein Sanitäter einen Patienten dokumentiert. Eine Dauer, die der Server nicht erkennt, wird stillschweigend durch diesen Wert ersetzt, sodass ein manipulierter Client sich keinen eigenen Timer ausdenken kann.AllowPermanentfügt eine Permanente Option neben den Presets hinzu.SelfDefaultwird für Notizen verwendet, die Spieler über sich selbst schreiben –0bedeutet permanent.CleanupIntervallegt fest, wie oft der Server abgelaufene Zeilen aus der Datenbank und aus den Statebags aller Spieler bereinigt. Der minimal erzwungene Wert beträgt 10 Sekunden.
Das Setzen von Enabled = false macht jede Notiz permanent, bis sie jemand entfernt; die Zeitauswahl verschwindet aus dem Panel und der Bereinigungs-Thread startet nie.
Limits
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- Sekunden zwischen Schreibvorgängen
}Text wird getrimmt, von <, > und ~ bereinigt und serverseitig vor dem Speichern auf MaxTextLength gekürzt, sodass nichts, was ein Spieler eingibt, das Rendering beschädigen kann.
Notizen aus einer anderen Resource auslesen
local list = exports['bupa-syncstatus']:GetStatuses(source)Gibt die zwischengespeicherte Liste für diesen Spieler zurück: id, bodypart, text, type, severity, locked, expires und remaining. Dieselbe Liste ist clientseitig über das Statebag als Player(serverId).state.bupaStatuses lesbar.