QBCoreQBoxESX

Oxy Run

Street-level drug delivery runs. Sign in with a shady plug, drive out to a supplier, grab the packages, then carry the box on foot — you can't drive while holding it — to a string of buyers who pull up one by one at the drop, and get paid per hand-off, while laundering any dirty cash you're carrying on the side.

💡

Every payout is issued by the server through a one-time session token: the client can only ask to start and report each hand-off, it can never award itself loot, skip the cooldown, or forge a dispatch alert.

Supported backends (auto-detected, no config needed)

LayerSupported
Frameworkqb-core, qbx_core, es_extended
Inventoryox_inventory (native), qb-inventory, ESX native (items via install/items/esx.sql); the carried-box prop is ox_inventory-native and approximated on others
Dispatchps-dispatch, kartik-mdt (v1/v2), cd_dispatch, qs-dispatch (or none)
Phone (mail)yseries, lb-phone, qb-phone (or none — falls back silently)
Sign-in emoterpemotes / rpemotes-reborn / dpemotes (optional — native fallback if none)

Detection lives in client/functions.lua and server/functions.lua — both are open files, so you can add your own backends there.

Install

Everything you need is in the install/ folder.

  1. ensure jj-oxyrun in server.cfg, after ox_lib, ox_target, your framework and inventory.
  2. Add the items from install/items/ox_inventory.txt or install/items/qb-inventory.txt (skip ones you already have).
  3. Copy install/images/ into your inventory's image folder.

No database required.

How a run works

  1. Player targets the sign-in ped — a sign-in animation + short bar play, then the server validates: within 4m of the plug, off cooldown, enough cops on duty, can afford the buy-in, and a delivery route is free. It charges the buy-in, reserves a route, issues a one-time token and picks a random supplier + drop count.
  2. Player drives to the supplier (marked on GPS) and grabs the packages one box per interaction — server confirms proximity and hands over one package item per grab, up to the run's drop count.
  3. Player carries the box on foot to the drop (marked on GPS) — entering a vehicle while holding packages is blocked. Buyer vehicles pull up one at a time; targeting each one plays a short hand-off — server re-validates the token, proximity, pacing and that the player still holds a package, consumes one package, pays clean cash, rolls loot, launders dirty money, feeds jj-perks XP and may ping dispatch.
  4. After the last drop the run ends, the finish email is sent, and the reserved route is freed.

Abandoning a run (disconnect, or leaving it idle past Config.RunTimeout) frees its route automatically.

Next: head to Configuration for the full config key reference.