> 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/trabajos/cuxial-electrician/configuration.md).

# Configuración

Todas las opciones de Cuxial Electrician explicadas: config, regiones, pagos, camiones y tareas diarias.

El comportamiento está en `shared/config.lua`; las regiones, los niveles, las tareas diarias, los camiones y la ropa están en los archivos de la carpeta `data`. Reinicia el recurso después de cualquier cambio.

## General

| Opción            | Tipo                | Por defecto                    | Qué hace                                                                                                                                  |
| ----------------- | ------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `debug`           | boolean             | `false`                        | Escribe trazas en la consola. También se activa poniendo la convar `cuxial_electrician_debug` a `1`.                                      |
| `account`         | string              | `'bank'`                       | Cuenta que recibe el pago del trabajo y las recompensas de las tareas diarias.                                                            |
| `job`             | string \| string\[] | `'all'`                        | Quién puede hacer el trabajo. `'all'` = todos. Un nombre de trabajo o una lista (`{ 'electrician' }`) lo limita a esos trabajos.          |
| `logs.convar`     | string              | `'cuxial_electrician_webhook'` | Nombre de la convar que guarda el webhook de Discord. Con la convar vacía no se envían registros.                                         |
| `admin.auditDays` | number              | `60`                           | Días que se conservan las filas de auditoría de este trabajo en `cuxial_jobs_audit`. Las más antiguas se borran una vez al día. Mínimo 1. |

## Interfaz · `ui`

| Opción            | Tipo         | Por defecto  | Qué hace                                                                                                      |
| ----------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------- |
| `accent`          | string (hex) | configurable | Color de acento del panel.                                                                                    |
| `currency.symbol` | string       | `'$'`        | Símbolo de moneda que acompaña a las cantidades.                                                              |
| `currency.locale` | string       | `'en-US'`    | Formato numérico de las cantidades (separadores de miles y decimales). Usa `'es-ES'` para el formato español. |

## NPC del trabajo · `npc`

| Opción                                      | Tipo    | Por defecto            | Qué hace                                                                                      |
| ------------------------------------------- | ------- | ---------------------- | --------------------------------------------------------------------------------------------- |
| `coords`                                    | vector4 | posición de ejemplo    | Posición y orientación del NPC que abre el panel. Cámbiala para situar el trabajo en tu mapa. |
| `model`                                     | string  | `'s_m_y_construct_01'` | Modelo del NPC.                                                                               |
| `distance`                                  | number  | `2.0`                  | Metros a los que se ofrece la interacción con el NPC.                                         |
| `menuDistance`                              | number  | `6.0`                  | Metros a partir de los cuales el servidor se niega a abrir el panel.                          |
| `spawnDistance`                             | number  | `60.0`                 | Metros dentro de los cuales el NPC existe para un jugador.                                    |
| `blip.enabled`                              | boolean | `true`                 | `true` muestra el blip del trabajo en el mapa. `false` lo oculta.                             |
| `blip.sprite` / `blip.color` / `blip.scale` | number  | `643` / `3` / `0.9`    | Aspecto del blip del trabajo.                                                                 |

{% hint style="warning" %}
Los puntos de salida de los camiones y el punto de entrega no forman parte de `npc`. Si mueves el NPC, mueve también `spawns` y `deliver` en `data/regions.lua`.
{% endhint %}

## Interacción y marcadores · `target`

| Opción         | Tipo   | Por defecto | Qué hace                                                                                                      |
| -------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------- |
| `distance`     | number | `2.0`       | Metros a los que se ofrece la opción de reparar un punto.                                                     |
| `showDistance` | number | `25.0`      | Metros a los que se dibuja un marcador sobre los puntos pendientes. `0` = sin marcador.                       |
| `buildOffset`  | number | `0.9`       | Metros que la opción «montar plataforma» se separa del poste, hacia el jugador.                               |
| `signalOffset` | number | `0.6`       | Metros que la opción de reparar un semáforo se separa de su poste, hacia el jugador.                          |
| `marker`       | table  | ver archivo | Marcador sobre los puntos pendientes: `type`, `scale`, `height`, `color` (`{ r, g, b, a }`), `bob`, `rotate`. |
| `ring`         | table  | ver archivo | Anillo dibujado en el suelo bajo farolas y postes: `type`, `scale`, `color`.                                  |
| `icons`        | table  | ver archivo | Icono de Font Awesome de cada opción de interacción.                                                          |

## Blips · `blips`

| Opción       | Tipo   | Por defecto                                | Qué hace                                                                              |
| ------------ | ------ | ------------------------------------------ | ------------------------------------------------------------------------------------- |
| `task`       | table  | `{ sprite = 354, color = 5, scale = 0.8 }` | Blip de cada reparación pendiente.                                                    |
| `truck`      | table  | `{ sprite = 67, color = 0, scale = 0.8 }`  | Blip de cada camión de servicio.                                                      |
| `deliver`    | table  | `{ sprite = 38, color = 29, scale = 0.8 }` | Blip del punto de entrega.                                                            |
| `routeColor` | number | `38`                                       | Color de la ruta del GPS.                                                             |
| `routeMs`    | number | `5000`                                     | Milisegundos entre recálculos de la ruta al punto pendiente más cercano. Mínimo 1000. |

## Efectos · `fx` y `signals`

| Opción                  | Tipo   | Por defecto                         | Qué hace                                                                                                          |
| ----------------------- | ------ | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `fx.asset` / `fx.name`  | string | `'core'` / `'ent_dst_elec_fire_sp'` | Efecto de partículas que se reproduce en los puntos pendientes.                                                   |
| `fx.distance`           | number | `30.0`                              | Metros a los que se ven las chispas.                                                                              |
| `fx.repeatMs`           | number | `3000`                              | Milisegundos entre dos reproducciones del efecto.                                                                 |
| `signals.distance`      | number | `150.0`                             | Metros a un cruce pendiente a partir de los cuales sus semáforos empiezan a parpadear.                            |
| `signals.tickMs`        | number | `250`                               | Milisegundos entre pasos del parpadeo. Mínimo 50.                                                                 |
| `signals.fixedDistance` | number | `1.5`                               | Metros alrededor de un punto reparado dentro de los cuales un semáforo cuenta como arreglado y deja de parpadear. |

## Tripulación · `crew`

| Opción             | Tipo    | Por defecto | Qué hace                                                                                                 |
| ------------------ | ------- | ----------- | -------------------------------------------------------------------------------------------------------- |
| `maxPlayers`       | number  | `4`         | Máximo de miembros de una tripulación, dueño incluido.                                                   |
| `inviteDistance`   | number  | `8.0`       | Metros máximos entre el dueño y el jugador invitado.                                                     |
| `inviteSeconds`    | number  | `60`        | Segundos hasta que caduca una invitación. Mínimo 5.                                                      |
| `reconnectSeconds` | number  | `180`       | Segundos que conserva su puesto un miembro que se desconecta durante un trabajo.                         |
| `splitRewards`     | boolean | `true`      | `true` deja al dueño repartir el dinero por porcentaje. `false` quita la opción y todos cobran lo mismo. |

## Reglas del trabajo · `run`

| Opción             | Tipo    | Por defecto | Qué hace                                                                                                      |
| ------------------ | ------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
| `cooldownHours`    | number  | `0`         | Horas que cada jugador debe esperar entre trabajos. `0` = sin espera.                                         |
| `exclusiveRegions` | boolean | `true`      | `true` permite una sola tripulación por región a la vez. `false` deja que varias trabajen en la misma región. |
| `spawnFreeRadius`  | number  | `6.0`       | Metros que deben estar libres de vehículos alrededor de cada punto de salida de los camiones.                 |

## Camiones de servicio · `trucks`

| Opción           | Tipo    | Por defecto | Qué hace                                                                                                      |
| ---------------- | ------- | ----------- | ------------------------------------------------------------------------------------------------------------- |
| `plate`          | string  | `'ELEC'`    | Prefijo de la matrícula, hasta 4 caracteres. El script lo completa con el número del trabajo y el del camión. |
| `fuel`           | number  | `100.0`     | Combustible con el que salen los camiones, escrito en el estado `fuel` del vehículo.                          |
| `keys`           | boolean | `true`      | `true` da las llaves mediante `cuxial_garages` cuando ese recurso está en marcha. `false` no da llaves nunca. |
| `secondFrom`     | number  | `3`         | Tamaño de tripulación a partir del cual se entrega un segundo camión.                                         |
| `spawnTimeoutMs` | number  | `5000`      | Milisegundos que el servidor espera a que se cree cada camión.                                                |
| `minEngine`      | number  | `-3900.0`   | Salud del motor por debajo de la cual un camión cuenta como destruido.                                        |

Los modelos de los camiones y sus extras se definen en `data/trucks.lua`.

## Reparaciones · `repair`

| Opción         | Tipo   | Por defecto              | Qué hace                                                                                                                              |
| -------------- | ------ | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| `maxDistance`  | number | `2.5`                    | Metros máximos entre el jugador y el punto en transformadores, cuadros y semáforos.                                                   |
| `signalSlack`  | number | `0.6`                    | Metros extra en horizontal que se admiten en los semáforos.                                                                           |
| `signalHeight` | number | `4.0`                    | Diferencia de altura en metros que se admite en los semáforos.                                                                        |
| `highDistance` | number | `4.5`                    | Metros máximos en horizontal entre el jugador y el punto en farolas y postes.                                                         |
| `highHeight`   | number | `2.0`                    | Diferencia de altura en metros que se admite entre la plataforma y la avería.                                                         |
| `marginMs`     | number | `500`                    | Tolerancia en milisegundos sobre el tiempo mínimo de cada minijuego (`data/games.lua`).                                               |
| `lockSeconds`  | number | `120`                    | Segundos que un punto queda reservado para el jugador que lo repara. Mínimo 10.                                                       |
| `fail`         | string | `'damage'`               | Qué pasa al fallar un minijuego. `'damage'` = animación de descarga y pérdida de vida, `'anim'` = solo la animación, `'none'` = nada. |
| `failDamage`   | table  | `{ min = 10, max = 25 }` | Vida que se pierde al fallar, al azar dentro de este rango. Solo con `fail = 'damage'`.                                               |

{% hint style="info" %}
Las distancias las comprueba el servidor. Súbelas un poco si a los jugadores con mucha latencia se les rechazan reparaciones por «demasiado lejos»; no las bajes por debajo de la distancia de interacción de `target.distance`.
{% endhint %}

## Escaleras y plataformas · `rigs`

| Opción                 | Tipo   | Por defecto     | Qué hace                                                                                                                                          |
| ---------------------- | ------ | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `lampRig`              | string | `'ladder'`      | Cómo se llega a las farolas. `'ladder'` = escalera que se coge del camión, `'lift'` = plataforma elevadora, `'none'` = se reparan desde el suelo. |
| `poleRig`              | string | `'lift'`        | Cómo se llega a los postes. Mismos valores.                                                                                                       |
| `spacing`              | number | `20.0`          | Metros mínimos entre una plataforma y cualquier otra plataforma o escalera.                                                                       |
| `buildDistance`        | number | `3.0`           | Metros máximos del jugador al punto para montar, y al pie para desmontar.                                                                         |
| `serveDistance`        | number | `3.0`           | Metros máximos entre la plataforma o la escalera y el punto para que cuente.                                                                      |
| `riderSlack`           | number | `5.0`           | Tolerancia en metros sobre la posición de un jugador subido a la escalera.                                                                        |
| `insideSlack`          | number | `0.5`           | Tolerancia en metros al comprobar quién está dentro de la cesta.                                                                                  |
| `buildMs` / `removeMs` | number | `2500` / `2500` | Duración de las barras de montar y desmontar.                                                                                                     |
| `ladderMs`             | number | `1500`          | Duración de las barras de coger, colocar, recoger y devolver la escalera.                                                                         |
| `viewDistance`         | number | `75.0`          | Metros dentro de los cuales los props de plataformas y escaleras existen para un jugador.                                                         |

Con `'ladder'` el recorrido es: coger la escalera del camión, colocarla, subir, reparar, bajar, recogerla y devolverla al camión. Con `'lift'` hay que aparcar el camión a la distancia definida en `data/rigs.lua` (de 5 a 9 metros por defecto) antes de poder montar la plataforma.

## Entrega · `deliver`

| Opción       | Tipo    | Por defecto | Qué hace                                                                                                                                                       |
| ------------ | ------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `radius`     | number  | `20.0`      | Metros alrededor del punto de entrega de la región dentro de los cuales deben estar los camiones.                                                              |
| `requireAll` | boolean | `true`      | `true` exige que todos los camiones estén enteros. `false` solo exige el camión principal; los demás, si siguen existiendo, también deben estar en la entrega. |

El trabajo se paga cuando un miembro de la tripulación pulsa la tecla de interacción al volante de uno de los camiones, con todas las escaleras devueltas.

## Pago · `reward`

| Opción           | Tipo   | Por defecto | Qué hace                                                                                                                              |
| ---------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| `mode`           | string | `'team'`    | Cómo se paga el premio de la región. Ver más abajo.                                                                                   |
| `teamMultiplier` | number | `0.64`      | Multiplicador que se aplica al premio de la región cuando la tripulación tiene más de un miembro. Lo usan `'team'` y `'split'`.       |
| `items`          | table  | `{}`        | Ítems que recibe cada miembro al cobrar: `{ item = 'nombre', count = 1, chance = 50 }`. `chance` es un porcentaje. Vacío = sin ítems. |

| `mode`    | En solitario    | Tripulación de dos o más                                 |
| --------- | --------------- | -------------------------------------------------------- |
| `'team'`  | Premio completo | Cada miembro recibe premio × `teamMultiplier`            |
| `'flat'`  | Premio completo | Cada miembro recibe el premio completo                   |
| `'split'` | Premio completo | Premio × `teamMultiplier`, dividido entre la tripulación |

Todos los miembros reciben la XP completa de la región en cualquier modo. Los miembros desconectados en el momento de la entrega no reciben nada.

{% hint style="info" %}
Los ítems solo se dan si existen en tu inventario y el jugador puede cargarlos. Un ítem que no existe se avisa en la consola del servidor al arrancar el recurso.
{% endhint %}

## Ropa · `outfit`

| Opción | Tipo   | Por defecto | Qué hace                                                                                                                                                    |
| ------ | ------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mode` | string | `'none'`    | Ropa que se lleva durante el trabajo. `'workwear'` y `'classic'` son los dos conjuntos definidos en `data/outfits.lua`; `'none'` deja al jugador como está. |

La ropa solo se aplica a los modelos freemode masculino y femenino. El jugador recupera su ropa al terminar el trabajo.

## Perfil, ranking y pantallas

| Opción                     | Tipo   | Por defecto | Qué hace                                                                                                          |
| -------------------------- | ------ | ----------- | ----------------------------------------------------------------------------------------------------------------- |
| `leaderboard.size`         | number | `10`        | Entradas de cada lista del ranking. De 1 a 50.                                                                    |
| `leaderboard.cacheSeconds` | number | `60`        | Segundos que el ranking se guarda en caché antes de volver a leerse de la base de datos.                          |
| `history.size`             | number | `10`        | Trabajos que se muestran en el historial de cada jugador. De 1 a 50.                                              |
| `profile.flushMs`          | number | `30000`     | Milisegundos entre guardados diferidos de XP y tareas diarias. Mínimo 5000. El dinero se paga siempre al momento. |
| `tips.seconds`             | number | `12`        | Segundos que una pista de primera vez permanece en pantalla. Mínimo 3.                                            |
| `finish.seconds`           | number | `15`        | Segundos que el resumen final permanece en pantalla. Mínimo 3.                                                    |

## Comandos y teclas

| Opción                     | Tipo              | Por defecto                                                         | Qué hace                                                                                           |
| -------------------------- | ----------------- | ------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| `commands.<id>.name`       | string \| `false` | ver [Comandos](/scripts/es/trabajos/cuxial-electrician/commands.md) | Nombre del comando. `false` lo desactiva.                                                          |
| `commands.<id>.restricted` | string            | `'group.admin'`                                                     | Grupo que puede usar un comando de staff.                                                          |
| `keys`                     | table             | ver [Comandos](/scripts/es/trabajos/cuxial-electrician/commands.md) | Tecla por defecto de cada acción. Los jugadores pueden cambiarlas en los ajustes de teclas de GTA. |

## Archivos de datos

Los archivos de `data` están pensados para editarse. Los valores que traen son ejemplos: cámbialos para adaptarlos a tu mapa y a tu economía.

| Archivo            | Qué contiene                                                                                          |
| ------------------ | ----------------------------------------------------------------------------------------------------- |
| `data/regions.lua` | Regiones: `id`, `label`, `minLevel`, `reward` (`money`, `xp`), `tasks`, `spawns` y `deliver`.         |
| `data/points.lua`  | Coordenadas de cada punto de reparación por región, y los modelos de semáforo que parpadean.          |
| `data/levels.lua`  | XP necesaria para pasar de cada nivel al siguiente. El nivel máximo es el número de entradas más uno. |
| `data/daily.lua`   | Tareas diarias y horas entre reinicios.                                                               |
| `data/trucks.lua`  | Modelos de los camiones y extras del vehículo.                                                        |
| `data/rigs.lua`    | Modelos y medidas de la plataforma y la escalera.                                                     |
| `data/outfits.lua` | Conjuntos de ropa por modo y sexo.                                                                    |
| `data/games.lua`   | Minijuego de cada tipo de punto y sus parámetros.                                                     |
| `data/guide.lua`   | Tarjetas de la pestaña de guía.                                                                       |

### Regiones

| Campo      | Qué hace                                                                                                                                                                                                         |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`       | Número estable de la región. La base de datos lo guarda; no lo reutilices ni lo renumeres.                                                                                                                       |
| `label`    | Clave de locale con el nombre de la región.                                                                                                                                                                      |
| `minLevel` | Nivel que necesitan todos los miembros de la tripulación.                                                                                                                                                        |
| `reward`   | `{ money, xp }` por miembro, antes de aplicar `reward.mode`.                                                                                                                                                     |
| `tasks`    | Cantidad de cada tipo de reparación, al azar entre `min` y `max` y con tope en los puntos disponibles. Tipos: `trafo`, `panel`, `lamp`, `junction`, `pole`. Un `junction` trae su transformador y sus semáforos. |
| `spawns`   | Puntos de salida de los camiones (`vec4`), en orden. El servidor usa los primeros que estén libres.                                                                                                              |
| `deliver`  | Punto de entrega de los camiones (`vec3`).                                                                                                                                                                       |

### Tareas diarias

Cada entrada de `data/daily.lua` tiene un `id`, un `label`, un `kind`, un `goal` y la `xp` y el `money` que se pagan al completarla. `resetHours` son las horas entre reinicios, contadas desde el último reinicio de cada jugador.

| `kind`      | Cuenta                                          |
| ----------- | ----------------------------------------------- |
| `'repairs'` | Reparaciones hechas por el jugador              |
| `'runs'`    | Trabajos entregados                             |
| `'money'`   | Dinero cobrado al entregar                      |
| `'team'`    | Trabajos entregados en tripulación de dos o más |

## Cambios habituales

### Limitar el trabajo a una profesión

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

```lua
job = { 'electrician' },
```

{% endcode %}

### Usar la plataforma también en las farolas

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

```lua
rigs = {
    lampRig = 'lift',
    poleRig = 'lift',
    -- ...
},
```

{% endcode %}

### Pagar el premio completo a cada miembro

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

```lua
reward = { mode = 'flat', teamMultiplier = 0.64, items = {} },
```

{% endcode %}

### Dar un ítem al cobrar

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

```lua
reward = {
    mode = 'team',
    teamMultiplier = 0.64,
    items = {
        { item = 'water', count = 1, chance = 50 },
    },
},
```

{% endcode %}

### Cambiar los textos

Los nombres de las regiones, las notificaciones y los textos de la interfaz están en `locales/en.json` y `locales/es.json`. Edita el valor, nunca la clave.


---

# 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/trabajos/cuxial-electrician/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.
