Cuxial Medical se configura en shared/config.lua, en data/hospitals.lua y, para la mayoría de opciones, en vivo desde el panel de administración. Esta página recoge todas las opciones y te dice dónde cambiar cada una.
Dónde se guardan los ajustes
En el primer arranque el script copia casi todo shared/config.lua y todo data/hospitals.lua a la tabla cuxial_medical_settings de la base de datos. A partir de ahí manda la copia de la base de datos.
| Sección | Se edita en el panel | Necesita reinicio |
|---|---|---|
jobs, death, respawn, injury, treatment, stretcher, finisher, dispatch, logs | Sí | No |
items, extras | Sí | Sí, para aplicarse del todo |
data/hospitals.lua | Sí | No |
debug, ui, admin, commands, hospital, compat | No, solo archivo | Sí |
data/beds.lua y los demás archivos de data/ | No, solo archivo | Sí |
Tras el primer arranque, cambia las secciones del panel desde /medadmin. Para volver a cargar los valores del archivo, edítalo, reinicia el recurso y pulsa Fábrica en esa sección.
General
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
debug | boolean | false | Imprime trazas en la consola. También se activa poniendo la convar cuxial_medical_debug a 1. |
Interfaz · ui
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
accent | string (hex) | configurable | Color de acento del panel de administración. |
deathAccent | string (hex) | configurable | Color de la pantalla de muerte. |
Staff · admin
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
permission | string | 'admin' | Permiso del framework necesario para abrir el panel y para usar los comandos de staff que tienen restricted = false. |
Comandos · commands
Cada entrada tiene un name y un valor restricted. Un name vacío desactiva el comando.
| Entrada | Nombre por defecto | restricted por defecto | Comando |
|---|---|---|---|
admin | medadmin | false | Abre el panel de administración. |
revive | revive | 'group.mod' | Reanima a un jugador. |
heal | heal | 'group.mod' | Cura a un jugador. |
kill | kill | 'group.mod' | Mata a un jugador. |
stretcher | stretcher | false | Coloca o recoge una camilla. |
delstretcher | delstretcher | false | Elimina la camilla más cercana. |
mdstretcher | mdstretcher | 'group.mod' | Elimina todas las camillas. |
restricted admite un grupo ACE como texto, o false. Con false, los comandos de staff (revive, heal, kill, mdstretcher) pasan a usar admin.permission. Consulta Comandos y permisos.
Trabajos EMS · jobs
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
jobs | string[] | { 'ambulance' } | Nombres de los trabajos que cuentan como EMS. El jugador además debe estar de servicio. |
Muerte · death
Fases · death.phases
Una lista ordenada. El jugador caído pasa por las fases una tras otra. Hace falta al menos una fase.
| Campo | Tipo | Qué hace |
|---|---|---|
id | string | Identificador único: minúsculas, números y _. |
label | string | Nombre que se muestra en la pantalla de muerte. |
icon | string | 'heart', 'drop' o 'skull'. |
duration | number | Segundos que dura la fase. Mínimo 1. |
respawn | boolean | true permite mantener la tecla de reaparición durante esta fase. |
cost | number | Tarifa que se cobra al reaparecer en esta fase. 0 = gratis. |
laststand | boolean | true permite gatear durante esta fase. |
Los nombres de las fases son texto libre. Escríbelos desde el panel en el idioma de tu servidor.
Voz · death.mute
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | true silencia a los jugadores caídos. false no los silencia nunca. |
fromPhase | number | 2 | Primera fase en la que el jugador queda silenciado. |
holdMs | number | 3000 | Milisegundos que se mantiene el silencio tras reaparecer o registrarse. |
Zoom · death.zoom
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | true permite a los jugadores caídos acercar la cámara. |
fov | number | 22.0 | Campo de visión con el zoom. Más bajo es más cerca. |
smooth | number | 0.12 | Velocidad de la transición, de 0 a 1. Más alto es más rápido. |
Otros
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
nearbyWarning.enabled | boolean | true | true pide confirmación antes de reaparecer cuando hay otros jugadores cerca. |
nearbyWarning.radius | number | 30.0 | Radio en metros de esa comprobación. |
holdMs | number | 5000 | Milisegundos que hay que mantener la tecla de reaparición. |
Teclas · death.keys
Teclas por defecto. Cada jugador puede reasignarlas en los ajustes de teclas de GTA.
| Opción | Por defecto | Acción |
|---|---|---|
callEms | 'G' | Llamar a los EMS estando caído. |
respawn | 'E' | Mantener para reaparecer. |
zoom | 'MOUSE_RIGHT' | Zoom estando caído. |
getUp | 'E' | Levantarse de una cama del hospital. |
stretcherDrop | 'X' | Soltar la camilla, o levantarse de ella. |
stretcherUse | 'E' | Cargar la camilla en un vehículo. |
Reaparición · respawn
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
payAccount | string | 'bank' | Cuenta de la que se cobra la tarifa: 'bank' o 'cash'. |
useBed | boolean | true | true despierta al jugador en una cama del hospital con un tratamiento. false lo deja en el punto de reaparición. |
clearInventory | boolean | false | true vacía el inventario cuando un jugador caído reaparece en el hospital. Las reanimaciones nunca lo vacían. |
keepItems | string[] | {} | Ítems que se conservan cuando se vacía el inventario. |
checkIn.enabled | boolean | false | true bloquea la reaparición y el registro mientras haya suficientes EMS de servicio. |
checkIn.minMedics | number | 1 | EMS de servicio necesarios para bloquear. |
bedReserveSeconds | number | 60 | Segundos que una cama queda reservada para el jugador que va hacia ella. Mínimo 5. |
Recepción · hospital.reception
Valores por defecto del NPC de recepción. El NPC de cada hospital se define en el panel.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false quita todos los NPC de recepción. |
resource | string | 'cuxial_interactions' | Recurso que crea el NPC y su diálogo. |
model | string | 's_f_y_scrubs_01' | Modelo de ped cuando el hospital no define uno. |
scenario | string | 'WORLD_HUMAN_CLIPBOARD' | Escenario cuando el hospital no define uno. |
distance | number | 2.5 | Metros desde los que se puede hablar con el NPC. |
feetOffset | number | 1.0 | Corrección de altura que se aplica al colocar el NPC desde el panel. |
previewAlpha | number | 170 | Opacidad de la vista previa al colocar, de 0 a 255. |
modelTimeout | number | 5000 | Milisegundos de espera para cargar el modelo de la vista previa. |
maxLen | number | 48 | Longitud máxima de los textos de modelo, escenario, nombre y cargo. |
models | string[] | lista | Modelos de ped que ofrece el panel. |
scenarios | string[] | lista | Escenarios que ofrece el panel. |
Heridas · injury
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false desactiva las heridas por completo. |
trackingOnly | boolean | false | true registra las heridas sin efectos ni sangrado. |
damageThreshold | number | 10 | Vida mínima perdida en un golpe para causar una herida. |
armourThreshold | number | 5 | Blindaje mínimo perdido en un golpe para causar una herida. |
injuryChance | number | 90 | Probabilidad en % de que un golpe válido deje una herida. |
stackLimit | number | 4 | Nivel máximo y sangrado máximo de una herida. |
bleedEnabled | boolean | true | false corta toda pérdida de vida por sangrado. |
bleedTickInterval | number | 10 | Segundos entre cada pulso de sangrado. |
bleedMovement.enabled | boolean | true | true aumenta el sangrado al moverse rápido. |
bleedMovement.runSpeed | number | 2.0 | Velocidad a partir de la cual se aplica el multiplicador. |
bleedMovement.multiplier | number | 2.0 | Multiplicador del sangrado al moverse rápido. |
bleedMultiplier | table | shot = 2, stabbed = 2, beat = 0, burned = 0 | Qué tipos de herida sangran. Cualquier valor por encima de 0 hace que el tipo sangre; 0 significa que nunca sangra. |
speedByLevel | number[] | { 0.9, 0.8, 0.6, 0.4 } | Velocidad de movimiento según el nivel de herida más alto, del 1 al 4. |
notifications.enabled | boolean | true | false oculta todas las notificaciones de heridas. |
notifications.cooldown | number | 4500 | Milisegundos entre dos notificaciones de heridas. |
notifications.showOnHit | boolean | true | true avisa al jugador cuando recibe una herida. |
Efectos · injury.effects
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
limp.enabled | boolean | true | Activa la cojera. |
limp.minLevel | number | 2 | Nivel de herida a partir del cual el jugador cojea. |
aimShake.enabled | boolean | true | Activa el temblor al apuntar con una herida en un brazo. |
aimShake.minArmLevel | number | 1 | Nivel de herida en el brazo a partir del cual se aplica. |
aimShake.amplitude | number | 4.0 | Fuerza del temblor de cámara. |
aimShake.deviation | number | 0.2 | Desvío de los disparos. |
noJump.enabled | boolean | true | Bloquea el salto con una herida en una pierna. |
noJump.minLegLevel | number | 2 | Nivel de herida en la pierna a partir del cual se aplica. |
noJump.chance | number | 20 | Probabilidad en % de caerse al intentar saltar. |
noSprint.enabled | boolean | true | Bloquea el esprint cuando el jugador va ralentizado. |
noSprint.speedThreshold | number | 0.6 | Velocidad de movimiento por debajo de la cual se bloquea el esprint. |
blackout.enabled | boolean | true | Activa los desmayos con heridas de nivel 3 o 4 en la cabeza o la columna. |
blackout.cooldown | number | 18 | Segundos entre dos desmayos. |
blackout.fadeTime | number | 700 | Milisegundos del fundido de pantalla. |
blackout.duration | table | level3 = 3000, level4 = 4000 | Milisegundos del desmayo según el nivel. |
blackout.chance | table | cabeza 100 / 100, columna 60 / 50 | Probabilidad en % por zona y nivel (level3, level4). |
Tratamiento · treatment
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
reviveAnimMode | string | 'fast' | Modo de RCP que se usa por defecto: 'fast' o 'full'. |
treatmentTime | number | 9000 | Milisegundos para tratar un tipo de herida. |
diagnoseTime | number | 7000 | Milisegundos para diagnosticar a un paciente. |
range | number | 3.0 | Metros dentro de los cuales un médico puede actuar sobre un paciente. |
reviveHealth | table | 100 para todas las heridas | Vida que se devuelve al reanimar, de 0 a 100, según la herida que tumbó al paciente: shot, stabbed, beat, burned, bleedout, default. |
treatmentItems | table | shot = 'tweezers', stabbed = 'suturekit', beat = 'icepack', burned = 'burncream' | Ítem que trata cada tipo de herida. |
RCP · treatment.cpr
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
full.item | string | 'defib' | Ítem que exige la RCP completa. |
full.consume | boolean | false | true consume el ítem al reanimar con éxito. |
full.label | string | texto | Nombre que aparece en el mensaje «Necesitas…». |
fast.item | string | 'medkit' | Ítem que exige la RCP rápida. |
fast.consume | boolean | true | true consume el ítem al reanimar con éxito. |
fast.label | string | texto | Nombre que aparece en el mensaje «Necesitas…». |
maxDistance | number | 5.0 | Metros máximos entre médico y paciente, comprobados en el servidor. |
cooldownMs | number | 1500 | Milisegundos entre dos reanimaciones o vendajes del mismo médico. |
Vendaje por zona · treatment.bandage
Lo usa el export TreatZone.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
item | string | 'bandage' | Ítem exigido. |
consume | boolean | true | true consume el ítem. |
maxDistance | number | 3.0 | Metros máximos entre médico y paciente. |
cooldownMs | number | 600 | Milisegundos entre dos vendajes del mismo médico. |
Ítems · items
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
revive.item | string | 'defib' | Ítem que inicia una reanimación al usarlo. |
heal.item | string | 'medkit' | Ítem que cura a un paciente. |
heal.duration | number | 5000 | Milisegundos de la cura. |
heal.remove | boolean | true | true consume el ítem. |
sedate.item | string | 'sedative' | Ítem que seda a un paciente. |
sedate.duration | number | 8000 | Milisegundos que el paciente queda sedado. |
sedate.remove | boolean | true | true consume el ítem. |
medbag.item | string | 'medbag' | Ítem del bolso médico. |
medbag.prop | string | modelo de prop | Prop que se coloca en el suelo. |
Camilla · stretcher
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false desactiva la camilla y sus comandos. |
model | string | 'strykerpro' | Modelo de la camilla. Va incluido en el recurso. |
carryOffset | table | x, y, z | Posición de la camilla respecto al médico que la lleva. |
vehicles | table[] | un ejemplo | Vehículos que admiten la camilla. |
Cada entrada de vehicles:
| Campo | Tipo | Qué hace |
|---|---|---|
model | string | Modelo del vehículo. |
dist | number | Metros máximos entre el médico y el vehículo para cargarla. |
xOffset, yOffset, zOffset | number | Posición de la camilla dentro del vehículo. |
rotOffset | number | Rotación de la camilla dentro del vehículo. |
powerload | boolean | true ancla la camilla al hueso bonnet del vehículo en lugar de al chasis. |
Remate · finisher
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
enabled | boolean | true | false quita el remate. |
cooldownMs | number | 5000 | Milisegundos entre dos remates del mismo jugador. |
maxDistance | number | 4.0 | Metros máximos entre atacante y víctima. |
forceFinalPhase | boolean | true | true envía a la víctima a la última fase. |
weapons | string[] | lista de armas blancas | Armas que permiten el remate. |
Extras · extras
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
knockout.enabled | boolean | false | Activa el nocaut a puñetazos. |
knockout.healthThreshold | number | 150 | Vida igual o por debajo de la cual un puñetazo noquea. |
knockout.regainHealth | number | 20 | Vida que se recupera cada segundo mientras dura el nocaut. |
knockout.duration | number | 7000 | Milisegundos del nocaut. |
painkillers.enabled | boolean | false | Activa los ítems analgésicos. |
painkillers.drugEffect | boolean | true | true añade un efecto visual mientras están activos. |
painkillers.items | table | siete ítems | Cada ítem con su duration en segundos y su level, que fija la fuerza del efecto visual. |
bandage.enabled | boolean | false | Activa el vendaje de uso propio. |
bandage.item | string | 'bandage' | Ítem que se usa. |
bandage.hpRegen | number | 30 | Vida que devuelve. |
bandage.healBleed | boolean | false | true además corta el sangrado. |
bandage.duration | number | 7000 | Milisegundos de la acción. |
Avisos · dispatch
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
cooldownMs | number | 5000 | Milisegundos entre dos avisos de auxilio del mismo jugador. |
police | boolean | true | true envía además el aviso a cuxial_police. Se ignora cuando ese recurso no está en marcha. |
Registros · logs
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
death | boolean | true | Envía cada muerte al webhook. |
revive | boolean | true | Envía cada reanimación al webhook. |
combat | boolean | true | Envía un registro cuando un jugador se desconecta estando caído. |
persistence | boolean | true | Guarda muertes, reanimaciones, curas, tratamientos y diagnósticos en cuxial_medical_logs. |
convar | string | 'cuxial_medical_webhook' | Nombre de la convar que contiene el webhook. Se lee al arrancar el recurso. |
Compatibilidad · compat
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
qbxMedicalStateBag | boolean | true | true escribe además el state bag de jugador qbx_medical:deathState (1 vivo, 2 último aliento, 3 muerto). |
qbxMedicalEvents | boolean | false | true dispara además los eventos de cliente qbx_medical:client:onPlayerDied, onPlayerLaststand y playerRevived. |
esxDead | boolean | true | En ESX, avisa al framework cuando el jugador está caído. |
Hospitales · data/hospitals.lua
La lista de hospitales de fábrica. Trae un ejemplo, Pillbox Hill Medical Center, colocado en la entrada exterior y sin camas. Tras el primer arranque, edita los hospitales desde el panel.
| Campo | Tipo | Qué hace |
|---|---|---|
id | string | Identificador único: minúsculas, números y _. No lo reutilices. |
name | string | Nombre que aparece en el blip y en el diálogo de recepción. |
enabled | boolean | false oculta el hospital: sin blip, camas, recepción ni reaparición. |
respawn | vector4 | Punto en el que aparecen los jugadores. Las distancias al hospital se miden desde aquí. |
checkInRadius | number | Metros alrededor de respawn dentro de los cuales se acepta un registro. |
blip | table | enabled, sprite, color, scale. |
reception | table | enabled, coords, model, scenario, name, role. Con name y role vacíos se usan los textos del idioma. |
beds | table[] | Lista de camas. Sin camas, el paciente aparece en respawn. |
Cada cama:
| Campo | Tipo | Qué hace |
|---|---|---|
model | string | Modelo de la cama. Debe existir en data/beds.lua. |
coords | vector4 | Posición y orientación del prop de la cama. |
private | boolean | true deja la cama fuera de la asignación automática. |
override | table | Opcional. Sustituye las animaciones de esta cama, por ejemplo anims.getup. |
Modelos de cama · data/beds.lua
Le dice al script dónde se tumba el jugador en cada prop de cama: un offset local y un heading. Añade una entrada por cada modelo de cama de tu mapa antes de usarlo en un hospital.
my_map_bed = { lying = { offset = vec3(0.0, 0.0, 0.9), heading = 180.0 } },Cambios habituales
Añadir un segundo trabajo de EMS
En el panel, abre Trabajos EMS y añade el nombre del trabajo. En el archivo queda así:
jobs = { 'ambulance', 'doctor' },Hacer que los jugadores esperen a los médicos
En Reaparición, activa Check-in con médicos y fija el mínimo de médicos:
checkIn = { enabled = true, minMedics = 2, radius = 150.0 },Usar la RCP completa con el desfibrilador
En Tratamiento, pon el modo de animación RCP en full:
reviveAnimMode = 'full',Que los comandos de staff sigan el permiso del framework
revive = { name = 'revive', restricted = false },Con restricted = false el comando comprueba admin.permission en lugar de un grupo ACE. commands se lee del archivo, así que reinicia el recurso.
