Installation
Ten minutes. No SQL file, no props resource — the tables build themselves and the cameras are props the game already has.
Before you start
Section titled “Before you start”| You need | Why |
|---|---|
| ESX, QBCore or QBox, running | Identifiers, jobs and usable items. Detected on its own |
| oxmysql, running | Cameras, access keys, evidence and logs |
| fmLib | A hard dependency: mic_cctv will not start without it |
| screenshot-basic | The live grid and every photo. Without it the grid stays empty |
| A FiveManage account and API token | Evidence photos are uploaded there. Make one at fivemanage.com, under Tokens |
| ox_inventory (recommended) | A printed cctv_photo keeps its picture through item metadata |
1. Put the folder in place
Section titled “1. Put the folder in place”Drop mic_cctv into your resources, for example inside resources/[mic]/. Keep the name: the tablet screen talks to the script by it.
2. Start order
Section titled “2. Start order”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(orqbcore, 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.
3. The database — nothing to do
Section titled “3. The database — nothing to do”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.
4. FiveManage
Section titled “4. FiveManage”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.
5. Add the items
Section titled “5. Add the items”| Item | What it does |
|---|---|
cctv_tablet | Opens the security tablet |
cctv_wall | Places a wall camera (turns 45° either way) |
cctv_360_cam | Places a 360° dome camera |
cctv_pole | Places a pole camera (turns 45° either way) |
cctv_360_pole | Places a 360° pole camera |
cctv_repair | Takes out the repair laser. Not used up |
cctv_photo | A 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/:
| Inventory | Definitions (mic_cctv/items/) | Where they go | Icons |
|---|---|---|---|
| ox_inventory | ox.lua | ox_inventory/data/items.lua | Copy items/images/*.png to ox_inventory/web/images/ |
| QBCore / qb-inventory | qb.lua | qb-core/shared/items.lua | Copy them to qb-inventory/html/images/ |
| ESX default inventory | esx.sql | Import 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.
6. The admin creator permission
Section titled “6. The admin creator permission”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.
7. First camera
Section titled “7. First camera”- Use
cctv_wall. A see-through camera follows where you look. Scroll to rotate, E to place, right click or ESC to cancel. - Give it a name when asked. The item is taken and the camera appears on the wall.
- Use
cctv_tablet. Your camera is on the grid, moving. - 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.
Before you open your city
Section titled “Before you open your city”- Decide who can use the tablet.
Config.AllowedJobsempty 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.Localeis the language you want.