Patrol Calls
The Patrol Calls system provides automated NPC side jobs (shoplifting, public intoxication, shots fired, stolen vehicle pursuits) that are offered to available officers via the MDT Tablet while the department is quiet.
1. Overview
- Dynamic NPC Call Generation:
- When no real player 911 dispatch calls occur for a configurable quiet period (
quietTime), the server automatically generates ambient NPC calls near opted-in officers. - Officers control their availability using the Available toggle inside the Patrol Calls app on the MDT Tablet.
- When no real player 911 dispatch calls occur for a configurable quiet period (
- Multi-Officer Backup & Control Handoff:
- Primary officers accept call offers from the tablet.
- Up to
maxRespondersbackup officers can join an active call directly from the tablet board. - NPC AI and entity synchronization smoothly migrate to nearby backup officers if the primary officer disconnects or leaves the scene.
- Interactive Target Menu Actions:
- Target options on NPC suspects allow officers to Cuff, Search (discovers contraband/stolen goods), Cite & Release, Seat in Vehicle, and Unseat.
- Transport & Booking Lifecycle:
- Cuff Mode: Cuffing the suspect resolves the call on the spot.
- Transport Mode: Officers cuff the suspect, seat them in a police cruiser, drive to a station drop-off point (e.g. Mission Row PD, Vespucci PD, Sandy Shores SO, Paleto Bay SO), and book them via on-screen prompt.
- Financial Payouts & Department Logging:
- Payouts scale dynamically based on the outcome (
arrest,booked,citation,neutralized) and search bonuses. - Primary officers receive full payout; backup officers receive a percentage share (
Payout.backup.share). - Killing compliant/surrendered suspects yields $0 pay and flags the call for supervisor audit.
- All call histories and officer earnings are saved to SQL (
police_patrol_calls).
- Payouts scale dynamically based on the outcome (
2. Included NPC Mission Types
| Code | Mission Label | Description | Allowed Reactions | Booking / Citation |
|---|---|---|---|---|
10-31 | Shoplifting In Progress | Store clerk reports suspect leaving with unpaid goods. | Comply, Flee, Fight | Can be cited or arrested/transported. |
10-56 | Public Intoxication | Intoxicated person stumbling into traffic with drunk animation clipsets. | Comply, Fight, Flee | Can be cited or arrested/transported. |
10-71 | Shots Fired | Armed suspect firing gunshots into the air. Suspect spawns with body armor and firearms. | Surrender, Flee, Shoot | Must be cuffed & transported or neutralized. |
10-60 | Stolen Vehicle | ALPR hit on reported stolen vehicle driving through traffic. | Pullover (bail on foot), Flee (high-speed pursuit) | Must be cuffed & transported or cited. |
3. In-Game Usage & Workflow
1. Opting In for Calls
- Open the MDT Police Tablet and select Patrol Calls.
- Toggle Availability to
Available(green indicator). - When the department is quiet, open call notifications will pop up with custom sound alerts.
2. Accepting & Responding
- Primary Officer: Click Accept Call under Open Calls in the tablet. A GPS waypoint is set to the scene location.
- Backup Officers: Any on-duty officer can open the tablet and click Join as Backup on an active call card.
3. Handling the Suspect Scene
- Approach the suspect ped within range (
triggerDistance) to trigger suspect AI reaction. - Use Target Options (
Eye Target / Target Menu) on the suspect ped:- Handcuff: Subdues and places handcuffs on a compliant or knocked-down suspect.
- Search: Searches suspect pockets for stolen goods, spent casings, or contraband.
- Issue Citation: (Shoplifting / Drunk calls) Issues a citation fine and releases the suspect.
- Seat in Cruiser: Seats cuffed suspect into nearest vehicle.
- Unseat: Removes cuffed suspect from vehicle.
4. Transport & Drop-off Booking
- Drive the cruiser with the seated suspect to any department drop-off zone:
- Mission Row PD (
vec3(407.3, -997.6, 29.3)) - Vespucci PD (
vec3(-1108.5, -845.0, 19.3)) - Sandy Shores SO (
vec3(1855.4, 3683.4, 34.3)) - Paleto Bay SO (
vec3(-448.4, 6012.8, 31.7))
- Mission Row PD (
- Upon arrival, an on-screen prompt appears (
[E] Book Suspect). Press E to complete booking and receive financial payout.
4. Admin Testing Command
Admins can skip quiet-time checks, RNG rolls, and cooldowns to instantly test calls at the closest location:
/patroltest [type]- Example:
/patroltest shoplifter - Example:
/patroltest shots_fired - Example:
/patroltest drunk - Example:
/patroltest stolen_vehicle
5. Configuration Reference (shared/config_patrolcalls.lua)
Config.PatrolCalls = {
enabled = true,
perm = 'patrol_calls', -- Permission key required (set per rank in Access)
Scheduler = {
interval = 60, -- Seconds between spawn checks
quietTime = 300, -- Seconds without real 911 dispatch calls before NPC calls spawn
chance = 50, -- % chance to create a call on each check
minAvailable = 1, -- Minimum opted-in officers required
maxActive = 2, -- Max active NPC calls allowed simultaneously
officerCooldown = 180, -- Officer cooldown in seconds after completing a call
maxOfferDistance = 3000.0, -- Max distance from officer to spawn location (0 = anywhere)
},
Booking = {
mode = 'transport', -- 'cuff' = resolve on spot | 'transport' = drive to station drop-off
dropoffRadius = 8.0,
},
Payout = {
mode = 'server', -- 'server' (direct cash) | 'society' (job bank) | 'none'
outcomes = {
arrest = 1.0, -- Base pay multiplier for on-spot cuffing
booked = 1.25, -- Base pay multiplier for transported drop-off booking
citation = 0.6, -- Base pay multiplier for cited suspect
neutralized = 0.4, -- Base pay multiplier for hostile suspect killed
},
searchBonus = 50, -- Extra payout bonus if searched before resolving
backup = {
enabled = true,
share = 0.5, -- Fraction of payout given to backup responders
radius = 40.0, -- Backup distance requirement from scene
},
},
}