Delivery & robberies
Available modes
Section titled “Available modes”mailbox: the item or money is left in the mailbox.meetup: pickup at a defined point.npc: delivery by an NPC at an extra cost.person: in-person meeting between buyer and seller.
Buyer cost per mode
Section titled “Buyer cost per mode”Config.DeliveryBuyerFee defines the extra the buyer pays depending on the chosen mode:
- mailbox: 0
- meetup: 100
- npc: 0
- person: 300
Meetup points
Section titled “Meetup points”Config.MeetupPoints defines the fixed pickup points on the map.
NPC delivery
Section titled “NPC delivery”Config.Gameplay.NPCDelivery controls:
- extra cost
- whether it can be intercepted
- minimum value to be robbable
- insurance cost
- insurance payout
- vehicle speed
- delivery timeout
- blip visibility
- ped and vehicle models
- the courier’s prop
- robbery attempts per player and van (
ExtractionAttempts) - minimum time the server validates (
ExtractionMinSeconds) - the thief’s animation while forcing the trunk (
ExtractionAnim)
Robbing a delivery
Section titled “Robbing a delivery”An interceptable delivery can be robbed through the trunk, and to get there
the courier must first be taken out of play: hold them at gunpoint
-they surrender on their own, at IntimidationDistance- or kill them.
A courier who is being held stops delivering. The buyer cannot collect their order while the driver is held at gunpoint, not even if the buyer is the one holding them: the package is in the trunk and has to be taken out from there.
Forcing the trunk is the Config.SkillCheck minigame (section 9.4.2). It is
interrupted if the thief moves more than 3.5 metres away, shoots, runs or takes
damage. Failing the minigame uses up one of the attempts; getting shot or the
van driving off does not. Once all attempts are used, that trunk no longer opens
for that player, but it is still available to anyone else.
If the thief is the buyer themselves, forcing the trunk counts as an early delivery and the seller is paid anyway. If it is a third party, it is a robbery and the seller is only paid if there was insurance.
Who can rob it. Any player can, as long as the delivery is interceptable
(Interceptable = true and the order is worth at least MinValueForIntercept).
There is no blip for thieves by default: they have to find the van in the
world. If NotifyJob is set to a job name (for example 'robber'), players
with that job get a notification and a flashing blip at the van’s starting
point when an interceptable delivery begins.
What each party gets:
| Case | Thief | Buyer | Seller |
|---|---|---|---|
| Robbed by a third party | Gets the package | Loses the order (no refund) and is told who took it | Paid InsurancePayout (80 %) only if the buyer bought insurance |
| Robbed by the buyer | — | Receives the order (early delivery) | Paid normally |
Van destroyed or timed out (DeliveryTimeout) |
— | Full refund to the mailbox | Paid the insurance if the van was destroyed and insured |
| Buyer disconnected | — | Order sent to the nearest pickup point | Paid the insurance if insured |
Police and integrations. Config.OnDeliveryRobbed(thiefSrc, deliveryId, value, trigger)
in config.lua and Handlers.OnDeliveryRobbed in server/handlers.lua fire
once per robbery (trigger is 'driver_killed' or 'cargo_stolen'), ready for
a dispatch alert. On the client, sl-marketplace:onDeliveryRobbed and the
three skill-check events are available in client/handlers.lua.
Security. The server validates the vehicle and ped models, the distance,
the minimum time of the robbery (ExtractionMinSeconds), a one-time token per
attempt and the rate limit deliveryRobbery. A modified client cannot rob a
van from a distance or skip the minigame.
The aiming minigame
Section titled “The aiming minigame”Config.SkillCheck defines the ring that appears when forcing the trunk: it
goes round once with a segment painted on the edge, and you have to press the
key when the tip passes over that segment.
Phases— the phases, in order.duracionis the lap in milliseconds andarcohow wide the segment is, in degrees out of 360. Widening the segment or lengthening the lap make it easier; the segment has the stronger effect of the two.Keys— where the keys come from, shuffled every game.controlis the GTA control id, since the game does not understand letters. They are disabled while the minigame runs so that hitting a phase does not also open a door.ZoneMin/ZoneMax— where the segment can land, in degrees. Never at the start: at 5 degrees there would be no time to see it and it would be a coin toss.LockMovement— pins the player’s feet in place while it lasts. The camera is not touched. Enabled by default: the ring is fixed on the trunk, so walking takes it out of frame.Sounds— the four sounds: phase start, hit, miss and clearing the whole thing.falseturns them off.LatencyMs— the offset between the clock that decides whether you hit (the game) and the one that draws the ring (the browser). Raise it if hits are registered too early.
The minigame knows nothing about robberies: it is generic, and whoever launches
it says what each game is about. The three events it emits are in
client/handlers.lua.
In-person trade
Section titled “In-person trade”Config.InPersonTrade controls:
- proximity distance to start the trade
- valid radius of the point
- timeout
- whether a custom location is allowed
- cancellation if either player moves too far away