# Setup and Items

This page covers the setup parts you should finish before editing jobs: dependencies, `server.cfg` order, database behavior, localization, item installation, image path setup, and optional helper resources.

## Required Dependencies

* [oxmysql](https://github.com/overextended/oxmysql/releases)
* [ox\_lib](https://github.com/overextended/ox_lib/releases)
* `0r_lib`
* Your framework: `es_extended`, `qb-core`, or `qbx_core`

## Optional Resources Used By Some Jobs

These are not hard dependencies in `fxmanifest.lua`, but the real source references them in some jobs:

* `object_gizmo`
* `3fe_woodbox`

Example:

* Moonshine uses `object_gizmo` if you keep the still placement flow
* Some source checks in `gun_smuggling` and `moonshine` look for `3fe_woodbox`

## Recommended server.cfg Start Order

```lua
start oxmysql
start ox_lib
start framework -- es_extended, qb-core, or qbx_core
start object_gizmo -- optional
-- other resources
start 0r_lib
start 0r-illegalpack
```

## Database

You do not need to import SQL manually for this script.

The real resource creates the profile table automatically in `modules/mysql/server.lua`:

```sql
CREATE TABLE `0resmon_illegal_profiles`
```

## Localization

This script uses `ox_lib` locale files.

Set your server language in `server.cfg`:

```cfg
set ox:locale "en"
```

Then make sure the matching file exists inside:

```lua
locales/
```

## Required Menu Item

If you keep item-based menu access enabled, this item must exist:

* `illegal_tablet`

The real source defines this under:

```lua
Config.IllegalMenu.openWithItem.itemName
```

## Ready To Paste Item Tables

If you want to install the items fast, use the blocks below directly in your inventory files.

{% hint style="warning" %}
Pay attention to weapon naming. The source uses `weapon_digiscanner` in the market list, while one job config also references `WEAPON_DIGISCANNER`. Your inventory and weapon integration must use the correct format for your framework.
{% endhint %}

## OX Inventory

{% tabs fullWidth="false" %}
{% tab title="weapons.lua" %}

```lua
['WEAPON_DIGISCANNER'] = {
    label = 'Digiscanner',
    weight = 1000,
    durability = 0.0,
},
['WEAPON_CROWBAR'] = {
    label = 'Crowbar',
    weight = 2500,
    durability = 0.1,
},
```

{% endtab %}

{% tab title="items.lua" %}

```lua
--- # start 0r-illegalpack
['illegal_tablet'] = { label = 'Illegal Tablet', weight = 1000, stack = false },
['lockpick'] = { label = 'Lockpick', weight = 0, stack = true },
['powdered_milk'] = { label = 'Powdered Milk', weight = 100, stack = true },
['money_sheet'] = { label = 'Money Sheet', weight = 100, stack = true },
['anchor'] = { label = 'Anchor', weight = 100, stack = true },
['plant_spray'] = { label = 'Plant Spray', weight = 100, stack = true },
['ammonia'] = { label = 'Ammonia', weight = 100, stack = true },
['sacid'] = { label = 'Sacid', weight = 100, stack = true },
['atm_hack_device'] = { label = 'ATM Hack Device', weight = 100, stack = true },
['blank_card'] = { label = 'Blank Card', weight = 100, stack = true },
['moonshine_still'] = { label = 'Moonshine Still', weight = 1000, stack = true },
['moonshine_pack'] = { label = 'Moonshine Pack', weight = 100, stack = true },
['stolen_bag'] = { label = 'Stolen Bag', weight = 1000, stack = true },
['scrapmetal'] = { label = 'Scrap Metal', weight = 100, stack = true },
['plastic'] = { label = 'Plastic', weight = 100, stack = true },
['glass'] = { label = 'Glass', weight = 100, stack = true },
['copperwire'] = { label = 'Copper Wire', weight = 100, stack = true },
['bandage'] = { label = 'Bandage', weight = 100, stack = true },
['painkiller'] = { label = 'Painkiller', weight = 100, stack = true },
['medkit'] = { label = 'Medkit', weight = 100, stack = true },
['adrenaline'] = { label = 'Adrenaline', weight = 100, stack = true },
['ammo-9'] = { label = '9mm Ammo', weight = 100, stack = true },
['unpacked_coke'] = { label = 'Unpacked Coke', weight = 1000, stack = true },
['cutted_coke'] = { label = 'Cutted Coke', weight = 1000, stack = true },
['packed_coke'] = { label = 'Packed Coke', weight = 1000, stack = true },
['uncutted_money'] = { label = 'Uncutted Money', weight = 100, stack = true },
['cutted_money'] = { label = 'Cutted Money', weight = 100, stack = true },
['fake_credit_card'] = { label = 'Fake Credit Card', weight = 100, stack = true },
['cooked_meth'] = { label = 'Cooked Meth', weight = 100, stack = true },
['breaked_meth'] = { label = 'Breaked Meth', weight = 100, stack = true },
['packed_meth'] = { label = 'Packed Meth', weight = 100, stack = true },
['old_corn'] = { label = 'Old Corn', weight = 100, stack = true },
['old_fruit'] = { label = 'Old Fruit', weight = 100, stack = true },
['tap_water'] = { label = 'Tap Water', weight = 100, stack = true },
['crushed_ingredients'] = { label = 'Crushed Ingredients', weight = 100, stack = true },
['blended_ingredients'] = { label = 'Blended Ingredients', weight = 100, stack = true },
['moonshine'] = { label = 'Moonshine', weight = 100, stack = true },
['unpacked_weed'] = { label = 'Unpacked Weed', weight = 100, stack = true },
['packed_weed'] = { label = 'Packed Weed', weight = 1000, stack = true },
['rolled_weed'] = { label = 'Rolled Weed', weight = 100, stack = true },
--- # end 0r-illegalpack
```

{% endtab %}
{% endtabs %}

## QB Core

{% tabs fullWidth="false" %}
{% tab title="shared/weapons.lua" %}

```lua
[`WEAPON_DIGISCANNER`] = { name = 'weapon_digiscanner', label = 'Digiscanner', weapontype = 'Miscellaneous', ammotype = nil, damagereason = 'Miscellaneous' },
```

{% endtab %}

{% tab title="shared/items.lua" %}

```lua
illegal_tablet      = { name = 'illegal_tablet', label = 'Illegal Tablet', weight = 100, type = 'item', image = 'illegal_tablet.png', unique = false, useable = true, shouldClose = false, description = 'Illegal Tablet' },
lockpick            = { name = 'lockpick', label = 'Lockpick', weight = 100, type = 'item', image = 'lockpick.png', unique = false, useable = false, shouldClose = false, description = 'Lockpick' },
powdered_milk       = { name = 'powdered_milk', label = 'Powdered Milk', weight = 100, type = 'item', image = 'powdered_milk.png', unique = false, useable = false, shouldClose = false, description = 'Powdered Milk' },
money_sheet         = { name = 'money_sheet', label = 'Money Sheet', weight = 100, type = 'item', image = 'money_sheet.png', unique = false, useable = false, shouldClose = false, description = 'Money Sheet' },
anchor              = { name = 'anchor', label = 'Anchor', weight = 100, type = 'item', image = 'anchor.png', unique = false, useable = false, shouldClose = false, description = 'Anchor' },
plant_spray         = { name = 'plant_spray', label = 'Plant Spray', weight = 100, type = 'item', image = 'plant_spray.png', unique = false, useable = false, shouldClose = false, description = 'Plant Spray' },
ammonia             = { name = 'ammonia', label = 'Ammonia', weight = 100, type = 'item', image = 'ammonia.png', unique = false, useable = false, shouldClose = false, description = 'Ammonia' },
sacid               = { name = 'sacid', label = 'Sacid', weight = 100, type = 'item', image = 'sacid.png', unique = false, useable = false, shouldClose = false, description = 'Sacid' },
atm_hack_device     = { name = 'atm_hack_device', label = 'ATM Hack Device', weight = 100, type = 'item', image = 'atm_hack_device.png', unique = false, useable = false, shouldClose = false, description = 'ATM Hack Device' },
blank_card          = { name = 'blank_card', label = 'Blank Card', weight = 100, type = 'item', image = 'blank_card.png', unique = false, useable = false, shouldClose = false, description = 'Blank Card' },
moonshine_still     = { name = 'moonshine_still', label = 'Moonshine Still', weight = 100, type = 'item', image = 'moonshine_still.png', unique = false, useable = false, shouldClose = false, description = 'Moonshine Still' },
moonshine_pack      = { name = 'moonshine_pack', label = 'Moonshine Pack', weight = 100, type = 'item', image = 'moonshine_pack.png', unique = false, useable = false, shouldClose = false, description = 'Moonshine Pack' },
stolen_bag          = { name = 'stolen_bag', label = 'Stolen Bag', weight = 100, type = 'item', image = 'stolen_bag.png', unique = false, useable = false, shouldClose = false, description = 'Stolen Bag' },
scrapmetal          = { name = 'scrapmetal', label = 'Scrap Metal', weight = 100, type = 'item', image = 'scrapmetal.png', unique = false, useable = false, shouldClose = false, description = 'Scrap Metal' },
plastic             = { name = 'plastic', label = 'Plastic', weight = 100, type = 'item', image = 'plastic.png', unique = false, useable = false, shouldClose = false, description = 'Plastic' },
glass               = { name = 'glass', label = 'Glass', weight = 100, type = 'item', image = 'glass.png', unique = false, useable = false, shouldClose = false, description = 'Glass' },
copperwire          = { name = 'copperwire', label = 'Copper Wire', weight = 100, type = 'item', image = 'copperwire.png', unique = false, useable = false, shouldClose = false, description = 'Copper Wire' },
bandage             = { name = 'bandage', label = 'Bandage', weight = 100, type = 'item', image = 'bandage.png', unique = false, useable = false, shouldClose = false, description = 'Bandage' },
painkiller          = { name = 'painkiller', label = 'Painkiller', weight = 100, type = 'item', image = 'painkiller.png', unique = false, useable = false, shouldClose = false, description = 'Painkiller' },
medkit              = { name = 'medkit', label = 'Medkit', weight = 100, type = 'item', image = 'medkit.png', unique = false, useable = false, shouldClose = false, description = 'Medkit' },
adrenaline          = { name = 'adrenaline', label = 'Adrenaline', weight = 100, type = 'item', image = 'adrenaline.png', unique = false, useable = false, shouldClose = false, description = 'Adrenaline' },
['ammo-9']          = { name = 'ammo-9', label = '9mm Ammo', weight = 100, type = 'item', image = 'ammo-9.png', unique = false, useable = false, shouldClose = false, description = '9mm Ammo' },
unpacked_coke       = { name = 'unpacked_coke', label = 'Unpacked Coke', weight = 100, type = 'item', image = 'unpacked_coke.png', unique = false, useable = false, shouldClose = false, description = 'Unpacked Coke' },
cutted_coke         = { name = 'cutted_coke', label = 'Cutted Coke', weight = 100, type = 'item', image = 'cutted_coke.png', unique = false, useable = false, shouldClose = false, description = 'Cutted Coke' },
packed_coke         = { name = 'packed_coke', label = 'Packed Coke', weight = 100, type = 'item', image = 'packed_coke.png', unique = false, useable = false, shouldClose = false, description = 'Packed Coke' },
uncutted_money      = { name = 'uncutted_money', label = 'Uncutted Money', weight = 100, type = 'item', image = 'uncutted_money.png', unique = false, useable = false, shouldClose = false, description = 'Uncutted Money' },
cutted_money        = { name = 'cutted_money', label = 'Cutted Money', weight = 100, type = 'item', image = 'cutted_money.png', unique = false, useable = false, shouldClose = false, description = 'Cutted Money' },
fake_credit_card    = { name = 'fake_credit_card', label = 'Fake Credit Card', weight = 100, type = 'item', image = 'fake_credit_card.png', unique = false, useable = false, shouldClose = false, description = 'Fake Credit Card' },
cooked_meth         = { name = 'cooked_meth', label = 'Cooked Meth', weight = 100, type = 'item', image = 'cooked_meth.png', unique = false, useable = false, shouldClose = false, description = 'Cooked Meth' },
breaked_meth        = { name = 'breaked_meth', label = 'Breaked Meth', weight = 100, type = 'item', image = 'breaked_meth.png', unique = false, useable = false, shouldClose = false, description = 'Breaked Meth' },
packed_meth         = { name = 'packed_meth', label = 'Packed Meth', weight = 100, type = 'item', image = 'packed_meth.png', unique = false, useable = false, shouldClose = false, description = 'Packed Meth' },
old_corn            = { name = 'old_corn', label = 'Old Corn', weight = 100, type = 'item', image = 'old_corn.png', unique = false, useable = false, shouldClose = false, description = 'Old Corn' },
old_fruit           = { name = 'old_fruit', label = 'Old Fruit', weight = 100, type = 'item', image = 'old_fruit.png', unique = false, useable = false, shouldClose = false, description = 'Old Fruit' },
tap_water           = { name = 'tap_water', label = 'Tap Water', weight = 100, type = 'item', image = 'tap_water.png', unique = false, useable = false, shouldClose = false, description = 'Tap Water' },
crushed_ingredients = { name = 'crushed_ingredients', label = 'Crushed Ingredients', weight = 100, type = 'item', image = 'crushed_ingredients.png', unique = false, useable = false, shouldClose = false, description = 'Crushed Ingredients' },
blended_ingredients = { name = 'blended_ingredients', label = 'Blended Ingredients', weight = 100, type = 'item', image = 'blended_ingredients.png', unique = false, useable = false, shouldClose = false, description = 'Blended Ingredients' },
moonshine           = { name = 'moonshine', label = 'Moonshine', weight = 100, type = 'item', image = 'moonshine.png', unique = false, useable = false, shouldClose = false, description = 'Moonshine' },
unpacked_weed       = { name = 'unpacked_weed', label = 'Unpacked Weed', weight = 100, type = 'item', image = 'unpacked_weed.png', unique = false, useable = false, shouldClose = false, description = 'Unpacked Weed' },
packed_weed         = { name = 'packed_weed', label = 'Packed Weed', weight = 100, type = 'item', image = 'packed_weed.png', unique = false, useable = false, shouldClose = false, description = 'Packed Weed' },
rolled_weed         = { name = 'rolled_weed', label = 'Rolled Weed', weight = 100, type = 'item', image = 'rolled_weed.png', unique = false, useable = false, shouldClose = false, description = 'Rolled Weed' },
```

{% endtab %}
{% endtabs %}

Item images should be copied into the folder used by your inventory, and the path should match:

```lua
Config.InventoryImagesFolder
```

## Final Checklist

* `0r_lib` starts without errors
* `0r-illegalpack` starts without errors
* `illegal_tablet` exists if `openWithItem.active = true`
* Your market items exist in the inventory system
* Your item images load from the folder set in `Config.InventoryImagesFolder`
* The profile table is created automatically in MySQL


---

# 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.0resmon.org/0resmon/0r-resources/0r-illegalpack/setup-and-items.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.
