Permisos y Duración
Permisos y Duración
"Self" siempre se refiere al propio cuerpo del jugador. Cualquier acción dirigida a otro jugador se trata como una modificación a alguien más, y requiere uno de los trabajos configurados o el ACE.
Quién puede examinar a otro jugador
Config.Permissions = {
EditOthers = { 'ambulance', 'ems', 'doctor' },
MinGrade = 0,
UseAce = false,
Ace = 'bupa.syncstatus',
MaxDistance = 3.0,
LockStaffNotes = true,
AllowSelfRemove = true,
StaffCanRemoveLocked = true,
}| Opción | Predeterminado | Propósito |
|---|---|---|
EditOthers |
{ 'ambulance', 'ems', 'doctor' } |
Trabajos permitidos para anotar a otros jugadores. Vacío ({}) lo desactiva por completo. |
MinGrade |
0 |
Rango mínimo de trabajo para esos puestos (0 = cualquier rango). |
UseAce |
false |
Aceptar también un permiso ACE en lugar de un trabajo, para administradores. |
Ace |
bupa.syncstatus |
El objeto ACE que se comprueba cuando UseAce está activado. |
MaxDistance |
3.0 |
Qué tan cerca debes pararte para examinar a alguien, en metros. 0 desactiva la comprobación. |
Cada una de estas reglas se aplica en el servidor, en cada lectura, escritura y eliminación, no solo cuando se abre el panel.
Documentación médica bloqueada
Esta es la opción que hace que valga la pena utilizar este script.
| Opción | Predeterminado | Efecto |
|---|---|---|
LockStaffNotes |
true |
Una anotación que un médico coloca en otra persona queda bloqueada. El paciente no puede borrarla; desaparece por sí sola cuando el temporizador finaliza. |
AllowSelfRemove |
true |
¿Pueden los jugadores eliminar las anotaciones que se pusieron a sí mismos? |
StaffCanRemoveLocked |
true |
¿Pueden los trabajos autorizados quitar una nota bloqueada antes de que expire? Desactívalo para documentación verdaderamente inmutable. |
Una anotación bloqueada se marca en el panel como "Bloqueado por médico". Clear all y /statusclear conservan deliberadamente las notas bloqueadas: el servidor solo borra las filas que el usuario realmente tiene permiso para eliminar, e informa cuántas fueron.
Con LockStaffNotes = true y StaffCanRemoveLocked = false, nadie puede eliminar la nota de un médico, ni siquiera el médico que la escribió. Solo desaparecerá cuando su temporizador llegue a cero, así que evita combinar esto con duraciones permanentes.
Duración
Config.Duration = {
Enabled = true,
Presets = { 30, 60, 120, 180, 360, 720 }, -- minutos
Default = 120,
AllowPermanent = true,
SelfDefault = 0, -- minutos; 0 = permanente
CleanupInterval = 60, -- segundos
}Presetsse muestran como un chip por cada entrada en el panel, en minutos. Mantén la lista corta.Defaultes el chip preseleccionado cuando un médico anota a un paciente. Una duración que el servidor no reconozca se reemplaza silenciosamente por este valor, por lo que un cliente modificado no puede inventar su propio temporizador.AllowPermanentañade una opción Permanente junto a los ajustes preestablecidos.SelfDefaultse utiliza para las notas que los jugadores escriben sobre sí mismos:0significa permanente.CleanupIntervales la frecuencia con la que el servidor limpia las filas expiradas de la base de datos y del statebag de todos. El valor mínimo aplicado es de 10 segundos.
Configurar Enabled = false hace que cada anotación sea permanente hasta que alguien laelimine; el selector de duración desaparece del panel y el hilo de limpieza nunca se inicia.
Límites
Config.Limits = {
MaxPerPlayer = 4,
MaxTextLength = 48,
class="hljs-literal">true,
WriteCooldown = 2, -- segundos entre escrituras
}El texto se recorta, se le eliminan <, > y ~, y se corta a MaxTextLength en el servidor antes de ser almacenado, por lo que nada de lo que escriba un jugador puede romper el renderizado.
Lectura de anotaciones desde otro recurso
local list = exports['bupa-syncstatus']:GetStatuses(source)Devuelve la lista en caché para ese jugador: id, bodypart, text, type, severity, locked, expires y remaining. La misma lista se puede leer del lado del cliente desde el statebag como Player(serverId).state.bupaStatuses.