X3D Sell Drug

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

  1. Check the map for a buyer (they get a blip)
  2. Walk up and press E
  3. The prompt says what they want and how many; if you have it, you can deal
  4. 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.Alert fires 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 = true or 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_lib skill 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
Same category

Related scripts

View all products
Read more

Posts that cover this script