Skip to content

Exports y eventos

API pública de Cuxial Domino: exports de servidor para gestionar mesas y eventos para seguir las partidas.

Crea y borra mesas, averigua dónde está sentado un jugador y reacciona a rondas, partidas y apuestas desde tus propios recursos. Toda la API es de servidor.

Exports de servidor ​

GetTables ​

Devuelve todas las mesas.

lua
local tables = exports.cuxial_domino:GetTables()

Devuelve: table[], ordenada por id. Cada entrada es el resumen de una mesa:

CampoTipoDescripción
idnumberId de la mesa.
namestring | nilNombre dado a la mesa.
postable{ x, y, z }.
headingnumberOrientación de la mesa.
maxPlayersnumberDe 1 a 4.
teamModebooleantrue en las mesas de 4 por parejas.
tableModelstringModelo de la mesa.
scoreModestring'classic' o 'fives'.
betMin, betMaxnumber | nilLímites de apuesta de la mesa. nil usa los límites globales.
seatednumberJugadores sentados ahora mismo.
inGamebooleantrue mientras se juega una ronda.
lua
for _, t in ipairs(exports.cuxial_domino:GetTables()) do
    print(t.id, t.name, t.seated, t.inGame)
end

GetTable ​

Devuelve el resumen de una mesa.

lua
local tbl = exports.cuxial_domino:GetTable(id)
ParámetroTipoDescripción
idnumberId de la mesa.

Devuelve: el resumen de la mesa, o nil si la mesa no existe.

lua
local tbl = exports.cuxial_domino:GetTable(3)
if tbl and not tbl.inGame then print('La mesa 3 está libre') end

CreateTable ​

Crea una mesa y la guarda en la base de datos.

lua
local id, err = exports.cuxial_domino:CreateTable(data)
ParámetroTipoDescripción
data.postable{ x, y, z }. Obligatorio. Usa las coordenadas de un jugador de pie en el sitio: la mesa se coloca un metro por debajo de z.
data.headingnumberOrientación. 0.0 por defecto.
data.maxPlayersnumberDe 1 a 4. 4 por defecto.
data.teamModebooleanParejas. Solo se aplica con maxPlayers = 4.
data.stylestring'luxury', 'wood' o 'classic'. 'luxury' por defecto.
data.tableModelstringNombre de un modelo. Si se indica, sustituye a style.
data.scoreModestring'classic' o 'fives'. 'classic' por defecto.
data.namestringNombre de la mesa. Se corta a 60 caracteres.
data.betMin, data.betMaxnumberLímites de apuesta. Hacen falta los dos; con solo uno, la mesa usa los límites globales.

Devuelve: el id de la mesa nueva, o nil y un motivo. El motivo es 'err_too_close' cuando hay otra mesa a menos de table.minDistanceBetween, y 'err_table_not_found' cuando falta data o data.pos.

lua
local id, err = exports.cuxial_domino:CreateTable({
    pos = { x = 195.0, y = -934.0, z = 30.7 },
    heading = 90.0,
    maxPlayers = 4,
    teamMode = true,
    style = 'wood',
    scoreMode = 'classic',
    name = 'Plaza central',
    betMin = 100,
    betMax = 5000,
})
if not id then print('No se pudo crear la mesa: ' .. tostring(err)) end

DeleteTable ​

Borra una mesa. Levanta a los jugadores sentados y devuelve cualquier apuesta ya cobrada.

lua
local ok = exports.cuxial_domino:DeleteTable(id)
ParámetroTipoDescripción
idnumberId de la mesa.

Devuelve: boolean. false si la mesa no existe.

lua
exports.cuxial_domino:DeleteTable(3)

GetPlayerTable ​

Devuelve dónde está sentado un jugador.

lua
local tableId, seat = exports.cuxial_domino:GetPlayerTable(source)
ParámetroTipoDescripción
sourcenumberId de servidor del jugador.

Devuelve: el id de la mesa y el número de asiento (de 1 a 4), o nil si el jugador no está sentado.

lua
local tableId, seat = exports.cuxial_domino:GetPlayerTable(source)
if tableId then print(('Sentado en la mesa %d, asiento %d'):format(tableId, seat)) end

IsSeated ​

Indica si un jugador está sentado en una mesa.

lua
local seated = exports.cuxial_domino:IsSeated(source)

Devuelve: boolean.

lua
if exports.cuxial_domino:IsSeated(source) then return end

on ​

Registra una función para uno de los eventos listados más abajo.

lua
local handle = exports.cuxial_domino:on(event, fn)
ParámetroTipoDescripción
eventstringNombre del evento sin prefijo, por ejemplo 'matchFinished'.
fnfunctionRecibe los datos del evento.

Devuelve: un identificador numérico, o nil si los argumentos no son válidos.

lua
local handle = exports.cuxial_domino:on('matchFinished', function(payload)
    print(('Mesa %d: gana el asiento %s'):format(payload.tableId, tostring(payload.winnerSeat)))
end)

off ​

Quita una función registrada con on.

lua
local removed = exports.cuxial_domino:off(handle)

Devuelve: boolean.

lua
exports.cuxial_domino:off(handle)

Eventos de servidor ​

Cada evento se dispara también como evento local de servidor con el nombre cuxial_domino:<evento>. Es la forma más sencilla de escuchar:

lua
AddEventHandler('cuxial_domino:betPaid', function(payload)
    print(('La mesa %d pagó un bote de $%d'):format(payload.tableId, payload.total))
end)
EventoDatosCuándo
tableCreated{ id, table, by }Se crea una mesa. table es su resumen. by es el id de servidor del miembro del staff, o nil si se creó por export.
tableRemoved{ id, by }Se borra una mesa.
playerSeated{ tableId, seat, source }Un jugador se sienta.
playerLeft{ tableId, seat, source, reason }Un jugador deja la mesa.
roundStarted{ tableId, seats, scoreMode }Empieza una ronda. seats es la lista de asientos que juegan, IA incluida.
tilePlayed{ tableId, seat, tile, side }Se coloca una ficha, por un jugador o por la IA. tile es { a, b }.
bonus{ tableId, seat, points, kind }Se anota un bono de partida clásica.
roundEnded{ tableId, winnerSeat, reason }Termina una ronda. winnerSeat puede ser nil.
matchFinished{ tableId, winnerSeat, scores }Termina una partida. scores asocia cada asiento con sus puntos.
betPaid{ tableId, winnerSeat, total }Se paga el bote al ganador. total es el bote completo.

Valores ​

CampoValores
playerLeft.reason'left' (por decisión propia), 'disconnected', 'inactive' (turnos agotados)
tilePlayed.side'start', 'left', 'right'; en All Fives también 'top' y 'bottom'
bonus.kind'round_pass', 'opening_pass', 'capicua'
roundEnded.reason'domino' (un jugador se quedó sin fichas), 'blocked', 'fives_target' y 'bonus_target' (objetivo alcanzado durante la ronda), 'player_left' (ronda cancelada), 'last_standing', 'solo_left', 'no_players'

Los asientos se numeran de 1 a 4. Las mesas de 2 jugadores usan los asientos 1 y 3. En las mesas de 1 jugador el jugador es el asiento 1 y la IA el 2. En las mesas por parejas, los asientos 1 y 3 juegan contra el 2 y el 4.

Cliente ​

Cuxial Domino no tiene exports de cliente ni eventos públicos de cliente.

© Cuxial