Skip to content

Permissions & Duration

Rechten & Duur

"Zelf" betekent altijd het eigen lichaam van de speler. Alles wat op een andere speler is gericht, wordt behandeld als het bewerken van iemand anders, en vereist een van de geconfigureerde jobs of de ACE.

Wie een andere speler mag onderzoeken

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

    LockStaffNotes       = true,
    AllowSelfRemove      = true,
    StaffCanRemoveLocked = true,
}
Optie Standaard Doel
EditOthers { 'ambulance', 'ems', 'doctor' } Jobs die opmerkingen mogen plaatsen bij andere spelers. Leeg ({}) schakelt dit volledig uit.
MinGrade 0 Minimale jobrang voor die jobs (0 = elke rang).
UseAce false Accepteer ook een ACE-rechten in plaats van een job, voor admins.
Ace bupa.syncstatus Het ACE-object dat wordt gecontroleerd wanneer UseAce aan staat.
MaxDistance 3.0 Hoe dichtbij je moet staan om iemand te onderzoeken, in meters. 0 schakelt de controle uit.

Elk van deze instellingen wordt afgedwongen op de server, bij elke enkelvoudige lees-, schrijf- en verwijderactie — niet alleen wanneer het paneel opent.

Vergrendelde medicijndocumentatie

Dit is de optie die de script de moeite waard maakt om te gebruiken.

Optie Standaard Effect
LockStaffNotes true Een notitie die een medic bij iemand anders plaatst is vergrendeld. De patiënt kan deze niet verwijderen; deze verdwijnt vanzelf wanneer de timer afloopt.
AllowSelfRemove true Mogen spelers notities verwijderen die ze op zichzelf hebben geplaatst?
StaffCanRemoveLocked true Mogen geautoriseerde jobs een vergrendelde notitie verwijderen voordat deze verloopt? Schakel dit uit voor echt onveranderlijke documentatie.

Een vergrendelde notitie wordt in het paneel gemarkeerd als "Locked by medic". Clear all en /statusclear behouden bewust vergrendelde notities: de server verwijdert alleen rijen die de aanroeper daadwerkelijk mag verwijderen, en rapporteert hoeveel dat er waren.

Met LockStaffNotes = true en StaffCanRemoveLocked = false, kan niemand de notitie van een medic verwijderen — zelfs de medic die hem heeft geschreven niet. Deze verdwijnt pas wanneer de timer afloopt, dus vermijd het combineren hiervan met permanente duren.

Duur

config.lua
Config.Duration = {
    Enabled         = true,
    Presets         = { 30, 60, 120, 180, 360, 720 },  -- minuten
    Default         = 120,
    AllowPermanent  = true,
    SelfDefault     = 0,     -- minuten; 0 = permanent
    CleanupInterval = 60,    -- seconden
}
  • Presets worden weergegeven als één chip per vermelding in het paneel, in minuten. Houd de lijst kort.
  • Default is de chip die vooraf is geselecteerd wanneer een medic een notitie bij een patiënt plaatst. Een duur die de server niet herkent, wordt stilzwijgend vervangen door deze waarde, zodat een aangepaste client geen eigen timer kan verzinnen.
  • AllowPermanent voegt een Permanent-optie toe naast de presets.
  • SelfDefault wordt gebruikt voor notities die spelers op zichzelf schrijven — 0 betekent permanent.
  • CleanupInterval is hoe vaak de server verlopen rijen uit de database en uit de statebag van iedereen opruimt. De minimum afgedwongen waarde is 10 seconden.

Door Enabled = false in te stellen, wordt elke notitie permanent totdat iemand deze verwijdert; de duurkiezer verdwijnt uit het paneel en de opruimthread start nooit.

Limieten

config.lua
Config.Limits = {
    MaxPerPlayer   = 4,
    MaxTextLength  = 48,
    class="hljs-literal">true,
    WriteCooldown  = 2,   -- seconden tussen schrijfacties
}

Tekst wordt getrimd, ontdaan van <, > en ~, en ingekort tot MaxTextLength op de server voordat deze wordt opgeslagen, zodat niets dat een speler typt de rendering kan verstoren.

Notities lezen vanuit een andere resource

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

Retourneert de gecachete lijst voor die speler: id, bodypart, text, type, severity, locked, expires en remaining. Dezelfde lijst is aan client-zijde te lezen vanuit de statebag als Player(serverId).state.bupaStatuses.