Features
How every part of Oxide Drugselling works — street selling, the sell menu, negotiation, heat, witnesses, corners, the TrapFone trap phone, clients, meets, dead drops, reputation, bulk buyers, burner life, and police evidence and sting tools.
How every part of oxide-drugselling works, from the player's side of the screen. All the numbers below are the shipped defaults. Change them in-game with /drugselling settings (see Configuration).
Ways To Sell
There are five ways a sale can happen. They all finish the same way on the server: the drug's level requirement is checked, the items are checked and taken, the price is worked out, the player is paid in dirty money (a dead drop can leave the cash at the drop instead), XP goes to the drug's own resource, heat is added, and your sale hook runs.
| Method | How it happens |
|---|---|
street | A player offers drugs to a pedestrian |
corner | A buyer comes to a player working a corner |
phone | A player hands over to a phone client at a booked meet |
drop | A phone client collects a package from a dead drop |
bulk | A player hands over to a bulk buyer |
Every decision that matters (the price, whether a buyer refuses, whether police are called, whether the player is robbed) is made on the server. A player can't change the outcome from their own game.
Street Selling
A player looks at a regular pedestrian and picks Offer Drugs from their targeting menu. The option only shows when:
- street selling is switched on
- the player carries at least one sellable drug
- the player isn't already selling, isn't working a corner, and doesn't have the trap phone open
- the pedestrian isn't a player, isn't dead, and isn't part of a mission or another script
- neither of them is in a vehicle
- the pedestrian isn't on the Never sell to list (cops, paramedics, soldiers, rangers, security guards)
- the player's short cooldown from their last sale (5 seconds) has passed
The pedestrian walks over. If they can't get within a few metres in 8 seconds, the player sees "They couldn't get to you".
The server checks the buyer is really standing there and that nobody has tried to sell to this buyer in the last 2 minutes. If someone has, the player sees "They just dealt with you. Try someone else."
If fewer police are online than Police needed online, the player sees "Not enough police online".
The camera moves in on the buyer and the sell menu opens.
The player sends an offer and the server decides what happens (see Negotiation).
If the player walks more than 5 metres away, the sale closes.
Other players nearby see the buyer walk over, react and (if it comes to that) pull a gun.
The Sell Menu
The same menu is used for street sales, corner buyers, meets and dead drops. It sits down the right of the screen, with the camera on the buyer, and lists:
- Product: the drugs the player carries, with item pictures and how many they have. A corner buyer's drug is marked Wanted and picked for them.
- Variant: when an item comes in different strains, purities or batches, each one with its grade, how many there are and its fair price. They're never sold as one stack.
- Set your price: Quantity and Price, changed with the left and right arrows. Each price step is 5% of the fair price, from half to double it.
- Their reaction: a meter (Good Deal, Fair, Pushing It, Too High) drawn from the same limits the server uses, with the quality and the bonus tags that explain why an item is worth more.
- Make Offer.
The header shows the title, what a corner buyer asked for ("They want 2 x Weed") or the agreed deal at a meet ("Agreed: 3 x meth for $450"), and a Dangerous warning when the buyer is a gang member who might rob the player.
| Key | What it does |
|---|---|
| Arrow Up / Down | Move through the menu |
| Arrow Left / Right | Change the quantity or the price |
| Enter | Pick the highlighted row, or make the offer |
| Backspace or Esc | Walk away |
The mouse works too. After an offer, the menu shows the answer: the deal and what was earned, a counter-offer (Accept or Decline), a refusal with the reason, or a robbery with what was lost. It closes itself 3 seconds after anything but a counter-offer.
At a meet or dead drop the quantity and price are already agreed, so the menu only lists the stacks that could fill the order (a stack that's too small is greyed out), and the button reads Hand Over.
Negotiation
Every drug has a fair price: what the goods are really worth, worked out by the pricing pipeline. When a street or corner buyer gets an offer, the server compares the asking price to the fair price:
| Asking price vs. fair price | What happens |
|---|---|
| 90% of fair or less | Accepted |
| Above 90%, up to 125% | 50% chance it's accepted, otherwise the buyer counters |
| Above 125% | Refused |
A counter-offer is 95% of the fair price, and the player has 60 seconds to take it. A counter is the buyer's last word: the player can accept it or walk away, but can't make a new offer to the same buyer. Before paying on a counter, the server checks again that the buyer is still there and enough police are online.
Before the price is even looked at, the server works through the risks in this order:
- Crowd: too many people around and the buyer won't deal (Witnesses).
- Police alert: a witness calls it in, or the alert chance comes up (Police Alerts).
- Refusal: a flat 15% chance the buyer just says no, adjusted by the time of day, gang territory and heat.
- Robbery: gang members only (Robbery).
- Price: the table above.
A police alert can go out even when the deal goes through.
Heat
Heat is how much attention something has drawn. Selling warms up four things at once:
| Heat on | Key | Loses per real minute |
|---|---|---|
| Area | The part of the map the sale was in (a grid of 250 m squares) | 1.5 |
| Corner | The corner being worked | 2.0 |
| Dealer | The player's character | 1.0 |
| Number | The phone number that made a phone deal | 0.75 |
How much heat is added:
| Event | Heat |
|---|---|
| Any sale | 2, plus 0.25 per unit sold |
| A corner sale | The sale's heat × 1.5 |
| A witness who calls it in | 4 per witness: to the area on the street and at meets, to the corner on a corner |
| A police alert | 8 to the area |
| A robbery | 5 to the area |
| A burner-to-burner text | 0.5 to the sender's number |
| A completed police sting | 16 to the area and to the dealer's number |
Heat tops out at 100. The hottest of everything a sale touches raises the risk in a straight line, up to these extra chances at 100 heat:
| At maximum heat | Extra chance |
|---|---|
| Buyer refuses | +25% |
| Police are alerted | +30% |
| Buyer robs | +10% |
So at 50 heat, a street sale has +15% alert chance on top of the normal 15%.
Heat is saved to the database once a minute, so it survives a restart. An admin can check the heat where they stand with /drugselling heat (see Admin).
Witnesses
The server counts the living, non-player people within 15 m of a sale, not counting the buyer. At a bulk buyer's meet, their own bodyguards don't count either (see Bulk Buyers).
- 4 or more people nearby: the buyer won't deal. The player sees "Too many people around."
- Fewer than that: each person has a 5% chance to call it in. One snitch is enough for a police alert, and each one adds heat.
Players work somewhere quieter, or accept the risk.
Time Of Day
The in-game hour changes how willing buyers are (accept) and how busy things are (demand):
| Hours | Label | Accept | Demand |
|---|---|---|---|
| 21:00 to 04:00 | Night | 1.2 | 1.3 |
| 04:00 to 10:00 | Morning | 0.7 | 0.6 |
| 14:00 to 18:00 | Afternoon | 1.0 | 1.1 |
| Any other hour | — | 1.0 | 1.0 |
- Accept divides the refusal chance. At night 15% becomes 12.5%; in the morning it becomes about 21%.
- Demand makes corner buyers arrive faster and phone clients text more often.
The server reads the in-game clock from oxide-weather if you run it. Otherwise it asks up to three players' games for the time once a minute, takes the middle answer, and keeps its own copy running between checks. Until it has its first answer after a restart, the clock is unknown: every hour counts as 1.0, and phone clients answer at any hour.
Robbery
Buyers on the Gang models list (Families, Ballas, Lost MC, the Mexican gangs, Salvadorans and Koreans by default) have a 15% chance of robbing the player on the street or at a corner, plus any extra from heat.
When it happens:
- up to 3 units of the offered drug are taken
- 25% of the player's dirty money is taken
- the robber pulls a pistol, holds the player up for a few seconds, then runs
- the player sees a Robbed screen with what they lost, and the area gets 5 heat
Phone clients and bulk buyers can rob too, at a meet. See Meets and Bulk Buyers.
Police Alerts
| Where | What can trigger an alert |
|---|---|
| Street and corners | A witness calling it in, or the 15% alert chance (plus heat) on every offer |
| Phone meets | A witness calling it in, or the heat alert chance. There's no flat chance |
| Police stings | Every hand-off to an undercover buyer, and every dead drop an undercover buyer collects |
The alert carries the code (10-31 for sales, 10-66 for stings), the message, and a map blip at the spot where it happened.
- Without a dispatch resource, every player with a job on the Police jobs list gets a notification and a map blip.
- With a dispatch resource that
o-linksupports (ps-dispatch, cd_dispatch, qs_dispatch, lb-tablet and others), the alert goes into your dispatch system. With most of them, the alert is handed to your dispatch resource through an online police officer's game (an on-duty one, if Only on-duty police is on), so an alert only goes out while such an officer is online.
The server decides every alert. It never goes through the seller's game, so a seller can't block it. Write the Police jobs as your framework names them (for example police), because the same list decides who counts toward Police needed online.
Dirty Money
Sale money is paid as dirty money, and robberies take from the same place. Every sale that pays shows a notification, like "Paid $75 for 3 x Weed (1g)", and picking up cash from a dead drop shows "You picked up $450". If a street, corner or meet sale can't pay (for example, the inventory has no room for the bills), the sale is cancelled and the drugs are given back. A dead drop that can't pay the player leaves the cash at the drop instead.
| Setting | QBCore | QBX | ESX |
|---|---|---|---|
| Framework dirty money (default) | markedbills items, one bill per sale with its worth written on it | black_money items, $1 each | black_money account |
| An account | The account you name | The account you name | The account you name |
| An item ($1 each) | The item you pick | The item you pick | The item you pick |
When a robber takes marked bills, they take the biggest bills first and hand back the change as a new bill.
Corners
A player carrying drugs can work a corner wherever they're standing. Buyers then come to them.
Working a corner
What buyers ask for
The Demand list sets the drugs buyers ask for, how often, and what they pay against the fair price. A buyer asks for 1 to 3 units of one drug from that list. Drugs whose items don't exist on your server are skipped.
Most buyers ask for a drug the player is carrying, so someone who only sells one drug still gets steady business. 15% of buyers ask for anything on the list instead, even a drug the player doesn't have.
- Selling what they asked for uses that drug's price multiplier. A multiplier of
1.5means corner buyers value it 50% higher. - Offering something else works, but buyers accept a substitute only 60% as often, and the multiplier doesn't apply. A refusal here reads "That's not what they came for."
- Offering more than they asked for is refused: "They don't want that many." The sell menu already stops the quantity at what they asked for.
Everything else (witnesses, alerts, refusals, gang robberies, counter-offers) works as on the street. A buyer who counters only takes their own counter; the player accepts it or sends them away. Corner sales add 1.5× the normal heat, to the area, the dealer and the corner itself.
When a corner closes
| Reason | What the player sees |
|---|---|
| /corner or the radial item | "You stopped working the corner" |
| Walked more than 15 m (plus 5 m of slack) from the spot | "You left the corner" |
| 3 minutes without dealing with a buyer | "The corner went quiet" |
| An admin switched corners off | "Corner selling was switched off" |
| Ran out of product when a buyer arrived | "You're out of product" |
Street selling is paused while a player works a corner. If the player hasn't started dealing with a buyer within 75 seconds of them being sent, the buyer leaves and the next one is scheduled.
The Trap Phone
A cheap TrapFone candybar (a parody of the prepaid phones sold at gas stations) with a small colour screen, a signal meter, a battery meter and a clock. Drive it with the keyboard, or click its keys with the mouse.
Opening it
- Use the Trap Phone item from the inventory, or
- press the Open trap phone key. It's unbound by default; players set it in Settings → Key Bindings → FiveM. It opens the first trap phone they carry (the same as
/trapphone).
While it's open the player holds a phone and plays a texting animation. The phone takes the whole keyboard, so no other key or hotkey does anything, but the player can still walk on foot with W A S D and run by holding Shift, even while typing. The mouse becomes a cursor for the phone's keys, so the camera doesn't turn. The phone puts itself away if they die, swim or are knocked over.
Controls
| Key | What it does |
|---|---|
| Arrow Up / Down | Move through a list, or scroll a conversation |
| Enter | Select. On the home screen it opens the menu; in a conversation it opens the options |
| 1 to 9 | Pick that numbered row in a list |
| Backspace | Back. While typing, it deletes a character |
| Esc | Back. On the home screen it closes the phone |
| End | Back to the home screen. On the home screen it closes the phone |
| W A S D, Shift | Walk, and run while Shift is held (on foot) |
| 0 to 9 while typing text | Letters by tapping: press 2 once for a, twice for b, three times for c. 0 is a space, 1 is punctuation |
| # or Tab while typing text | Switch between lower case, upper case and digits |
The numpad works too. With the mouse, click any key on the phone:
| Key on the phone | Same as |
|---|---|
| Left key under the screen, green key, OK | Enter |
| Right key under the screen | Backspace |
| Direction pad | The arrow keys |
| Red key | End |
Number keys, * and # | Typing, or picking a numbered row |
Screens
- Home: the clock, how many new texts are waiting (or the phone's reputation tier), and the phone's number.
- Messages: every conversation, newest first. New ones are marked with
*. - Contacts: the phone's clients, with their type, trust, hours, what they thought of the last batch, and how many deals they've done. Burner numbers the phone has texted are listed too.
- Meets: booked meets, soonest first, with the time, the street and Set GPS.
- New text: text another burner's number.
- Settings: Vibrate only / Ring on, Set PIN / Change PIN / Remove PIN, Insert SIM (only when carrying a SIM), Backlight off / Backlight on, Power off and Destroy phone. A switched-off phone gets no new orders and can't be traced, and texts sent to it wait until it's back on. Using it again switches it back on.
One phone, one book
Every phone item gets a hidden ID the first time it exists. Its number, PIN, battery, clients, texts and meets are all saved under that ID in the database. That means:
- The book belongs to the phone, not the character. Hand the phone to someone and the whole book goes with it.
- The first person to use a phone becomes its registered owner. That's the name a police trace can show (if you allow it).
- A new phone starts with 3 clients who live near where it was first used.
- A PIN locks it. Anyone other than the registered owner who uses a PIN-locked phone has to type the PIN. Three wrong tries lock them out for 60 seconds. A phone without a PIN opens for anyone.
- A blank phone from a shop or a give-item command gets its own number the first time it's used.
Battery
| Default | |
|---|---|
| Drain while switched on | 0.35% per real minute (a full phone lasts almost 5 hours) |
| Each text sent | 0.5% |
| Charging in a vehicle | 4% per real minute, just by sitting in any vehicle with the phone |
Battery pack (trap_charger) | +60% after 8 seconds |
To use a battery pack, have the phone open, or carry only that one phone. A dead phone gets no new orders (texts sent to it wait until it's charged), can't send, can't be traced and can't be read by police. A switched-off phone that still has charge switches back on when an officer uses it.
Signal
- Admins can draw no-signal areas (tunnels, basements) in the settings menu.
- No signal indoors can make every interior a dead zone. It's off by default.
Without signal the phone can't send, and incoming texts wait until it's back in signal. The signal meter on the status bar shows empty.
Ringing
When a text arrives while the phone is put away, the phone slides half up from the bottom-right of the screen showing who it's from and what they said, then slides back after a few seconds. Several texts show one after another.
If the phone isn't on silent, it also rings, and everyone within 12 m hears it. On Vibrate only, nobody hears it; the holder still sees the text.
Clients
The phone's NPC clients are made on the server. Each one has an alias, a look, a home area, a persona, the hours they answer, a trust level, and a memory of your last deal.
Personas
| Persona | How common | Budget (share of base value) | Counters before walking | Goes above their offer by | Order size |
|---|---|---|---|---|---|
| Broke | 20 | 45% to 75% | 1 | 5% | 1 to 2 |
| Cheap | 25 | 70% to 90% | 3 | 8% | 1 to 3 |
| Rushed | 15 | 90% to 110% | 1 | 10% | 1 to 3 |
| Regular | 30 | 90% to 105% | 2 | 12% | 1 to 4 |
| Rich | 10 | 115% to 160% | 2 | 20% | 2 to 6 |
How far a client will stretch also grows with their trust (from 0.9× at trust 0 to 1.2× at trust 100) and with the phone's reputation tier.
Hours
Each new client answers during one of these windows on the in-game clock, and only orders during it:
| Window | Hours |
|---|---|
| Evenings | 17:00 to 01:00 |
| Late nights | 21:00 to 05:00 |
| Days | 09:00 to 18:00 |
| Any time | All day |
Trust
Trust runs from 0 to 100. New clients start at 40.
| What happened | Trust |
|---|---|
| A completed deal | +5 |
| On time | +3 |
| Late | −6 |
| Very late | −12 |
| No-show | −18 |
| A good batch (well above what they expect) | +4 |
| A bad batch (well below) | −8 |
| Their dead drop was taken by someone else before they got there | −12 |
| You took your own dead drop back | −6 |
| You cancelled a booked meet | −6 |
| They didn't follow you to a new number | −10 |
At 5 or below, the client texts that they're done (for example "done with u") and leaves the book. The Contacts screen shows trust as Tight (80+), Good (55+), OK (30+) or Shaky.
Quality memory
After every deal the client remembers what they got. The quality is read from the pricing pipeline, so it means the same thing for every drug: the batch's fair price against the item's base price.
- Fire: 15% or more above base. Trust +4, and their next offer is 8% higher.
- Fine: in between.
- Trash: 20% or more below base. Trust −8, and their next offer is 10% lower.
Getting more clients
- Starter clients: 3 when the phone is first used.
- Street buyers: after a completed street sale, 15% ask for the number.
- Corner buyers: after a completed corner sale, 20% ask for the number.
- Introductions: after a deal, a client with trust 70+ and 3+ deals has a 25% chance to introduce a friend who lives nearby.
New clients only join if the player is carrying a working phone with room in its book. The book holds 5 clients, plus more at higher reputation tiers. Players can rename or delete a contact from its Contacts page (names are typed on the keypad, like a text).
Orders
Every 30 seconds, each client of every phone carried by an online player may text an order. A client only orders if:
- the phone is switched on, charged and carried
- it's inside the client's hours
- they know the phone's current number
- they don't already have an order open, and their last order ended at least 7 minutes ago (half that after Not now or Don't got it)
- the phone has fewer than 4 open orders
The chance is 10% per client per check, times the phone's reputation order rate, times the time-of-day demand.
A new phone doesn't wait for that: the first of its starter clients answers at any hour and texts an order about 20 seconds after the phone is first used.
What clients ask for
| Clients ask for | Items that fill it |
|---|---|
| grams | weed_1g |
| eighths | weed_eighth |
| meth | any meth baggy |
| coke | cocaine_bag |
| rock | crack_bag |
| party pills | party_pill and molly_capsule, loose, bagged or blister-packed |
| bars | bar_pill, loose, bagged, bottled or blister-packed |
| blues | blue_pill, loose, bagged, bottled or blister-packed |
| percs | perc_pill, loose, bagged, bottled or blister-packed |
Only rows whose items exist on your server are used. Each client prefers one or two of them.
The text and the replies
A client's text reads like "u around? need 2 grams. got $40". Their opening offer is the cheapest listed item's base price × quantity × their persona's budget share (moved up or down by what they thought of your last batch). The player opens the conversation and presses Enter for options:
| Option | What happens |
|---|---|
| Accept $X | The price is agreed. The client asks when to meet |
| Counter price | Type a price. If it's within how far they'll stretch, it's agreed. If not, they meet you in the middle, until their counters run out; then they walk |
| Offer less | Only shown when they asked for more than 1. Type a smaller quantity. They keep the same price per unit, and it's agreed |
| Don't got it | Only shown when the player isn't carrying enough of what they asked for. The order closes with no penalty, and they'll ask again sooner than usual |
| Not now | The order closes with no penalty, and they'll ask again sooner than usual |
| Decline | The order closes |
A client waits 5 real minutes for an answer (and again for a time to be picked) before giving up with a text like "too slow".
Booking
Once the price is agreed, Pick a time:
- The client offers up to 3 times inside their hours: the first at least 2 in-game hours ahead, then every 2 in-game hours, skipping any time outside their hours.
- Then How?: Hand-off or Dead drop (bulk buyers only do hand-offs).
- While picking a time, the options also have Decline, and Don't got it when the player isn't carrying enough.
A hand-off point is on a pavement or road 40 to 220 m from the client's home (a dead drop uses a drop spot, see Dead Drops), and the client texts the street name and time. The meet appears on the Meets screen with Set GPS. A booked meet's options are Set GPS, Pass to number (see Burner Life) and Cancel meet (trust −6).
On a server with the standard GTA clock, two in-game hours pass in about four real minutes.
Meets
A hand-off is face to face.
The server then checks the player is within 30 m of the meet point, it's inside the meet window, the client is standing there, enough police are online (Police needed online), the player is allowed to sell that drug (level requirement), the player has the full quantity, and the player didn't get there faster than any vehicle could drive.
Timing
| When the player hands over | Counts as |
|---|---|
| From 30 in-game minutes before to 10 after the booked time | On time |
| Up to 60 in-game minutes after | Late |
| Up to 180 in-game minutes after | Very late |
| Later than that | No-show: the client texts, loses 18 trust, gives up and leaves, and the order fails |
What can go wrong
- Crowd: 4+ people around and the client won't deal yet. The meet stays booked; move somewhere quieter.
- Alert: a witness, or the heat alert chance, calls the police. This is checked before the crowd, so a heat alert can go out even when the client won't deal.
- Robbery: 25% at trust 0, falling to nothing at trust 35 (plus heat). The client takes up to the order's quantity and 25% of the player's dirty money, then leaves the book. The phone's reputation isn't touched.
A successful hand-off pays the agreed price, not a price based on quality. The quality still counts: the client remembers it (see Quality memory).
Dead Drops
Instead of meeting, the player leaves the package and walks away.
/drugselling drops. With no spots, clients only offer hand-offs.Payment depends on Payment:
- Left at the drop (default): a cash envelope appears where the bag was, with a Your cash marker, and waits 10 real minutes.
- Paid on collection: the money goes straight to the player, if they're online and carrying the phone. Otherwise it's left at the drop.
Only the player whose drop it is sees the markers. Everyone else just sees the bag or the envelope.
Anyone can see and take the bag, and the cash. Every player within 60 m sees them, and anyone on foot within 2 m gets [E] Take the bag or [E] Take the cash. Each player's game is only told about the drops near them, so nobody gets a map of every bag on the server.
| If the bag is taken by... | What happens |
|---|---|
| Someone else | They get the drugs. The client texts (for example "someone took it before me"), trust −12, and the order fails |
| The player carrying the phone that handles the drop | The client texts, trust −6, and the order fails |
Late or on time is judged when the package is left. There are no witness checks at a dead drop; heat is added when the client collects.
Reputation
Each phone has a reputation. Every change in any client's trust moves it by the same amount (it never drops below 0). Reaching a new tier sends a "Word is getting around" text from Network.
| Tier | From reputation | Order rate | Extra book slots | Price stretch | Bulk buyers |
|---|---|---|---|---|---|
| Nobody | 0 | 1.0× | +0 | 1.00× | No |
| Corner Boy | 60 | 1.0× | +2 | 1.03× | No |
| Hustler | 180 | 1.15× | +4 | 1.06× | No |
| Plug | 400 | 1.3× | +7 | 1.10× | Yes |
| Kingpin | 800 | 1.5× | +10 | 1.15× | Yes |
Bulk Buyers
Big contacts who only deal with a phone at a tier with Bulk buyers (Plug and up).
- While a phone has fewer than 2 bulk contacts, each order check has a 2% chance one reaches out.
- They order big and pay 80% of base value, and will only go 5% above their opening offer.
- Meets are always hand-offs, never dead drops.
- They arrive with 2 bodyguards, in their car or on foot. The bodyguards don't count as witnesses: up to that many peds of the bulk buyer's models, standing within 15 m of the buyer, are left out of the count at a bulk meet.
- Ambush: 12% at trust 0, falling to nothing at trust 100 (plus heat). The bodyguards open fire, the goods are taken and the bulk contact leaves the book. No cash is taken. After about 30 seconds the bodyguards put their guns away, stop attacking and leave.
- A bulk contact orders again no sooner than 14 minutes after their last order ended (twice the normal client wait), during their hours, with the same 2% chance per order check.
| They ask for | Items | Quantity |
|---|---|---|
| ounces | weed_ounce, weed_brick | 3 to 8 |
| meth | meth_baggy, meth_baggy_glass, meth_baggy_blue_sky, meth_baggy_ice | 20 to 50 |
| bricks | cocaine_brick | 1 to 3 |
Burner Life
SIM swap
A Prepaid SIM (trap_sim) gives a phone a new number. Use Settings → Insert SIM on the phone, or use the SIM item while the phone is open (or while carrying only that one phone).
- The phone gets a new number. The old one stops existing: texts and traces to it fail.
- The new number starts with no heat.
- Every client stops ordering until they're told. In each client's conversation (or on their Contacts page), pick Send new number. The chance they follow is 35% at trust 0, rising to 100% at trust 100. If they don't, they text back (for example "who dis") and lose 10 trust.
- Other burners that knew the old number have to be texted from the new one.
Destroying a phone
Settings → Destroy phone, confirmed twice. The item is removed, every text is wiped, every client is gone, and all open orders and meets fail. There's nothing left for police to read.
Burner-to-burner texting
New text, type the other phone's number (the dash is added for you), write the message and press Enter. Texts can be up to 160 characters. Each one uses battery and adds a little heat to the sender's number. The conversation appears under the number in Messages, and the number appears in Contacts.
Passing a meet
A crew can share one book. In a booked meet's conversation, pick Pass to number and type a crew member's burner number. Their phone gets a text saying who to meet and where, and the meet appears on their Meets screen. From then on, only the person carrying that phone can do the hand-off or leave the drop. Trust and reputation still go to the phone that owns the client.
Police: Seized Phones
A trap phone is a normal inventory item, so whatever your police use to search people, confiscate items or store evidence already moves it. No police resource is needed for this part.
Evidence View
An officer (a job on the Evidence → Jobs list, at or above Minimum grade, and on duty while Only on-duty police is on) who uses a trap phone they aren't the registered owner of gets Evidence View instead of the normal phone. The phone shows an EVIDENCE banner and is read-only:
- the phone's number, and its registered owner if Names the registered owner is on
- Messages: every conversation (reading them doesn't mark them as read)
- Contacts: the clients, with type, trust and deal counts, and any burner numbers
- Meets: booked meets, with time, street and Set GPS
- Send report: send everything to an MDT case (see below)
The phone must have charge. A phone that was only switched off switches back on. A dead phone shows "The phone is dead. It needs a charge before you can read it." Charge it in a vehicle or with a battery pack.
Getting in
| Mode | What the officer has to do |
|---|---|
| Timed extraction (default) | Wait through a 15-second progress bar. You can require a tool item for it |
| Needs the PIN | Type the phone's PIN, if it has one. A phone without a PIN opens straight away |
| Opens straight away | Nothing |
Number traces
In Evidence View, a conversation with another burner number, or that number's Contacts page, has Trace number.
- It works if the traced phone is switched on, charged, carried by an online player, and not inside a no-signal area (No signal indoors doesn't stop a trace). Otherwise: "No trace".
- The officer's map shows a red circle with a 150 m radius and a pin, for 60 seconds. The phone is somewhere inside the circle, not necessarily at the pin.
- Each officer can trace once every 2 minutes. A trace that finds nothing still uses it up.
- It shows the registered owner's name only if Names the registered owner is on.
NPC clients don't have numbers, so only other players' burners can be traced.
Reports
Send report asks for a case number, then sends a report of the phone to your MDT through a bridge:
- With
oxide-police, the report is attached to that case as a case entry. The officer must be on duty and the case must belong to their department. - With no bridge running, the phone says "No case system".
Type the case number with the keypad: # switches to digits, and the dash is on key 1. See Evidence Bridge to connect another MDT, or to log reports without one.
Police: Stings And The Heat Map
The Sting Phone (sting_phone) works for players in Stings → Jobs (on duty, if Only on-duty police is on). It opens like a trap phone with an UNDERCOVER banner and up to three options: Post buyer, My stings and Heat map.
Post buyer
Only one sting can be posted every 30 minutes, across the whole server.
What the officer learns
- When the dealer books a meet, the officer gets a notification with the time and street.
- My stings lists each running sting with its status (Waiting or Meet booked), and once booked the time, the street and Set GPS. A sting leaves the list when it ends.
- When the dealer hands over, the goods are gone and the dealer isn't paid. The dealer sees "It's a setup!", the officer gets "The dealer handed over to your buyer", an
Undercover buy completed(10-66) alert goes to police at the spot, and the area and the dealer's number get heat. - If the dealer books a dead drop instead, the undercover buyer "collects" it: the goods are seized, the alert goes out at the drop, and the dealer is never paid.
- If the dealer declines, lets the order expire, cancels, takes their own drop back or doesn't show, the officer gets "Your sting went nowhere". The fake buyer leaves the dealer's book when the order ends.
Heat map
Heat map marks every area with heat of at least 30, as it was 5 minutes ago, with red circles on the officer's map for 60 seconds. The delay means it shows where dealers were, not where they are. Each officer can open it once every 30 seconds. The server keeps this history in memory, so for the first 5 minutes after a restart the map shows nothing.
Pricing Pipeline
Every sellable item has a fair price. It starts from the item's base price, and each modifier in the drug's config changes it:
fairPrice = basePrice * (all multipliers combined) * (1 + all bonuses added up)Multipliers scale the price (purity, variant). Bonuses stack on top (strong strain traits). The whole calculation comes from the modifiers list in shared/config/drugs.lua.
| Modifier type | What it reads |
|---|---|
grade_multiplier | A grade on the item (like purity = 'High') |
score_multiplier | A 0–100 score on the item, on a curve, with a grade fallback |
variant_multiplier | A variant on the item (like variant = 'blue_sky') |
trait_bonus | Traits looked up from another resource's export (weed strains) |
metadata_bonus | A number on the item that adds a bonus per step (weed generation) |
export_multiplier | A multiplier from another resource's export, which can price by who the buyer is (pills) |
Shipped weed pricing
A score_multiplier on quality_score (falling back to the quality grade), a trait_bonus from oxide-weed's GetStrainData, and a metadata_bonus on generation.
| Item | Base price |
|---|---|
weed_1g | 25 |
weed_eighth | 75 |
weed_quarter | 140 |
weed_half | 260 |
weed_ounce | 480 |
weed_brick | 800 |
Shipped meth pricing
All 11 meth baggies have a base price of 140. A grade_multiplier on purity and a variant_multiplier on variant (from 0.7 for Street Mix to 1.6 for Blue Sky) set the real price.
Shipped cocaine pricing
| Item | Base price |
|---|---|
cocaine_bag | 200 |
crack_bag | 120 |
cocaine_brick | 2500 |
A grade_multiplier on purity scales it: Pure pays the most, down through High, Mid, Low and Dirty.
Shipped pills pricing
| Item | Label in the sell menu | Base price |
|---|---|---|
party_pill | Party Pill | 30 |
molly_capsule | AURA Capsule | 35 |
bar_pill | NOVA Bar | 25 |
blue_pill | VELA 30 | 45 |
perc_pill | AXIA 10 | 35 |
Bagged, bottled and blister-packed pills use the same base price as the loose pill. An export_multiplier asks oxide-pills for the price of each sale: it weighs who the buyer is, the batch, the packing and the brand. Without oxide-pills running, pills sell at base price.
Gang Territory
With oxide-gangs, gang territories change sales made inside them:
- the territory's price setting multiplies what the buyer pays, for every way of selling
- the territory's buyer density setting divides the street and corner refusal chance
- every sale is reported to
oxide-gangs, so it builds the seller's gang influence there (the gang system's own limits apply)
The price shown to the player is the price actually paid, bonus included. Without oxide-gangs, or outside any territory, nothing changes. The per-territory modifiers are set in oxide-gangs — see its configuration.
Progression Integration
Each drug can link back to the resource that makes it:
| Drug | Resource | Level needed | XP per sale |
|---|---|---|---|
| Weed | oxide-weed | 2 | 10 per gram (an ounce pays 240, a brick 350) |
| Meth | oxide-meth | none | 15 per item |
| Cocaine | oxide-cocaine | none | 15 per item |
| Pills | oxide-pills | none | 3 per item |
- Players below the level can't sell that drug, and see "Requires level 2". The server checks this on every way of selling: street, corner, phone hand-offs, bulk hand-offs and dead drops.
- Every sale, whichever way it's made, gives XP and adds to the sold count in that resource. The sold count is the number of items.
- Weed XP follows weight, so a crop earns the same XP whether it's sold as grams or as ounces and bricks. Each item's weight for XP is its
xpUnitsinshared/config/drugs.lua(see Configuration). - If the resource isn't running, the level check and XP are skipped and the sale goes through.
Sale Hook
Every completed sale can tell your other systems about it, without touching the protected code. Use either or both:
Config.OnDrugSoldinshared/config.lua, where you write your own code- the
oxide-drugselling:drugSoldserver event, from any of your resources
Both run on the server once the sale is settled (for a dead drop, when the client collects), with who sold, the drug and item, the quantity, the progression units (xpUnits), the price, the payout mode, and the method (street, corner, phone, drop or bulk). Sales to an undercover buyer aren't sales, so they don't run it. See Configuration → File-Only Settings and Exports → oxide-drugselling:drugSold.
Settings Menu
Admins change almost everything live with /drugselling settings: street selling, heat, corners, the phone, clients, meets, dead drops, reputation, evidence, bulk buyers, stings and model swaps. Drop spots and no-signal areas are placed directly in the world. See Configuration and Admin.
Protections
- Every price, outcome, cooldown, payout and alert is decided on the server.
- A street sale is priced against the buyer it started with. A player can't open with one buyer and finish with a better-paying one.
- A buyer who makes a counter-offer only takes that counter. A player can't keep re-offering until a roll goes their way.
- The drug's level requirement is checked on the server for every sale, not only in the sell menu.
- Meet hand-offs check the player's position, the time, and how fast they got there.
- Item removal is all or nothing: if taking the items fails part-way, what was taken is given back.
- Other players' games only replay a buyer's movements and animations for an NPC the seller controls and is standing next to, and only this resource's own animations and weapons.
- Each player's game is only told about the dead drops near them.
- Each request a player can send is rate-limited:
| Request | Once every |
|---|---|
| Load sellable items | 3 s |
| Street offer | 5 s |
| Accept a counter-offer | 5 s |
| Start a corner | 2 s |
| Corner offer | 3 s |
| Open the phone by key | 1 s |
| Phone button | 0.25 s |
| Send a text or reply | 1.5 s |
| Meet hand-off | 2 s |
| Leave or take a drop | 1.5 s |
| Post a sting | 3 s |
Next Steps
Configuration Reference
How Oxide Drugselling stores its settings, the in-game settings menu, and every setting — street selling, heat, witnesses, corners, the trap phone, clients, meets, dead drops, reputation, evidence, bulk buyers, stings, and the drugs file.
Admin Guide
The /drugselling admin commands (settings, corners, drops, kit, heat), the /corner and /trapphone player commands, and how admin permissions work in Oxide Drugselling.