
Description
An illegal sales job that does not park the player in the same spot every day — shady buyers rotate through map spots on a timer. When one runs out of time they disappear and a new one turns up somewhere else.
Set up several buyer groups with their own spots, items, prices, stay time, minigame and barred jobs. Buyers pay in black money, so it feeds straight into whatever laundering loop your server already runs. Works on ESX or standalone.
Features
- [+] Easy to set up: tune everything in the config, or change it from the web
- [+] Shady buyers appear at map spots with a blip and a time limit each
- [+] Several buyer groups, each with its own spots and live-at-once count
- [+] Set what they buy and a random min-max price per item
- [+] Paid in black money, ready for your laundering system
- [+] Minimum on-duty police before anyone can sell, plus jobs that cannot sell
- [+] Police alert after a sale by chance, with a red circle on the map
- [+] Haggling minigame before the deal: rounds and difficulty, can be turned off
- [+] Big-buyer event on a timer: city-wide announcement, 1.2x pay
- [+] No selling to the same buyer twice; items and distance re-checked on the server
- [+] Hook your own scripts in at addons/
- [+] Admins add, move, toggle and delete buyer spots from the admin panel
How it plays
- Check the map for a buyer (they get a blip)
- Walk up and press E
- The prompt says what they want and how many; if you have it, you can deal
- Hand it over, take the black money — that buyer will not deal with you twice
Each one wants something different and carries its own countdown. First there, first served.
Big buyers
An event that gets the whole city moving:
- Appears on a random timer (default every 30–60 minutes) with a city-wide announcement and a flashing blip visible across the map
- Buys 10 units at a time, paying the normal price × 1.2
- Each sale takes 3 minutes; cancel any time, but you have to hold the spot to finish
- Everyone can sell once per event
- Admins can start one from the X3D Admin Panel or with
exports.x3d_selldrug:StartEvent(group)
Do not want events? Delete the event group from the config.
Police and admins
- On-duty police required:
Config.RequiredJobs = { police = 2 } - Police alert:
Config.Alertfires after a sale by the chance you set (30% by default). Chosen jobs get a message and a temporary red circle on the map - Jobs that cannot sell: set per group with
blockedJobs - Admins see every buyer spot on the map, empty ones too (green = buyer there · faded = empty · faded red = disabled). Turn it on with
Config.AdminBlips = trueor from the admin panel page. Players never see them - Spot editor in the admin panel: add a spot where you stand, teleport to it, enable/disable it, move the buyer, hold to delete — no config editing
Safe by construction
Everything that matters is checked on the server:
- The items are verified, never taken on the client's word
- Distance is re-checked at the end, not only at the start — start a deal and run off and it pays nothing
- One seller per buyer when you set
exclusive = true; nobody can cut into a deal in progress - No selling to the same buyer twice, tracked per player
- The clock has to have actually run — the client saying "done" is not enough
All of it is configurable
Where buyers can appear, what they want, the prices, how long they stay, how many are live at once, the sale time, the minigame, the blip and which jobs are barred — all per group in shared/config.lua.
Thai and English text, switched with Config.Locale.
Fits what you already run
Detected automatically, and never required:
- A negotiation minigame — an
ox_libskill check when it is started, skipped when it is not - Progress bar and notifications — ox_lib or esx_notify when present, otherwise built in
- 3D labels and the E prompt — built in, no label resource needed
Hooks.OnSold— hook levels, quests or logs after each sale- X3D Map Events (free) — with it on the server, the big-buyer event shows on the pause-menu map panel with a countdown, and players can click to set a waypoint. Without it nothing changes
Hooks.OnEventBuyer/Hooks.OnEventBuyerGone— hook announcements or logs when the big buyer appears and leaves
Version history
- 1.2.6 — Released 13/10/2026 00:19
- 1.2.4 — Released 12/10/2026 11:22
- 1.2.3 — Released 12/10/2026 10:21
- 1.2.2 — Released 11/10/2026 22:19
- 1.2.0 — Released 11/10/2026 15:44
- 1.0.1 — Released 24/09/2026 10:55
- 1.0.0 — Released 24/09/2026 10:38
Related scripts

- Updated
X3D Damage
Set every weapon's damage yourself, with bleed, slow, stun, knockdown and lifesteal effects. Weapon skins supported. ESX or standalone.

- Updated
X3D Safe Cracking
A dial-cracking minigame: turn with A and D, press E on the notch. One export, no dependencies.

- Updated
X3D Lockpick
A lockpick minigame felt out with WASD, called with one export and usable from any script.

- Updated
X3D House Robbery
Pick the door, search the floor, crack the safe, with a cooldown per house and both minigames in the same zip.
Posts that cover this script
- 24/09/2026
Free FiveM crime scripts: drug selling, house robbery, lockpick and safe-cracking minigames for ESX
X3D's free gang-side set for ESX — X3D Sell Drug (buyers rotate around the map, pay black money), X3D House Robbery (pick, loot, crack the safe, per-house cooldown), X3D Lockpick and X3D Safe Cracking (minigames behind one export). Everything is checked server side, with notes on wiring them into what you already run.
Read more - 26/09/2026
What a FiveM banking script needs: every ATM, transfers by phone number, dupe protection, and a free ESX bank
What a FiveM banking script for ESX has to do: every ATM on the map without coordinates, transfers by phone number or ID, history, and the server-side checks that stop money dupes; the holes in old esx_atm/esx_banking, and X3D Banking, free and integrated with X3D Phone.
Read more - 16/09/2026
FiveM Scripts Explained: Types, ESX vs QBCore vs Standalone, and How to Choose
Read more - 15/09/2026
How Much Does It Cost to Open a FiveM Server, and What Do You Need? From 32 Players to a 2,000-Player City (2026)
Read more


