Customer documentation

TenX CCTV

TenX CCTV is a camera-management resource for FiveM servers. It provides a glossy, mouse-draggable tablet, placement previews, live camera views, job permissions, archive management, localization, and optional Discord activity logs.

01 / 08

Overview

TenX CCTV is a camera-management resource for FiveM servers. It provides a glossy, mouse-draggable tablet, placement previews, live camera views, job permissions, archive management, localization, and optional Discord activity logs. Package: resource name tenx_cctv | Version: 42.1.0 | Languages: English and Italian | Core frameworks in code: ESX (es_extended) and QBCore (qb-core). Note: Important: Direct Qbox support is not implemented as a separate framework adapter in the inspected build. Servers using Qbox should test or adapt their framework integration instead of assuming native compatibility.
02 / 08

Requirements and installation

- A working FiveM server with ESX or QBCore. - ox_target installed and started. This is a manifest dependency. - An authorized server job matching Config.AllowedJobs. - For actual video recording in live_video mode: a compatible capture resource and a configured recording client. These are not included in the basic resource. Fresh installation 1. Extract the package and put the tenx_cctv folder inside your server resources/ directory. Do not rename the resource without reviewing event names and paths. 2. Open tenx_cctv/config.lua and set your language, framework, jobs, and preferred settings. 3. Start your framework and ox_target before the CCTV resource in server.cfg. # Choose one: ensure es_extended OR ensure qb-core ensure es_extended ensure ox_target ensure tenx_cctv 4. Restart the server (or run ensure tenx_cctv) and, as an authorized player, open /cctv. Upgrading an existing installation Stop the resource and back up the entire tenx_cctv folder, particularly data/. Replace code files, not your existing recordings or camera records. Preserve data/cameras.json, data/recordings.json, and stored video/replay files. If an old web/tablet.css exists, remove it: the current NUI uses only web/style.css.
03 / 08

First use and camera controls

1. Join the server with an allowed job and run /cctv. 2. Click New Camera. Aim at the surface and use the on-screen placement preview. 3. Confirm the position to create a camera; it appears in the tablet for authorized staff. 4. Select Watch Live, Rename, or Remove from the camera row as needed. Move the tablet by holding the left mouse button on an empty area of the tablet or header, then dragging. There is no Move button; the position is saved. Placement controls - Confirm placement: Left mouse click / Enter - Cancel: Esc / Backspace - Rotate camera: Q / E - Adjust height: Mouse wheel; Page Up / Page Down - Fine movement: Arrow keys - Change camera model: G Live camera controls - Pan camera: A / D - Tilt camera: W / S - Zoom: Mouse wheel - Exit camera: Backspace / Esc, as handled by the game If playback is available in your selected mode: Space pauses/resumes, Left/Right arrows rewind/advance by the configured number of seconds, the mouse wheel zooms, and Backspace exits.
04 / 08

Configuration reference

Edit config.lua before restarting. These are existing keys in the distributed build; leave unrelated settings at their defaults until you need them. - Config.Language: en (default) or it - Config.Framework: auto, esx, or qb - Config.Commands.Panel: name of the panel command; default cctv - Config.AllowedJobs: job names mapped to minimum job grade - Config.RequireOnDuty: require on-duty status for QBCore jobs - Config.MaxCamerasPerJob: maximum cameras allowed per job - Config.Item: optional usable item integration; item must exist in inventory - Config.CameraModels: available GTA camera models - Config.Placement: distance, rotation, height and movement increments - Config.View: FOV, zoom limits, pan and tilt settings - Config.Target: ox_target interaction range and icons - Config.Recording: detection radius, clip retention and selected mode - Config.LiveRecorder: optional recording-client behavior - Config.Alerts: detection alerts, sounds and cooldown - Config.UI: brand, accent color, panel size and initial position - Config.Archive: permission to clear all recordings - Config.Playback: replay speed and seek time - Config.VideoPlayback: playback transfer and size limits - Config.VideoExport: external capture resource and export options - Config.DiscordLogs: Discord webhook, embed colors and sender identity Example: essential options Config.Language = 'en' Config.Framework = 'auto' Config.Commands.Panel = 'cctv' Config.AllowedJobs = { police = 0, sheriff = 1, security = 0 } Config.MaxCamerasPerJob = 20 Config.UI.BrandName = 'TenX CCTV' Config.UI.AccentColor = '#5c93ff' Config.Recording.TriggerRadius = 40.0 Config.DiscordLogs.Webhook = '' Note: The example shows assignments to keys from the supplied config. Keep the existing table definitions; avoid replacing the full config with only this example.
05 / 08

Languages, UI and Discord logs

Set Config.Language = 'en' or Config.Language = 'it' and restart the resource. Lua messages are located in locales/en.lua and locales/it.lua; tablet translations are in web/locales/en.js and web/locales/it.js. Keep translation keys unchanged when editing text. The tablet title, subtitle and accent color are controlled with Config.UI.BrandName, Config.UI.BrandSubtitle, and Config.UI.AccentColor. Position and scale use DefaultX, DefaultY, DefaultScale, MinScale, and MaxScale. Personal preferences may be retained on the client. To receive camera creation/deletion events on Discord, set Config.DiscordLogs.Enabled = true and provide your own URL in Config.DiscordLogs.Webhook. Additional options include Username, AvatarUrl, ColorCreate and ColorDelete. Never publish your webhook.
06 / 08

Recording and archive: optional setup

The archive and capture behavior depend on Config.Recording.Mode, not just on the tablet UI. Available configuration values in the inspected build include live_video, tenx_dvr, and replay, but they are not interchangeable. - live_video: requires a supported capture resource and a functioning recording-client setup. Default capture candidates are screencapture, lh-screencapture and fivem-screencapture. - tenx_dvr: uses the script's internal recording/replay format rather than conventional MP4 capture. - replay: uses the replay-style mechanism. Output differs from video capture. For a dedicated recorder, the server console supports cctvrecorder <serverId>, cctvrecorder status and cctvrecorder clear when the video export feature is enabled. The current config defaults to a manual dedicated recorder; without a configured recorder or supported capture resource, do not expect MP4 videos to be created. Note: Recording and export must be verified on the target server. The included ZIP does not install an external capture resource, and video file creation cannot be guaranteed in every environment.
07 / 08

Troubleshooting

- /cctv does not open: check job, minimum grade, Config.Framework, and startup order. - No interactions appear: ensure ox_target is started and your job has access. - Tablet misaligned / old look: remove old web/tablet.css; restart resource, reconnect to refresh NUI cache. - New camera not visible: check camera placement permissions, model validity and data/cameras.json. - Videos not available: check Config.Recording.Mode, recorder, capture resource and server diagnostics. - No Discord logs: check Enabled, webhook URL, role permissions and server outbound HTTP. - Missing saved cameras after update: restore backup of your original data/ directory. - Translation missing: confirm config language and unchanged keys in both locale directories. Useful diagnostics: /cctvnear (in-game: nearest camera and detection distance) and /cctvdiag (diagnostics printed to server console and shown to the player where available).
08 / 08

Cfx Asset Escrow and support

The distribution package is prepared for Cfx Asset Escrow using escrow_ignore. This does not mean the ZIP is already encrypted; encryption is applied when the publisher processes the asset through Cfx. In this package, config.lua, Lua locale files, and the web interface are left editable. Client/server logic and dvr.lua are not listed in escrow_ignore. Customers should edit only the permitted files in a protected release. Support / product information: TenX Studios — https://tenxstudios.dev/. Include your server framework, error screenshot or console log, resource version and steps to reproduce when requesting help. Note: Compatibility notes in this document are based on the reviewed resource files. Validate gameplay, camera spawning, video capture, permissions and escrow behavior on your own FiveM server before commercial deployment.
Browse other guides