Installation

Install oxide-meth, register its complete item chain, and verify cooking, crystallizing, and bagging.

Step-by-step setup for oxide-meth. Follow the steps in order — most issues come from skipping one.

Before You Start

oxide-meth 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:

ResourceWhat it does
ox_libProvides translations, callbacks, and UI helpers
oxmysqlConnects the server to your MySQL database
o-linkConnects meth to your framework (players, inventory, notifications, targeting)

If you already run other Oxide resources, you have all three.

Installation Steps

1. Place the resource

Put the oxide-meth folder inside your server's resources folder.

2. Set the startup order

In your server.cfg, make sure the dependencies start before meth:

ensure ox_lib
ensure oxmysql
ensure o-link
ensure oxide-meth

Your 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 three tables it creates:

TableWhat it stores
drugs_progressionEach player's meth level, XP, and totals
drug_equipmentMeth tables and crystallizers players have placed in the world
meth_drying_slotsWhat's drying in each crystallizer, so nothing is lost on restart

It is safe to run oxide-meth alongside oxide-weed or oxide-cocaine — the first two tables are shared between Oxide drug resources on purpose, and each resource only creates them if they don't exist yet.

4. Add the items to your inventory

oxide-meth 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 production line.

Equipment

ItemLabelMust be usable
meth_tableMeth TableYes
meth_crystallizerMeth CrystallizerYes
gas_maskGas MaskYes
meth_manualCooking ManualYes

Base ingredients

ItemLabel
hydrogen_peroxideHydrogen Peroxide
ammoniaAmmonia
hydrochloric_acidHydrochloric Acid
sodium_benzoateSodium Benzoate

Additives

ItemLabel
magnesium_oxideMagnesium Oxide
pain_killerPain Killer
hazardous_wasteHazardous Waste
vanilla_unicorn_pillsVanilla Unicorn Pills
lax_to_the_maxLax to the Max
cannabis_leafCannabis Leaf
cough_syrupCough Syrup
adrenalineAdrenaline
tolueneToluene
acetoneAcetone

Production chain

ItemLabelMust be usable
liquid_meth_trayLiquid Meth TrayNo
crystallized_meth_trayCrystallized Meth TrayNo
baggyBaggyNo
crystal_methCrystal MethNo
meth_baggyMeth BaggyYes

Variant shards

ItemLabel
crystal_meth_glassCrystal Meth (Glass)
crystal_meth_blue_skyCrystal Meth (Blue Sky)
crystal_meth_purple_hazeCrystal Meth (Purple Haze)
crystal_meth_lean_crystalCrystal Meth (Lean Crystal)
crystal_meth_green_rushCrystal Meth (Green Rush)
crystal_meth_dirty_spriteCrystal Meth (Dirty Sprite)
crystal_meth_street_mixCrystal Meth (Street Mix)
crystal_meth_rocket_fuelCrystal Meth (Rocket Fuel)
crystal_meth_club_specialCrystal Meth (Club Special)
crystal_meth_iceCrystal Meth (Ice)

Variant baggies (all must be usable)

ItemLabel
meth_baggy_glassMeth Baggy (Glass)
meth_baggy_blue_skyMeth Baggy (Blue Sky)
meth_baggy_purple_hazeMeth Baggy (Purple Haze)
meth_baggy_lean_crystalMeth Baggy (Lean Crystal)
meth_baggy_green_rushMeth Baggy (Green Rush)
meth_baggy_dirty_spriteMeth Baggy (Dirty Sprite)
meth_baggy_street_mixMeth Baggy (Street Mix)
meth_baggy_rocket_fuelMeth Baggy (Rocket Fuel)
meth_baggy_club_specialMeth Baggy (Club Special)
meth_baggy_iceMeth Baggy (Ice)

"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.

If 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:

['meth_table'] = { label = 'Meth Table', weight = 7000 },
['meth_crystallizer'] = { label = 'Meth Crystallizer', weight = 5000 },
['gas_mask'] = { label = 'Gas Mask', weight = 500 },
['meth_manual'] = { label = 'Cooking Manual', weight = 100 },
['hydrogen_peroxide'] = { label = 'Hydrogen Peroxide', weight = 500 },
['liquid_meth_tray'] = { label = 'Liquid Meth Tray', weight = 1000 },
['crystal_meth'] = { label = 'Crystal Meth', weight = 100 },
['meth_baggy'] = { label = 'Meth Baggy', weight = 50 },
['meth_baggy_blue_sky'] = { label = 'Meth Baggy (Blue Sky)', weight = 50 },
-- ...repeat for every item in the tables above

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:

meth_table = { name = 'meth_table', label = 'Meth Table', weight = 7000, type = 'item', image = 'meth_table.png', unique = false, useable = true, shouldClose = true, description = 'A folding table with a burner' },
hydrogen_peroxide = { name = 'hydrogen_peroxide', label = 'Hydrogen Peroxide', weight = 500, type = 'item', image = 'hydrogen_peroxide.png', unique = false, useable = false, shouldClose = true, description = 'A strong chemical' },
crystal_meth = { name = 'crystal_meth', label = 'Crystal Meth', weight = 100, type = 'item', image = 'crystal_meth.png', unique = false, useable = false, shouldClose = true, description = 'A crystal shard' },
meth_baggy = { name = 'meth_baggy', label = 'Meth Baggy', weight = 50, type = 'item', image = 'meth_baggy.png', unique = false, useable = true, shouldClose = true, description = 'A sealed bag of product' },
-- ...repeat for every item in the tables above

Notes:

  • If you also run oxide-weed, you already have baggy and cannabis_leaf — do not add them twice.
  • Don't skip the variant shards and baggies. If a player cooks Blue Sky and crystal_meth_blue_sky doesn't exist, breaking that tray will fail.

5. Copy the item images

Copy all the .png files from items/ 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.

Two items don't have images in this folder: baggy and cannabis_leaf. They ship with oxide-weed — if you run it, you already have them. If not, use any small bag and leaf images you like, named baggy.png and cannabis_leaf.png.

6. Review the configuration

The defaults work out of the box, but you'll likely want to adjust the numbers to fit your server:

  • shared/config.lua — safe zones, ownership rules, cooking/drying/breaking/bagging settings
  • shared/config/items.lua — which item names each stage uses
  • shared/config/additives.lua — additives, named variants, purity settings
  • shared/config/equipment.lua — placeable equipment
  • shared/config/progression.lua — XP rewards and level thresholds
  • shared/config/usage.lua — what happens when players use bagged meth

See Configuration for every setting explained.

Check That It Works

  1. Start the server and confirm ox_lib, oxmysql, o-link, and oxide-meth all start without errors in the console.
  2. Give yourself admin permission for the test commands (see Admin), then run /methkit in game — you should receive a full set of equipment and ingredients.
  3. Use the meth table item from your inventory and place it on the ground. Do the same with the crystallizer.
  4. Walk up to the table and start a cook. Pour the four ingredients, run the temperature minigame, and confirm you receive a Liquid Meth Tray.
  5. Put the tray in the crystallizer, wait 5 minutes, and collect it.
  6. Break the tray at the table, collect the shards, then bag them with a baggy.
  7. Use the finished meth baggy from your inventory and confirm the effects play.
  8. Run /methstats and confirm your level and XP card appears.

If any step fails, see Troubleshooting.

Good To Know

  • Players learn the system in game. The meth_manual item opens a full illustrated guide covering cooking, additives, recipes, and bagging. Hand it out or sell it — players don't need out-of-game instructions.
  • Items keep their quality through the whole chain. The variant and purity are stored on the item itself, so trays, shards, and bags can be traded between players without losing anything.
  • The interface ships pre-built. There is nothing to compile. Rebuild the web folder only if you edit the source code under web/src.
  • Translations: all player-facing text lives in locales/en.json.