> For the complete documentation index, see [llms.txt](https://docs.privalo.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.privalo.dev/scripts/essentials/comunitarias/config.md).

# CONFIG

#### 2.1 Ajustes base

| Clave          | Por defecto           | Descripción                                            |
| -------------- | --------------------- | ------------------------------------------------------ |
| `Framework`    | `'auto'`              | `esx` \| `qb` \| `qbox` \| `auto` (autodetección)      |
| `Locale`       | `'es'`                | `es` \| `en`                                           |
| `AdminGroup`   | `'admin'`             | Grupo permitido para el panel y los comandos           |
| `CommandName`  | `'comunitarias'`      | Comando rápido para enviar por chat                    |
| `MenuCommand`  | `'comunitariasadmin'` | Comando para abrir el panel NUI                        |
| `MenuKey`      | `nil`                 | Keybind sugerido (`'F6'`); pon `nil` para no registrar |
| `TaskDuration` | `9000`                | Duración (ms) de la barra por tarea                    |
| `DbTable`      | `'pv_comunitarias'`   | Nombre de la tabla SQL                                 |

#### 2.2 Apariencia in-world

| Clave         | Por defecto                     | Descripción                                         |
| ------------- | ------------------------------- | --------------------------------------------------- |
| `MarkerColor` | `{ r=77, g=190, b=255, a=160 }` | RGBA del cilindro de la tarea (celeste por defecto) |
| `ZonaSalida`  | `vec3(-539.98, -213.16, 37.65)` | Punto donde aparece al terminar la condena          |

#### 2.3 Zonas

Cada zona tiene:

| Clave      | Descripción                                              |
| ---------- | -------------------------------------------------------- |
| `enabled`  | `true`/`false` — si `false` no se elige al asignar       |
| `label`    | Nombre legible (aparece en la notificación de inicio)    |
| `centro`   | Punto central de la zona (`vec3`)                        |
| `radio`    | Radio máximo antes de que se le teletransporte de vuelta |
| `tareas[]` | Lista de tareas: `{ coords, label, icon, scenario }`     |

Ejemplo:

```lua
Config.Zonas = {
    ['richman'] = {
        enabled = true,
        label   = 'Richman Street',
        centro  = vec3(-1738.24, 158.61, 64.37),
        radio   = 45.0,
        tareas  = {
            { coords = vec3(-1740.89, 175.62, 64.37), label = 'Barrer escombros', icon = 'fas fa-broom', scenario = 'WORLD_HUMAN_JANITOR' },
            { coords = vec3(-1743.78, 152.49, 64.37), label = 'Recoger basura',   icon = 'fas fa-trash', scenario = 'PROP_HUMAN_BUM_BIN'  },
            -- …
        },
    },
    ['playa'] = { enabled = true, label = 'Playa Vespucci', centro = vec3(...), radio = 60.0, tareas = { … } },
}
```

Scenarios recomendados:

* `WORLD_HUMAN_JANITOR` — barre con escoba (prop nativo).
* `PROP_HUMAN_BUM_BIN` — hurga en un basurero.

Al asignar comunitarias se elige una zona **aleatoria** entre las `enabled = true` y queda guardada en BD, así al reloguear se mantiene la misma zona.

***

### 3. Uso in-game

#### 3.1 Panel admin (`/comunitariasadmin`)

Cabecera con **stats**: activos, completadas y asignadas.

**Toolbar**:

* Buscador por **nombre IC, citizenid o ID online**.
* Tabs **Cumpliendo** (los que tienen condena) y **Online** (todos los conectados).

**Cada fila** muestra: avatar (iniciales), nombre, citizenid, ID online / offline, restantes, asignadas + barra de progreso, admin que asignó, fecha, acciones.

**Acciones**:

* 🟠 **Asignar** (o el botón "+ Asignar comunitarias" arriba a la derecha): abre modal con autocompletado — escribes y aparecen los online con avatar; al clickar uno queda un chip con el nombre y el citizenid ya rellenado. Si escribes un **citizenid offline** también funciona.
* 🟡 **Editar**: sobreescribe la cantidad restante (útil para bajarla o subirla en mitad de la condena).
* 🔴 **Quitar**: elimina la condena con confirmación.

#### 3.2 Comando rápido

```
/comunitarias <id> <tareas>
```

Suma esa cantidad a la condena actual (o la crea si no tenía).

#### 3.3 Qué siente el jugador

Cuando le asignan comunitarias:

1. Es teletransportado al **centro** de la zona elegida.
2. Recibe notificación: *"Condena iniciada — Debes completar N trabajos (Playa Vespucci)"*.
3. Se marca el **primer punto en el GPS** (círculo celeste in-world).
4. Al acercarse: aparece **\[E] – Barrer escombros** con la animación real de barrer o hurgar en el basurero.
5. Al completar una tarea, avanza al siguiente punto automáticamente.
6. Si se aleja más del radio configurado, se le teletransporta al centro con la notificación *"¡Sin escape!"*.
7. Al terminar todas las tareas: teletransporte al `ZonaSalida` con *"Condena cumplida — Eres libre"*.

**Persistencia**: si se desconecta o el server reinicia, al volver se le reanuda la condena en la misma zona con las tareas restantes que le quedaban.


---

# 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.privalo.dev/scripts/essentials/comunitarias/config.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
