Skip to content

Advanced Interrogation

This page covers the supported integration surface for other resources. Internal callbacks and recording events are implementation details and should not be treated as a public API.


Starts the portable recorder placement flow for a recorder inventory slot.

Client export
-- slot is the inventory slot containing interrogation_recorder
exports["rs_interrogation"]:placeRecorder(slot)

The same placement flow is used by the built in ox_inventory Place button and the qb-inventory integration.


Checks whether a server ID passes Config.Jobs and minimum grade requirements.

Server export
local allowed = exports["rs_interrogation"]:IsPlayerAuthorized(source)
if allowed then
-- Player can use interrogation equipment
end

Builds cassette metadata using the same tape metadata format as the interrogation system.

Server export
local metadata = exports["rs_interrogation"]:BuildTapeMetadata(source, sessionResult)

This is mainly useful when another server resource already has a valid interrogation session result and needs tape metadata in the native format.


The recorder placement flow can also be started through the registered client event.

Client event
TriggerEvent("rs_interrogation:client:placeRecorderFromInventory", slot)

Use the export when possible. The event exists primarily for inventory integrations.


Clears the current playerโ€™s recorder sessions and capture state. This is useful when a recorder UI or recording session becomes stuck after an unusual disconnect or resource issue.

Player command
recorderreset

Attempts to republish a recording session by session ID when the active storage flow supports it.

Restricted command
recorderrepublish <sessionId>

This command is restricted by ACE permission.

server.cfg
add_ace group.admin command.recorderrepublish allow

The script accepts either a job to minimum grade map or a simple job list.

config.lua
Config.Jobs = {
police = 0,
sheriff = 2,
}

The IsPlayerAuthorized export uses this same rule, which makes it useful for matching access control in another police resource.


The built in item names are:

ItemPurpose
interrogation_recorderPortable recording device
blank_cassetteRequired for station recording and dubbing
cassette_tapeRecorded evidence tape
recorder_batteryReplacement recorder battery
cassette_magnetTape wipe tool

The included installation files are located at install/items_ox.lua and install/items_qb.lua.

For ox_inventory, the recorder item includes a Place button that starts the placement event. The script also injects the action at runtime when supported.

For qb-inventory, follow the comments inside install/items_qb.lua if your inventory UI requires the optional Place button additions.


The selected backend is controlled through Config.Recording.storage.

config.lua
Config.Recording.storage = "fivemanage" -- or "files"

FiveManage credentials are read from this server convar:

server.cfg
set rs_interrogation_fivemanage_api_key "your_key_here"

Do not expose this value through setr or client code.