Comandos#
Lottery Creator registra un solo comando. Todo lo demás ocurre en las máquinas, en el inventario y en el teléfono.
Comando | Dónde | Descripción |
|---|---|---|
| En el juego | Abre el creador: todas las máquinas del servidor, para crearlas, editarlas, teletransportarte a ellas o eliminarlas. Solo administradores del framework y |
No hay comandos de consola. Para ver lo que pasa por dentro, Config.Debug = true imprime líneas extra en la consola del servidor. Lottery Creator tampoco expone exports: tus propios scripts lo controlan mediante los eventos y callbacks de abajo.
Eventos de cliente#
Para abrir una máquina desde tus propios scripts — un menú radial, una tecla asignada, un prop de portátil. El servidor sigue haciendo todas las comprobaciones: si la máquina está en servicio, su stock, el dinero del jugador.
Comprar un boleto en una máquina
-- The same as picking "Buy <name>" on the target:
-- the hand-over gesture plays, then the server sells the ticket.
TriggerEvent('lottery:client:buyFromVendor', { vendorId = 12 })Abrir el panel de propiedad de una máquina
-- The buy screen for an unowned machine that is for sale,
-- the manage screen for its owner or an admin, nothing for anyone else.
TriggerEvent('lottery:client:openMachine', { vendorId = 12 })Solo mientras Config.Ownership.enabled está activado.
vendorId es el id de la máquina — el número que el creador muestra como Edit Vendor #12 al abrirla.
Eventos de servidor#
Se reclamó un premio
Se dispara en el servidor cuando se reclama un rasca ganador en una máquina, y cada vez que se termina un rasca en la app del teléfono — un rasca perdedor del teléfono informa una cantidad de 0. Para logs de Discord, logros o un bote propio.
AddEventHandler('lottery:internal:afterClaim', function(source, amount, slots, fromPhone)
-- source the player's server id
-- amount what the card paid
-- slots the six labels printed on the card, e.g. { 'NO WIN', '$10', ... }
-- fromPhone true for a card scratched in the phone app, nil at a machine
if amount >= 1000 then
print(('%s won $%s on the lottery'):format(GetPlayerName(source), amount))
end
end)Dar rascas desde otro script
Un boleto es un ítem normal, así que una recompensa, un inicio de sesión diario o una tienda lo entregan a través de tu inventario o framework. Al usarlo abre un rasca, igual que uno comprado en una máquina.
exports.ox_inventory:AddItem(source, 'scratchcard', 1)local xPlayer = ESX.GetPlayerFromId(source)
xPlayer.addInventoryItem('scratchcard', 1)local Player = QBCore.Functions.GetPlayer(source)
Player.Functions.AddItem('scratchcard', 1)Callbacks del teléfono#
La app Lottery de Quasar Smartphone se basa en cinco callbacks de ox_lib. Una app para otro teléfono puede llamar a los mismos desde su cliente. Solo se registran mientras Config.Phone.enabled está activado.
Callback | Recibe | Devuelve |
|---|---|---|
| — |
|
|
|
|
| — |
|
| — |
|
| — |
|
local snapshot = lib.callback.await('lottery:phone:getSnapshot', false)
if snapshot.ok and snapshot.ticketCount == 0 then
lib.callback.await('lottery:phone:buyTicket', false, { quantity = 1 })
end
local card = lib.callback.await('lottery:phone:useTicket', false) -- consumes one scratchcard
if card.ok then
-- show card.slots and let the player scratch...
local result = lib.callback.await('lottery:phone:claimPrize', false)
-- result.won, result.amount
endSobre los errores#
Toda respuesta del servidor que puede rechazar algo vuelve como { ok = false, error = '<code>' } — not_enough_money, no_ticket, remote_purchase_disabled — y en una máquina el jugador normalmente también ve una notificación en su propio idioma. Registra el código en tus scripts; lo que significa cada uno está en Errores comunes → Códigos de error.



