How Integrations Work#
Everything that depends on another resource — the framework, the inventory, notifications, prompts and the HUD — sits behind a small, open file in custom/ or client/custom/. Each one is detected on start by looking for a running resource, and falls back quietly when none is found.
Layer | Supported | Without it |
|---|---|---|
Framework |
| Standalone: free play, players identified by license. |
Inventory |
| Items go through the framework's own functions (ESX |
Target |
| A floating |
Notifications |
| ox_lib notifications. |
Text prompts |
| Native GTA 3D text over the cabinet. |
HUD |
| Only the GTA HUD and radar are hidden while playing. |
Arcades |
| Machines are placed only with |
Detection only sees resources that are already started. Start your framework and inventory before
qs-clawmachineinserver.cfg.
Frameworks#
The framework is picked automatically and printed on start (Server framework loaded: esx). Qbox uses the QBCore bridge. To force one, replace the detection in config/main.lua:
Config.Framework = 'esx' -- 'esx', 'qb' or 'standalone'Each bridge is one file per side in custom/esx/, custom/qb/ and custom/standalone/. The server file answers five questions, and that is all the script ever asks of a framework:
-- custom/<framework>/server.lua
function framework:getIdentifier(source) end -- who owns a machine, who is on the leaderboard
function framework:getMoney(source, method) end -- method: 'money' or 'bank'
function framework:removeMoney(source, amount, method) end
function framework:addMoney(source, amount, method) end
function framework:getName(source) end -- shown as the owner and on the leaderboardTo support another framework, copy the folder closest to it — custom/standalone/ is the smallest — to custom/<name>/, fill in the five functions, and set Config.Framework = '<name>'.
Inventories and Rewards#
Item rewards are handed out by GivePrizeReward in custom/server.lua. It checks for these inventories in order and uses the first one running: ox_inventory, qs-inventory, codem-inventory, core_inventory, qb-inventory — and falls back to the ESX or QBCore item functions. If detection picks the wrong one, name it:
Config.Rewards.inventory = 'qs-inventory' -- instead of 'auto'The same file reads your inventory's full item list, with images, for the reward picker in /clawcreator — tgiann-inventory is read too, and ESX or QBCore shared items are the fallback. For an inventory that is not on the list, add a branch to giveItem and rawItemList in that file, and an image path to IMAGE_PATHS.
If the creator's item search is empty, the console says
No inventory item list could be read. SetConfig.Rewards.inventoryto your inventory's resource name.
Target#
With Config.UseTarget = true, every cabinet model gets a Play option in ox_target instead of the floating prompt. The registration is in client/custom/target.lua — swap exports.ox_target:addModel for your own target's export to use qb-target or another one.
Notifications, Prompts and the HUD#
All three live in client/custom/main.lua, and each is a single function you can point at your own resource:
Function | Does | Ships with |
|---|---|---|
| Every message — wins, errors, sales. | qs-interface, else ox_lib. |
| The | qs-textui, else native 3D text. |
| Hides your HUD while a run is on, and shows it again after. | qs-interface. |
For another HUD, add its hide/show export to SetCustomHud. The GTA HUD and radar are always hidden during a run, and everything is restored if the resource stops mid-game.
Arcade Creator#
Arcade Creator (qs-arcades) places Claw Machine cabinets inside its arcades through a set of exports only it is allowed to call. Those machines behave differently from the ones you place yourself:
They are never written to the database — the arcade recreates them on every start.
Only the players inside that arcade see them and the claw moving in them, because several arcades share one interior at the same coordinates.
They are free to play here, cannot be bought, sold or released, and do not appear in
/clawcreator. The arcade decides what they cost.
Nothing needs configuring: start qs-clawmachine before qs-arcades and the arcades fill their claw machine slots on their own.
Languages#
41 translations ship in locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi, zh. Pick one with:
Config.Locale = 'es'To edit a translation or add your own, copy locales/en.json, translate the values (keep the keys and the {{placeholders}}), and name the file after your locale code. Locale files are read at runtime, so a resource restart is all it takes.



