Skip to content

Permissions & Duration

Permissions & Duration

"Self" selalu merujuk pada tubuh pemain itu sendiri. Segala hal yang ditujukan ke pemain lain dianggap sebagai mengedit orang lain, dan membutuhkan salah satu job yang dikonfigurasi atau ACE.

Who may examine another player

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

    LockStaffNotes       = true,
    AllowSelfRemove      = true,
    StaffCanRemoveLocked = true,
}
Option Default Purpose
EditOthers { 'ambulance', 'ems', 'doctor' } Job yang diizinkan untuk membuat catatan pada pemain lain. Kosong ({}) akan menonaktifkannya sepenuhnya.
MinGrade 0 Grade job minimum untuk job tersebut (0 = semua grade).
UseAce false Juga menerima permission ACE sebagai pengganti job, untuk admin.
Ace bupa.syncstatus Objek ACE yang diperiksa saat UseAce aktif.
MaxDistance 3.0 Seberapa dekat Anda harus berdiri untuk memeriksa seseorang, dalam satuan meter. 0 menonaktifkan pengecekan.

Setiap opsi ini ditegakkan di server, pada setiap proses baca, tulis, dan hapus — bukan hanya saat panel dibuka.

Locked medic documentation

Ini adalah opsi yang membuat script ini sangat layak digunakan.

Option Default Effect
LockStaffNotes true Catatan yang ditempatkan oleh seorang tenaga medis pada orang lain akan dikunci (locked). Pasien tidak dapat menghapusnya; catatan akan hilang dengan sendirinya saat timer berakhir.
AllowSelfRemove true Bolehkah pemain menghapus catatan yang mereka buat sendiri?
StaffCanRemoveLocked true Bolehkah job yang berwenang menghapus catatan terkunci sebelum masa berlakunya habis? Nonaktifkan untuk dokumentasi yang benar-benar tidak dapat diubah.

Catatan yang terkunci ditandai di panel sebagai "Locked by medic". Clear all dan /statusclear secara sengaja mempertahankan catatan yang terkunci: server hanya menghapus baris yang memang diizinkan untuk dihapus oleh pemanggil, dan melaporkan berapa jumlahnya.

Dengan LockStaffNotes = true dan StaffCanRemoveLocked = false, tidak seorang pun dapat menghapus catatan tenaga medis — bahkan oleh tenaga medis yang menulisnya sekalipun. Catatan hanya akan hilang saat timernya habis, jadi hindari memasangkannya dengan durasi permanen.

Duration

config.lua
Config.Duration = {
    Enabled         = true,
    Presets         = { 30, 60, 120, 180, 360, 720 },  -- minutes
    Default         = 120,
    AllowPermanent  = true,
    SelfDefault     = 0,     -- minutes; 0 = permanent
    CleanupInterval = 60,    -- seconds
}
  • Presets dirender sebagai satu tombol (chip) per entri di panel, dalam satuan menit. Buat daftarnya tetap singkat.
  • Default adalah tombol yang dipilih sebelumnya saat seorang tenaga medis membuat catatan untuk pasien. Durasi yang tidak dikenali oleh server akan secara diam-diam diganti dengan nilai ini, sehingga klien yang telah dimodifikasi tidak dapat membuat timernya sendiri.
  • AllowPermanent menambahkan opsi Permanent di sebelah preset.
  • SelfDefault digunakan untuk catatan yang ditulis pemain pada diri mereka sendiri — 0 berarti permanen.
  • CleanupInterval adalah seberapa sering server membersihkan baris yang sudah kedaluwarsa dari database dan dari statebag setiap orang. Nilai minimum yang diberlakukan adalah 10 detik.

Mengatur Enabled = false membuat setiap catatan menjadi permanen sampai seseorang menghapusnya; pemilih durasi akan hilang dari panel dan thread pembersihan tidak akan pernah berjalan.

Limits

config.lua
Config.Limits = {
    MaxPerPlayer   = 4,
    MaxTextLength  = 48,
    class="hljs-literal">true,
    WriteCooldown  = 2,   -- seconds between writes
}

Teks akan dipangkas, dibersihkan dari <, > dan ~, serta dipotong hingga MaxTextLength di sisi server sebelum disimpan, sehingga apa pun yang diketik pemain tidak akan merusak rendering.

Reading annotations from another resource

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

Mengembalikan daftar yang di-cache untuk pemain tersebut: id, bodypart, text, type, severity, locked, expires dan remaining. Daftar yang sama dapat dibaca di sisi klien dari statebag sebagai Player(serverId).state.bupaStatuses.