Skip to content

Permissions & Duration

Permissions & Duration

"Self"는 항상 플레이어 자신의 몸을 의미합니다. 다른 플레이어를 대상으로 하는 모든 작업은 다른 사람을 수정하는 것으로 취급되며, 설정된 직업 중 하나 또는 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' } 다른 플레이어에게 메모를 남길 수 있는 직업입니다. 빈 값 ({})으로 설정하면 완전히 비활성화됩니다.
MinGrade 0 해당 직업의 최소 직급 (0 = 모든 직급).
UseAce false 관리자를 위해 직업 대신 ACE 권한도 허용합니다.
Ace bupa.syncstatus UseAce가 켜져 있을 때 확인하는 ACE 오브젝트입니다.
MaxDistance 3.0 다른 사람을 진찰하기 위해 서 있어야 하는 거리 (미터 단위). 0으로 설정하면 거리 확인을 비활성화합니다.

이러한 모든 설정은 패널이 열릴 때뿐만 아니라, 읽기, 쓰기, 삭제가 발생할 때마다 매번 서버에서 강제 적용됩니다.

Locked medic documentation

이 설정이 바로 이 스크립트를 사용할 가치를 만들어주는 옵션입니다.

Option Default Effect
LockStaffNotes true 의료진이 다른 사람에게 남긴 메모는 잠금 처리됩니다. 환자는 이를 삭제할 수 없으며, 타이머가 끝나면 저절로 사라집니다.
AllowSelfRemove true 플레이어가 자신에게 남긴 메모를 직접 삭제할 수 있을까요?
StaffCanRemoveLocked true 권한이 있는 직업이 만료되기 전에 잠긴 메모를 제거할 수 있을까요? 완벽하게 수정 불가능한 기록을 원한다면 끄세요.

잠긴 메모는 패널에 *"Locked by medic"*으로 표시됩니다. Clear all/statusclear 명령어는 고의로 잠긴 메모를 유지합니다. 서버는 호출자가 실제로 제거할 수 있는 행만 삭제하고, 그 개수를 보고합니다.

LockStaffNotes = trueStaffCanRemoveLocked = false로 설정하면, 의료진 본인을 포함하여 그 누구도 의료진의 메모를 제거할 수 없습니다. 타이머가 만료될 때만 사라지므로, 영구 지속 시간과 함께 사용하는 것은 피하세요.

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**는 패널에 각 항목당 하나의 칩으로 표시되며, 단위는 분입니다. 목록을 짧게 유지하세요.
  • **Default**는 의료진이 환자에게 메모를 남길 때 미리 선택되는 칩입니다. 서버가 인식하지 못하는 지속 시간은 이 값으로 조용히 대체되므로, 조작된 클라이언트가 임의의 타이머를 만들어낼 수 없습니다.
  • **AllowPermanent**는 프리셋 옆에 Permanent 옵션을 추가합니다.
  • **SelfDefault**는 플레이어가 자신에게 작성하는 메모에 사용됩니다 (0은 영구를 의미합니다).
  • **CleanupInterval**은 서버가 데이터베이스와 모든 플레이어의 statebag에서 만료된 행을 정리하는 주기입니다. 강제되는 최소값은 10초입니다.

Enabled = false로 설정하면 누군가 제거하기 전까지 모든 메모가 영구적으로 유지되며, 패널에서 지속 시간 선택기가 사라지고 정리 스레드가 실행되지 않습니다.

Limits

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

텍스트는 서버에 저장되기 전에 공백이 다듬어지고, <, >, ~ 문자가 제거되며, MaxTextLength에 맞게 잘리므로 플레이어가 입력한 어떤 내용도 렌더링을 깨뜨릴 수 없습니다.

Reading annotations from another resource

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

해당 플레이어의 캐시된 목록을 반환합니다: id, bodypart, text, type, severity, locked, expires, remaining. 동일한 목록을 클라이언트 측에서 statebag으로부터 Player(serverId).state.bupaStatuses로 읽을 수 있습니다.