Oxide Pills

Hands-on pill production for FiveM — mill, blend, press, sort and pack tablets by hand, with a hidden quality profile on every batch, player brands, counterfeits, a rotary press crew and a pharma delivery run.

oxide-pills is a hands-on pill production resource for FiveM roleplay servers, built around a five-stage production line:

Mill -> Blend -> Press -> Sort -> Pack

Players grind raw actives with a mortar or a blade grinder, pour their own formula into a stand mixer by hand, press tablets on a hand-cranked or electric press, pick the duds off the catch tray, and pack the rest into baggies, labelled pharmacy bottles or sealed blister cards. Every batch carries a hidden quality profile (potency, integrity, imprint, finish and consistency) stored on the server against a batch ID, and nobody sees the numbers until someone destroys a tablet at the light box to read them.

The resource ships with 5 product lines (Party Pills, NOVA Bars, VELA Blues, AXIA Percs and AURA Capsules), 17 placeable stations (a lab workbench, 11 benchtop machines and 5 floor machines), 59 inventory items, 3 packings, player brands with 8 symbols, 4 street buyer types, a 10-level progression track, a three-role rotary press crew, and a pharma delivery run across 7 drop points. On top of that come overdoses, mystery powder that might be fentanyl, police evidence, and brands that build a reputation across the server. oxide-pills runs on QBCore, QBX and ESX through o-link.

Key Features

  • Server-Enforced Production — Clients send discrete gestures (grinder revolutions, pours, crank strokes, scrubs) and the server applies every timing, cap and rate limit. A client never submits a score
  • Per-Tablet Quality Simulation — Each tablet is scored from the press state when it was struck, the batch is the average of the tablets kept, and only the batch ID rides on the item. There is no single "purity" number
  • Level-Based Information Reveal — Gauges show zones at levels 1-2, exact values at 3-5, and each tablet's defect at 6-10 (Config.Skill.Reveal). Level never lowers a stat; it only narrows the spread between tablets
  • Five Product Lines — Party Pills, NOVA Bars, VELA Blues, AXIA Percs and AURA Capsules, each with its own potency window and defects (snapped bars, dented and leaking capsules), plus counterfeit match scoring for VELA Blues and AXIA Percs
  • Milling by Hand — A mortar and pestle ground by circling the mouse, and a blade grinder you pulse and knock clean before it cakes. The ball mill grinds a whole load at once, and rejects can be reground
  • Hand-Poured Stand Mixer — Pick up each ingredient and pour for as long as you want it in the bowl, with per-ingredient pour rates, fill-dependent uniformity and 6 dye colours for party pills
  • Two Single-Punch Presses — A crank press where pace sets the fill and uneven strokes cost quality, and an electric press with 4 speeds. Both have 5 fill-depth and 5 force detents
  • Die Residue and Die Wear — Residue builds as you press and is scrubbed off the die by hand with a brush. Wear is stored on the die set and follows it from press to press
  • Tray Sorting — Throw out crumbled, capped, chipped, picked, blurred and patchy tablets before the batch is counted. Sorting is restart-safe, with an optional reject bin, and thrown-out tablets become reject items
  • Die Engraver and Player Brands — Cut tooling to a product line and stamp its face. Brands have server-unique names and one of 8 symbols, 2 per character, with reputation from -100 to 1000 across 5 tiers that sales build and overdoses and seizures damage
  • Three Packings — Baggies (12 per bag, filled by dragging piles), labelled bottles (30 per bottle, 5 label templates) and sealed blister cards (10 per card), each with its own packed item per line and its own knock protection
  • Finishing Stations — Granulating sieve, drum tumbler, pan coater and hardness tester. The tumbler, ball mill and coater run on their own and hold their output for the player who loaded them
  • Capsule Filling Board — AURA Capsules are filled by hand on a 5 x 6 plate: spread, tamp and cap 30 shells at a time
  • Rotary Press Crew — A floor press for up to three players (feeder, sorter and packer), or one player alone, with a 3-blend hopper, 4 turret speeds, a 24-tablet output tray and per-role XP
  • Dust — Milling and pressing put powder in the air. A wearable dust mask other players can see, and a placeable dust collector, keep it off your lungs
  • Mystery Powder and Reagent Tests — A reagent test kit (5 tests) shows a sample's drug class by colour. Mystery powder lots are rolled server-side as MDMA, a cutting agent, amphetamine or fentanyl
  • Taking Pills and Overdoses — Usable pills with 3 effect types, overdoses from hot batches or stacked doses, oxide-medical conditions when installed, and brand reputation penalties
  • Pills That Break — Crashes, falls and time break tablets, scaled by integrity and packing. Broken tablets become rejects that can be ground back down
  • Street Pricing — Sales through oxide-drugselling 2.0.0 or newer are priced by the PriceFor export, with 4 buyer archetypes fixed by ped model who each judge a batch differently
  • Pharma Delivery Run — From level 5: 4 drops per run chosen from 7 points, one blister card handed over per drop, cash pay per tablet, and laundering that uses each framework's own dirty money by default
  • Pill ID (RxTrace) — A brand and counterfeit-imprint lookup, standalone or as an oxide-tablet app, with on-duty police evidence logging and an optional press serial trail
  • 10-Level Progression — Stored per character in the shared drugs_progression table, with XP for every stage, stations and product lines unlocked by level, and two level-10 perks
  • In-Character Manual — The pill_manual item (Pressing Manual) covers the whole trade, from milling to selling
  • Live Settings Editor — /pills settings stores every setting in the database, validates on save and applies without a restart. Placement zones are drawn in the world
  • Placement Controls — Workbench slots, blocked or allowed zones, ownership checks, and a per-item job and gang usage whitelist
  • Police Alerts — Optional alerts per production stage and delivery handoff, with a per-site cooldown, through any dispatch resource o-link supports (including oxide-dispatch). Off by default
  • Gang Territory — oxide-gangs territory modifiers for machine speed, output and delivery pay
  • Model Safety — Missing models are reported to admins instead of hanging, and Config.ModelSwaps replaces them on older game builds
  • One Command — /pills stats and /pills pillid for players, plus admin subcommands /pills settings, /pills kit, /pills setlevel and /pills traytest
  • Developer API — Server exports GetPlayerLevel, GetPlayerProgression, AddXP, AddSold, PriceFor, GetSetting and SetSetting

Requirements

Required

ResourcePurpose
o-link (1.9.1 or newer)Framework abstraction for character identity, inventory and item metadata, money, notify, targeting, station placement, usable items, dispatch and logging
ox_libLocale and animation loading
oxmysqlDatabase access for progression, equipment, batches, brands and settings
A targeting resourceStation interaction options through o-link: ox_target, qb-target, sleepless_interact, tgiann-target or oxide-target
ox_inventory (ESX only)ESX's built-in inventory and hex_4_inventory are not supported. QBX and QBCore run on their default inventories

Check your o-link version. Versions before 1.9.0 can't place pill stations, and 1.9.0 puts police alert blips in the wrong place when you don't run a dispatch resource. Use o-link 1.9.1 or newer. See Installation.

Optional

ResourcePurpose
oxide-drugselling (2.0.0 or newer)Street sales, priced per buyer through the PriceFor export. Older versions can't sell pills
oxide-tabletPill ID as a tablet app. Without it, players use /pills pillid
oxide-medicalOverdoses recorded as medical conditions that EMS can see and treat. Without it, pills plays its own overdose effect
oxide-gangsTerritory speed, yield and price modifiers for the lab and the delivery run
A dispatch resource supported by o-link (such as oxide-dispatch)Police alerts from labs and delivery handoffs, placed at the lab. With none installed, police get a short notification and a 30-second blip on the lab. Alerts are off by default

Supported Frameworks

FrameworkSupportInventory
QBCore (qb-core)Fullqb-inventory (the default, with the pill items set to unique = true) or ox_inventory
QBX (qbx_core)Fullox_inventory (the default)
ESX (es_extended)Fullox_inventory only

oxide-pills talks to your framework through o-link, so there is no framework-specific setup in the script. Run a supported inventory, register the items, and it works. On QBX, also check the laundering setting (see Installation).

Database

All tables are created automatically at first start — no SQL script to run.

TableStores
drugs_progressionShared drug progression table; pill rows use drug = 'pills'
drug_equipmentShared placed-equipment table; pill rows use types prefixed with pills_
pills_workbenchesThe table model and slot count each workbench was placed with
pills_machine_mountsWhich workbench slot each benchtop machine occupies
pills_batchesThe hidden quality profile, stamp, brand and history of every pressed batch
pills_machine_statePress die residue, plus trays and machine output waiting to be collected
pills_die_wearThe wear the server has recorded for each die set, by serial
pill_brandsPlayer brands with reputation, sales, seizures and overdoses
pills_lotsThe true drug class of each mystery powder lot
pills_seizuresPills logged as police evidence, and where
pills_serialsPress serial numbers and who placed each press
oxide_settingsShared live-settings storage; pill rows use resource = 'oxide-pills'

Frontend

Vue 3 + Vite + Tailwind CSS for the stage HUDs, station menus, the stats card, Pill ID, the in-game Pressing Manual, and the admin settings editor. The interface ships ready to use in web/dist. There is nothing to build, compile, or install for it.

Quick Start

Place oxide-pills in your resources folder.

Start it after your framework, your other scripts and o-link:

server.cfg
# 1. Framework — everything your framework requires (qb-core, es_extended, qbx_core, etc.)
ensure <framework>

# 2. Scripts — your other resources (phone, inventory, garages, etc.)
ensure <your-other-scripts>

# 3. o-link — the bridge. Starts after your framework/scripts, before any Oxide resource.
ensure o-link

# 4. Oxide resources — keep these together, ideally in a folder named [oxide]
ensure oxide-pills

Add the pill items to your inventory: paste items/ox_inventory_items.lua into ox_inventory, or add the qb-inventory block from Installation to qb-core/shared/items.lua.

Copy the images from items/ into your inventory's image folder, then restart the server. The database tables are created automatically on first start.

Decide how players get the raw ingredients. Nothing is sold anywhere by default — put them in a shop, a black market or a job reward.

Look over the starting values in shared/config/, then fine-tune anything you like in game with /pills settings.

See the Installation Guide for the full setup flow.

Settings are stored in the database after the first start

The shared/config files are the starting values only. The first time the resource runs, it copies them into your database, and from then on you change settings in game with /pills settings (admin only). Editing the config files on a server that has already started once won't change most settings. See Configuration.

Progression Highlights

LevelUnlocks
1Workbench, Crank Press, Stand Mixer, Reject Bin, Dust Collector, Mortar, Party Pills, baggies
2Blade Grinder
3Light Box, Die Engraver, NOVA Bars; readings show exact numbers
4Brands
5Electric Press, Label Printer and bottles, VELA Blues, AXIA Percs, the delivery run
6Hardness Tester, Drum Tumbler, granulating; the press names each tablet's defect
7Capsule Filling Board, Ball Mill, Pan Coater, AURA Capsules
8Blister Sealer and blister cards
9Rotary Press
10Die sets wear 40% slower; brand reputation builds 25% faster

The full table is in Features.

Documentation