Skip to content

Advanced Interrogation

Before installing, make sure the following resources are available on your server.

DependencyRequiredPurpose
ox_libโœ… YesCallbacks, notifications, Text UI support, and shared utilities
oxmysqlโœ… YesRecording metadata, placements, tapes, and storage persistence
Qbox, QBCore, or ESXโœ… YesJob authorization and player framework integration
ox_inventory or qb-inventoryโœ… YesRecorder, cassette, battery, and magnet items
Interaction systemโœ… Yesox_target, qb-target, sleepless_interact v2, or built in Text UI mode
FiveManageOptionalRecommended external audio storage backend
object_gizmoOptionalAlternative 3D placement mode for portable recorders
  1. Download the resource from your Cfx.re Keymaster after purchase.

  2. Extract the folder into your server resources and keep the resource name as rs_interrogation.

  3. Install the inventory items using the file that matches your inventory.

InventoryItem File
ox_inventoryinstall/items_ox.lua
qb-inventoryinstall/items_qb.lua

Copy the included item images from install/images/ into the image folder used by your inventory.

Required items
interrogation_recorder
blank_cassette
cassette_tape
recorder_battery
cassette_magnet
  1. Configure framework, inventory, and interaction detection in config.lua.
config.lua
Config.Framework = "auto" -- auto | qbx | qb | esx
Config.Inventory = "auto" -- auto | ox_inventory | qb-inventory
Config.Target = "auto" -- auto | ox_target | qb-target | sleepless | textui
  1. Choose where recorded audio should be stored.

FiveManage is the recommended backend for production servers.

config.lua
Config.Recording = {
storage = "fivemanage",
}

Add the API key to server.cfg. Use set, not setr, because this value must remain server side.

server.cfg
set rs_interrogation_fivemanage_api_key "your_key_here"

Use this option if you want audio saved directly inside the resource.

config.lua
Config.Recording = {
storage = "files",
}

Audio is stored inside rs_interrogation/recordings/.

  1. Add your police jobs and minimum grades.
config.lua
Config.Jobs = {
police = 0,
sheriff = 0,
lspd = 0,
bcso = 0,
sasp = 0,
}
  1. Configure cassette stations and evidence storage boxes using Config.Placements.

  2. Add the resource after its required dependencies in server.cfg.

server.cfg
ensure ox_lib
ensure oxmysql
# Start your framework, inventory, and interaction resources first
ensure rs_interrogation
  1. Restart the server.

The database schema from sql/schema.sql is applied automatically when the resource starts. Manual SQL import is normally not required.

For cleaner individual microphone tracks, these FiveM voice convars are recommended when they fit your server setup.

server.cfg
setr voice_useNativeAudio true
setr voice_useSendingRangeOnly true

Headsets are also recommended because each participant records their own microphone while REC is active.

After restarting, verify the following:

  1. An authorized job can use interrogation_recorder.
  2. The recorder UI opens and microphone permission is allowed.
  3. A recording can be stopped and appears in device memory.
  4. A blank cassette can be dubbed at a configured station.
  5. Cassette playback works for nearby players.
  6. A placed recorder returns after a server restart.
  7. Your selected audio storage backend successfully saves the recording.