> 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/nucleo/cuxial-admin/configuration.md).

# Configuración

Todas las opciones de Cuxial Admin explicadas: config, convars, rangos de partida y lista de modelos.

El comportamiento está en `shared/config.lua`, los secretos y las listas de acceso en convars, y los rangos de partida y la lista de modelos en `data/`. Reinicia el recurso después de cualquier cambio.

## General

| Opción                | Tipo         | Por defecto  | Qué hace                                                                                                                            |
| --------------------- | ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
| `locale`              | string       | `'es'`       | Idioma de la interfaz. `'es'` o `'en'`. Las notificaciones y los nombres de tecla siguen la convar `ox:locale`.                     |
| `accent`              | string (hex) | configurable | Color de acento de la interfaz.                                                                                                     |
| `announceSeconds`     | number       | `12`         | Segundos que un anuncio del servidor permanece en pantalla. Mínimo 3.                                                               |
| `reportRetentionDays` | number       | `30`         | Días que se conserva la transcripción de un reporte cerrado. Las antiguas se borran cada día a las 04:00. `0` las conserva siempre. |
| `auditRetentionDays`  | number       | `180`        | Días que se conserva una entrada de auditoría. Misma limpieza diaria. `0` las conserva siempre.                                     |

## Comandos · `commands`

| Opción        | Tipo   | Por defecto     | Qué hace                                                   |
| ------------- | ------ | --------------- | ---------------------------------------------------------- |
| `panel`       | string | `'admin'`       | Comando que abre el panel.                                 |
| `report`      | string | `'report'`      | Comando que abre la ventana de reporte de los jugadores.   |
| `staffReload` | string | `'staffreload'` | Comando que recarga rangos y staff desde la base de datos. |

## Teclas · `keybinds`

| Opción         | Tipo   | Por defecto | Qué hace                                                                                   |
| -------------- | ------ | ----------- | ------------------------------------------------------------------------------------------ |
| `panel`        | string | `'U'`       | Tecla por defecto del panel. `''` no registra ninguna tecla; el comando sigue funcionando. |
| `report`       | string | `''`        | Tecla por defecto de la ventana de reporte. `''` no registra ninguna tecla.                |
| `noclip`       | string | `'END'`     | Tecla por defecto del noclip.                                                              |
| `godmode`      | string | `''`        | Tecla por defecto del modo dios.                                                           |
| `invisible`    | string | `''`        | Tecla por defecto de la invisibilidad.                                                     |
| `infiniteAmmo` | string | `''`        | Tecla por defecto de la munición infinita.                                                 |
| `superJump`    | string | `''`        | Tecla por defecto del súper salto.                                                         |
| `blips`        | string | `''`        | Tecla por defecto de las marcas de jugadores en el mapa.                                   |
| `names`        | string | `''`        | Tecla por defecto de los nombres sobre los jugadores.                                      |

{% hint style="info" %}
Los siete interruptores personales se registran siempre. Con `''` no tienen tecla por defecto y cada miembro del staff asigna una en los ajustes de teclas de GTA. Una tecla solo funciona para el staff que tenga el permiso `self.*` correspondiente.
{% endhint %}

## Nombres sobre los jugadores · `nameplates`

| Opción          | Tipo   | Por defecto | Qué hace                                                                                                                                                                                           |
| --------------- | ------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `range`         | number | `480.0`     | Metros hasta los que se dibuja un nombre.                                                                                                                                                          |
| `barRange`      | number | `45.0`      | Metros hasta los que se dibuja la barra de vida y chaleco. Más lejos, solo el nombre.                                                                                                              |
| `cullingRadius` | number | `500.0`     | Radio de red que recibe el miembro del staff mientras tiene los nombres activos, para que se carguen los jugadores lejanos. Consume ancho de banda de ese cliente. `0.0` mantiene el del servidor. |

## Ver pantalla · `screen`

| Opción        | Tipo    | Por defecto | Qué hace                                                                                     |
| ------------- | ------- | ----------- | -------------------------------------------------------------------------------------------- |
| `width`       | number  | `1280`      | Ancho del vídeo en píxeles. El alto sigue la pantalla del jugador.                           |
| `fps`         | number  | `24`        | Fotogramas por segundo.                                                                      |
| `bitrate`     | number  | `4000000`   | Bits por segundo del vídeo.                                                                  |
| `codec`       | string  | `'vp9'`     | `'vp9'` es más nítido. `'vp8'` usa menos CPU en el PC del jugador.                           |
| `keyframeMs`  | number  | `10000`     | Milisegundos entre fotogramas completos.                                                     |
| `audio`       | boolean | `true`      | `true` permite al staff encender el micrófono del jugador mientras mira. `false` lo rechaza. |
| `maxWatchers` | number  | `4`         | Miembros del staff que pueden mirar a la vez al mismo jugador desde dentro del juego.        |

Ver pantalla necesita además convars. Consulta [Convars](#convars).

## Espectar · `spectate`

| Opción       | Tipo    | Por defecto | Qué hace                                                                                                                          |
| ------------ | ------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `hearVoice`  | boolean | `true`      | `true` permite al staff oír al objetivo y a los jugadores cercanos mientras especta. `false` deja el modo espectador en silencio. |
| `hearRadius` | number  | `12.0`      | Metros alrededor del objetivo dentro de los que también se oye a otros jugadores.                                                 |

## Límites · `limits`

| Opción              | Tipo   | Por defecto | Qué hace                                                                                                        |
| ------------------- | ------ | ----------- | --------------------------------------------------------------------------------------------------------------- |
| `messageLength`     | number | `600`       | Máximo de caracteres de un mensaje de reporte. El texto más largo se corta.                                     |
| `messageCooldown`   | number | `2000`      | Milisegundos que un jugador debe esperar entre dos mensajes de reporte.                                         |
| `actionCooldown`    | number | `350`       | Milisegundos que un miembro del staff debe esperar entre dos acciones.                                          |
| `messagesPerReport` | number | `150`       | Mensajes que un jugador puede escribir en un reporte. Las respuestas del staff no cuentan. `0` quita el límite. |

## Dinero · `moneyItems`

Asocia un tipo de dinero a un ítem del inventario. Cuando el staff da un tipo que está aquí, el jugador recibe ese ítem. Cualquier tipo que no esté, como el banco, se suma como saldo del framework.

| Opción        | Tipo   | Por defecto     | Qué hace                               |
| ------------- | ------ | --------------- | -------------------------------------- |
| `cash`        | string | `'money'`       | Ítem que se entrega como efectivo.     |
| `black_money` | string | `'black_money'` | Ítem que se entrega como dinero sucio. |

## Efectos · `effects`

| Opción         | Tipo   | Por defecto | Qué hace                                                                               |
| -------------- | ------ | ----------- | -------------------------------------------------------------------------------------- |
| `drunkSeconds` | number | `30`        | Segundos que dura el efecto de borrachera. Repetir la acción lo quita antes. Mínimo 1. |

## Panel web remoto · `remote`

Conecta el servidor con un servicio externo de panel web. Solo se enciende cuando `enabled` es `true` y las dos convars remotas están definidas.

| Opción      | Tipo      | Por defecto         | Qué hace                                                                                                                                         |
| ----------- | --------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `enabled`   | boolean   | `false`             | `true` enciende el panel remoto cuando las dos convars remotas están definidas. `false` lo mantiene apagado, digan lo que digan las convars.     |
| `clockSkew` | number    | `30`                | Segundos de diferencia de reloj tolerados entre el servicio de panel web y el servidor de juego. Las peticiones fuera de ese margen se rechazan. |
| `allowFrom` | string\[] | direcciones locales | Direcciones desde las que se aceptan peticiones. Se comparan por prefijo. Una lista vacía acepta cualquier dirección.                            |

{% hint style="danger" %}
Quien alcance el puerto HTTP del servidor y conozca el secreto actúa como staff. Mantén el servicio de panel web en la misma máquina o en una red privada, y nunca vacíes `allowFrom` en un servidor público.
{% endhint %}

Aun con una petición válida, un miembro del staff solo entra desde fuera cuando su rango tiene activado el acceso remoto.

## Convars

Todas se leen solo en el servidor. Escríbelas con `set` en `server.cfg`.

| Convar                       | Por defecto | Qué hace                                                                                                                                                                 |
| ---------------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `cuxial_admin_screen_owners` | vacía       | Identificadores de Discord que pueden usar la función de ver pantalla, separados por comas o espacios. Vacía apaga la función para todos. Se lee al arrancar el recurso. |
| `sd_phone_relay_url`         | vacía       | Dirección del relay de media. Debe empezar por `ws://` o `wss://`; cualquier otra cosa se ignora.                                                                        |
| `sd_phone_relay_key`         | vacía       | Clave que firma los pases del relay. Exactamente 64 caracteres hexadecimales en minúscula; cualquier otra cosa se ignora.                                                |
| `sd_phone_relay_ttl`         | `45`        | Segundos de validez de un pase del relay. Limitado entre 10 y 120.                                                                                                       |
| `cuxial_admin_remote_url`    | vacía       | Dirección del servicio de panel web. Se lee al arrancar el recurso.                                                                                                      |
| `cuxial_admin_remote_secret` | vacía       | Secreto compartido con el servicio de panel web. Se lee al arrancar el recurso.                                                                                          |
| `cuxial_admin_debug`         | `0`         | `1` imprime cada consulta SQL y su resultado en la consola del servidor. Se lee al arrancar el recurso.                                                                  |

### Ver pantalla

Ver una pantalla exige tres cosas a la vez:

1. El identificador de Discord del miembro del staff está en `cuxial_admin_screen_owners`.
2. Su rango tiene el permiso `player.screen`.
3. `cuxial_bridge` está en marcha. El vídeo pasa por su módulo de media.

Un rango con todos los permisos tampoco puede ver pantallas si la persona no está en la lista.

El relay es opcional:

| Relay                               | Staff dentro del juego                             | Staff en el panel web |
| ----------------------------------- | -------------------------------------------------- | --------------------- |
| Las dos convars del relay definidas | Vídeo por el relay                                 | Vídeo por el relay    |
| Sin definir                         | Vídeo por el servidor de juego, a calidad reducida | No disponible         |

Cada visionado y cada uso del micrófono queda escrito en el registro de auditoría.

## Rangos de partida · `data/permissions.lua`

Este archivo contiene dos listas:

* **`catalog`**: los permisos que muestra el editor de rangos, agrupados por sección. Puedes cambiar cada `label` para traducirlo. No cambies ningún `id`: el panel comprueba esos valores exactos.
* **`seed`**: los rangos que se crean la primera vez que arranca el recurso, cuando la tabla de rangos está vacía. Después, los rangos viven en la base de datos y se editan desde el panel.

Cada rango de `seed` tiene:

| Campo      | Tipo      | Qué hace                                                                                                   |
| ---------- | --------- | ---------------------------------------------------------------------------------------------------------- |
| `id`       | string    | Nombre interno. Letras minúsculas, números y `_`.                                                          |
| `label`    | string    | Nombre que muestra el panel.                                                                               |
| `remote`   | boolean   | `true` permite a este rango entrar al panel web remoto.                                                    |
| `position` | number    | Orden. El número más bajo es el rango más alto.                                                            |
| `perms`    | string\[] | Permisos concedidos. Consulta [Comandos y permisos](/scripts/es/nucleo/cuxial-admin/commands.md#permisos). |

## Lista de modelos · `data/peds.lua`

Los modelos que se ofrecen al cambiar el modelo de un jugador. Añade o quita líneas a tu gusto.

```lua
{ id = 'mp_m_freemode_01', label = 'Hombre (freemode)', sub = 'Personalizable' },
```

| Campo   | Qué hace                        |
| ------- | ------------------------------- |
| `id`    | Nombre del modelo.              |
| `label` | Nombre que aparece en la lista. |
| `sub`   | Grupo que aparece al lado.      |

## Cambios habituales

**Usar el panel en inglés**

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

```lua
locale = 'en',
```

{% endcode %}

{% code title="server.cfg" %}

```cfg
setr ox:locale "en"
```

{% endcode %}

**Dar el efectivo como saldo del framework en vez de como ítem**

Quita la línea de `moneyItems`:

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

```lua
moneyItems = {
    black_money = 'black_money',
},
```

{% endcode %}

**Encender el panel web remoto**

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

```lua
remote = {
    enabled = true,
    clockSkew = 30,
    allowFrom = { '127.0.0.1', '::1', 'localhost' },
},
```

{% endcode %}

**Prohibir escuchar el micrófono al ver pantalla**

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

```lua
screen = {
    -- el resto de opciones sin cambios
    audio = false,
},
```

{% endcode %}


---

# 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/nucleo/cuxial-admin/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.
