Installation
Install oxide-weed, register every required item, and verify cultivation, processing, and selling.
Step-by-step setup for oxide-weed. Follow the steps in order — most issues come from skipping one.
Before You Start
oxide-weed works on QBCore, QBX, and ESX. It detects your framework automatically — there is nothing framework-specific to configure in the script itself. The only framework-side work is adding the items to your inventory (step 4).
You need these resources installed and working first:
| Resource | What it does |
|---|---|
ox_lib | Provides translations, callbacks, and UI helpers |
oxmysql | Connects the server to your MySQL database |
o-link | Connects weed to your framework (players, inventory, money, notifications, targeting) |
If you already run other Oxide resources, you have all three.
Installation Steps
1. Place the resource
Put the oxide-weed folder inside your server's resources folder.
2. Set the startup order
In your server.cfg, make sure the dependencies start before weed:
ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-weedYour framework and inventory resources should already start before o-link — if other Oxide resources work on your server, this is already correct.
3. Database — nothing to do
The resource creates its own database tables the first time it starts, so there is no SQL script to run. (sql/install.sql is still included if you prefer to create the tables yourself or want to see the schema.)
These are the eight tables it creates:
| Table | What it stores |
|---|---|
drugs_progression | Each player's weed level, XP, and lifetime totals |
drug_equipment | Weed tables, totes, water containers, drying racks, freeze dryers, and brick presses placed in the world |
drug_plants | Every growing plant — its strain, timers, water, owner, and quality |
drug_lamps | Grow lamps and which plant each one is helping |
drug_heaters | Heaters and which weed table each one is attached to |
drug_drying_slots | What's drying where, so nothing is lost on a server restart |
drug_strains | Every strain players have created or discovered |
oxide_settings | The live settings edited with /weed settings, shared across Oxide resources |
It is safe to run oxide-weed alongside oxide-meth or oxide-cocaine — the first two tables and oxide_settings are shared between Oxide resources on purpose, and each resource only creates them if they don't exist yet.
4. Add the items to your inventory
oxide-weed needs every item below to exist in your inventory with the exact spelling shown. A single typo in an item name will break that step of the pipeline.
"Must be usable" means the player can right-click/use the item from their inventory. The script handles what happens when it's used — your inventory just needs to allow it.
Growing supplies
| Item | Label | Must be usable |
|---|---|---|
cannabis_seed | Cannabis Seed | Yes |
plant_pot | Plant Pot | No |
water | Water | No |
fertilizer | Fertilizer | No |
watering_can | Watering Can | Yes |
growing_manual | Growing Manual | Yes |
Equipment (all must be usable)
| Item | Label |
|---|---|
grow_lamp | Grow Lamp |
weed_heater | Heater |
weed_table | Weed Table |
storage_tote | Storage Tote |
water_container_small | Small Water Container |
water_container_large | Large Water Container |
drying_rack | Drying Rack |
freeze_dryer | Freeze Dryer |
brick_press | Brick Press |
Harvest and processing
| Item | Label | Must be usable |
|---|---|---|
weed_bud | Weed Bud | No |
dried_weed_bud | Dried Weed Bud | No |
pruned_weed_bud | Pruned Weed Bud | No |
cannabis_leaf | Cannabis Leaf | No |
pollen | Pollen | No |
trimming_scissors | Trimming Scissors | Yes |
baggy | Baggy | No |
Finished products
| Item | Label | Must be usable |
|---|---|---|
weed_1g | Weed (1g) | No |
weed_eighth | Weed (1/8 oz) | No |
weed_quarter | Weed (1/4 oz) | No |
weed_half | Weed (1/2 oz) | No |
weed_ounce | Weed (1 oz) | No |
weed_brick | Weed Brick | No |
Smoking
| Item | Label | Must be usable |
|---|---|---|
rolling_papers | Rolling Papers | Yes |
cigarillo_wraps | Cigarillo Wraps | Yes |
lighter | Lighter | No |
joint | Joint | Yes |
blunt | Blunt | Yes |
Watch out for these common naming mistakes:
- the item is
water, notwater_bottle rolling_papersis pluralbaggymust match exactly — don't substitute another bag item
If you use qb-inventory (default QBCore), add the items to qb-core/shared/items.lua. Set useable = true on the items marked "must be usable" above:
cannabis_seed = { name = 'cannabis_seed', label = 'Cannabis Seed', weight = 1, type = 'item', image = 'cannabis_seed.png', unique = false, useable = true, shouldClose = true, description = 'A seed ready for planting' },
weed_bud = { name = 'weed_bud', label = 'Weed Bud', weight = 100, type = 'item', image = 'weed_bud.png', unique = false, useable = false, shouldClose = true, description = 'A fresh cannabis bud' },
weed_table = { name = 'weed_table', label = 'Weed Table', weight = 7000, type = 'item', image = 'weed_table.png', unique = false, useable = true, shouldClose = true, description = 'A work table for processing weed' },
-- ...repeat for every item in the tables aboveIf you use ox_inventory (common on QBX and ESX), add the items to ox_inventory/data/items.lua. Every item is usable by default in ox_inventory, so a minimal entry is enough:
['cannabis_seed'] = { label = 'Cannabis Seed', weight = 1 },
['weed_bud'] = { label = 'Weed Bud', weight = 100 },
['weed_table'] = { label = 'Weed Table', weight = 7000 },
-- ...repeat for every item in the tables aboveIf you use the default ESX inventory, items live in your database. Add a row to the items table for each item:
INSERT INTO `items` (`name`, `label`, `weight`) VALUES
('cannabis_seed', 'Cannabis Seed', 1),
('weed_bud', 'Weed Bud', 1),
('weed_table', 'Weed Table', 7);
-- ...repeat for every item in the tables aboveThe script registers which items are usable at startup, so there is no extra "usable" setup on ESX.
5. Copy the item images
Copy all the .png files from item images/ into your inventory's image folder:
- qb-inventory:
qb-inventory/html/images/ - ox_inventory:
ox_inventory/web/images/
The filenames already match the item names, so no renaming is needed.
One item has no image in this folder: water. Most servers already have a water item with an image — if yours doesn't, use any water bottle image you like, named water.png.
6. Review the configuration
The defaults work out of the box. To adjust anything — prices, timers, strains, store stock, NPC locations, zones — use the in-game editor: give yourself admin permission (see Admin) and run /weed settings. Changes apply immediately, are saved to the database, and survive restarts.
The files under shared/config/ only supply the factory defaults that seed the database on first start. If you'd rather pre-set values before ever starting the resource, you can edit them there first — but once the resource has started, use /weed settings (file edits no longer take effect for existing settings).
See Configuration for every setting explained and how the database-backed settings work.
Check That It Works
- Start the server and confirm
ox_lib,oxmysql,o-link, andoxide-weedall start without errors in the console. - Give yourself admin permission for the test commands (see Admin), then run
/weed kitin game — you should receive a full set of seeds, supplies, and equipment. - Use the cannabis seed from your inventory and plant it on open ground. Water and fertilize it when prompted.
- Run
/weed growto skip the growing time, then harvest the plant. - Use the weed table item to place a table, put your fresh buds on it to dry, and run
/weed dryto skip the drying time. - Collect the dried buds, use the trimming scissors to prune them, then bag them at the table with a baggy.
- Visit the supply store (The Germinator — marked on the map by default) and confirm the shop opens and you can buy something.
- Run
/weed statsand confirm your level and XP card appears.
If any step fails, see Troubleshooting.
Good To Know
- Players learn the system in game. The
growing_manualitem opens a full illustrated guide covering planting, genetics, drying, processing, and selling. Hand it out or sell it — players don't need out-of-game instructions. - Items keep their strain and quality through the whole chain. Strain data is stored on the item itself, so buds, bags, and bricks can be traded between players without losing anything.
- The drying rack and brick press are not sold anywhere by default. They unlock at levels 3 and 8, but the store doesn't stock them out of the box — add them to the store's
customItemslist or sell them through your own shops. - Dirty money only applies to the scientist. The Germinator store always charges regular cash. What counts as "dirty money" is set under Dirty Money in
/weed settings. - The interface ships pre-built. There is nothing to compile. Rebuild the
webfolder only if you edit the source code underweb/src. - Translations: all player-facing text lives in
locales/en.json(a Spanish translation,es.json, is included).