Comandos#
Claw Machine registra dos comandos de administrador que siempre están disponibles, y un conjunto de comandos de calibración que solo existen mientras Config.Debug.enabled = true. Los jugadores no necesitan ningún comando: todo lo que hacen empieza en la máquina con E o G.
Comando | Quién | Descripción |
|---|---|---|
| ace | Abre el creador: colocar, editar, reponer, teletransportarse a máquinas, borrarlas y ponerlas a la venta. Se renombra con |
| ace | Se ejecuta en una máquina: la libera de su dueño, vacía la caja y la vuelve a poner a la venta. |
Comandos de calibración#
Sirven para ajustar tu propio modelo de máquina (consulta Añadir tu propia máquina). Cada uno actúa sobre la máquina más cercana a menos de 15 m, y los que editan un valor imprimen un bloque listo para pegar en la consola F8. Todos los nombres se pueden cambiar en Config.Debug.
Comando | Qué hace |
|---|---|
| Marca la caja de cristal y deduce el resto de la máquina a partir de ella. Empieza aquí. |
| Fija |
| Marca el agujero donde un premio cuenta como ganado. |
| Calibra |
| Sube o baja todo el interior de una vez. |
| Coloca la cámara de juego mientras miras a través de ella. |
| Coloca al jugador y su mano en el joystick. |
| Coloca cada premio a mano. |
| Vuelve a repartir los premios de la máquina más cercana. Necesita el ace del creador. |
| Previsualiza la animación de premio o fallo en una máquina. |
| Imprime la configuración actual de la máquina más cercana. |
| Reproduce una animación en tu ped para probar una pose de reposo. Sin argumentos, se detiene. |
| Consola del servidor (o ace del creador): lista todas las máquinas con su modelo, precio, premios cargados y si alguien está jugando en ella. |
Exports del servidor#
Para leer las máquinas desde otro recurso — una app del teléfono, un mapa, un bot de Discord — o reponer una desde un evento. El id de una máquina se construye a partir de su posición, con la forma '-16521:-10603'; léelo de GetMachines.
GetMachines
Todas las máquinas cargadas — colocadas con el creador, fijas en Config.Machines, o gestionadas por un arcade — indexadas por id.
local machines = exports['qs-clawmachine']:GetMachines()
for id, m in pairs(machines) do
print(id, m.label, m.machineModel, m.price, m.paymentMethod)
end
-- each entry:
-- {
-- id, coords = { x, y, z }, heading, label,
-- machineModel, -- 'claw_01' ... 'claw_04'
-- price, paymentMethod, -- 'money' or 'bank'
-- prizeModels, -- { 'gacha_green', 'plush_01', ... }
-- prizeRewards, -- per-machine reward overrides
-- owned, ownerName, forSale, purchasePrice,
-- managed, -- resource name if an arcade owns it, else nil
-- }GetMachinePrizes
Lo que hay dentro de una máquina en este momento, con la posición de reposo de cada premio como desplazamiento local desde la máquina.
local prizes = exports['qs-clawmachine']:GetMachinePrizes(machineId)
print(('%d prizes left'):format(#prizes))
-- each entry: { slot, key = 'gacha_red', model = 'gacha_balls_red', x, y, z, rx, ry, rz }RestockMachine
Rellena una máquina al instante con un montón nuevo de sus premios configurados, gratis, sea quien sea su dueño. Devuelve true, o false si el id no existe.
-- e.g. a weekly event that refills every machine
for id in pairs(exports['qs-clawmachine']:GetMachines()) do
exports['qs-clawmachine']:RestockMachine(id)
endGetLeaderboard
Los mejores jugadores por premios ganados. limit vale por defecto Config.Leaderboard.topLimit.
local top = exports['qs-clawmachine']:GetLeaderboard(5)
for rank, row in ipairs(top) do
print(rank, row.name, row.prizes_won, row.plays)
end
CreateManagedMachine,RemoveManagedMachine,SetManagedVisibleyGetManagedMachinestambién existen, pero soloqs-arcadespuede llamarlos; cualquier otro recurso recibenot_allowed. Así es como Arcade Creator coloca sus máquinas.
Recompensas desde tu propio código#
Cada premio que gana un jugador pasa por una única función abierta, GivePrizeReward(src, prize, reward) en custom/server.lua. Es el lugar para enganchar cualquier cosa que deba ocurrir al ganar: un log, un logro, un mensaje de Discord:
-- custom/server.lua
function GivePrizeReward(src, prize, reward)
-- prize: the catalog entry (prize.id, prize.label, prize.model, prize.grip)
-- reward: { money = 160, items = { { name = 'peluche_01', amount = 1 } } }
-- already resolved: the machine's override, else the catalog's reward
...
endSobre los errores#
Toda respuesta del servidor que puede rechazar devuelve una clave de idioma en lugar de una frase — notify.busy, notify.own_limit — para que el jugador la lea en su propio idioma. La lista completa y lo que significa cada una está en Errores comunes.



