> For the complete documentation index, see [llms.txt](https://izzyshop-1.gitbook.io/izzyshop-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://izzyshop-1.gitbook.io/izzyshop-docs/izzyshop-resources/izzy-cleaner/configuration.md).

# Configuration

{% hint style="info" %}
Compatible with ESX, QBCore, and QBox. Supports MySQL persistence and configurable task flow.
{% endhint %}

### Framework <a href="#izzy-cleaner-framework" id="izzy-cleaner-framework"></a>

```lua
Config.Framework = 'auto'
Config.Job = 'cleaner'
Config.RequireJob = false
Config.UseTarget = false
Config.InteractDistance = 2.0
Config.InteractKey = 38
```

### Language and Translation <a href="#izzy-cleaner-language" id="izzy-cleaner-language"></a>

All player-facing text lives in `Config.Lang`. You can translate by updating values.

```lua
Config.Lang = {
  enter_building = '[E] Enter Building',
  exit_building = '[E] Exit Building',
  task_completed = 'Task completed! +$%s | +%s XP',
  spot_cleaned = 'Spot cleaned! (%s/%s)',
  entered_building = 'You entered the building. Start cleaning! (%s spots)'
}
```

### Level System <a href="#izzy-cleaner-level-system" id="izzy-cleaner-level-system"></a>

Players earn XP by completing tasks. Level is recalculated server-side after each completion.

```lua
Config.Levels = {
  [1] = { xpRequired = 0, label = 'Rookie' },
  [2] = { xpRequired = 400, label = 'Apprentice' },
  [3] = { xpRequired = 1000, label = 'Cleaner' },
  [4] = { xpRequired = 2200, label = 'Professional' },
  [5] = { xpRequired = 4500, label = 'Master' }
}
```

### Clock-In Point <a href="#izzy-cleaner-clock-in" id="izzy-cleaner-clock-in"></a>

```lua
Config.ClockIn = {
  coords = vector3(218.1082, -1391.5864, 30.5875),
  heading = 318.1066,
  label = '[E] Cleaning Job',
  npc = { enabled = true, model = 'cs_nigel' },
  blip = { enabled = true, sprite = 569, color = 47, scale = 0.7, label = 'Cleaning Job' }
}
```

### Tasks <a href="#izzy-cleaner-tasks" id="izzy-cleaner-tasks"></a>

Each entry in `Config.Tasks` is a card in the dashboard.

```lua
{
  id = 'my_task',
  label = 'My Task',
  description = 'Clean the place up.',
  image = 'https://...',
  difficulty = 'entry',
  requiredLevel = 1,
  reward = { money = 1000, xp = 90 },
  cooldown = 240,
  points = { ... }
}
```

### Points <a href="#izzy-cleaner-points" id="izzy-cleaner-points"></a>

```lua
{
  id = 'my_task_spot_1',
  coords = vec3(x, y, z),
  heading = 90.0,
  minigame = 'recycle',
  difficulty = 'entry',
  requiredScore = 3,
  label = '[E] Pick Up Trash',
  prop = 'prop_rub_litter_01',
  propOffset = vec3(0.0, 1.0, -1.0),
  propRotation = vec3(0.0, 0.0, 0.0),
  animation = { dict = 'anim@gangops@facility@servers@bodysearch@', anim = 'player_search', flag = 49 }
}
```

### Minigames <a href="#izzy-cleaner-minigames" id="izzy-cleaner-minigames"></a>

| Property             | Description                                              |
| -------------------- | -------------------------------------------------------- |
| **Recycle Rush**     | Sort falling waste into matching bins before timer ends. |
| **Glass Rescue**     | Drag a dirty pane onto the clean window area.            |
| **Chemist's Choice** | Pick the matching chemical and clean the stain.          |
| **Seek the Pattern** | Follow node order correctly.                             |

### IPL Tasks <a href="#izzy-cleaner-ipl" id="izzy-cleaner-ipl"></a>

For interior tasks, use `type = 'ipl'` with `enter`, `inside`, and `exit` coordinates.

{% hint style="info" %}
**Note :** If a player leaves early, the task is cancelled and no reward is granted.
{% endhint %}

### Database <a href="#izzy-cleaner-database" id="izzy-cleaner-database"></a>

```lua
CREATE TABLE IF NOT EXISTS izzy_cleaner (
  identifier VARCHAR(60) NOT NULL,
  xp INT DEFAULT 0,
  level INT DEFAULT 1,
  cooldowns LONGTEXT DEFAULT '{}',
  PRIMARY KEY (identifier)
);
```

### File Structure <a href="#izzy-cleaner-file-structure" id="izzy-cleaner-file-structure"></a>

```lua
izzy-cleaner/
|-- client/main.lua
|-- server/main.lua
|-- shared/config.lua
|-- shared/framework.lua
|-- web/src
|-- web/build
`-- fxmanifest.lua
```


---

# 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://izzyshop-1.gitbook.io/izzyshop-docs/izzyshop-resources/izzy-cleaner/configuration.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.
