Permissões e Duração
Permissões e Duração
"Self" refere-se sempre ao próprio corpo do jogador. Qualquer ação direcionada a outro jogador é tratada como a edição de outra pessoa e requer um dos cargos configurados ou ACE.
Quem pode examinar outro jogador
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Opção | Padrão | Propósito |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Cargos permitidos para anotar outros jogadores. Vazio ({}) desativa completamente. |
MinGrade |
0 |
Nível mínimo do cargo para essas funções (0 = qualquer nível). |
UseAce |
false |
Também aceita uma permissão ACE em vez de um cargo, para administradores. |
Ace |
bupa.syncstatus |
O objeto ACE verificado quando UseAce está ativo. |
MaxDistance |
3.0 |
Quão perto você deve ficar para examinar alguém, em metros. 0 desativa a verificação. |
Cada uma destas regras é aplicada no servidor, em cada leitura, gravação e remoção — não apenas quando o painel é aberto.
Documentação médica bloqueada
Esta é a opção que faz este script valer a pena.
| Opção | Padrão | Efeito |
|---|---|---|
LockStaffNotes |
true |
Uma anotação que um médico coloca em outra pessoa fica bloqueada. O paciente não pode apagá-la; ela desaparece sozinha quando o temporizador termina. |
AllowSelfRemove |
true |
Os jogadores podem remover anotações que colocaram em si mesmos? |
StaffCanRemoveLocked |
true |
Os cargos autorizados podem remover uma nota bloqueada antes que ela expire? Desative para documentação totalmente imutável. |
Uma anotação bloqueada é sinalizada no painel como "Bloqueado pelo médico". Clear all e /statusclear mantêm intencionalmente as notas bloqueadas: o servidor apenas elimina as linhas que quem chama tem realmente permissão para remover, e reporta quantas foram.
Com LockStaffNotes = true e StaffCanRemoveLocked = false, ninguém pode remover a nota de um médico — nem mesmo o médico que a escreveu. Ela só desaparecerá quando o temporizador expirar, por isso evite combinar isto com durações permanentes.
Duração
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- minutos
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- minutos; 0 = permanente
CleanupInterval = 60, -- segundos
}Presetssão renderizados como um chip por entrada no painel, em minutos. Mantenha a lista curta.Defaulté o chip pré-selecionado quando um médico anota um paciente. Uma duração que o servidor não reconhece é substituída silenciosamente por este valor, para que um cliente adulterado não possa inventar o seu próprio temporizador.AllowPermanentadiciona uma opção Permanente ao lado das predefinições.SelfDefaulté utilizado para notas que os jogadores escrevem sobre si mesmos —0significa permanente.CleanupIntervalé a frequência com que o servidor limpa as linhas expiradas da base de dados e do statebag de todos. O valor mínimo aplicado é de 10 segundos.
Definir Enabled = false torna cada anotação permanente até que alguém a remova; o seletor de duração desaparece do painel e a thread de limpeza nunca é iniciada.
Limites
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- segundos entre gravações
}O texto é cortado, limpo de <, > e ~, e encurtado para MaxTextLength no servidor antes de ser armazenado, para que nada do que um jogador digite possa quebrar a renderização.
Ler anotações de outro recurso
local list = exports['bupa-syncstatus']:GetStatuses(source)Retorna a lista em cache para esse jogador: id, bodypart, text, type, severity, locked, expires e remaining. A mesma lista pode ser lida no lado do cliente a partir do statebag como Player(serverId).state.bupaStatuses.