Oxide Blackmarket

Roaming black market dealer system with reputation tiers, a living economy, and police transport arrests for FiveM servers.

Oxide Blackmarket brings an underground economy to your FiveM server. Several roaming dealers are active at the same time, each with its own spot, stock, and relocation timer. Players buy contraband and sell drugs through a reputation-gated shop, sell prices react to server-wide supply, police can force a surrender and transport the dealer to a drop-off for the reward, and killing a dealer triggers reputation loss, a loot drop, and an armed hit squad.

Key Features

  • Multiple roaming dealers: Several synced NPC dealers (3 by default) relocate between map locations on their own staggered timers, each with an independent stock pool.
  • Reputation tiers: Players unlock better inventory as blackmarket_rep increases. The tier system can be disabled entirely.
  • Living economy: Sell prices drop with server-wide supply and recover over time, dealers restock on a timer, and optional daily sell caps curb money printing.
  • In-game settings menu: /blackmarket settings edits almost the entire configuration live — including dealer spawn points, drop-offs, and the buy/sell catalogs — saved to the database with no restart.
  • Dirty money support: Buy, sell, and loot payouts can use a money account, a count-based item, or metadata-valued marked bills.
  • Police transport arrests: Officers force a surrender, cuff the dealer, escort him on foot, load him into a vehicle, and drive him to a drop-off to collect the reward.
  • Hit squad retaliation: Killing a dealer can spawn an armed squad that hunts the killer.
  • Loot bags: Dealer death can create a first-come-first-served loot drop with cash and stock items.
  • Pager intel: A burner pager reveals the nearest dealer's location as an anonymous phone email, with tier-based success and precision.

Requirements

ResourcePurpose
ox_libLocale, commands, and utility helpers
oxmysqlDatabase access — stores settings in the shared oxide_settings table
o-linkFramework, job, money, inventory, notify, phone, banking, dispatch, callback, and targeting abstraction
oxide-police (optional)Only used when Config.ArrestPoliceIntegration = true, to pay the arrest cut into the officer's real department treasury

This resource expects your o-link setup to provide character metadata, job checks, target interactions, inventory access, money handling, notifications, and optional phone, banking, and dispatch integrations.

OneSync

The dealer peds are created server-side and synced through the network, so OneSync must be enabled:

set onesync on

Quick Start

Place oxide-blackmarket in your server's resources folder.

Start oxmysql, ox_lib, and o-link before oxide-blackmarket.

Add blackmarket_pager to your inventory system's item registry.

Review shared/config.lua and shared/items.lua before the first start — they are imported into the database on first start, and the database wins from then on.

Restart the server and verify the dealers spawn with /blackmarket status.

server.cfg
ensure oxmysql
ensure ox_lib
ensure o-link
ensure oxide-blackmarket

See the Installation Guide for the full setup flow.

How Settings Are Stored

Configuration lives in a shared oxide_settings database table, created automatically on first start. shared/config.lua and shared/items.lua are the factory defaults — imported on the first start and used to fill in new settings after updates. After that, manage settings in-game with /blackmarket settings or directly in the database. See Configuration for the full flow.

Reputation Tiers

TierNameRep Required
0Unknown0
1Street100
2Connected300
3Trusted600
4Inner Circle1000

Reputation is stored through olink.character in the player's blackmarket_rep metadata and is shared across all dealers. Selling configured items increases rep, killing a dealer removes rep, and tier changes update available shop inventory.

Core Systems

Dealer lifecycle

  • Config.DealerCount dealers are active at once (default 3), each at its own random entry from Config.Locations.
  • Each dealer relocates on its own staggered Config.RelocationInterval timer with a fresh full stock.
  • Each dealer keeps its own independent stock pool, refilled over time by the restock timer.
  • Late joiners and teleporting players see and can interact with every dealer.

Living economy

  • Selling floods the shared market: an item's sell price drops server-wide and recovers over time (Config.Market).
  • Dealers restock toward their maximum on a timer (Config.RestockEnabled).
  • Optional per-player daily sell caps (Config.DailySellCap, off by default).

Dirty money

Config.DirtyMoney controls how shop and loot cash is handled:

  • mode = 'account': uses olink.money with Config.DirtyMoney.account
  • mode = 'item': uses an inventory item with Config.DirtyMoney.item, optionally reading each bill's value from metadata

Police gameplay

  • Police detection is based on the player's job matching Config.PoliceJobs.
  • Officers force surrender by aiming within Config.AimSurrenderDistance, then cuff, escort, and transport the dealer to a Config.ArrestDropOffs point.
  • The reward is paid only on delivery, to the officer, the department, or both (Config.ArrestRewardRecipient).
  • Config.DispatchAlerts controls transaction and proximity dispatch pressure.

Pager intel

The blackmarket_pager item reveals intel on the nearest dealer once the player reaches Tier 2:

TierSuccess RateResult
240%General area in an anonymous email
370%Street and district in the email
4100%Street and district plus a GPS waypoint

See Features and Configuration for the complete behavior and tuning options.

Documentation