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 = true かつ StaffCanRemoveLocked = 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 はパネル内でエントリごとに1つのチップとしてレンダリングされます(単位:分)。リストは短く保ってください。
  • Default は、メディックが患者にアノテーションを付与する際にあらかじめ選択されるチップです。サーバーが認識しない期間はサイレントでこの値に置き換えられるため、改ざんされたクライアントが独自のタイマーを作り出すことはできません。
  • AllowPermanent は、プリセットの横に Permanent(永続)オプションを追加します。
  • SelfDefault は、プレイヤーが自分自身に書き込むノートに使用されます — 0 は永続を意味します。
  • CleanupInterval は、サーバーが期限切れの行をデータベースおよび全員のステートバッグから一掃する頻度です。強制される最小値は 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。同じリストは、クライアントサイドからステートバッグで Player(serverId).state.bupaStatuses として読み取り可能です。