Installation
Install dependencies, register camera items, and check your first saved mount.
Requirements
| Dependency | Purpose |
|---|---|
| OneSync | Networked vehicles and camera props |
oxmysql | Camera installations and saved clip records |
402studio_bridge | Callbacks, vehicle classes, inventory, menus, progress, targeting, and captures |
Use Bridge 1.2.1 or newer for the callback, capture, and CDN services described in these guides. Set up the bridge's framework and providers for your server before starting GapCam. Framework detection and provider selection are separate: selecting ESX or QBCore also requires compatible inventory, progress, and menu services. Vehicle-class checks use cached GTA model data supplied by connected clients.
For snapshots or video clips, also install ScreenCapture v0.17.2 or newer and configure an upload destination. See Snapshots and recording.
Install the package
- Download your purchased GapCam package and extract it.
- Place the complete
402studio_gapcamfolder in your server's resources directory. Keep that exact folder name. - Check that
fxmanifest.lua,config.lua,client,server,shared,locales,stream, andweb/distare inside that folder. Avoid an extra nested resource folder. - Keep the supplied compiled interface and streamed files together. The release package includes the interface ready to load.
Protected files use Cfx.re Asset Escrow. Use a server license key belonging to the account with the asset entitlement, or complete the supported asset transfer before starting it.
Configure the bridge
Follow Bridge installation to select your framework and providers. GapCam uses bridge callbacks and context menus to open its camera menu, progress for installation and removal, and vehicle-class checks to enforce restrictions.
With Config.RequireItem = true, the inventory provider must be ready and support counting, removing, returning, and checking capacity for camera items. Configure the vehicle provider to supply a persistent vehicle ID when available.
The supplied GapCam folder name and manifest author meet the bridge's first-party access rules. Keep those values intact.
Register the inventory items
For ox_inventory, copy the three entries from ADD_ME/items.lua into the table returned by ox_inventory/data/items.lua. Copy the entries themselves into the existing table:
['gapcam_360'] = {
label = 'GapCam 360 Mount',
weight = 1200,
stack = true,
consume = 0,
description = 'A mounted 360 camera',
client = { event = '402studio_gapcam:useItem' },
},
['gapcam_actioncam'] = {
label = 'ActionCam Mount',
weight = 600,
stack = true,
consume = 0,
description = 'A mounted action camera',
client = { event = '402studio_gapcam:useItem' },
},
['gapcam_dslr'] = {
label = 'DSLR Mount',
weight = 1800,
stack = true,
consume = 0,
description = 'A mounted DSLR camera',
client = { event = '402studio_gapcam:useItem' },
},Copy gapcam_360.png, gapcam_actioncam.png, and gapcam_dslr.png from ADD_ME/icons into your inventory's image directory. For ox_inventory, use web/images.
Keep consume = 0. GapCam removes one item after the server accepts a completed installation. Canceling placement keeps the item. Removing a saved camera returns its item to the player removing it, subject to inventory capacity.
For another inventory, register equivalent items through that inventory's item format and configure its bridge adapter. Item use must deliver the matching item name to 402studio_gapcam:useItem. The camera menu can also start installation using the configured item checks.
Restart the inventory after changing its definitions. Give the test character the items through your inventory's normal administration tools.
Start order
This example uses Qbox with Ox providers:
ensure oxmysql
ensure ox_lib
ensure qbx_core
ensure qbx_vehicles
ensure ox_inventory
ensure ox_target
ensure 402studio_bridge
ensure 402studio_gapcamEnable OneSync and configure your database connection using your server's normal setup. Replace provider resource names with the providers selected in the bridge. Start them before the bridge, and start GapCam after it. Add ScreenCapture before the bridge when following the capture setup.
Database setup
GapCam creates 402studio_gapcam for installations and 402studio_gapcam_videos for saved clips automatically. The database user needs permission to create the tables and read and write their records. Keep regular database backups.
Saved installations retain consumed camera items across restarts. A local recovery copy holds pending installation saves while database writes retry. If the console reports a save failure, restore the database connection and retain the resource's recovery data.
Camera-only setup
To set up mounting and viewing before enabling uploads, edit the existing values in config.lua:
Config.Discord.Enabled = false
Config.Video.Enabled = falseKeep Config.Recording.Enabled = true for live camera views. To install from the menu without inventory items, also set Config.RequireItem = false.
Check the installation
- Check the server console for database, dependency, and bridge provider errors.
- Join with a character carrying a camera item and stand beside a networked vehicle with a stable plate or persistent vehicle ID.
- Run
/gapcam, choose Add camera, select the camera type, and save a placement. - Confirm that one item was consumed. Open the installed camera's view and check zoom and horizon lock.
- Have another player check that the mount appears and follows the vehicle.
- Store and respawn the same vehicle, then confirm the mount and joints return. Allow the garage to finish assigning the vehicle's persistent identity.
- Remove the camera and confirm that its item returns.
- When uploads are configured, separately check a snapshot, a clip, and CDN library playback using the recording guide.
Continue with Usage for placement and camera controls.