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.
Client Export
Section titled โClient ExportโplaceRecorder
Section titled โplaceRecorderโStarts the portable recorder placement flow for a recorder inventory slot.
-- slot is the inventory slot containing interrogation_recorderexports["rs_interrogation"]:placeRecorder(slot)The same placement flow is used by the built in ox_inventory Place button and the qb-inventory integration.
Server Exports
Section titled โServer ExportsโIsPlayerAuthorized
Section titled โIsPlayerAuthorizedโChecks whether a server ID passes Config.Jobs and minimum grade requirements.
local allowed = exports["rs_interrogation"]:IsPlayerAuthorized(source)
if allowed then -- Player can use interrogation equipmentendBuildTapeMetadata
Section titled โBuildTapeMetadataโBuilds cassette metadata using the same tape metadata format as the interrogation system.
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.
Client Events
Section titled โClient EventsโThe recorder placement flow can also be started through the registered client event.
TriggerEvent("rs_interrogation:client:placeRecorderFromInventory", slot)Use the export when possible. The event exists primarily for inventory integrations.
Commands
Section titled โCommandsโrecorderreset
Section titled โrecorderresetโ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.
recorderresetrecorderrepublish
Section titled โrecorderrepublishโAttempts to republish a recording session by session ID when the active storage flow supports it.
recorderrepublish <sessionId>This command is restricted by ACE permission.
add_ace group.admin command.recorderrepublish allowJob Authorization
Section titled โJob AuthorizationโThe script accepts either a job to minimum grade map or a simple job list.
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.
Inventory Integration
Section titled โInventory IntegrationโThe built in item names are:
| Item | Purpose |
|---|---|
interrogation_recorder | Portable recording device |
blank_cassette | Required for station recording and dubbing |
cassette_tape | Recorded evidence tape |
recorder_battery | Replacement recorder battery |
cassette_magnet | Tape 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.
Audio Storage Integration
Section titled โAudio Storage IntegrationโThe selected backend is controlled through Config.Recording.storage.
Config.Recording.storage = "fivemanage" -- or "files"FiveManage credentials are read from this server convar:
set rs_interrogation_fivemanage_api_key "your_key_here"Do not expose this value through setr or client code.