> For the complete documentation index, see [llms.txt](https://docs.cuxial.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cuxial.com/scripts/es/policia-y-medico/cuxial-medical/configuration.md).

# Configuración

Todas las opciones de Cuxial Medical explicadas: archivo de configuración, hospitales, camas y dónde se guarda cada ajuste.

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í                          |

{% hint style="info" %}
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.
{% endhint %}

## 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](/scripts/es/policia-y-medico/cuxial-medical/commands.md).

## 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.                           |

{% hint style="info" %}
Los nombres de las fases son texto libre. Escríbelos desde el panel en el idioma de tu servidor.
{% endhint %}

### 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.

{% code title="data/beds.lua" %}

```lua
my_map_bed = { lying = { offset = vec3(0.0, 0.0, 0.9), heading = 180.0 } },
```

{% endcode %}

## 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í:

{% code title="shared/config.lua" %}

```lua
jobs = { 'ambulance', 'doctor' },
```

{% endcode %}

### 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:

{% code title="shared/config.lua" %}

```lua
checkIn = { enabled = true, minMedics = 2, radius = 150.0 },
```

{% endcode %}

### Usar la RCP completa con el desfibrilador

En **Tratamiento**, pon el modo de animación RCP en `full`:

{% code title="shared/config.lua" %}

```lua
reviveAnimMode = 'full',
```

{% endcode %}

### Que los comandos de staff sigan el permiso del framework

{% code title="shared/config.lua" %}

```lua
revive = { name = 'revive', restricted = false },
```

{% endcode %}

Con `restricted = false` el comando comprueba `admin.permission` en lugar de un grupo ACE. `commands` se lee del archivo, así que reinicia el recurso.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.cuxial.com/scripts/es/policia-y-medico/cuxial-medical/configuration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
