Skip to content

Oprávnění a Doba trvání

Oprávnění & Doba trvání

"Sám sebe" vždy znamená vlastní tělo hráče. Cokoliv zacíleného na jiného hráče je považováno za úpravu někoho jiného a vyžaduje jednu z nakonfigurovaných jobů nebo ACE.

Kdo může vyšetřit jiného hráče

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

    LockStaffNotes       = true,
    AllowSelfRemove      = true,
    StaffCanRemoveLocked = true,
}
Možnost Výchozí Účel
EditOthers { 'ambulance', 'ems', 'doctor' } Joby, které mohou přidávat poznámky ostatním hráčům. Prázdná hodnota ({}) to zcela vypne.
MinGrade 0 Minimální hodnost (grade) pro tyto joby (0 = libovolná hodnost).
UseAce false Pro administrátory: povolit také ACE oprávnění namísto jobu.
Ace bupa.syncstatus ACE objekt, který se kontroluje, když je UseAce zapnuté.
MaxDistance 3.0 Jak blízko musíte stát u někoho pro jeho vyšetření, v metrech. 0 kontrolu vypne.

Každé jedno z těchto pravidel je vynucováno na serveru, při každém jednom čtení, zápisu i odstranění – nejen při otevření panelu.

Uzamčená dokumentace zdravotníků

Toto je možnost, díky které se tento script vyplatí používat.

Možnost Výchozí Účinek
LockStaffNotes true Poznámka, kterou zdravotník umístí na někoho jiného, je uzamčena. Pacient ji nemůže smazat; po vypršení časovače zmizí sama.
AllowSelfRemove true Mohou si hráči odstranit poznámky, které si sami napsali?
StaffCanRemoveLocked true Mohou oprávněné joby odstranit uzamčenou poznámku před jejím vypršením? Vypněte pro zcela neměnnou dokumentaci.

Uzamčená poznámka je v panelu označena jako "Uzamčeno zdravotníkem". Příkazy Clear all a /statusclear záměrně ponechávají uzamčené poznámky: server maže pouze ty řádky, které volající skutečně smí odstranit, a nahlásí, kolik jich bylo.

S nastavením LockStaffNotes = true a StaffCanRemoveLocked = false nemůže poznámku zdravotníka odstranit nikdo – ani sám zdravotník, který ji napsal. Zmizí pouze tehdy, když vyprší její časovač, proto se vyhněte kombinaci s permanentní dobou trvání.

Doba trvání

config.lua
Config.Duration = {
    Enabled         = true,
    Presets         = { 30, 60, 120, 180, 360, 720 },  -- minut
    Default         = 120,
    AllowPermanent  = true,
    SelfDefault     = 0,     -- minut; 0 = permanentní
    CleanupInterval = 60,    -- sekund
}
  • Presets se v panelu vykreslují jako jedno tlačítko pro každou položku, v minutách. Udržujte seznam krátký.
  • Default je předem vybrané tlačítko, když zdravotník anotuje pacienta. Doba trvání, kterou server nerozpozná, je tich nahrazena touto hodnotou, takže manipulovaný klient nemůže vymyslet svůj vlastní časovač.
  • AllowPermanent přidává vedle předvoleb možnost Permanentní.
  • SelfDefault se používá pro poznámky, které si hráči píší sami na sebe – 0 znamená permanentní.
  • CleanupInterval určuje, jak často server čistí vypršené řádky z databáze a ze statebagu každého hráče. Minimální vynucená hodnota je 10 sekund.

Nastavení Enabled = false učiní každou poznámku permanentní, dokud ji někdo neodstraní; výběr doby trvání z panelu zmizí a čisticí vlákno se nikdy nespustí.

Limity

config.lua
Config.Limits = {
    MaxPerPlayer   = 4,
    MaxTextLength  = 48,
    class="hljs-literal">true,
    WriteCooldown  = 2,   -- sekund mezi zápisy
}

Text je na serveru před uložením oříznut, zbaven znaků <, > a ~ a zkrácen na MaxTextLength, takže cokoliv hráč napíše, nemůže rozbít vykreslování.

Čtení poznámek z jiného resource

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

Vrací uložený seznam pro daného hráče: id, bodypart, text, type, severity, locked, expires a remaining. Stejný seznam je čitelný na klientovi ze statebagu jako Player(serverId).state.bupaStatuses.