Permisiuni și Durată
Permisiuni și Durată
"Self" înseamnă întotdeauna propriul corp al jucătorului. Orice acțiune îndreptată către un alt jucător este tratată ca o modificare adusă altcuiva și necesită unul dintre joburile configurate sau permisiunea ACE.
Cine poate examina un alt jucător
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Opțiune | Valoare implicită | Scop |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Joburile care au permisiunea de a adnota alți jucători. O listă goală ({}) dezactivează complet această funcție. |
MinGrade |
0 |
Gradul minim necesar pentru acele joburi (0 = orice grad). |
UseAce |
false |
Acceptă și o permisiune ACE în loc de un job, util pentru admini. |
Ace |
bupa.syncstatus |
Obiectul ACE verificat atunci când UseAce este activat. |
MaxDistance |
3.0 |
Distanța maximă în metri la care trebuie să te afli pentru a examina pe cineva. 0 dezactivează verificarea. |
Fiecare dintre acestea este aplicată la nivel de server, la fiecare citire, scriere și ștergere — nu doar atunci când panoul este deschis.
Documentație medicală blocată
Aceasta este opțiunea care face ca acest script să merite folosit.
| Opțiune | Valoare implicită | Efect |
|---|---|---|
LockStaffNotes |
true |
O notă plasată de un medic pe altcineva este blocată. Pacientul nu o poate șterge; aceasta dispare singură când expiră cronometrul. |
AllowSelfRemove |
true |
Au voie jucătorii să elimine notele pe care și le-au pus singuri? |
StaffCanRemoveLocked |
true |
Au voie joburile autorizate să scoată o notă blocată înainte ca aceasta să expire? Dezactivează pentru o documentație cu adevărat imutabilă. |
O notă blocată este marcată în panou ca "Locked by medic". Comenzile Clear all și /statusclear păstrează în mod deliberat notele blocate: serverul șterge doar rândurile pe care cel care apelează comanda are efectiv permisiunea să le elimine și raportează câte au fost șterse.
Cu LockStaffNotes = true și StaffCanRemoveLocked = false, nimeni nu poate elimina nota unui medic — nici măcar medicul care a scris-o. Aceasta va dispărea doar când cronometrul său ajunge la sfârșit, așa că evitați să combinați această setare cu durate permanente.
Durată
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- minute
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- minute; 0 = permanent
CleanupInterval = 60, -- secunde
}Presetssunt afișate sub formă de cipuri (câte unul pentru fiecare intrare) în panou, exprimate în minute. Păstrați lista scurtă.Defaulteste cipul preselectat atunci când un medic adnotează un pacient. O durată pe care serverul nu o recunoaște este înlocuită silențios cu această valoare, astfel încât un client modificat nu își poate inventa propriul cronometru.AllowPermanentadaugă o opțiune Permanent lângă seturile prestabilite.SelfDefaulteste folosit pentru notele pe care jucătorii și le scriu singuri —0înseamnă permanent.CleanupIntervalreprezintă frecvența cu care serverul curăță rândurile expirate din baza de date și din statebag-ul tuturor. Valoarea minimă impusă este de 10 secunde.
Setarea Enabled = false face ca fiecare notă să fie permanentă până când cineva o elimină; selectorul de durată dispare din panou și procesul de curățare nu pornește niciodată.
Limite
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- secunde între scrieri
}Textul este curățat de spații, i se elimină caracterele <, > și ~, și este tăiat la dimensiunea MaxTextLength pe server înainte de a fi stocat, astfel încât nimic din ce tastează un jucător să nu poată afecta randarea.
Citirea adnotărilor dintr-o altă resursă
local list = exports['bupa-syncstatus']:GetStatuses(source)Returnează lista cache-uită pentru acel jucător: id, bodypart, text, type, severity, locked, expires și remaining. Aceeași listă poate fi citită din partea de client (client-side) din statebag ca Player(serverId).state.bupaStatuses.