> For the complete documentation index, see [llms.txt](https://tk-scripts.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tk-scripts.gitbook.io/docs/tk_drugs/config.md).

# Config

Every option in the Drugs config.lua for a FiveM server, with its default and what it changes.

Times are in milliseconds unless the option says otherwise.

## Framework and integrations

| Option                    | Default                                  | What it does                                                                                                                                                          |
| ------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Config.Framework`        | `'esx'`                                  | `'esx'` or `'qb'`. Qbox uses `'qb'`.                                                                                                                                  |
| `Config.NotificationType` | `'esx'`                                  | `'esx'`, `'qb'`, `'ox'` or `'mythic'`. `'ox'` needs ox\_lib loaded in `fxmanifest.lua`. Other systems go in `Notify` (see [Editable functions](#editable-functions)). |
| `Config.Locale`           | `'en'`                                   | Language file from `locales/`: `'en'` or `'fi'`.                                                                                                                      |
| `Config.ImagePath`        | `'nui://ox_inventory/web/images/%s.png'` | Item images in the menus; `%s` is the item name.                                                                                                                      |
| `Config.DebugMode`        | `false`                                  | Prints debug lines to the F8 and server consoles.                                                                                                                     |
| `Config.Inventory`        | `'default'`                              | `'ox'` uses ox\_inventory, `'qs'` uses qs-inventory, `'default'` uses the framework's item functions.                                                                 |
| `Config.Target`           | `'none'`                                 | `'ox'` uses ox\_target, `'qb'` uses qb-target, `'none'` shows key prompts.                                                                                            |
| `Config.Dispatch`         | `''`                                     | `'tk'` sends police alerts to tk\_dispatch, `'cd'` to cd\_dispatch. Any other value sends the built-in alert to `Config.PoliceJobs`.                                  |
| `Config.UseOxLib`         | `false`                                  | Shows key prompts in the ox\_lib text UI instead of 3D text. Needs `'@ox_lib/init.lua'` uncommented in `fxmanifest.lua`.                                              |

## Admin menu

| Option                | Default                      | What it does                                                                                  |
| --------------------- | ---------------------------- | --------------------------------------------------------------------------------------------- |
| `Config.AdminCommand` | `'drugsadminmenu'`           | Command that opens the admin menu. See [Commands](/docs/tk_drugs/commands.md#drugsadminmenu). |
| `Config.AdminGroups`  | `{admin = true, god = true}` | Framework groups that count as admins.                                                        |

## Interface

| Option                    | Default  | What it does                                                                                               |
| ------------------------- | -------- | ---------------------------------------------------------------------------------------------------------- |
| `Config.UISettings.color` | `'blue'` | Primary colour: `'default'` or a colour name listed beside the option, for example `'red'` or `'emerald'`. |
| `Config.UISettings.shade` | `6`      | Shade, 1 (lightest) to 9 (darkest).                                                                        |
| `Config.UISettings.theme` | `'dark'` | `'dark'` or `'light'`.                                                                                     |

## Controls

`Config.Controls` uses [FiveM control IDs](https://docs.fivem.net/docs/game-references/controls/).

| Option              | Default   | What it does                                                                  |
| ------------------- | --------- | ----------------------------------------------------------------------------- |
| `interact`          | `38` (E)  | Uses equipment, plants, shops, labs and NPCs.                                 |
| `secondaryInteract` | `47` (G)  | Manages the workers on equipment in a lab, and starts a pickpocket.           |
| `remove`            | `246` (Y) | Picks up plants, equipment and boosters. Remove the line to turn pick-up off. |

## Police

| Option              | Default                           | What it does                                                                        |
| ------------------- | --------------------------------- | ----------------------------------------------------------------------------------- |
| `Config.PoliceJobs` | `{police = true, sheriff = true}` | Jobs counted for `Config.Selling.minPolice`, and the jobs that get built-in alerts. |

`Config.PoliceAlerts` has four alerts: `selling`, `pickpocketing`, `plugDelivery` and `drugMaking`.

| Field                       | What it does                                                                                                                                                                                                                                        |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `chance`                    | Percent chance of an alert. `selling` (`success = 0`, `failure = 50`) and `pickpocketing` (`success = 0`, `failure = 25`) roll after a success or a failure; `plugDelivery` is one number (`10`); `drugMaking` has one per equipment type, all `0`. |
| `title`, `code`, `priority` | Alert text in the dispatch.                                                                                                                                                                                                                         |
| `message`                   | Text of a built-in alert. In `selling`, the two `%s` are the seller's gender and the street.                                                                                                                                                        |
| `jobs`                      | Jobs that get the alert in tk\_dispatch or cd\_dispatch.                                                                                                                                                                                            |
| `blip`                      | `sprite`, `color`, `scale` and `playSound` of the alert blip.                                                                                                                                                                                       |

## Names

`Config.FirstNames` and `Config.LastNames` are combined into the names of NPC workers and Plug app customers.

## Placement

| Option                                      | Default                           | What it does                                                                                          |
| ------------------------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
| `Config.Anims.place`, `Config.Anims.remove` | `plant_floor`, 1000 ms            | Animation when a player places or picks up a plant, equipment or booster: `dict`, `name`, `duration`. |
| `Config.DisabledAreas`                      | none; an example is commented out | Areas where nothing can be placed: `coords` (`vec3`) and `radius`.                                    |
| `Config.DisablePtfx`                        | `false`                           | Turns off particle effects in the minigames.                                                          |
| `Config.ShowEquipmentName`                  | `false`                           | Shows the equipment name in the target option or prompt.                                              |
| `Config.UseLocalEntities`                   | `false`                           | Creates minigame props on the player's client only, without networking them.                          |
| `Config.PlaceOnlyInsideLabs`                | `false`                           | Equipment can be placed only inside a drug lab. Plants and boosters are not limited.                  |

## Equipment

`Config.EquipmentItems` holds one entry per piece of equipment. Its key is the config index that `Config.EquipmentLocations` and `Config.Boosters` refer to. The download has `meth_oven`, `coke_oven`, `meth_cooking`, `mixer`, `bagging_table`, `joint_roller_table`, `cauldron`, `press`, `heroin_cooking_table`, `lsd_table`, `drug_shelf`, `drying_rack` and `meth_chiller`.

| Field           | What it does                                                                                                                                                           |
| --------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `item`          | Usable item that places the equipment.                                                                                                                                 |
| `equipmentType` | Minigame or role: `'oven'`, `'meth_cooking'`, `'mixer'`, `'bagging'`, `'joint_roller'`, `'cauldron'`, `'press'`, `'syringe'`, `'dropper'`, `'shelf'` or `'processor'`. |
| `placement`     | Surface it goes on: `'floor'`, `'wall'`, `'ceiling'` or `'any'`.                                                                                                       |
| `objects`       | Props the equipment is built from: `model`, `offset`, optional `rotation` and `scale`.                                                                                 |
| `recipes`       | What the equipment makes. Shelves and processors have none.                                                                                                            |

A recipe takes its `need` items and gives its `get` items when the minigame ends:

```lua
{
    need = {
        {name = 'meth', amount = 1, model = `p_meth_bag_01_s`},
        {name = 'petrol_can', amount = 1, model = `prop_jerrycan_01a`},
    },
    get = {
        {name = 'explosive_meth', amount = 1}
    }
},
```

The other recipe fields (`interactType`, `interactionType`, `trayObjects`, `useCutting` and others) set how the minigame shows the items. To add a recipe, copy one from equipment of the same `equipmentType` and change the items.

Shelves (`drug_shelf`) list storable items in `allowedItems` with the `model` shown on the shelf and an optional `maxPerShelf`; without it the amount is unlimited. Processors (`drying_rack`, `meth_chiller`) turn one item into another over time: each entry in `items` has `need`, `get` and `time` (30 minutes by default). `objectOffsets` sets where the items appear on both.

`Config.EquipmentLocations` adds fixed equipment that exists from server start and cannot be picked up. The key is a name of your choice:

```lua
Config.EquipmentLocations = {
    oven_grove = {
        coords = vec3(6.1368, -1810.5800, 25.3458),
        rotation = vec3(0.0, 0.0, 137.2),
        configIndex = 'meth_oven',
    },
}
```

`configIndex` is a key of `Config.EquipmentItems`; an optional `bucket` sets the routing bucket (default `0`). Deleting an entry deletes that equipment at the next start.

## Labs

| Option                | Default                              | What it does                                                                                                                                                      |
| --------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Config.CleanUpIPL`   | `meth`, `weed` and `coke` all `true` | Removes the default props from that lab interior.                                                                                                                 |
| `Config.LabInteriors` | `meth`, `weed`, `coke`               | Interior per lab type: `label`, and `exit` (`vec4`), the spot inside where players arrive and leave.                                                              |
| `Config.Labs`         | 11 labs                              | Buyable labs: `entrance` (`vec4`), `labType`, a key of `Config.LabInteriors`, and an optional `price` that replaces `Config.PhoneSettings.labPrice` for that lab. |

A lab's ID is its place in `Config.Labs`, and lab number N uses routing bucket N. Add new labs at the end of the list: moving or removing an entry moves the owner and placed equipment to another entrance.

## Street selling

| Option                               | Default                                   | What it does                                                                                                                                     |
| ------------------------------------ | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Config.Selling.interactionDistance` | `2.5`                                     | Distance to an NPC for the sell option.                                                                                                          |
| `Config.Selling.minPolice`           | `0`                                       | Players with a `Config.PoliceJobs` job who must be online to sell.                                                                               |
| `Config.Selling.moneyType`           | `'money'`                                 | Account the seller is paid to through `SoldDrugs`, for street sales and Plug deals. On QBCore, `'money'` is cash and `'black_money'` is an item. |
| `Config.Selling.props`               | `prop_meth_bag_01`, `prop_anim_cash_note` | Drug and money props in the handover.                                                                                                            |
| `Config.Selling.items`               | 47 products                               | Items NPCs buy: `name`, `price` per unit (`min`, `max`), `maxAmount` per sale and `baseChance`.                                                  |

The sale chance starts near `baseChance` percent and falls toward half of it as the amount nears `maxAmount`. Each NPC buys once.

## Drugs and effects

Each key of `Config.Drugs` becomes a usable item:

| Field       | What it does                                                                                                 |
| ----------- | ------------------------------------------------------------------------------------------------------------ |
| `drugType`  | Addiction group shown in the addiction menu, for example `'Weed'`. Without it, the item builds no addiction. |
| `animation` | `'pill'`, `'blunt'`, `'sniff'`, `'syringe'` or `'bong'`.                                                     |
| `effects`   | Effects applied on use.                                                                                      |
| `debuffs`   | Effects applied while the player is addicted to that `drugType`.                                             |

The comment over `Config.Drugs` in `config.lua` explains each effect: `RunningSpeedIncrease`, `InfiniteStamina`, `HealthRegen`, `ArmorBoost`, `DrunkEffect`, `BlurredVision`, `SuperJump`, `FocusEffect`, `FogEffect`, `ConfusionEffect`, `CameraShake`, `WhiteoutEffect`, `IntenseEffect`, `ExplosiveEffect`, `Tremors`, `Nausea`, `Paranoia`, `Blur`, `Cravings`, `Stumble` and `GlitterBomb`. Any other name calls `DoCustomDrugEffect`.

| Option                                      | Default                | What it does                                                                                                                                     |
| ------------------------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Config.EffectDurations`                    | 60000 for most effects | Length of each effect. An effect not listed lasts 60000, a debuff not listed 30000. Using the drug again while the effect runs adds this length. |
| `Config.EffectAmounts.RunningSpeedIncrease` | `1.4`                  | Running speed multiplier.                                                                                                                        |
| `Config.EffectAmounts.HealthRegen`          | `5`                    | Health added every 2 seconds.                                                                                                                    |
| `Config.EffectAmounts.ArmorBoost`           | `25`                   | Armour added.                                                                                                                                    |

## Addiction

The options are in `Config.Addiction`.

| Option                            | Default                                     | What it does                                                                                    |
| --------------------------------- | ------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `command`                         | `'addiction'`                               | Command that opens the addiction menu. See [Commands](/docs/tk_drugs/commands.md#addiction).    |
| `incrementPerUse`                 | `5`                                         | Level added per use.                                                                            |
| `maxLevel`                        | `100`                                       | Highest level.                                                                                  |
| `saveInterval`                    | `60000`                                     | Time between database saves.                                                                    |
| `decay.perTick`, `decay.interval` | `1`, 1 hour                                 | Level lost per interval while the drug type is not used.                                        |
| `debuff.threshold`                | `30`                                        | Level from which debuffs start.                                                                 |
| `debuff.interval`                 | 20 to 60 minutes, `jitter = 0.2`            | Time between debuffs.                                                                           |
| `debuff.extraStrength`            | `1.5`                                       | At `maxLevel` a debuff lasts 1 + `extraStrength` times its normal length, 2.5 times by default. |
| `reliever.items`                  | `methadone` 30 min, `addiction_meds` 45 min | Usable items that pause debuffs of every drug type: `name`, `durationMs`, `animation`.          |

## Shops

`Config.Shops` has a General Store with seeds and ingredients and an Equipment Store with equipment and boosters.

| Field       | What it does                                                                                                                                        |
| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`      | Shop title.                                                                                                                                         |
| `coords`    | Position and heading (`vec4`).                                                                                                                      |
| `ped`       | Ped model at the shop. Leave it out to show a marker instead.                                                                                       |
| `moneyType` | Account the shop charges.                                                                                                                           |
| `items`     | `name` and `price` per unit, with an optional `description`. Players choose the amount in the cart; the `amount` field in the download is not read. |

## Plants

`Config.Plants` holds one entry per seed: `og_kush_seed`, `northern_lights_seed`, `dosidos_seed`, `acapulco_gold_seed` and `coca_seed`.

| Field                   | What it does                                                                                                                                                    |
| ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `item`                  | Usable seed item.                                                                                                                                               |
| `neededItems`           | Items the player must carry to plant: `name`, `amount`, and `remove = true` to take them. Default: one `plant_pot`.                                             |
| `budModel`, `leafModel` | Props in the harvest minigame.                                                                                                                                  |
| `harvestLeaves`         | Optional, commented out in `og_kush_seed`: where the leaves appear in the harvest minigame.                                                                     |
| `stages`                | Growth stages: `model`, `time` in seconds, `offset`. The first three stages take 3600 seconds each.                                                             |
| `yield`                 | Items from a harvest: `item`, `amount` (`min`, `max`) and `chance`, rolled for each item. The amount of the first item is what the player cuts in the minigame. |

The `time` of the last stage has no effect: the plant stays ready until it is harvested, or until its water or fertiliser runs out.

| Option                                                    | Default                      | What it does                                                                                       |
| --------------------------------------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------- |
| `Config.PlantSettings.maxPlantsPerPlayer`                 | `100`                        | Plants one player can have at once. `nil` removes the limit.                                       |
| `Config.PlantSettings.maxPlantsInArea`                    | commented out                | `{radius = 50.0, amount = 20}`: plants allowed within that radius of a new plant.                  |
| `Config.PlantSettings.waterDecayRate`                     | `0.2`                        | Water lost per minute, on a 0 to 100 scale.                                                        |
| `Config.PlantSettings.fertilizerDecayRate`                | `0.1`                        | Fertiliser lost per minute.                                                                        |
| `Config.PlantSettings.updateInterval`                     | `60000`                      | Time between growth and decay updates.                                                             |
| `Config.PlantSettings.water`, `.fertilizer`               | `water_bottle`, `fertilizer` | Item and amount used per watering or fertilising, and the prop shown. Each fills the level to 100. |
| `Config.PlantSettings.defaultWater`, `.defaultFertilizer` | `50`, `50`                   | Levels of a new plant.                                                                             |
| `Config.OnlineOnlyGrowth`                                 | `false`                      | Plants grow only while the player who planted them is online. Water and fertiliser keep dropping.  |

A plant dies when its water or fertiliser reaches 0, also while the server is off. With the defaults, an unwatered new plant dies after about 4 hours.

## Boosters

`Config.Boosters` has `default_lamp` for plants and `ac_unit` for the meth chiller and drying rack.

| Field              | Default (`default_lamp`)    | What it does                                                              |
| ------------------ | --------------------------- | ------------------------------------------------------------------------- |
| `item`             | `'default_lamp'`            | Usable item that places the booster.                                      |
| `model`, `offset`  | `xm_prop_base_tripod_lampb` | Booster prop.                                                             |
| `radius`           | `3.0`                       | Range in metres.                                                          |
| `speedMultiplier`  | `1.5`                       | Growth or processing speed inside the range.                              |
| `placement`        | `'floor'`                   | Surface; `ac_unit` uses `'wall'`.                                         |
| `allowedEquipment` | the five seed keys          | Keys of `Config.Plants` or `Config.EquipmentItems` the booster speeds up. |

## Pickpocketing

The options are in `Config.PickPocketing`.

| Option             | Default                       | What it does                                                                           |
| ------------------ | ----------------------------- | -------------------------------------------------------------------------------------- |
| `cells`            | `{min = 5, max = 5}`          | Cells in the pickpocket minigame per NPC.                                              |
| `itemsPerPed`      | `{min = 2, max = 4}`          | Cells that hold an item.                                                               |
| `arrowSpeed`       | `1.0`                         | Speed of the minigame arrow.                                                           |
| `cooldown`         | `60000`                       | Time between pickpockets per player. `0` means no wait.                                |
| `interactDistance` | `2.5`                         | Distance to the NPC in metres. `0` turns pickpocketing off.                            |
| `behindAngle`      | `90.0`                        | Width in degrees of the area behind the NPC where pickpocketing works.                 |
| `disabledModels`   | `{}`                          | Ped models that cannot be pickpocketed.                                                |
| `items`            | money and seeds, among others | Loot: `name`, `amount` (`min`, `max`), `chance`, and `difficulty` (smaller is easier). |

## Workers

The options are in `Config.WorkerSettings`.

| Option                               | Default                           | What it does                                                                     |
| ------------------------------------ | --------------------------------- | -------------------------------------------------------------------------------- |
| `tickInterval`                       | `1000`                            | Time between worker updates.                                                     |
| `walkSpeed`                          | `1.0`                             | Walking speed in the lab.                                                        |
| `speedMultipliers`                   | `{0.7, 0.85, 1.0, 1.25, 1.6}`     | Work speed of worker levels 1 to 5. Keep as many entries as `pool.speedWeights`. |
| `pickupDurationMs`, `dropDurationMs` | `1000`, `1000`                    | Time to pick up or put down an item.                                             |
| `maxPerLab`                          | `10`                              | Workers per lab.                                                                 |
| `maxHired`                           | `10`                              | Workers one player can hire across all labs.                                     |
| `pool.maxSize`                       | `10`                              | Workers offered for hire at once.                                                |
| `pool.refillInterval`                | 5 minutes                         | Time between new workers appearing in the Crew app.                              |
| `pool.availableExpirySeconds`        | 24 hours                          | Time an offered worker stays available, in seconds.                              |
| `pool.hireCost`                      | `{min = 2000, max = 12000}`       | Hiring price range.                                                              |
| `pool.speedWeights`                  | `{50, 28, 15, 5, 2}`              | How common each worker level is; higher is more common.                          |
| `processingTime`                     | 15000 to 30000 per equipment type | Time a worker takes per recipe; `default` covers types not listed.               |
| `pedModel`                           | four ped models                   | Worker ped models.                                                               |
| `idleAnim`, `workAnim`, `fetchAnim`  | a scenario and `mini@repair`      | Worker animations.                                                               |

## Fields

`Config.Fields` lists areas where mushrooms and rye ergot grow for players to pick. The download has one field.

| Field              | Default                                              | What it does                                                                                                       |
| ------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| `coords`, `radius` | `vec3(-2017.22, 1450.02, 276.13)`, `20.0`            | Centre and size of the field.                                                                                      |
| `maxActivePlants`  | `20`                                                 | Plants in the field at once. Picked plants grow back at the next refill, every 60 seconds.                         |
| `plants`           | `cubensis`, `liberty_cap`, `fly_agaric`, `rye_ergot` | `item`, `amount`, `chance` (how often this plant spawns compared with the others), `model`, `scale`, `textOffset`. |

The refill interval is `Config.FieldsSettings.respawnInterval`, in milliseconds. The download has no `Config.FieldsSettings`; add it to change the 60 seconds:

```lua
Config.FieldsSettings = {
    respawnInterval = 60000,
}
```

## Trap phone

The options are in `Config.PhoneSettings`.

| Option           | Default                 | What it does                                                                                                                                                |
| ---------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `item`           | `'trap_phone'`          | Usable item that opens the phone.                                                                                                                           |
| `apps`           | all `true`              | `listings` (buy labs), `crew` (hire workers), `plug` and `settings`. `false` hides that app.                                                                |
| `moneyAccount`   | `'bank'`                | Account for lab and worker purchases.                                                                                                                       |
| `labPrice`       | `50000`                 | Price of a lab.                                                                                                                                             |
| `sellPercentage` | `50`                    | Percent of the lab price returned when a player sells a lab. `nil` turns lab selling off.                                                                   |
| `maxOwnedLabs`   | `1`                     | Labs one player can own.                                                                                                                                    |
| `walkIn`         | 50 m, 15 m, 12 s, `1.0` | When a player hires a worker near the lab: `triggerDistance` to the entrance, `spawnDistance` of the worker, `durationSeconds` of the walk and `walkSpeed`. |

## Plug app

The options are in `Config.PlugApp`. `Config.DeliveryCoords` lists the delivery spots (`vec4`).

| Option                                   | Default                                        | What it does                                                                                                                             |
| ---------------------------------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `sellMode`                               | `'walkup'`                                     | `'walkup'`: the customer spawns near the player and walks up. `'delivery'`: the player goes to a spot from `Config.DeliveryCoords`.      |
| `moneyType`                              | `'money'`                                      | Not read. Plug sales pay through `Config.Selling.moneyType`.                                                                             |
| `cooldownMinutes`                        | `20`                                           | Minutes before a customer orders again.                                                                                                  |
| `interactionDistance`, `handoffDistance` | `3.0`, `2.5`                                   | Distances for talking to the customer and handing over.                                                                                  |
| `pedDespawnDelayMs`                      | `15000`                                        | Time before the customer ped leaves after a deal.                                                                                        |
| `walkupSpawnDistance`                    | `20.0`                                         | Spawn distance of a walk-up customer.                                                                                                    |
| `contacts.addChance`                     | `15`                                           | Percent chance per street sale that the NPC becomes a Plug contact.                                                                      |
| `contacts.max`                           | `10`                                           | Contacts per player.                                                                                                                     |
| `contacts.initial`                       | Marco                                          | Contacts every player starts with: `name`, `pedModel`, `rep`.                                                                            |
| `counter.maxRounds`                      | `3`                                            | Counter-offers a customer makes.                                                                                                         |
| `counter.delayMs`                        | 2500 to 5000                                   | Reply delay.                                                                                                                             |
| `delivery.spawnDelayMs`                  | 4000 to 8000                                   | Delay before the delivery spot is shown.                                                                                                 |
| `delivery.timeoutMinutes`                | `10`                                           | Minutes to finish a delivery.                                                                                                            |
| `rep.tiers`                              | Stranger, Acquaintance, Regular, Trusted, Plug | From `minRep`, the tier scales the most a customer buys (`maxAmountMultiplier`) and the price (`priceMultiplier`).                       |
| `rep.gainPerSale`                        | `5`                                            | Reputation per sale.                                                                                                                     |
| `pedModels`                              | 12 ped models                                  | Customer ped models.                                                                                                                     |
| `items`                                  | 29 products                                    | Items customers order: `name`, `maxAmount` per order, and `fairMin` and `fairMax`, the per-unit price range the customer considers fair. |
| `blip`                                   | sprite `280`, colour `2`, scale `0.9`          | Blip of the delivery spot.                                                                                                               |

## Editable functions

| File                                                 | Function                                                                                                                                                                                            | When it runs                                                        | What to put there                                                                              |
| ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| `client/main_editable.lua`                           | `Notify(text, notifyType)`                                                                                                                                                                          | The client shows a notification.                                    | Another notification system.                                                                   |
| `client/main_editable.lua`                           | `ShowTextUI`, `HideTextUI`, `Draw3DText`, `DisplayHelpText`                                                                                                                                         | A key prompt shows or hides.                                        | Another text UI.                                                                               |
| `client/main_editable.lua`                           | `AddEntityZone`, `AddGlobalPed`, `AddModelZone`, `AddBoxZone` and their remove functions                                                                                                            | Target options are added or removed.                                | Another target script.                                                                         |
| `client/main_editable.lua`                           | `CanSellDrugs(ped)`, `CanSellDrug(ped, itemName, amount)`                                                                                                                                           | The sell option shows; a player picks a drug.                       | Job, area or time rules for street selling. Return `false` to block.                           |
| `client/main_editable.lua`                           | `CanPlaceEquipment`, `CanPlacePlant`, `CanPlaceBooster`, `CanRemoveEquipment`, `CanRemovePlant`, `CanRemoveBooster`, `CanUseEquipment`, `CanOpenPlantMenu`, `CanOpenShop`, `CanAcceptPlugDrugOffer` | Before that action. `CanPlacePlant` runs every frame while placing. | Your own rules. Return `false` to block.                                                       |
| `client/main_editable.lua`                           | `GetPlayerDrugs()`, `GetShopItems(shopData)`                                                                                                                                                        | The sell menu or a shop opens.                                      | The drugs, prices or shop items shown.                                                         |
| `client/main_editable.lua`                           | `DoDrugSale(...)`, `CalculateSaleSuccessChance(drugName, amount)`                                                                                                                                   | A street sale is made.                                              | The handover animation; the sale chance formula.                                               |
| `client/main_editable.lua`                           | `AlertPolice(alertData)`                                                                                                                                                                            | A police alert fires.                                               | A dispatch script not in `Config.Dispatch`.                                                    |
| `client/main_editable.lua`                           | `DoCustomDrugEffect(effectName)`, `DrugConsumed(drugName, effects)`                                                                                                                                 | A drug is used.                                                     | Effects that are not built in; your own code after use.                                        |
| `client/main_editable.lua`                           | `SetPlayerInvisible()`, `SetPlayerVisible()`                                                                                                                                                        | The player is hidden or shown on their own screen.                  | Anticheat exceptions.                                                                          |
| `client/main_editable.lua`                           | `StartPlacingEquipment(data)`, `StopPlacingEquipment(data)`                                                                                                                                         | Placement starts or ends.                                           | Hide or show your HUD.                                                                         |
| `client/main_editable.lua`                           | `PlayShopPedVoiceLine`, `PlayAcceptSaleVoiceLine`, `PlayRejectSaleVoiceLine`, `PlayAlertPoliceVoiceLine`                                                                                            | A ped speaks.                                                       | Other voice lines.                                                                             |
| `server/main_editable.lua`                           | `Webhook(message)`                                                                                                                                                                                  | An action is logged.                                                | The body ships commented out: uncomment it and put your Discord webhook link in `webhookLink`. |
| `server/main_editable.lua`                           | `SoldDrugs(xPlayer, drugName, amount, price)`                                                                                                                                                       | A street sale is paid.                                              | A payment other than `AddAccountMoney`.                                                        |
| `server/main_editable.lua`                           | `CanUseDrug(xPlayer, drugName)`                                                                                                                                                                     | A player uses a drug item.                                          | Return `false` to block.                                                                       |
| `server/main_editable.lua`                           | `GiveRecipeItems`, `HarvestPlant`, `PickpocketItem`                                                                                                                                                 | Items are given.                                                    | Item metadata or other rewards.                                                                |
| `server/main_editable.lua`                           | `WaterPlant`, `FertilizePlant`                                                                                                                                                                      | A plant is watered or fertilised.                                   | The level it gets (100 in the download).                                                       |
| `server/main_editable.lua`                           | `GetPoliceAmount()`                                                                                                                                                                                 | Before a sale.                                                      | Another way to count police.                                                                   |
| `server/main_editable.lua`                           | `PurchasedShopItems`, `OnWorkerProduced`                                                                                                                                                            | A shop purchase; a worker finishes a recipe.                        | Your own code.                                                                                 |
| `server/main_editable.lua`                           | `GetRoutingBucket(playerId)`                                                                                                                                                                        | The server reads a player's routing bucket.                         | A bucket system of your own.                                                                   |
| `client/frameworks/*.lua`, `server/frameworks/*.lua` | Framework functions                                                                                                                                                                                 | Always.                                                             | Changes for a custom framework or inventory.                                                   |
