Permessi e Durata
Permessi e Durata
"Self" si riferisce sempre al corpo del giocatore stesso. Qualsiasi cosa mirata a un altro giocatore viene trattata come la modifica di qualcun altro, e richiede uno dei lavori configurati o l'ACE.
Chi può esaminare un altro giocatore
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Opzione | Predefinito | Scopo |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Lavori autorizzati ad annotare altri giocatori. Vuoto ({}) lo disabilita del tutto. |
MinGrade |
0 |
Grado minimo di lavoro per quei lavori (0 = qualsiasi grado). |
UseAce |
false |
Accetta anche un permesso ACE invece di un lavoro, per gli admin. |
Ace |
bupa.syncstatus |
L'oggetto ACE controllato quando UseAce è attivo. |
MaxDistance |
3.0 |
Quanto vicino devi trovarti per esaminare qualcuno, in metri. 0 disabilita il controllo. |
Ognuna di queste opzioni viene applicata sul server, a ogni singola operazione di lettura, scrittura e rimozione — non solo quando si apre il pannello.
Documentazione medica bloccata
Questa è l'opzione che rende lo script degno di essere utilizzato.
| Opzione | Predefinito | Effetto |
|---|---|---|
LockStaffNotes |
true |
Un'annotazione che un medico posiziona su qualcun altro è bloccata. Il paziente non può eliminarla; scompare da sola quando il timer scade. |
AllowSelfRemove |
true |
I giocatori possono rimuovere le annotazioni che hanno posizionato su se stessi? |
StaffCanRemoveLocked |
true |
I lavori autorizzati possono rimuovere una nota bloccata prima che scada? Disattiva per una documentazione veramente immutabile. |
Un'annotazione bloccata è contrassegnata nel pannello come "Bloccata dal medico". Clear all e /statusclear mantengono deliberatamente le note bloccate: il server elimina solo le righe che il chiamante è effettivamente autorizzato a rimuovere, e segnala quante erano.
Con LockStaffNotes = true e StaffCanRemoveLocked = false, nessuno può rimuovere la nota di un medico — nemmeno il medico che l'ha scritta. Svanirà solo quando il suo timer sarà scaduto, quindi evita di abbinarlo a durate permanenti.
Durata
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- minuti
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- minuti; 0 = permanente
CleanupInterval = 60, -- secondi
}Presetssono resi come un chip per voce nel pannello, in minuti. Mantieni la lista corta.Defaultè il chip pre-selezionato quando un medico annota un paziente. Una durata che il server non riconosce viene silenziosamente sostituita con questo valore, in modo che un client manomesso non possa inventarsi il proprio timer.AllowPermanentaggiunge un'opzione Permanente accanto ai preset.SelfDefaultviene usato per le note che i giocatori scrivono su se stessi —0significa permanente.CleanupIntervalindica la frequenza con cui il server pulisce le righe scadute dal database e dallo statebag di chiunque. Il valore minimo applicato è 10 secondi.
Impostare Enabled = false rende ogni annotazione permanente finché qualcuno non la rimuove; il selettore di durata scompare dal pannello e il thread di pulizia non si avvia mai.
Limiti
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- secondi tra una scrittura e l'altra
}Il testo viene rifinito, ripulito da <, > e ~, e tagliato a MaxTextLength sul server prima di essere memorizzato, in modo che nulla di ciò che un giocatore digita possa interrompere il rendering.
Lettura delle annotazioni da un'altra risorsa
local list = exports['bupa-syncstatus']:GetStatuses(source)Restituisce la lista memorizzata nella cache per quel giocatore: id, bodypart, text, type, severity, locked, expires e remaining. La stessa lista è leggibile lato client dallo statebag come Player(serverId).state.bupaStatuses.