Reserved flag for debug branches. The structured olink.logger.Debug calls in the source fire regardless of this flag; their visibility is governed by oxide-logger's sinks, not this key.
Map of jobName -> { minGrade = N }. Members of these jobs at or above minGrade can deploy chips, see deployments, open the dashcam, operate the remote, and receive the officer event feed. Names must exactly match your framework's job names.
Config.MaxDeploymentsPerOfficer
number
3
Maximum simultaneous active deployments per character id. Officers hitting the cap cannot install a new chip until they decommission one or a civilian removes one.
Inventory item consumed when an officer installs a chip. Also the item returned to a suspect's inventory if they successfully roll the search.
Config.RemovalToolItem
string
'screwdriver'
Item the civilian uses from inventory to roll for chip removal. The item must be registered as usable in the customer's inventory framework. Used outside a vehicle, it silently no-ops; used inside any seat of any vehicle, it runs the search progress bar. Most servers already ship a screwdriver — reuse it by leaving this default, or point at any item you already register.
Config.UseRemoteController
boolean
true
When true, the /baitcar command is not registered and the radial submenu is not added; the baitcar_remote item is the only entry point. When false, /baitcar opens the dashboard and the radial entry is registered.
Config.RemoteControllerItem
string
'baitcar_remote'
The usable inventory item that opens the remote controller view. Only meaningful when UseRemoteController = true.
Duration of the civilian search progress bar in milliseconds. The bar is cancellable; movement and combat are disabled while it runs.
Config.RemovalSuccessChance
number
0.5
Probability 0..1 that a civilian's search roll succeeds and removes the chip. Failed rolls return the same ambiguous "found nothing" message as a non-bait vehicle, so civilians can't tell the two apart.
Minimum vehicle speed in meters per second for the drive-off accumulator to count. 8.0 m/s is roughly 29 km/h or 18 mph.
Config.TriggerDurationMs
number
1500
Time in milliseconds the vehicle must continuously stay above TriggerSpeedMps (with engine running, suspect in the driver seat) before the trigger fires. One-shot per deployment.
Config.FakeWantedLevel
number
3
Wanted level applied to the suspect on trigger via SetPlayerWantedLevel. Set to 0 to disable.
Length of the chip install progress bar in milliseconds. The bar uses the mini@repair / fixing_a_ped animation, disables car / move / combat controls, and is cancellable.
A dispatch alert fires the first time a non-LEO sits in a bait car, before they drive off and trip the trigger threshold. The alert routes through the same olink.dispatch.CreateAlert adapter as the trigger alert (and respects Config.DispatchJobs), so every responder in the recipient job list sees it — not just the deploying officer.
Key
Type
Default
Description
Config.NotifyOfficerOnEntry
boolean
true
Master switch for entry alerts. Set to false to disable. Entry alerts are rate-limited to one broadcast per plate every 30 seconds, and LEOs sitting in a bait car never trigger one.
Config.EntryDispatch.code
string
'10-66'
Dispatch code shown in the entry alert.
Config.EntryDispatch.title
string
'Bait Car Entry'
Alert title.
Config.EntryDispatch.icon
string
'fas fa-car-side'
Font Awesome icon.
Config.EntryDispatch.priority
number
3
Adapter-specific priority. Defaulted lower than Config.Dispatch.priority since the suspect may still walk away without stealing.
Config.EntryDispatch.blip
table
{ sprite = 225, color = 5, scale = 0.9 }
Blip parameters forwarded to the adapter for the entry alert's map blip.
Config.Dispatch is the payload forwarded to olink.dispatch.CreateAlert when a bait car is triggered. The exact in-game presentation depends on your dispatch adapter (ps-dispatch, cd_dispatch, oxide-dispatch, etc.).
Key
Type
Default
Description
Config.Dispatch.code
string
'10-16'
Dispatch code shown in the alert.
Config.Dispatch.title
string
'Bait Car Triggered'
Alert title.
Config.Dispatch.icon
string
'fas fa-car-burst'
Font Awesome icon used by adapters that render alert icons.
Config.Dispatch.priority
number
2
Adapter-specific priority. Most adapters use 1 (highest) through 3.
Config.Dispatch.blip
table
{ sprite = 225, color = 1, scale = 1.1 }
Blip parameters forwarded to the adapter for the alert's map blip.
The alert also receives the bait car's plate, model, and coords automatically. Recipient jobs default to the keys of Config.AllowedJobs and can be overridden via Config.DispatchJobs below.
Optional override for the recipient job list. When nil or empty, alerts go to every job in Config.AllowedJobs. Set this to broadcast to extra responders (sheriff, EMS) without granting them deploy access, or to narrow alerts to a subset of deploy-authorized jobs.
-- Example: broadcast to sheriff and state troopers too, without letting them deploy.Config.DispatchJobs = { 'police', 'LSPD', 'sheriff', 'sast' }
Config.Recording governs the dashcam clip recorder. The entire pipeline is gated on oxide-police being started; without it every value here is moot.
Key
Type
Default
Description
Config.Recording.enabled
boolean
true
Master switch. When false, the F8 hotkey does nothing and the recorder is never mounted.
Config.Recording.hotkey
string
'F8'
Default keybind for +baitcar_record (registered through RegisterKeyMapping). Players can rebind it in the FiveM keybinding menu.
Config.Recording.maxDurationS
number
45
Hard cap (in seconds) on a single clip. The recorder auto-stops at this duration.
Config.Recording.provider
string
'fivemanage'
'fivemanage' or 'discord'. Anything other than 'discord' falls back to Fivemanage. For Fivemanage, the credential is the FIVEMANAGE_MEDIA_API_KEY convar set in your server.cfg (the same key oxide-police uses for mugshots and bodycam) — not an oxide-police config file. For the full walkthrough, see the oxide-police guide: Setting up FiveManage media uploads.
Config.Recording.videoBitrate
number
600000
Target video bitrate in bits per second.
Config.Recording.discordMaxBytes
number
25 * 1024 * 1024 (~25 MiB)
Maximum upload size in bytes when provider = 'discord'. Clips larger than this are rejected.
Config.Dashcam defines the scripted camera attached to a bait car during dashcam playback. Profile resolution is layered: for each field (fov, offset, rotation), the value is taken from ByModel[modelName], falling through to ByClass[className], then to Default.
List of control ids that close the dashcam. 200 is FrontendPause (Esc) and 177 is FrontendCancel (Backspace).
Config.Dashcam.pollIntervalMs
number
2500
How often (in milliseconds) the dashcam re-validates the feed is still alive (entity exists, in scope, still flagged).
Config.Dashcam.timecycleEffect
string
''
Timecycle modifier applied during playback. Empty string disables. 'CAMERA_secuirity' (yes, the misspelling is the native id) produces a grainy CCTV look.
Config.Dashcam.timecycleStrength
number
0.2
Strength of the timecycle modifier, 0..1.
Config.Dashcam.tabletAnimation
boolean
true
Plays a tablet-holding animation on the officer watching the dashcam, so nearby players see them operating a device instead of standing idle. Upper-body only and works in vehicles. Set to false to disable.
Config.Dashcam.ByClass is keyed by GTA vehicle class name. The shipped defaults cover every standard vanilla class (compact, sedan, suv, coupe, muscle, sportsclassic, sports, super, offroad, industrial, utility, van, service, emergency, military, commercial, openwheel). Each profile is a table with the same shape as Default. Fields you omit fall through to Default.
Config.Dashcam.ByModel is keyed by lowercase spawn name. Use it for add-on models or for stock models whose class profile doesn't sit well. The shipped file includes a single example:
Tune in-game with /baitcardashcamtune. The tuner copies a paste-ready Config.Dashcam.ByModel.<name> = { ... } or Config.Dashcam.ByClass.<class> = { ... } snippet to your clipboard. See Admin for the full tuner workflow.