# Configuration

## Guide

The `config.lua` file controls all aspects of the money washing system. This guide explains each section and how to customize them.

### Basic Settings

```lua
-- Language setting (available: 'en', 'cz')
lang = 'en',
```

**Available Languages:**

* `'en'` - English
* `'cz'` - Czech

### Money & Item Configuration

```lua
-- Item given when counting money is completed
-- Set to false to give cash directly, or specify item name like 'cash'
money_item = false,

-- Dirty money item required for money rain at strip clubs
dirtymoney_item = 'markedbills',

-- Maximum amount taken per money rain action
dirtymoney_drop_limit = 10000,

-- Cash bag item given when collecting processed money
cashbag_item = 'cashbag',
```

#### Options:

* **money\_item**: `false` = direct cash, `'itemname'` = give specific item
* **dirtymoney\_item**: Item players use for money rain (should match your server's dirty money item)
* **dirtymoney\_drop\_limit**: Prevents players from dropping massive amounts at once
* **cashbag\_item**: Item containing dirty money for counting

### Money Counting System

```lua
-- Maximum amount processed per counting session chunk
max_chunk_size = 50000,
```

Large cash bags are processed in chunks to create realistic counting time. Higher amounts = longer counting sessions.

### Money Rain System

```lua
-- Time in milliseconds before rain props reset/disappear
rain_level_reset = 900000, -- 15 minutes

-- Rain levels based on money amount - each level adds visual props
rain_levels = {
    { min_cash = 1000, model = `bkr_cash_scatter_02` },        -- Level 1
    { min_cash = 10000, model = `bkr_prop_bkr_cash_scatter_03` }, -- Level 2  
    { min_cash = 50000, model = `bkr_prop_bkr_cash_scatter_01` }, -- Level 3
    { min_cash = 100000, model = `ex_cash_pile_07` },            -- Level 4
},
```

#### How Rain Levels Work:

* Players throw money at strippers
* Money accumulates and creates visual props
* Higher amounts = more impressive props
* Props disappear after `rain_level_reset` time

### Tax System

```lua
-- Tax rates based on total money collected lifetime
-- Higher total collected = lower tax rate (loyalty discount)
levels = {
    { tax = 10, min_collect = 0 },          -- 10% tax for new players
    { tax = 9,  min_collect = 10000000 },   -- 9% tax after collecting 10M
    { tax = 8,  min_collect = 20000000 },   -- 8% tax after collecting 20M
    { tax = 7,  min_collect = 30000000 },   -- 7% tax after collecting 30M
    { tax = 6,  min_collect = 40000000 },   -- 6% tax after collecting 40M
    { tax = 5,  min_collect = 50000000 },   -- 5% tax after collecting 50M
    { tax = 4,  min_collect = 60000000 },   -- 4% tax after collecting 60M
    { tax = 3,  min_collect = 70000000 },   -- 3% tax after collecting 70M
    { tax = 2,  min_collect = 80000000 },   -- 2% tax after collecting 80M
    { tax = 1,  min_collect = 90000000 },   -- 1% tax after collecting 90M
    { tax = 0,  min_collect = 100000000 },  -- 0% tax after collecting 100M
},
```

#### Tax System Logic:

* New players start with 10% tax
* As lifetime collections increase, tax rate decreases
* Rewards loyal/high-volume customers
* Creates progression incentive

### Trap Phone & Contacts

```lua
phone_item = 'trapphone',

-- Available contact locations (system picks one randomly every server session)
contacts = {
    { 
        pos = vec4(776.1, 4183.99, 40.77, 87.87),
        model = `g_m_importexport_01`,
        name = 'Stanley Washburn',
        description = "(420) 555-0147",
    },
    -- ... more contacts
},
```

#### Contact System:

* One random contact is selected per server restart
* Players call contacts to get cash bag pickup locations
* NPC spawns at the selected location
* Easy to add new contact locations

### Map Detection & Locations

#### Strip Club Locations

```lua
maps = {
    strip_clubs = {
        -- Default vanilla strip club
        ["default"] = {
            locations = {
                { 
                    zone = { 
                        pos = vector4(113.46, -1288.39, 28.46, 30.0), 
                        qb_target = { width = 4.5, length = 2.9, distance = 1.0 },
                        ox_target = { size = vec3(1.0, 1.0, 1.0), distance = 1.0 },
                        distance = 3.0, -- for non target users
                        debug = true 
                    },
                    model = `s_f_y_stripper_02`, -- or false
                    npc_pos = vector4(113.16, -1287.94, 27.46, 250.0),
                    anim = { dict = "oddjobs@assassinate@multi@yachttarget@lapdance", name = "yacht_ld_f" },
                    prop_spawn = vector4(113.16, -1287.94, 27.46, 288.79)
                },
                -- ... more locations
            },
        },

        -- Custom map support
        ["Maps_Bella_Vanilla_qrixus_-_by_Ajna_Mods"] = {
            locations = {
                -- Custom positions for this map
            },
        },
    },
}
```

#### Money Counter Locations

```lua
counters = {
    -- Default money wash location
    ["default"] = {
        locations = {
            { 
                pos = vec4(1116.0, -3194.94, -40.59, 90.03),
                qb_target = { width = 0.5, length = 0.5, distance = 1.0 },
                ox_target = { size = vec3(0.5, 0.5, 0.5), distance = 1.0 },
                distance = 1.5, -- for non target users
                debug = true 
            },
            -- ... more counters
        }
    },

    -- Custom map support  
    ["tstudio_laundromat"] = {
        locations = {
            -- Custom positions for laundromat map
        },
    },
}
```

### Adding Custom Maps

#### 1. Find the Map Resource Name

Check your server's resources folder for the exact map name.

#### 2. Add Map Configuration

```lua
["your_map_name"] = {
    locations = {
        {
            zone = { 
                pos = vector4(x, y, z, heading),
                qb_target = { width = 2.0, length = 2.0, distance = 1.0 },
                ox_target = { size = vec3(1.0, 1.0, 1.0), distance = 1.0 },
                distance = 2.0,
                debug = true 
            },
            
            model = `ped_model_hash`, -- or false
            npc_pos = vector4(x, y, z, heading),
            anim = { dict = "anim_dict", name = "anim_name" },
            prop_spawn = vector4(x, y, z, heading)
        }
    }
}
```

#### 3. Test Configuration

Enable `debug = true` to see interaction zones in-game and adjust positions as needed.
