Commands#
Players need no command at all — they walk up to a cabinet. The commands below are for admins and for setting the server up. The three admin commands check the command.guitarcreator ACE (see Installation).
Command | Who | Description |
|---|---|---|
| Admin | Opens the admin panel on the Machines tab: place, edit, teleport to and delete cabinets. |
| Admin | Opens the admin panel on the Music tab: edit songs, generate and regenerate charts. |
| Admin, or the server console | Reads or changes a player's level, XP or points. The player is told an admin updated their progress. |
| Anyone, while | The in-game editors for standing spots, guitar offsets, camera shots and crowds. See Usage → In-Game Editors. |
| Anyone, while | Toggles autoplay: the next song plays itself. |
| Anyone, while | Prints every loaded machine — id, label, pads, price, spawned — to the F8 console. |
/guitarprogress#
/guitarprogress info <serverId|me> # level, XP, points and equipped guitar
/guitarprogress points <serverId|me> <amount> # ADDS points (negative takes away)
/guitarprogress xp <serverId|me> <amount> # ADDS XP (negative takes away)
/guitarprogress level <serverId|me> <level> # SETS the level, 1 to 50<serverId> is the player's server id — the number next to their name in the player list — and me works in game. From the server console, drop the slash and use a server id. Values never go below zero, and setting a level sets the XP to the start of that level. The player must be online.
Every command name can be changed: Config.Creator.command, Config.Music.command, Config.Progression.command, and the editor names in Config.Debug.
Server Exports#
Read-only, for anything that wants to show what happens at the cabinets — a leaderboard on a website, a Discord bot, a weekly tournament, an event script that rewards the best player. All of them are server side; there are no client exports.
GetSongCatalog
Every song the server knows, ordered by name — including songs that are not generated yet.
local songs = exports['qs-guitarpro']:GetSongCatalog()
for _, song in ipairs(songs) do
-- song.id, song.name, song.artist, song.bpm, song.duration
-- song.hasBeatmap: false while it still needs generating
-- song.difficulties: { { id = 'easy', level = 4, notes = 312, enabled = true }, ... }
print(song.name, song.hasBeatmap)
endGetMachines
Every loaded machine, keyed by its id — placed with the creator, from Config.Machines, or managed by qs-arcades.
local machines = exports['qs-guitarpro']:GetMachines()
for id, m in pairs(machines) do
-- m.coords = { x, y, z }, m.heading, m.label
-- m.players (1 or 2), m.price, m.paymentMethod ('money' or 'bank')
-- m.allowedModes ({ 'solo', 'duo', 'versus' } or nil for all)
-- m.managed: the owning resource's name, or nil
print(id, m.label, m.players)
endGetRecords
The server record and the top scores of one chart. The difficulty is 'easy', 'normal' or 'hard'; the number of rows is Config.Leaderboard.topLimit.
local records = exports['qs-guitarpro']:GetRecords('Midnight-Run', 'hard')
if records.serverBest then
-- the full row: name, score, accuracy, max_combo, grade, stars, perfect ... miss
print(('%s holds the record with %d'):format(records.serverBest.name, records.serverBest.score))
end
for rank, row in ipairs(records.top) do
-- row.name, row.score, row.accuracy, row.max_combo, row.grade
print(rank, row.name, row.score)
endGetGlobalTop
The server-wide boards shown in the game's ranking, across every song and difficulty. Cached for 30 seconds, so it is safe to call often.
local top = exports['qs-guitarpro']:GetGlobalTop()
-- top.scores: { name, song, difficulty, score, grade }
-- top.combos: { name, song, difficulty, max_combo }
-- top.accuracy: { name, song, difficulty, best_accuracy }
local best = top.scores[1]
if best then print(best.name, best.song, best.score) endManaged Machines#
These exports are how qs-arcades places cabinets inside its arcades. A managed machine is created by the calling resource, is free to play, is only visible to the players that resource lists, is never written to the database and disappears with the resource that made it.
Export | What it does |
|---|---|
| Creates or refreshes a cabinet: |
| The full list of managed cabinets one player may see and play. Anything left out is removed from their game at once. |
| Removes a cabinet, ending any song being played on it first. Only the resource that created it may remove it. |
| Every managed cabinet with its owner, position, label, pads and how many players can currently see it. |
A refused call answers { ok = false, error = ... } with one of not_allowed, bad_data, bad_id, bad_coords, id_taken (another resource owns that id) or not_yours.



