Permissions & Duration
Permissions & Duration
"Self" завжди означає власне тіло гравця. Усе, що спрямоване на іншого гравця, вважається редагуванням когось іншого та вимагає однієї з налаштованих робіт або ACE.
Хто може оглядати іншого гравця
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Опція | За замовчуванням | Призначення |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Роботи, яким дозволено залишати нотатки про інших гравців. Пусте значення ({}) повністю вимикає це. |
MinGrade |
0 |
Мінімальний ранг для цих робіт (0 = будь-який ранг). |
UseAce |
false |
Також приймати дозвіл ACE замість роботи (для адміністраторів). |
Ace |
bupa.syncstatus |
Об'єкт ACE, який перевіряється, коли UseAce увімкнено. |
MaxDistance |
3.0 |
На якій відстані ви повинні стояти, щоб оглянути когось, у метрах. 0 вимикає перевірку. |
Кожна з цих умов перевіряється на сервере під час кожного читання, запису та видалення — не лише тоді, коли відкривається панель.
Заблокована медична документація
Це саме та опція, яка робить цей скрипт вартим використання.
| Опція | За замовчуванням | Ефект |
|---|---|---|
LockStaffNotes |
true |
Нотатка, яку медик залишає на іншій людині, є заблокованою. Пацієнт не може її видалити; вона зникає самостійно після закінчення таймера. |
AllowSelfRemove |
true |
Чи можуть гравці видаляти нотатки, які вони залишили на собі? |
StaffCanRemoveLocked |
true |
Чи можуть авторизовані роботи знімати заблоковану нотатку до закінчення її терміну дії? Вимкніть для повністю незмінної документації. |
Заблокована нотатка позначається в панелі як "Заблоковано медиком". Команди Clear all та /statusclear свідомо не чіпають заблоковані нотатки: сервер видаляє лише ті рядки, які викликаючий дійсно має право видалити, та звітує, скільки саме їх було.
З параметрами LockStaffNotes = true та StaffCanRemoveLocked = false ніхто не зможе видалити нотатку медика — навіть сам медик, який її написав. Вона зникне лише тоді, коли закінчиться її таймер, тому уникайте поєднання цього налаштування з постійною тривалістю.
Тривалість
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- хвилини
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- хвилини; 0 = постійно
CleanupInterval = 60, -- секунди
}Presetsвідображаються як окремі чіпи для кожного значення в панелі (у хвилинах). Тримайте список коротким.Default— це чіп, який попередньо вибирається, коли медик робить нотатку про пацієнта. Тривалість, яку сервер не розпізнає, мовчки замінюється цим значенням, тож скомпрометований клієнт не зможе вигадати власний таймер.AllowPermanentдодає опцію Постійно поруч із пресетами.SelfDefaultвикористовується для нотаток, які гравці пишуть самі про себе —0означає постійно.CleanupIntervalвизначає, як часто сервер очищає прострочені рядки з бази даних та стейтбегів усіх користувачів. Мінімально примусове значення становить 10 секунд.
Встановлення параметра Enabled = false робить кожну нотатку постійною, доки хтось її не видалить; вибір тривалості зникає з панелі, а потік очищення ніколи не запускається.
Обмеження
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- секунди між написанням
}Текст обрізається, очищається від символів <, > і ~, а також скорочується до MaxTextLength на сервері перед збереженням, тому ніщо з того, що введе гравець, не зможе зламати рендеринг.
Читання нотаток з іншого ресурсу
local list = exports['bupa-syncstatus']:GetStatuses(source)Повертає кешований список для цього гравця: id, bodypart, text, type, severity, locked, expires та remaining. Цей самий список можна прочитати на клієнті зі стейтбега як Player(serverId).state.bupaStatuses.