# Configuration

Complete configuration reference for the Multiplayer Plumber Job.

***

## Configuration Files

The script uses multiple configuration files located in the `config/` folder:

| File             | Purpose                                           |
| ---------------- | ------------------------------------------------- |
| `config.lua`     | Main configuration (framework, settings, rewards) |
| `coordinate.lua` | Location coordinates for all job areas            |
| `GetCore.lua`    | Framework detection (usually don't modify)        |

***

## Basic Settings

### Framework & Core

```lua
-- Framework Selection
-- Options: 'qb', 'oldqb', 'esx', 'oldesx', 'vrp', 'vrp2', 'standalone'
Config.Framework = 'qb'

-- Language (Available: 'en', 'tr', 'de', 'fr', 'pt', 'ru', 'ar')
Config.Locale = 'en'

-- Currency Display
Config.CurrencyUnit = '$'  -- Options: '$', '€', '₺'

-- Database Resource
Config.SQL = "oxmysql"  -- Options: 'oxmysql', 'mysql-async', 'ghmattimysql'
```

{% hint style="info" %}
**QBox Users:** QBox is fully compatible. Set `Config.Framework = 'qb'` for QBox servers.
{% endhint %}

***

## Inventory Settings

```lua
-- Inventory System (ignored in standalone mode)
Config.Inventory = "qb_inventory"
-- Options: 'qb_inventory', 'esx_inventory', 'ox_inventory', 'qs_inventory', 'tgiann-inventory'
```

***

## Interaction Settings

```lua
-- Interaction Handler
Config.InteractionHandler = 'drawtext'  -- Options: 'drawtext', 'ox-target'
```

***

## Job Settings

### Commands

```lua
Config.Command = {
    jobReset = "jobresetplumber",      -- Reset current job
    jobLeave = "jobleaveplumber",      -- Leave lobby
    openTutorial = "openTutorialplumber", -- Open tutorial menu
}
```

***

## Entity Optimization

```lua
-- Entity Optimization Settings
Config.EntityOptimization = {
    enabled = true,
    scanInterval = 5,     -- Scan interval in seconds
    scanDistance = 75.0,  -- Scan distance in meters
}
```

***

## Vehicle Settings

```lua
-- Plumbing Van
Config.Vehicle = "tolboru"

-- Vehicle Key System
Config.Vehiclekey = true

-- Remove Keys on Job End
Config.Removekeys = true
```

The script **auto-detects** your vehicle key system:

* qb-vehiclekeys
* qbx-vehiclekeys
* qs-vehiclekeys
* wasabi-carlock
* cd\_garage
* Renewed-Vehiclekeys

***

## Debug Settings

```lua
-- Debug Mode (shows console messages)
Config.Debug = false

-- Debug Commands (enables testing commands)
Config.DebugCommands = false
```

{% hint style="warning" %}
**Production Servers:** Always set `Config.Debug = false` and `Config.DebugCommands = false` for better performance!
{% endhint %}

***

## Region & Rewards

Configure work regions and their rewards:

```lua
['regionData'] = {
    {
        regionID = 1,
        regionInfo = {
            regionName = "Region 1",
            regionMinimumLevel = 0
        },
        regionAwards = {
            money = 5000,
            xp = 1000,
        },
    },
    {
        regionID = 2,
        regionInfo = {
            regionName = "Region 2",
            regionMinimumLevel = 2
        },
        regionAwards = {
            money = 7500,
            xp = 1500,
        },
    },
    -- Regions 3-6 with increasing rewards
}
```

***

## Task Configuration

Configure tasks per region:

```lua
['pipeRepair'] = {
    taskCount = 1,       -- Number of pipes to repair (bonus)
},
['pipeInsert'] = {
    taskCount = 1,       -- Number of pipes to install
},
['toiletUnclog'] = {
    taskCount = 2,       -- Number of toilets to unclog
},
['valveOpen'] = {
    taskCount = 2,       -- Number of valves to operate
},
['switchFix'] = {
    taskCount = 1,       -- Number of switches to fix (bonus)
},
```

***

## Prop Attachment System

The script uses a prop attachment system for pipes and valves:

```lua
Config.PropAttachment = {
    pipeModel = "prop_pipe_01",
    valveModel = "prop_valve_01",
    attachOffset = vector3(0.0, 0.0, 0.0),
    attachRotation = vector3(0.0, 0.0, 0.0),
}
```

***

## Level System

Configure XP required for each level (up to level 70):

```lua
Config.RequiredXP = {
    [1] = 1000,
    [2] = 1500,
    [3] = 2000,
    [4] = 2500,
    [5] = 3000,
    -- ... up to level 70
    [70] = 45500,
}
```

***

## Reconnection System

Configure player reconnection settings:

```lua
Config.Reconnection = {
    enabled = true,
    gracePeriodSeconds = 0,
    maxReconnectAttempts = 3,
    resetAttemptsAfterSeconds = 300,
    autoCleanupExpired = true,

    ownerTransfer = {
        enabled = true,
        allowRejoinAsMember = true,
        prioritizeByScore = true,
        minimumLobbyTime = 60,
    },
}
```

***

## UI Positions

Customize UI element positions:

```lua
Config.DefaultUIPositions = {
    teamList = { top = '77.22vh', left = '85.94vw' },
    scoreList = { top = '2.64vh', left = '1.61vw' },
    inviteSide = { top = '2.85vh', left = '73.07vw' },
    notificationDiv = { top = '40.48vh', left = '81.54vw' },
    keyInfoSide = { top = '50%', right = '2.0833vw' },
}
```

{% hint style="info" %}
Players can also adjust UI positions in-game through the settings menu!
{% endhint %}

***

## Need Help?

{% hint style="info" %}
Having configuration issues? Join our [Discord server](https://discord.gg/tworst) and open a support ticket.
{% endhint %}


---

# Agent Instructions: 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:

```
GET https://docs.tworst.com/scripts/plumber-job/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
