Skip to content

Permissions & Duration

Behörigheter & Varaktighet

"Själv" avser alltid spelarens egen kropp. Allt som riktas mot en annan spelare behandlas som att man redigerar någon annan, vilket kräver ett av de konfigurerade yrkena eller ACE.

Vem som får undersöka en annan spelare

config.lua
Config.Permissions = {
    EditOthers = { 'ambulance', 'ems', 'doctor' },
    MinGrade   = 0,
    UseAce     = false,
    Ace        = 'bupa.syncstatus',
    MaxDistance = 3.0,

    LockStaffNotes       = true,
    AllowSelfRemove      = true,
    StaffCanRemoveLocked = true,
}
Alternativ Standard Syfte
EditOthers { 'ambulance', 'ems', 'doctor' } Yrken som tillåts anteckna på andra spelare. Tom ({}) stänger av funktionen helt.
MinGrade 0 Lägsta yrkesnivå för dessa yrken (0 = vilken nivå som helst).
UseAce false Acceptera även en ACE-behörighet istället för ett yrke, för administratörer.
Ace bupa.syncstatus ACE-objektet som kontrolleras när UseAce är aktiverat.
MaxDistance 3.0 Hur nära du måste stå för att undersöka någon, i meter. 0 stänger av kontrollen.

Var och en av dessa tillämpas på servern, vid varje enskild läsning, skrivning och borttagning – inte bara när panelen öppnas.

Låst vårdcentrerad dokumentation

Detta är alternativet som gör skriptet värt att köra.

Alternativ Standard Effekt
LockStaffNotes true En anteckning som en sjukvårdare sätter på någon annan är låst. Patienter kan inte radera den; den försvinner av sig själv när timern löper ut.
AllowSelfRemove true Får spelare ta bort anteckningar de satt på sig själva?
StaffCanRemoveLocked true Får auktoriserade yrken ta bort en låst anteckning innan den löper ut? Stäng av för helt oföränderlig dokumentation.

En låst anteckning markeras i panelen som "Låst av sjukvårdare". Clear all och /statusclear behåller medvetet låsta anteckningar: servern tar endast bort rader som anroparen faktiskt har behörighet att ta bort, och rapporterar hur många det rörde sig om.

Med LockStaffNotes = true och StaffCanRemoveLocked = false kan ingen ta bort en vårdares anteckning – inte ens vårdaren som skrev den. Den försvinner bara när dess timer löper ut, så undvik att kombinera detta med permanenta varaktigheter.

Varaktighet

config.lua
Config.Duration = {
    Enabled         = true,
    Presets         = { 30, 60, 120, 180, 360, 720 },  -- minuter
    Default         = 120,
    AllowPermanent  = true,
    SelfDefault     = 0,     -- minuter; 0 = permanent
    CleanupInterval = 60,    -- sekunder
}
  • Presets visas som ett chip per post i panelen, i minuter. Håll listan kort.
  • Default är det chip som är förvalt när en sjukvårdare antecknar en patient. En varaktighet som servern inte känner igen ersätts i tysthet med detta värde, så att en manipulerad klient inte kan hitta på sin egen timer.
  • AllowPermanent lägger till ett Permanent-alternativ bredvid förinställningarna.
  • SelfDefault används för anteckningar spelare skriver på sig själva – 0 betyder permanent.
  • CleanupInterval anger hur ofta servern rensar ut utgångna rader ur databasen och allas statebag. Det lägsta tillåtna värdet är 10 sekunder.

Genom att sätta Enabled = false blir varje anteckning permanent tills någon tar bort den; tidsväljaren försvinner från panelen och rensningstråden startar aldrig.

Gränser

config.lua
Config.Limits = {
    MaxPerPlayer   = 4,
    MaxTextLength  = 48,
    class="hljs-literal">true,
    WriteCooldown  = 2,   -- sekunder mellan skrivningar
}

Texten rensas på blanksteg, strippas från <, > och ~, samt kortas ner till MaxTextLength på servern innan den sparas, så att inget en spelare skriver kan förstöra renderingen.

Läsa anteckningar från en annan resurs

server
local list = exports['bupa-syncstatus']:GetStatuses(source)

Returnerar den cachade listan för den spelaren: id, bodypart, text, type, severity, locked, expires och remaining. Samma lista kan läsas klientsidan från statebag som Player(serverId).state.bupaStatuses.