The framework is detected once, when Guitar Pro starts, by looking for a started es_extended, qb-core or qbx_core. Qbox runs through the QBCore bridge. The framework is used for three things only — who the player is, what their name is, and taking the price to play:
Scores, levels, points and guitars are stored against the player key, so on a multi-character server each character has its own progress. If detection picks the wrong framework, force it in config/main.lua:
Each framework is one folder in custom/ with a client.lua and a server.lua. To support one that is not listed, copy custom/standalone/ to custom/myframework/, fill in the server functions against your framework, and set Config.Framework = 'myframework':
The option is added to the cabinet model itself, so every machine — placed, configured or managed — gets it. The registration lives in client/custom/target.lua; for qb-target or another target, change the addModel call there and keep the game:join(m) line it runs.
Every message — not enough money, partner left, a new server record — goes through one function in client/custom/main.lua. It uses qs-interface when it is running and ox_lib otherwise. To use your own notification resource, replace its body:
While a player is at a machine the game's HUD and radar are hidden, and qs-interface's HUD with them; both come back when they leave. For another HUD, add its hide and show calls to SetCustomHud(visible) in the same file. PlayGameSound and DrawText3D live there too.
The cinematic stage forces night for the performer so the lights read properly. A weather script that keeps pushing the server's time would fight that, so Guitar Pro pauses the known ones for that player while they perform and hands control back afterwards: Renewed-Weathersync, qb-weathersync, vSync, av_weather and cd_easytime. Only the performer's screen changes; the rest of the server keeps its weather and time.
For another weather script, add its pause and resume events to applyStageTime in client/custom/main.lua. To leave the time alone entirely, set Config.Stage.forceNight = false.
qs-arcades places Guitar Pro cabinets inside its own arcades as managed machines. They behave like any other cabinet — two pads, every mode, scores and progression — with three differences:
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 and zh. Pick one with Config.Locale.
Locale files are read when the resource starts, so editing one needs a restart and nothing else. To add a language, copy locales/en.json, translate the values and name the file after its code. Any key missing from a translation falls back to English, with one console warning naming it.