Skip to content

Installation

Ten minutes. No SQL file, no props resource — the tables build themselves and the cameras are props the game already has.


You needWhy
ESX, QBCore or QBox, runningIdentifiers, jobs and usable items. Detected on its own
oxmysql, runningCameras, access keys, evidence and logs
fmLibA hard dependency: mic_cctv will not start without it
screenshot-basicThe live grid and every photo. Without it the grid stays empty
A FiveManage account and API tokenEvidence photos are uploaded there. Make one at fivemanage.com, under Tokens
ox_inventory (recommended)A printed cctv_photo keeps its picture through item metadata

Drop mic_cctv into your resources, for example inside resources/[mic]/. Keep the name: the tablet screen talks to the script by it.


In server.cfg, below your framework and inventory, start oxmysql, screenshot-basic and fmLib, then mic_cctv — each on its own ensure line.

It worked when the server console shows, on start:

  • [MIC-CCTV] Server Bridge initialized. Detected Framework: esx (or qbcore, which is also what QBox shows)
  • [MIC-CCTV] Server Main Loop & Database initialized.
  • [MIC-CCTV] FiveManage integration loaded (server-side).

If the first line says standalone, mic_cctv started before your framework — move it down.

On QBox, leave Config.Framework on 'auto': QBox is found through its QBCore compatibility — qbx_core provides qb-core — so there is nothing to set.


The first start creates the four tables it needs — mic_cctv_cameras, mic_cctv_private_access, mic_cctv_evidence and mic_cctv_logs — and adds any column an older version is missing.

It worked when those four tables are in your database after the first start.


Put your FiveManage API token in the resource’s server-side token file. It is loaded as a server script only, so players never receive it.

Only photos need it. Everything else — the grid, the cameras, the logs — works without it.

It worked when you take a photo (step 7) and the console prints FiveManage upload success.


ItemWhat it does
cctv_tabletOpens the security tablet
cctv_wallPlaces a wall camera (turns 45° either way)
cctv_360_camPlaces a 360° dome camera
cctv_polePlaces a pole camera (turns 45° either way)
cctv_360_polePlaces a 360° pole camera
cctv_repairTakes out the repair laser. Not used up
cctv_photoA printed evidence photo. Given by the tablet; using it shows the picture

The ready-made definitions ship in mic_cctv/items/, and the icons in mic_cctv/items/images/:

InventoryDefinitions (mic_cctv/items/)Where they goIcons
ox_inventoryox.luaox_inventory/data/items.luaCopy items/images/*.png to ox_inventory/web/images/
QBCore / qb-inventoryqb.luaqb-core/shared/items.luaCopy them to qb-inventory/html/images/
ESX default inventoryesx.sqlImport it once on your database—

The entries in ox.lua and qb.lua are commented out — remove the leading -- when you paste them. There is no cctv_photo icon in items/images/; use any picture you like.

It worked when you give yourself one of each and they show in your inventory.


The in-game creator is behind an ACE permission, mic_cctvcreator.open by default. Give it to your admin group in server.cfg with an add_ace line granting mic_cctvcreator.open to group.admin.

It worked when /camcreator opens the creator for an admin, and anybody else gets a no permission message.


  1. Use cctv_wall. A see-through camera follows where you look. Scroll to rotate, E to place, right click or ESC to cancel.
  2. Give it a name when asked. The item is taken and the camera appears on the wall.
  3. Use cctv_tablet. Your camera is on the grid, moving.
  4. Open it, turn it with A / D, press Space to take a photo, Backspace to go back.

It worked when the grid shows the camera live, and the photo appears in the evidence gallery a moment later.


  • Decide who can use the tablet. Config.AllowedJobs empty means everybody; a list of jobs means only them — and it also turns every camera a player places into a camera for their job. See Customization.
  • Give the creator permission only to staff who should build job camera networks.
  • Check the FiveManage token with one real photo before players rely on the gallery.
  • Check Config.Locale is the language you want.