# Config

```lua
Config = {}

Config.Framework = 'esx' -- 'esx' | 'qb'
Config.NotificationType = 'ox' -- 'ox' | 'esx' | 'qb' | 'mythic'
Config.Locale = 'en' -- 'en' | 'fi'
Config.ImagePath = 'nui://ox_inventory/web/images' -- path for images used in UI (for QB: nui://qb-inventory/html/images) (for ox_inventory: nui://ox_inventory/web/images)

Config.Inventory = 'default' -- 'default' | 'ox'
Config.UseOxLib = false -- false | true, remember to add " shared_script '@ox_lib/init.lua' " to fxmanifest.lua if set to true
Config.UseOxTarget = false -- false | true

Config.Controls = {
    interact = 38, -- E
    remove = 246, -- Y
}

Config.PoliceJobs = {
    police = true,
    sheriff = true,
}

Config.Anims = {
    place = {
        dict = 'weapons@first_person@aim_rng@generic@projectile@sticky_bomb@',
        name = 'plant_floor',
        duration = 1000,
    },
    remove = {
        dict = 'weapons@first_person@aim_rng@generic@projectile@sticky_bomb@',
        name = 'plant_floor',
        duration = 1000,
    }
}

Config.EquipmentItems = {
    meth_oven = {
        item = 'meth_oven',
        equipmentType = 'oven',
        objects = {
            {
                model = `bkr_prop_meth_chiller_01a`,
                offset = vec3(0.0, 0.0, 0.0),
            },
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, -1.5, 0.0),
            }
        },
        cookTime = 10000,
        substanceModel = `prop_cs_script_bottle_01`,
        hammering = true,
        need = {name = 'liquid_meth', amount = 3},
        get = {name = 'meth', amount = 1},
    },
    coke_oven = {
        item = 'coke_oven',
        equipmentType = 'oven',
        objects = {
            {
                model = `tr_prop_meth_chiller_01a`,
                offset = vec3(0.0, 0.0, 0.0),
            },
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, -1.5, 0.0),
            }
        },
        cookTime = 10000,
        substanceModel = `bkr_prop_coke_powder_02`,
        need = {name = 'coke_base', amount = 3},
        get = {name = 'cocaine', amount = 1},
    },
    meth_cooking = {
        item = 'meth_cooking_table',
        equipmentType = 'meth_cooking',
        objects = {
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        need = {
            {name = 'pseudo', amount = 1, model = 'prop_cs_pills', interactType = 'move'},
            {name = 'phos', amount = 1, model = 'xm3_prop_xm3_bottle_pills_01a', interactType = 'rotate'},
            {name = 'acid', amount = 1, model = 'prop_cs_script_bottle_01', interactType = 'rotate'},
        },
        get = {
            {name = 'liquid_meth', amount = 1}
        },
    },
    mixer = {
        item = 'mixer',
        equipmentType = 'mixer',
        objects = {
            {
                model = `tr_prop_meth_bigbag_03a`,
                offset = vec3(0.0, 0.0, 0.82),
            },
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        recipes = {
            {
                items = {
                    {name = 'meth', amount = 1, model = `p_meth_bag_01_s`},
                    {name = 'gasoline', amount = 1, model = `prop_cs_petrol_can`},
                },
                result = {
                    item = 'explosive_meth',
                    amount = 1,
                }
            },
        }
    },
    bagging_table = {
        item = 'bagging_table',
        equipmentType = 'bagging',
        objects = {
            {
                model = `bkr_prop_weed_table_01b`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        recipes = {
            {
                items = {
                    {name = 'weed', amount = 1, model = `bkr_prop_weed_bud_01b`},
                    {name = 'baggy', amount = 1, model = `sf_prop_sf_bag_weed_open_01a`},
                },
                result = {
                    item = 'bagged_weed',
                    amount = 1,
                }
            },
            {
                items = {
                    {name = 'meth', amount = 1, model = `prop_cs_pebble`},
                    {name = 'baggy', amount = 1, model = `bkr_prop_meth_openbag_01a_frag_`},
                },
                result = {
                    item = 'bagged_meth',
                    amount = 1,
                }
            },
        }
    },
    cauldron = {
        item = 'cauldron',
        equipmentType = 'cauldron',
        objects = {
            {
                model = `prop_kitch_pot_huge`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        need = {
            {name = 'coca_leaf', amount = 3, model = 'bkr_prop_weed_leaf_01a'},
        },
        get = {
            {name = 'coke_base', amount = 1}
        },
    },
    press = {
        item = 'press',
        equipmentType = 'press',
        objects = {
            {
                model = `bkr_prop_coke_press_01aa`,
                offset = vec3(0.0, 0.0, 0.0),
            }
        },
        cokeBaseModel = `bkr_prop_coke_cut_02`,
        cokeBrickModel = `bkr_prop_coke_cutblock_01`,
        need = {
            {name = 'cocaine', amount = 10},
        },
        get = {
            {name = 'coke_brick', amount = 1}
        },
    },
}

-- Predefined locations for equipment
Config.EquipmentLocations = {
    --[[{
        coords = vec3(6.1368, -1810.5800, 25.3458),
        rotation = vec3(0.0, 0.0, 137.2),
        configIndex = 'meth_oven',
    },]]
}

Config.Selling = {
    interactionDistance = 2.5, -- Distance at which player can interact with NPCs to sell drugs
    minPolice = 1, -- Minimum number of police officers required to sell drugs
    policeChance = {
        success = 0,
        failure = 50,
    },
    items = {
        {
            name = 'bagged_weed',
            price = {min = 50, max = 150},
            maxAmount = 15,
            baseChance = 85,
        },
        {
            name = 'bagged_meth',
            price = {min = 30, max = 200},
            maxAmount = 15,
            baseChance = 85,
        },
        {
            name = 'coke_brick',
            price = {min = 100, max = 500},
            maxAmount = 5,
            baseChance = 85,
        },
        {
            name = 'cocaine',
            price = {min = 100, max = 500},
            maxAmount = 5,
            baseChance = 85,
        },
    },
    blip = {
        color = 1, -- https://docs.fivem.net/docs/game-references/blips/ (Scroll to the bottom)
        scale = 1.0, -- This needs to be a float (eg. 1.0, 1.2, 2.0)
        sprite = 140, -- https://docs.fivem.net/docs/game-references/blips/
        playSound = true -- Should there be a sound for the police when the blip shows up (true / false)
    }
}

-- RunningSpeedIncrease: Increases running speed.
-- InfiniteStamina: Grants infinite stamina.
-- HealthRegen: Gradually regenerates health.
-- ArmorBoost: Provides additional armor.
-- DrunkEffect: Simulates drunken behavior.
-- BlurredVision: Blurs the player's vision.
-- SuperJump: Allows the player to jump higher.
-- FocusEffect: Enhances focus with visual effects.
-- FogEffect: Adds a foggy visual effect.
-- ConfusionEffect: Causes disorientation.
-- CameraShake: Shakes the camera for a dramatic effect.
-- WhiteoutEffect: Simulates a whiteout visual effect.
-- IntenseEffect: Adds intense visual effects.
-- ExplosiveEffect: Creates an explosion at the player's location.

-- animation: 'pill' | 'blunt' | 'sniff'
Config.Drugs = {
    bagged_meth = {
        animation = 'pill',
        effects = {'RunningSpeedIncrease', 'InfiniteStamina', 'HealthRegen', 'ArmorBoost', 'CameraShake'}
    },
    explosive_meth = {
        animation = 'pill',
        effects = {'ExplosiveEffect'}
    },
    bagged_weed = {
        animation = 'blunt',
        effects = {'DrunkEffect', 'BlurredVision', 'FogEffect', 'WhiteoutEffect'}
    },
    cocaine = {
        animation = 'sniff',
        effects = {'SuperJump', 'FocusEffect', 'ConfusionEffect', 'IntenseEffect'}
    },
}

Config.EffectDurations = {
    RunningSpeedIncrease = 60000, -- 1 minute
    InfiniteStamina = 60000,
    HealthRegen = 60000,
    ArmorBoost = 60000,
    DrunkEffect = 60000,
    BlurredVision = 60000,
    SuperJump = 60000,
    FocusEffect = 60000,
    FogEffect = 60000,
    ConfusionEffect = 60000,
    CameraShake = 60000,
    WhiteoutEffect = 60000,
    IntenseEffect = 60000
}

Config.Shops = {
    {
        name = 'Chemical Store',
        coords = vec4(483.1584, -202.0399, 53.7879, 242.8231),
        ped = 's_m_y_robber_01',
        items = {
            {
                name = 'gasoline',
                price = 100,
                amount = 1,
            },
            {
                name = 'cannabis_seed',
                price = 100,
                amount = 1,
            },
            {
                name = 'coca_seed',
                price = 200,
                amount = 1,
            },
            {
                name = 'plant_pot',
                price = 10,
                amount = 1,
            },
            {
                name = 'fertilizer',
                price = 10,
                amount = 1,
            },
            {
                name = 'water_bottle',
                price = 10,
                amount = 1,
            },
        }
    },
    {
        name = 'Equipment Store',
        coords = vec4(-2019.6021, -357.7971, 48.1063, 57.4592),
        ped = 's_m_y_robber_01',
        items = {
            {
                name = 'meth_oven',
                price = 1000,
                amount = 1,
            },
            {
                name = 'coke_oven',
                price = 1000,
                amount = 1,
            },
            {
                name = 'mixer',
                price = 1000,
                amount = 1,
            },
            {
                name = 'bagging_table',
                price = 1000,
                amount = 1,
            },
            {
                name = 'cauldron',
                price = 1000,
                amount = 1,
            },
            {
                name = 'press',
                price = 1000,
                amount = 1,
            },
        }
    },
}

Config.Plants = {
    cannabis_seed = {
        item = 'cannabis_seed',
        potItem = 'plant_pot',
        stages = {
            {model = `bkr_prop_weed_01_small_01c`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_01_small_01a`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_med_01b`, time = 60 * 60, offset = vec3(0.0, 0.0, -1.5)},
            {model = `bkr_prop_weed_lrg_01b`, time = 60 * 500, offset = vec3(0.0, 0.0, -1.5)}, -- time for last stage will determine how long for plant to die 
        },
        yield = {-- chance is rolled for each item individually (so you can get multiple items)
            {item = 'weed', amount = {min = 3, max = 8}, chance = 100},
            {item = 'cannabis_seed', amount = {min = 0, max = 1}, chance = 50},
        }
    },
    coca_seed = {
        item = 'coca_seed',
        potItem = 'plant_pot',
        stages = {
            {model = `bkr_prop_weed_01_small_01c`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_01_small_01a`, time = 60 * 60, offset = vec3(0.0, 0.0, 1.0)},
            {model = `bkr_prop_weed_med_01b`, time = 60 * 60, offset = vec3(0.0, 0.0, -1.5)},
            {model = `bkr_prop_weed_lrg_01b`, time = 60 * 500, offset = vec3(0.0, 0.0, -1.5)},
        },
        yield = {-- chance is rolled for each item individually (so you can get multiple items)
            {item = 'coca_leaf', amount = {min = 3, max = 10}, chance = 100},
            {item = 'coca_seed', amount = {min = 0, max = 2}, chance = 50},
        }
    },
}

-- Plant management settings
Config.PlantSettings = {
    waterDecayRate = 0.2,    -- How much water decreases per minute (0-100 scale)
    fertilizerDecayRate = 0.1,  -- How much fertilizer decreases per minute (0-100 scale)
    updateInterval = 60000,   -- How often (in ms) to check and update plant resources
    waterItem = 'water_bottle',
    fertilizerItem = 'fertilizer',
}

Config.Lamps = {
    default_lamp = {
        item = 'default_lamp',
        model = `xm_prop_base_tripod_lampb`,
        growthMultiplier = 1.5, -- multiplier for growth speed
        offset = vec3(0.0, 0.0, 1.0), -- offset for lamp position
    },
}
```


---

# 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://tk-scripts.gitbook.io/docs/tk_drugs/config.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.
