Comandos#
Dance Machine registra dos comandos de administración. Los jugadores no necesitan ninguno: abren una máquina con E o la opción de target.
Comando | Permiso | Descripción |
|---|---|---|
|
| Abre el panel de administración en la pestaña Machines: coloca, edita, teletranspórtate a máquinas y elimínalas. El nombre es |
|
| Abre el panel de administración en la pestaña Music: genera, edita y quita canciones. El nombre es |
Ambos permisos usan por defecto el ACE command.dancecreator — consulta Instalación para saber cómo concederlo. El servidor lo vuelve a comprobar cada vez que se guarda o se quita una máquina y cada vez que se edita o se quita una canción, no solo al abrir el panel.
Comandos de debug y calibración#
Solo existen mientras Config.Debug.enabled = true. La mayoría imprime valores en la consola F8, listos para pegar en config/main.lua.
Comando | Descripción |
|---|---|
| Lista en F8 todas las máquinas que conoce tu cliente — id, nombre, pads, precio y si la máquina está generada. |
| Coloca a los jugadores en la máquina más cercana (a menos de 15 m), con una copia bailando en el otro pad. Imprime |
| Activa o desactiva el autoplay: las siguientes canciones que inicies se juegan solas. Para probar charts y cámaras. |
| Editor de cámara en el escenario por defecto. Imprime |
| Muestra u oculta la escena detrás del menú de canciones, en su paso de pistas o — con |
| Encuadra al bailarín y la cámara del paso de pistas. Imprime |
| Encuadra a los dos bailarines y la cámara del paso de modos. Imprime |
| Encuadra al bailarín y la cámara de la pantalla de configuración. Imprime |
Controles de /dancepad
Tecla | Acción |
|---|---|
| Mueve el pad, |
| Rota. |
| Arriba y abajo, |
| Cambia entre el pad 1 y el pad 2. |
| Imprime los pads en F8. |
| Imprime y sale. |
Pega el bloque impreso sobre Config.Pads[1] o Config.Pads[2], según la máquina en la que estabas, y reinicia.
Controles de /dancecam y de los comandos /danceplace
Tecla | Acción |
|---|---|
| Mueve la cámara en vuelo. |
| Arriba y abajo. |
| Más rápido. |
Rueda del ratón | Campo de visión. |
|
|
|
|
| Imprime los valores en F8. |
| Sale y vuelve a donde estabas. |
Exports de servidor#
Cómo otro recurso lee Dance Machine — un panel de clasificación en tu salón recreativo, un bot de Discord que publica récords, un script de torneos. Todos son del lado del servidor; no hay exports de cliente.
GetSongCatalog
Todas las canciones que cargó el servidor, generadas o no, ordenadas por nombre.
local songs = exports['qs-dancemachine']:GetSongCatalog()
for _, song in ipairs(songs) do
print(song.id, song.name, song.artist, song.bpm, song.duration, song.hasBeatmap)
for _, diff in ipairs(song.difficulties) do
-- diff.id = 'easy' | 'normal' | 'hard', diff.level = 1-20 stars,
-- diff.notes = note count, diff.enabled = offered to players
end
endSolo las canciones con hasBeatmap = true aparecen en las máquinas. Cada entrada también incluye file, playStart, playEnd y preview.
GetMachines
Todas las máquinas del servidor, indexadas por id.
local machines = exports['qs-dancemachine']:GetMachines()
for id, m in pairs(machines) do
-- m.coords = { x, y, z }, m.heading, m.label,
-- m.players = 1 | 2, m.price, m.paymentMethod = 'money' | 'bank',
-- m.allowedModes = { 'solo', 'duo', 'versus' } or nil for all,
-- m.managed = the owning resource (e.g. 'qs-arcades') or nil
endEl id de una máquina sale de su posición, así que moverla en el creador le da un id nuevo.
GetRecords
El récord del servidor y el ranking de una canción en una dificultad. El id de la canción es el nombre de su archivo o carpeta, como en GetSongCatalog.
local rec = exports['qs-dancemachine']:GetRecords('Neon_Horizon', 'hard')
if rec.serverBest then
print(('%s holds the record: %d points, %.1f%%, grade %s'):format(
rec.serverBest.name, rec.serverBest.score, rec.serverBest.accuracy, rec.serverBest.grade))
end
for rank, row in ipairs(rec.top) do
-- row.name, row.score, row.accuracy, row.max_combo, row.grade
endtop contiene Config.Leaderboard.topLimit filas. serverBest es la fila de puntuación completa, incluidos los recuentos de valoraciones (perfect … miss) y plays, o nil cuando nadie la ha jugado todavía.
GetGlobalTop
El ranking de todo el servidor que ven los jugadores en Settings → Ranking.
local top = exports['qs-dancemachine']:GetGlobalTop()
-- top.scores = { { name, song, difficulty, score, grade }, ... }
-- top.combos = { { name, song, difficulty, max_combo }, ... }
-- top.accuracy = { { name, song, difficulty, best_accuracy }, ... }listSongs
Lo que el servidor encuentra en songs/ en este momento, sin cargar nada. Útil para comprobar que se ve un archivo antes de reiniciar.
local res = exports['qs-dancemachine']:listSongs()
if res.ok then
for id, entry in pairs(res.songs) do
print(id, entry.file) -- e.g. 'my_track', 'my_track/song.mp3'
end
else
print('cannot read songs/:', res.error)
endMáquinas de salones recreativos
GetManagedMachines() lista, en solo lectura, las máquinas que pertenecen a otro recurso, con cuántos jugadores pueden ver cada una en ese momento.
CreateManagedMachine, RemoveManagedMachine y SetManagedVisible son la forma en que Arcade Creator coloca sus máquinas. Solo responden a llamadas de qs-arcades; cualquier otro recurso recibe { ok = false, error = 'not_allowed' }.
Sobre los mensajes#
Cada vez que el servidor rechaza algo — una máquina llena, un permiso que falta, dinero insuficiente — responde con una clave de idioma como notify.machine_full, no con una frase, para que cada jugador la lea en el idioma del servidor. Las claves y su significado se listan en Errores comunes; el texto está en locales/.



