Skip to content

Custom Car Stickers

This page documents the intended integration surface. Use the supplied client/server exports and editable bridge/*.lua adapters. Internal NUI callbacks, database events, and production RPCs are not public APIs.


Opens the sticker library in the context of a printer station.

Client export
exports['rs_car_stickers']:OpenStickerPrinter(stationId)

OpenStickerPlacement and OpenStickerRemoval

Section titled “OpenStickerPlacement and OpenStickerRemoval”

Open the printed-item placement or sticker-removal UI for a local vehicle entity.

Client exports
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
exports['rs_car_stickers']:OpenStickerPlacement(vehicle)
-- or
exports['rs_car_stickers']:OpenStickerRemoval(vehicle)

The target resource may launch these flows, but the server rechecks ownership, inventory, distance, and applicable permissions before committing changes.

Starts a mechanic interaction at a configured shop.

Client export
exports['rs_car_stickers']:OpenMechanicStickers(vehicle, shopId, 'place')
-- operation: 'place' or 'remove'

Tell the client that another resource has completed a repair which could clear decal projections.

Client export
-- Call after your repair native has finished.
exports['rs_car_stickers']:NotifyVehicleRepaired(vehicle, 'custom repair completed')

The script also has automatic repair recovery and optional event bridges; notifying it explicitly can shorten the visible restoration delay.


Custom garage scripts can announce a spawned owned vehicle and plate changes.

Server exports
-- In your server-side garage adapter, after the vehicle exists:
exports['rs_car_stickers']:VehicleSpawned(vehicle)
-- After an authorized plate update:
exports['rs_car_stickers']:PlateChanged(oldPlate, newPlate)

See bridge/garage_server.lua and bridge/garage_client.lua for additional reference forms and client-created vehicle handling.

Server exports
exports['rs_car_stickers']:MarkGangVehicle(vehicle, 'ballas', 'garage-car-1')
exports['rs_car_stickers']:UnmarkGangVehicle(vehicle)
exports['rs_car_stickers']:PlayerGangChanged(source)
Server exports
exports['rs_car_stickers']:MarkJobVehicle(vehicle, 'police', source)
exports['rs_car_stickers']:UnmarkJobVehicle(vehicle)
exports['rs_car_stickers']:PlayerJobChanged(source)

Use the corresponding functions in bridge/gang_server.lua or bridge/job_server.lua if your resource requires custom gang or job detection. Qbox and QBCore gang data and standard framework jobs work without a custom adapter in most installs.


FileIntegrate when
bridge/garage_server.luaA custom garage manages vehicle ownership, spawn events, or plate changes
bridge/garage_client.luaYour garage creates a networked vehicle from the client
bridge/gang_server.luaYou use ESX gangs, a nonstandard gang framework, or gang garages
bridge/job_server.luaCall signs, phone numbers, custom duty states, multi-jobs, or job garages are managed elsewhere

Custom production providers can be registered in Config.Production.adapters: player, inventory, and money. These adapters must return confirmed results and preserve the printed item serial/metadata. Consult PRODUCTION_GUIDE.md inside the resource for their exact (method, source, payload) contract.

CommandAccessPurpose
/stickersPlayerOpen sticker library; design/print at an available workstation
/usestickerPlayerApply a printed sticker to an eligible parked vehicle
/removestickerPlayerRemove a selected sticker with the scraper
/stickerworkAuthorized mechanicOffer sticker services at a configured shop
/decaladminStaff ACEOpen management and moderation panel
/decalkioskplaceStaff ACEPlace a persistent kiosk
/decalkioskcalibrateStaff ACEAlign a kiosk’s interactive screen
/decalgarageStaff ACE or consoleInspect garage restore issues
/decalopsStaff ACE or consoleReview incomplete payment, inventory, or save operations
/decalgangcarStaff ACEDesignate a vehicle as a gang car for testing/administration
decalban, decalunban, decalbanstatusBan ACE or consoleManage player sticker restrictions
server.cfg
add_ace group.admin command.decaladmin allow
add_ace group.admin rs_vehicle_decal.admin.ban allow

The ban ACE is intentionally separate from ordinary admin-panel access. The admin panel may still be opened without permission to ban a player.

Staff / server console
decalops
decalops show <operation-id>
decalops refund <operation-id>
decalops resolve <operation-id>
decalops webhooks

When Config.Production.enabled = false, the legacy vehicle editor (/vehdecal) is available instead of the physical production workflow. Additional diagnostic commands include /vehdecalstatus, /vehdecalobserverstatus, and /vehdecalrestore.

Use legacy editing mode only intentionally; it follows a different policy from the printed-item economy.