How Detection Works#
Arcade Creator never asks you which framework or inventory you run. On start it looks at what is already running and picks the first one it recognises, then loads a small bridge file for it. Everything outside the bridge is written against the bridge, not against your framework.
-- config/config.lua
Config.Framework = DependencyCheck(frameworks) or 'standalone'
Config.Vehiclekeys = DependencyCheck(vehicleKeys) or 'none'
Config.Inventory = DependencyCheck(inventories) or 'none'Each of those tables maps a resource name to a bridge. If you renamed a resource — qb-core to my-core, say — add your own name on the left and keep the bridge name on the right. That is the only edit most servers ever make.
Frameworks#
Resource | Bridge | Notes |
|---|---|---|
|
| Accounts |
|
| Accounts |
Anything else |
| Everything works except money. Nobody is charged and nobody is paid, which is fine for a test server. |
Which account each payment touches — buying an arcade, buying a machine, paying per play, emptying the safe — is set in Settings → Money, not in a file. A server that wants arcades paid for in dirty money changes one dropdown.
If your framework is neither of these, custom/standalone/ is the template: a handful of small functions — get the player, get a balance, add money, remove money — with nothing else to touch.
Inventories#
The inventory is used for exactly one thing: handing out a claw-machine plushie as a real item the player keeps. Without one, plushies are still won, still counted towards the trophies and still appear on the office desk — they just are not in anybody's bag.
Supported | Item names it hands out |
|---|---|
|
|
Add those nine items to your inventory's item list if you want them to exist. Whether a win also hands out the item — and under which name — is per plushie in Settings → Plushies, so a server with no matching items can leave the whole feature off.
Vehicle Keys#
Only the basement garage uses this. Take a car out and the arcade asks your key system to give the driver its keys.
Supported |
|---|
|
With no key system the garage still works; the car simply comes out without keys, exactly as it would from any other garage script on that server.
Notifications#
Messages go to the first of these that is running, so the arcade looks like the rest of your server without being told to:
qs-interface— Quasar's own notification UI.ox_lib— already a dependency, so this is the usual one.Your framework's own notification event.
The title shown on each notification is a setting, so a server that calls its arcades something else can change the word without touching a locale file.
Photos for the Door Panel#
The creator's camera photographs a venue so players see it before buying. Two pieces are needed:
Piece | Why |
|---|---|
| Takes the picture. Without it the Take photo button says so and does nothing else. |
An image host token | Uploads it, so every player loads the same URL. Set in |
Up to four photos per venue, and the number is a setting. A venue with no photos still sells perfectly well — the panel just shows its name, district and price.
Add-on Machines#
Other resources can put their own cabinets on the arcade floor. An add-on machine appears in the laptop shop with its own price and picture, is placed with the same placer, takes up a slot like any other, and is removed when the arcade is sold.
Each one is declared in shared/external.lua with the resource that owns it, the prop model, a label, a price and an offset:
QSA.ExternalMachines = {
[100] = {
resource = 'qs-clawmachine', -- the resource that runs the game
machine = 'claw_01', -- its own id for this machine
model = 'custom_claw_machine_01',
label = 'external_claw_01_label',
desc = 'external_claw_01_desc',
price = 250000,
offset = { x = 0.0, y = 0.0, z = 0.0 },
heading = 0.0,
},
}If the owning resource is not started, the machine is skipped and the server console says which one and why — it never appears half-placed. /arcadetune nudges an add-on into position in game and prints the offset to paste back.
Quasar's Claw Machine ships ready to be used this way: its cabinets already have entries, so the two scripts recognise each other with nothing to configure.
Languages#
41 translations ship in locales/, one JSON per language, covering both the game text and the panels. The language is picked in Settings → General.
A key missing from a translation falls back to English rather than showing its raw name, so a partially translated file is safe to ship and safe to edit. Editing those files is supported and they survive an update.



