How Integrations Work#
Starter Pack talks to your framework, inventory and target through small bridges, and picks the right one on start by looking at which resources are running. Nothing needs to be set by hand, and the boot banner prints what was chosen.
Layer | Supported | Without it |
|---|---|---|
Framework |
| Standalone: items through a supported inventory only — no money, vehicles or stamped ID cards, and cooldowns per licence. |
Inventory |
| The framework's own inventory: QBCore/Qbox player items, or the ESX inventory. |
Target |
| Peds use the text UI instead. |
Text UI |
| A floating |
Garages | Any garage reading | Vehicles are still saved; they appear wherever your server lists owned cars. |
Vehicle keys |
| Keys are left to your garage or keys script when the car is taken out. |
Notifications | The built-in toast · | Set by hand, not detected. See below. |
Database |
| Required. The only one. |
Detection only sees resources that are already started when Starter Pack starts. If the boot banner shows
standaloneordefaultfor something you run, move itsensureaboveensure qs-starterpack.
Frameworks#
Framework | Money | Character cooldown | Vehicles | Vehicle search |
|---|---|---|---|---|
QBCore | Any account: cash, bank, crypto… | Citizen id |
| Shared vehicle list |
Qbox | Any account | Citizen id |
| Shared vehicle list |
ESX | Wallet, | Character identifier (multicharacter) |
| The |
On ESX without multicharacter, the character identifier is the licence, so character and account cooldowns behave the same.
Inventories#
The inventory decides three things: which items the creator can search, whether a player has room, and how items are handed over.
Step | How it works |
|---|---|
The item search | Read from ox_inventory's item list when it runs, otherwise from QBCore's shared items, otherwise from ESX — its item list, or the |
Room check | Every item is checked before the claim is written. If one does not fit, nothing is given, no cooldown starts, and the player is told to make space. qb-inventory and ps-inventory are checked by weight against 120 kg. |
Handing over | Through the inventory's own export, with metadata for ID cards. tgiann-inventory receives items without metadata, so ID cards arrive as plain items there. |
World Ped Interaction#
Config.Interaction chooses how players use the world peds:
Value | Behaviour |
|---|---|
| qs-textui if it runs; otherwise the detected target; otherwise the built-in |
| Always a prompt: qs-textui, or the built-in one. Ignores any target. |
| Always the target eye — ox_target, then qs-target, then qb-target — and a prompt only when none is installed. |
A target option appears within 2.5 m of the ped. A prompt appears within 3 m and E works within 1.8 m. Either way the open is checked on the server first, exactly like the command.
Notifications#
Config.Notification is set by hand in config/main.lua:
Value | Shows messages through |
|---|---|
| The script's own toast, in the theme colour. Its position is |
| Quasar Interface notifications, with an icon per type. |
|
|
| Quasar Notify. |
| ESX's own notification. |
| Your function |
Any resource name | Calls that resource's |
If the chosen resource is not running, or its call fails, the message falls back to the built-in toast and the F8 console says why, so a player is never left without feedback. For a notification script with a different signature, use 'custom':
-- client/custom/main.lua
function OnCustomNotify(message, ntype, duration, title)
-- ntype is 'success' | 'error' | 'inform' | 'warning'
exports['okokNotify']:Alert(title or 'Starter Pack', message, duration, ntype)
endGarages and Vehicle Keys#
Starter Pack has no garage of its own. A starter vehicle is a row in your framework's table, written with only the stock columns so it works on every build, then placed in the garage from Config.Vehicles.DefaultGarage:
Garage script | What is written |
|---|---|
qb-garages and compatible |
|
esx_garage and compatible |
|
jg-advancedgarages | Also |
Most keys scripts give keys for owned cars when they leave the garage, so Config.Vehicles.GiveKeys is off by default. Turn it on only if yours does not; the keys are then handed over on claim through the first of qb-vehiclekeys, qs-vehiclekeys, wasabi_carlock, mono_carkeys or cd_garage that is running.
Discord Logs#
Claims and creator saves can be posted to Discord as embeds. Everything lives in server/custom/webhook/webhooks.lua:
Config.Webhooks = {
Enabled = true, -- false turns every log off
Username = 'Quasar Starter Pack',
Avatar = 'https://r2.fivemanage.com/qiM1oSJUI1uotB6G4fctU/quasar-logo.jpg',
Color = 0x00A3FF,
OnPlayerClaim = 'https://discord.com/api/webhooks/...',
OnAdminSave = '', -- '' = not sent
OnAdminReset = '',
OnAdminDenied = '',
}Event | What is posted |
|---|---|
| Every claim: the player and their server id, a shortened licence, the gender, the pack, and how many items were delivered and how many failed. |
| Every saved change in the creator, with the admin who made it — a reset to defaults included. |
| Reserved. They are not sent by the current version; a reset is logged through |
Several Servers, One Database#
A development and a live server can share one MySQL database. Starter Pack keys its rows by the server's sv_licenseKey — or sv_hostname when no key is set — so each server keeps its own packs and its own claim history, and a claim on the test server never blocks the same player on the live one.



