> 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-gardener/configuration.md).

# Configuración

Todas las opciones de Cuxial Gardener en shared/config.lua y los archivos de datos editables.

Todos los ajustes están en `shared/config.lua`. Las regiones, las tareas diarias, los niveles y la ropa están en `data/`. Reinicia el recurso después de cualquier cambio.

{% hint style="info" %}
La posición del NPC, los puntos de salida de los camiones, el punto de entrega y las regiones que vienen en los archivos son ejemplos. Cámbialos para que encajen con tu mapa.
{% endhint %}

## General

| Opción               | Tipo            | Por defecto                 | Qué hace                                                                                                                                                    |
| -------------------- | --------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `debug`              | boolean         | `false`                     | Muestra trazas de depuración en la consola. También se activa con `setr cuxial_gardener_debug 1`. El comando `fast` solo funciona con la depuración activa. |
| `ui.accent`          | string          | configurable                | Color de acento del panel, en hexadecimal.                                                                                                                  |
| `ui.currency.symbol` | string          | `'$'`                       | Símbolo de moneda que muestra el panel.                                                                                                                     |
| `ui.currency.locale` | string          | `'en-US'`                   | Formato numérico de las cantidades (`'en-US'`, `'es-ES'`...).                                                                                               |
| `logs.convar`        | string          | `'cuxial_gardener_webhook'` | Nombre de la convar que guarda el webhook de Discord. Con la convar vacía no se envía nada.                                                                 |
| `admin.auditDays`    | number          | `60`                        | Días que se conservan las filas de auditoría. Las más antiguas se borran una vez al día.                                                                    |
| `account`            | string          | `'bank'`                    | Cuenta que recibe los pagos del trabajo y los premios diarios (`'bank'`, `'cash'`).                                                                         |
| `job`                | string \| table | `'all'`                     | Quién puede hacer el trabajo. `'all'` para todos, el nombre de un trabajo, o una lista como `{ 'gardener' }`.                                               |

## NPC

Bloque `npc`.

| Opción                            | Tipo    | Por defecto           | Qué hace                                                        |
| --------------------------------- | ------- | --------------------- | --------------------------------------------------------------- |
| `coords`                          | vector4 | ejemplo               | Posición y orientación del NPC del trabajo.                     |
| `model`                           | string  | `'s_m_m_gardener_01'` | Modelo del ped.                                                 |
| `distance`                        | number  | `2.0`                 | Metros desde los que aparece la opción de interacción.          |
| `menuDistance`                    | number  | `6.0`                 | El servidor rechaza abrir el panel más lejos de esta distancia. |
| `spawnDistance`                   | number  | `60.0`                | El NPC solo existe en un cliente dentro de este radio.          |
| `blip.enabled`                    | boolean | `true`                | Muestra el blip del trabajo en el mapa.                         |
| `blip.sprite` / `color` / `scale` | number  | `631` / `2` / `0.55`  | Aspecto del blip.                                               |

## Interacción y marcadores

Bloque `target`.

| Opción          | Tipo   | Por defecto | Qué hace                                                                                         |
| --------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------ |
| `distance`      | number | `2.0`       | Metros de las opciones sobre arbustos, flores y ramas en el suelo.                               |
| `trimDistance`  | number | `5.0`       | Metros de la opción «cortar rama» desde la escalera. 5 es el máximo.                             |
| `truckDistance` | number | `3.5`       | Metros de las opciones del camión y del cortacésped.                                             |
| `showDistance`  | number | `25.0`      | Distancia a la que se dibuja el marcador flotante sobre arbustos, ramas y flores. `0` lo oculta. |
| `marker`        | table  | ver archivo | Marcador flotante: `type`, `scale`, `height`, `color` (`{ r, g, b, a }`), `bob`, `rotate`.       |
| `ring`          | table  | ver archivo | Anillo dibujado en el suelo en cada hierba: `type`, `scale`, `color`.                            |
| `icons`         | table  | ver archivo | Icono de Font Awesome de cada opción de interacción.                                             |

## Blips

Bloque `blips`. Cada entrada lleva `sprite`, `color` y `scale`.

| Opción    | Por defecto          | Qué marca                    |
| --------- | -------------------- | ---------------------------- |
| `mow`     | `570` / `25` / `0.6` | Malas hierbas                |
| `prune`   | `570` / `24` / `0.6` | Arbustos                     |
| `trim`    | `836` / `52` / `0.8` | Ramas                        |
| `plant`   | `570` / `43` / `0.6` | Zona de flores               |
| `truck`   | `67` / `0` / `0.8`   | Camiones del trabajo         |
| `mower`   | `559` / `0` / `0.6`  | Un cortacésped desenganchado |
| `deliver` | `38` / `29` / `0.8`  | Punto de entrega             |

| Opción       | Tipo   | Por defecto | Qué hace                                                         |
| ------------ | ------ | ----------- | ---------------------------------------------------------------- |
| `areaAlpha`  | number | `90`        | Opacidad del radio de la zona de flores en el mapa.              |
| `routeColor` | number | `25`        | Color de la ruta del GPS.                                        |
| `routeMs`    | number | `5000`      | Cada cuánto se recalcula la ruta al punto pendiente más cercano. |

## Mundo

Bloque `world`.

| Opción         | Tipo   | Por defecto | Qué hace                                                                    |
| -------------- | ------ | ----------- | --------------------------------------------------------------------------- |
| `viewDistance` | number | `150.0`     | Radio en el que se crean hierbas, arbustos, ramas y flores en cada cliente. |
| `handDistance` | number | `50.0`      | Radio en el que se ve la herramienta que llevan otros jugadores.            |
| `fadeMs`       | number | `800`       | Fundido de un arbusto al podarlo y de una hierba al cortarla.               |
| `fallMs`       | number | `2500`      | Duración de la caída de una rama cortada.                                   |

## Tripulación

Bloque `crew`.

| Opción             | Tipo    | Por defecto | Qué hace                                                                                               |
| ------------------ | ------- | ----------- | ------------------------------------------------------------------------------------------------------ |
| `maxPlayers`       | number  | `4`         | Tamaño máximo de la tripulación.                                                                       |
| `inviteDistance`   | number  | `8.0`       | Metros entre quien invita y el invitado.                                                               |
| `inviteSeconds`    | number  | `60`        | Segundos hasta que caduca una invitación.                                                              |
| `reconnectSeconds` | number  | `180`       | Segundos que se guarda el puesto de un miembro que se desconecta durante un trabajo.                   |
| `splitRewards`     | boolean | `true`      | Permite al dueño de la tripulación repartir el dinero por porcentaje. `false` = todos cobran lo mismo. |

## Trabajo

Bloque `run`.

| Opción             | Tipo    | Por defecto | Qué hace                                                                                              |
| ------------------ | ------- | ----------- | ----------------------------------------------------------------------------------------------------- |
| `cooldownHours`    | number  | `0`         | Horas que un jugador debe esperar entre trabajos. `0` = sin espera.                                   |
| `exclusiveRegions` | boolean | `false`     | `true` = una sola tripulación por región a la vez.                                                    |
| `spawnFreeRadius`  | number  | `6.0`       | Metros que deben estar libres de vehículos alrededor de cada punto de salida.                         |
| `deathSweepMs`     | number  | `1000`      | Cada cuánto comprueba el servidor si hay jugadores muertos, que sueltan su herramienta y su escalera. |

## Vehículos

Bloque `vehicles`. Una tripulación recibe un camión con su cortacésped, o dos parejas a partir de `secondFrom` miembros.

| Opción           | Tipo    | Por defecto | Qué hace                                                                                                  |
| ---------------- | ------- | ----------- | --------------------------------------------------------------------------------------------------------- |
| `plate`          | string  | `'GARD'`    | Prefijo de la matrícula, hasta 4 caracteres. Se completa con el número de trabajo, una letra y un índice. |
| `fuel`           | number  | `100.0`     | Valor que se escribe en el state bag `fuel` de cada vehículo al crearlo.                                  |
| `keys`           | boolean | `true`      | Da las llaves mediante `cuxial_garages` cuando ese recurso está en marcha.                                |
| `secondFrom`     | number  | `2`         | Tamaño de tripulación a partir del cual sale un segundo camión con cortacésped.                           |
| `spawnTimeoutMs` | number  | `5000`      | Tiempo que espera el servidor a que aparezca un vehículo antes de cancelar el inicio.                     |
| `minEngine`      | number  | `-3900.0`   | Por debajo de esta salud de motor un vehículo cuenta como destruido.                                      |

## Herramientas y cortacésped

| Opción                | Tipo   | Por defecto | Qué hace                                                                                        |
| --------------------- | ------ | ----------- | ----------------------------------------------------------------------------------------------- |
| `tools.truckDistance` | number | `4.0`       | Metros entre el jugador y el camión para coger o devolver una herramienta y para guardar ramas. |
| `tools.takeMs`        | number | `3300`      | Barra de progreso al coger una herramienta.                                                     |
| `tools.returnMs`      | number | `2200`      | Barra de progreso al devolver una herramienta.                                                  |
| `mower.hitchDistance` | number | `4.0`       | Metros entre el cortacésped y su camión para engancharlo.                                       |
| `mower.footDistance`  | number | `3.0`       | Metros desde los que un jugador a pie puede engancharlo o desengancharlo.                       |
| `mow.radius`          | number | `1.5`       | Metros entre el cortacésped y una hierba que acepta el servidor.                                |
| `mow.maxHeight`       | number | `3.0`       | Diferencia de altura admitida entre el cortacésped y la hierba.                                 |
| `mow.minIntervalMs`   | number | `120`       | Tiempo mínimo entre dos cortes del mismo jugador.                                               |
| `mow.scanMs`          | number | `100`       | Cada cuánto busca hierbas el cliente mientras conduce.                                          |
| `mow.clientRadius`    | number | `0.8`       | Metros a los que el cliente pide cortar una hierba.                                             |
| `mow.sendMs`          | number | `150`       | Separación entre dos peticiones de corte del cliente.                                           |

## Acciones

Cada acción tiene una duración y las distancias que acepta el servidor.

| Opción                       | Tipo   | Por defecto    | Qué hace                                                                 |
| ---------------------------- | ------ | -------------- | ------------------------------------------------------------------------ |
| `work.marginMs`              | number | `500`          | Tolerancia sobre el tiempo mínimo de cada acción.                        |
| `work.lockSeconds`           | number | `120`          | Segundos que una acción y su objetivo quedan reservados para un jugador. |
| `prune.ms` / `distance`      | number | `4300` / `2.5` | Podar: barra de progreso y metros al arbusto.                            |
| `trim.ms`                    | number | `4300`         | Cortar rama: barra de progreso tras el minijuego.                        |
| `trim.reach`                 | number | `4.5`          | Metros entre la escalera y la rama.                                      |
| `trim.height`                | number | `2.0`          | Diferencia de altura entre la rama y el jugador subido a la escalera.    |
| `trim.riderSlack`            | number | `5.0`          | Tolerancia en metros entre el jugador y la escalera.                     |
| `water.ms` / `distance`      | number | `4000` / `2.5` | Regar: barra de progreso y metros a la flor.                             |
| `branch.distance` / `takeMs` | number | `2.5` / `900`  | Recoger una rama caída: metros y barra de progreso.                      |

### Plantar

Bloque `plant`.

| Opción          | Tipo    | Por defecto | Qué hace                                                                              |
| --------------- | ------- | ----------- | ------------------------------------------------------------------------------------- |
| `ms`            | number  | `15000`     | Barra de progreso de plantar.                                                         |
| `reach`         | number  | `2.0`       | Metros entre el jugador y el sitio elegido.                                           |
| `maxHeight`     | number  | `1.5`       | Diferencia de altura entre el jugador y el sitio.                                     |
| `spacing`       | number  | `0.8`       | Metros mínimos entre dos flores.                                                      |
| `truckClear`    | number  | `5.0`       | Metros que deben estar libres de camiones del trabajo para entrar en modo colocación. |
| `placeDistance` | number  | `1.9`       | Metros del jugador a la vista previa para que el sitio sea válido.                    |
| `allowUnknown`  | boolean | `true`      | `true` = cualquier superficie vale. `false` = solo las superficies de `materials`.    |
| `materials`     | table   | ver archivo | Hashes de superficie aceptados cuando `allowUnknown = false`.                         |

### Escalera

Bloque `ladder`.

| Opción          | Tipo   | Por defecto | Qué hace                                                                 |
| --------------- | ------ | ----------- | ------------------------------------------------------------------------ |
| `placeDistance` | number | `3.0`       | Metros entre el jugador y el pie del árbol para colocarla.               |
| `vehicleClear`  | number | `5.0`       | Metros que deben estar libres de vehículos del trabajo al pie del árbol. |
| `spacing`       | number | `1.0`       | Metros mínimos entre dos escaleras.                                      |
| `boardDistance` | number | `3.0`       | Metros para subir o para recogerla.                                      |
| `ms`            | number | `2500`      | Barra de progreso de colocar y recoger.                                  |
| `viewDistance`  | number | `75.0`      | Radio en el que se ven las escaleras.                                    |

## Entrega

Bloque `deliver`. El trabajo se paga cuando un miembro de la tripulación, al volante de un camión del trabajo, entrega en el punto de entrega de la región.

| Opción           | Tipo    | Por defecto | Qué hace                                                                                                                                            |
| ---------------- | ------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `radius`         | number  | `20.0`      | Metros alrededor del punto de entrega en los que deben estar los camiones.                                                                          |
| `requireAll`     | boolean | `true`      | `true` = todos los camiones deben estar enteros. `false` = un segundo camión destruido no bloquea la entrega. El camión principal se exige siempre. |
| `requireMowers`  | boolean | `false`     | `true` = todos los cortacéspedes deben estar enteros y, o enganchados, o dentro del radio.                                                          |
| `collectLadders` | boolean | `true`      | `true` = las escaleras que queden fuera se recogen solas al entregar. `false` = la tripulación debe devolverlas antes.                              |

## Premios

Bloque `reward`. Las cantidades base salen de cada región en `data/regions.lua`.

| Opción           | Tipo   | Por defecto | Qué hace                                                                                                                                                                                                       |
| ---------------- | ------ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `mode`           | string | `'team'`    | `'team'`: con más de un miembro, cada uno cobra el premio de la región × `teamMultiplier`. `'flat'`: cada uno cobra el premio íntegro. `'split'`: el premio × `teamMultiplier` se divide entre la tripulación. |
| `teamMultiplier` | number | `0.8`       | Multiplicador que se aplica al premio cuando la tripulación tiene más de un miembro.                                                                                                                           |
| `bonusMoney`     | number | `0`         | Dinero extra por cada tarea extra hecha por el jugador (regar, guardar ramas).                                                                                                                                 |
| `bonusXp`        | number | `0`         | XP extra por cada tarea extra hecha por el jugador.                                                                                                                                                            |
| `items`          | table  | `{}`        | Ítems que se dan al cobrar. Cada entrada: `{ item = 'nombre', count = 1, chance = 50 }`, con `chance` de 1 a 100.                                                                                              |

{% hint style="info" %}
Un jugador en solitario cobra siempre el premio íntegro de la región. La XP no se reparte nunca: cada miembro que cobra recibe la XP íntegra de la región.
{% endhint %}

## Ropa, perfil y panel

| Opción                     | Tipo   | Por defecto | Qué hace                                                                                                                                   |
| -------------------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `outfit.mode`              | string | `'none'`    | Conjunto de `data/outfits.lua` que se pone al empezar el trabajo: `'workwear'`, `'classic'` o `'none'` para conservar la ropa del jugador. |
| `leaderboard.size`         | number | `10`        | Filas del ranking.                                                                                                                         |
| `leaderboard.cacheSeconds` | number | `60`        | Segundos que se guarda en caché el ranking.                                                                                                |
| `history.size`             | number | `10`        | Trabajos que muestra el historial personal.                                                                                                |
| `profile.flushMs`          | number | `30000`     | Cada cuánto se guardan la XP y el progreso diario. El dinero se paga al momento.                                                           |
| `tips.seconds`             | number | `12`        | Segundos que una pista de primera vez queda en pantalla.                                                                                   |
| `finish.seconds`           | number | `15`        | Segundos que el resumen final queda 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-gardener/commands.md) | Nombre del comando. `false` lo desactiva.                                   |
| `commands.<id>.restricted` | string          | `'group.admin'` en `list`, `close` y `fast`                      | Grupo que puede usar el comando.                                            |
| `keys`                     | table           | ver [Comandos](/scripts/es/trabajos/cuxial-gardener/commands.md) | Teclas por defecto. Cada jugador puede cambiarlas en los ajustes del juego. |

## Archivos de datos

| Archivo                                                                     | Qué se edita ahí                                                                                           |
| --------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
| `data/regions.lua`                                                          | Regiones: nivel mínimo, premio, cantidades de tareas, puntos de salida, punto de entrega y zona de flores. |
| `data/points.lua`                                                           | Coordenadas de hierbas, arbustos y árboles con sus ramas, por región.                                      |
| `data/daily.lua`                                                            | Tareas diarias y cada cuánto se reinician.                                                                 |
| `data/levels.lua`                                                           | XP necesaria para cada nivel.                                                                              |
| `data/outfits.lua`                                                          | Ropa de trabajo por modo y sexo.                                                                           |
| `data/games.lua`                                                            | Dificultad del minijuego de las ramas.                                                                     |
| `data/guide.lua`                                                            | Tarjetas de la pestaña de guía.                                                                            |
| `data/models.lua`, `data/tools.lua`, `data/vehicles.lua`, `data/ladder.lua` | Modelos, posiciones de enganche y animaciones. Rara vez hay que tocarlos.                                  |

### Regiones

Cada entrada de `data/regions.lua`:

| Campo               | Tipo       | Qué hace                                                                                                                                                                  |
| ------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                | number     | Número estable. La base de datos lo guarda, así que no reutilices ni renumeres los ids.                                                                                   |
| `label`             | string     | Clave de idioma con el nombre (`region_*` en `locales/*.json`).                                                                                                           |
| `minLevel`          | number     | Nivel mínimo de **todos** los miembros de la tripulación.                                                                                                                 |
| `reward`            | table      | `{ money, xp }` por miembro.                                                                                                                                              |
| `tasks`             | table      | Una entrada por tarea (`mow`, `prune`, `trim`, `plant`) con `min` y `max`. La cantidad es aleatoria entre ambos, con tope en los puntos disponibles en `data/points.lua`. |
| `trucks` / `mowers` | vector4\[] | Puntos de salida de cada camión y de su cortacésped, en orden.                                                                                                            |
| `deliver`           | vector3    | Punto de entrega de los camiones.                                                                                                                                         |
| `flowers`           | table      | Zona de flores: `{ center, radius }`.                                                                                                                                     |

### Tareas diarias

`data/daily.lua` tiene `resetHours` (por defecto `24`, contadas desde el último reinicio del jugador) y una lista de tareas:

| Campo          | Qué hace                                                                                                                                                               |
| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`           | Clave estable que se guarda en la base de datos.                                                                                                                       |
| `label`        | Clave de idioma con el nombre.                                                                                                                                         |
| `kind`         | `'tasks'` (tareas propias hechas), `'runs'` (trabajos entregados), `'money'` (dinero ganado al entregar) o `'team'` (trabajos entregados en tripulación de dos o más). |
| `goal`         | Cantidad a alcanzar.                                                                                                                                                   |
| `xp` / `money` | Premio al completarla. El dinero va a `account`.                                                                                                                       |

### Niveles

`data/levels.lua` contiene `required`, la XP necesaria para pasar de cada nivel al siguiente. Los jugadores empiezan en el nivel 1 y el nivel máximo es el número de entradas más uno.

### Ropa

Cada modo de `data/outfits.lua` tiene un conjunto `male` y otro `female` con `components` (`{ componente, drawable, textura }`) y `props` (`{ prop, drawable, textura }`; drawable `-1` lo quita). `snapshot` indica qué se guarda antes de cambiar y se restaura al acabar el trabajo.

{% hint style="warning" %}
Los números de drawable dependen de los packs de ropa de cada servidor. Revisa los conjuntos en el juego y sustitúyelos por los tuyos.
{% endhint %}

## Cambios habituales

**Limitar el trabajo a un trabajo del framework**

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

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

{% endcode %}

**Pagar en efectivo y añadir una espera**

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

```lua
account = 'cash',

run = {
    cooldownHours = 1,
    exclusiveRegions = false,
    spawnFreeRadius = 6.0,
    deathSweepMs = 1000,
},
```

{% endcode %}

**Dividir un premio entre la tripulación y añadir un ítem**

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

```lua
reward = {
    mode = 'split',
    teamMultiplier = 1.0,
    bonusMoney = 25,
    bonusXp = 10,
    items = { { item = 'water', count = 1, chance = 50 } },
},
```

{% endcode %}

**Poner la ropa de trabajo**

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

```lua
outfit = { mode = 'workwear' },
```

{% endcode %}

**Mover el NPC**

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

```lua
npc = {
    coords = vec4(0.0, 0.0, 0.0, 0.0), -- tu posición y orientación
    -- conserva el resto del bloque
},
```

{% endcode %}

Cuando muevas el NPC, mueve también `trucks`, `mowers` y `deliver` en `data/regions.lua` para que los vehículos aparezcan a su lado.


---

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