Commands#
Camera registers one command for your staff. Everything players do starts from an item, so there are no player commands.
Command | Who | Description |
|---|---|---|
| Players with the | Opens the settings panel. Anyone else is told they lack permission, and the console prints the line that would grant it. |
Developer commands#
These exist only with Config.Debug = true in shared/config.lua. They are for setting things up on a test server, not for a live one.
Command | Description |
|---|---|
| The attachment tuner: adjust how the instant camera, a card in the hand or the card album sits on the character, with the keyboard or a gizmo you drag. With no argument it lists the targets. |
| Prints every target's current numbers to the F8 console. |
| Spawns every Camera model in a row in front of you, to check |
| Spawns test frames showing an image, to check photos are drawn on props. Run it again to clear them. |
| Lists candidate hold animations and whether each exists in your game build. |
| Plays an animation, to try one before typing it into the settings. With no arguments it stops. |
The tuner's keys
Key | Does |
|---|---|
| Move along X, Y and Z. Hold to repeat. |
| The same keys rotate instead. |
| Bigger or smaller steps. |
| Cycle the bone it is attached to. |
| Back to the configured values. |
| Accept, and print the numbers to F8. |
| Cancel and put it back as it was. |
| Look around. |
The tuner does not save anything. Type the bone, offset and rotation it prints into the matching fields of
/cameraconfig— under Instant camera, Card in hand or Card album.
Server Exports#
How another resource drives Camera — a reward that hands out a photo, a laptop or radial menu that opens a player's camera or album. Every export is server side; Camera has no client exports.
GivePhoto
Gives a player a digital photo from any image address — an event prize, a press photo, a picture from another script. Every field of the third argument is optional; the grade is worked out from the quality.
local ok = exports['qs-camera']:GivePhoto(source, 'https://r2.fivemanage.com/xxxx/opening.jpg', {
title = 'Grand opening',
quality = 95, -- 1-100, default 70
zone = 'Vinewood', -- the place shown on the photo
street = 'Vinewood Blvd',
photographer = 'Weazel News',
filter = 'vintage', -- a filter id from DSLR filters
date = '2026-10-18 21:30',
weather = 'CLEAR',
})
-- true, or false when the address is not a valid http(s) linkOpenCamera and OpenAlbum
Open the panel of the camera the player carries, or their photo album — exactly as if they had used the item.
exports['qs-camera']:OpenCamera(source) -- false, with a message, if they carry no camera
exports['qs-camera']:OpenAlbum(source) -- false, with a message, if they carry no photo albumGetAlbums
Every photo album a player carries, with how full it is.
local albums = exports['qs-camera']:GetAlbums(source)
-- { { uniqueId = 482913, slot = 7, used = 34, free = 86, total = 120 }, ... }useItem (ox_inventory)
Not for you to call: ox_inventory calls it when a Camera item is used, through server = { export = 'qs-camera.useItem' } in the item definition. It exists only while ox_inventory is the detected inventory.
Events#
A few events are safe to use from your own resources:
Event | Side | Use |
|---|---|---|
| Client → server | Use a Camera item on the player's behalf, by item name and slot — from a radial menu, say. The server checks the item really is in that slot. |
| Server → client | Show a message the same way Camera does: message, then |
| Client, local | Fired on every client whenever the settings arrive or change — a cue to refresh anything of yours that depends on them. |
-- client: open the instant camera in slot 4 from a radial menu
TriggerServerEvent('qs-camera:server:useItem', 'instant_camera', 4)
-- server: tell a player something in Camera's style
TriggerClientEvent('qs-camera:client:notify', source, 'Your press pass is ready', 'success')About the Errors#
When the server refuses something it answers with a short key — no_film, bad_host, busy — and the player sees the matching sentence from notification in their language file. Common Errors lists the ones you are most likely to meet.



