Skip to content

Exports y eventos

API pública de Cuxial Dance Class: exports y eventos de servidor para consultar las clases y reaccionar a ellas.

Consulta las clases abiertas, cierra una o reacciona cuando una clase empieza, un alumno se une o un baile termina. Todo lo de esta página corre en el servidor; no hay exports de cliente.

Exports de servidor ​

GetRooms ​

Devuelve todas las clases abiertas.

lua
local rooms = exports.cuxial_danceclass:GetRooms()

Devuelve: table[], ordenada por id. Cada entrada es un resumen de sala.

lua
for _, room in ipairs(exports.cuxial_danceclass:GetRooms()) do
    print(room.name, room.studentCount .. '/' .. room.maxStudents)
end

GetPlayerRoom ​

Devuelve la clase en la que está un jugador y su rol.

lua
local room, role = exports.cuxial_danceclass:GetPlayerRoom(source)
ParámetroTipoDescripción
sourcenumberId de servidor del jugador.

Devuelve: table | nil, string | nil. El resumen de sala y el rol, 'instructor' o 'student'. nil si el jugador no está en ninguna clase.

lua
local room, role = exports.cuxial_danceclass:GetPlayerRoom(source)
if role == 'instructor' then
    print(('Da la clase %s'):format(room.name))
end

IsInClass ​

Indica si un jugador está en una clase, como instructor o como alumno.

lua
local inClass = exports.cuxial_danceclass:IsInClass(source)
ParámetroTipoDescripción
sourcenumberId de servidor del jugador.

Devuelve: boolean.

lua
if exports.cuxial_danceclass:IsInClass(source) then return end

CloseRoom ​

Cierra una clase desde otro recurso. Si se bailó al menos un baile, la clase termina con su podio y se guarda el historial; si no, simplemente se cierra y las entradas se devuelven según rooms.refundIfNoRound.

lua
local closed = exports.cuxial_danceclass:CloseRoom(id)
ParámetroTipoDescripción
idnumberId de la clase.

Devuelve: boolean. false si no hay ninguna clase con ese id.

lua
for _, room in ipairs(exports.cuxial_danceclass:GetRooms()) do
    exports.cuxial_danceclass:CloseRoom(room.id)
end

Resumen de sala ​

CampoTipoDescripción
idnumberId de la clase.
namestringNombre de la clase.
difficultystringId de la dificultad: easy, normal o hard.
difficultyLabelstringNombre de la dificultad según el config.
feenumberEntrada. 0 = gratis.
maxStudentsnumberCupo.
instructortable{ id, name, points }.
studentstable[]{ id, name, points, rounds, accuracy, bestAccuracy }, ordenados por puntos. La precisión va de 0 a 1.
studentCountnumberAlumnos en la clase.
phasestringlobby (sin empezar), countdown, round o results (entre bailes).
roundIndexnumberBailes hechos hasta ahora.
maxRoundsnumberBailes permitidos por clase.
playliststring[] | nilBailes elegidos por el instructor. nil = aleatorio.
currentDancetable | nil{ command, label } del baile en curso o del último.
rolestring | nilSolo con GetPlayerRoom: rol de ese jugador.

Eventos de servidor ​

Cada evento se dispara en el servidor con una tabla. Escúchalos con AddEventHandler.

EventoDatosCuándo
cuxial_danceclass:roomCreated{ id, instructor, difficulty }Se abre una clase. instructor es un id de servidor.
cuxial_danceclass:roomClosed{ id, reason }Se cierra una clase. reason: closed, left, ended o disconnected.
cuxial_danceclass:studentJoined{ id, source }Se une un alumno.
cuxial_danceclass:studentLeft{ id, source, reason }Un alumno sale de una clase que sigue abierta. reason: left, zone, kicked o disconnected.
cuxial_danceclass:roundStarted{ id, index, dance }Empieza un baile. dance es su comando.
cuxial_danceclass:roundEnded{ id, index, results }Termina un baile.
cuxial_danceclass:classEnded{ id, rounds, ranking }Termina una clase con al menos un baile, justo antes de roomClosed.

Cada entrada de results trae id, name, perfect, good, miss, total, accuracy, maxStreak, points y totalPoints. Cada entrada de ranking trae id, name, points, rounds, accuracy y bestAccuracy.

studentLeft no se envía por los alumnos que siguen dentro cuando una clase se cierra. Para ese caso usa roomClosed.

lua
AddEventHandler('cuxial_danceclass:roundEnded', function(data)
    for _, result in ipairs(data.results) do
        if result.accuracy >= 0.9 then
            print(('%s clavó el baile %d'):format(result.name, data.index))
        end
    end
end)

on / off ​

Los mismos eventos como hooks, sin el prefijo. on devuelve un identificador y off quita el hook.

lua
local handle = exports.cuxial_danceclass:on(event, fn)
local removed = exports.cuxial_danceclass:off(handle)
ParámetroTipoDescripción
eventstringroomCreated, roomClosed, studentJoined, studentLeft, roundStarted, roundEnded o classEnded.
fnfunctionRecibe la misma tabla que el evento.
handlenumberValor devuelto por on.

Devuelve: on devuelve number, o nil si los argumentos no son válidos. off devuelve boolean.

lua
local handle = exports.cuxial_danceclass:on('classEnded', function(data)
    local winner = data.ranking[1]
    if winner then print(('%s ganó la clase'):format(winner.name)) end
end)

© Cuxial