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
-- Language setting (available: 'en', 'cz')
lang = 'en',
Available Languages:
'en'
- English'cz'
- Czech
Money & Item Configuration
-- 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 itemdirtymoney_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
-- 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
-- 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
-- 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
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
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
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
["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.
Last updated