Skip to content

Exports y eventos

API pública de Cuxial Tablet: exports de coins, XP del pase, historial y la propia tablet, state bags y los eventos que pueden usar otros recursos.

Cuxial Tablet expone a otros recursos sus coins, el XP del pase de temporada, el historial VIP y la ventana de la tablet, más unos state bags para saber qué está haciendo un jugador. Todo lo demás es interno.

Exports de servidor ​

GetCoins ​

Devuelve el saldo de coins de un jugador conectado.

lua
---@param src integer
---@return integer
local coins = exports.cuxial_tablet:GetCoins(source)

AddCoins ​

Añade coins a un jugador conectado, anota el movimiento en la cartera y refresca la tablet. Devuelve si ha ido bien y el saldo resultante.

lua
---@param src integer
---@param amount integer      1 o más
---@param reason? string      se muestra en el historial de la cartera
---@return boolean ok, integer balance
local ok, balance = exports.cuxial_tablet:AddCoins(source, 500, 'Premio del torneo')

RemoveCoins ​

Quita coins a un jugador conectado. Falla si el jugador no tiene suficientes.

lua
---@param src integer
---@param amount integer
---@param reason? string
---@return boolean ok, integer balance
local ok, balance = exports.cuxial_tablet:RemoveCoins(source, 100, 'Entrada del casino')
if not ok then
    -- no hay coins suficientes
end

GrantPassXp ​

Da XP del pase de temporada. El jugador sube de nivel si toca y ve la ganancia en pantalla si está conectado. Devuelve nil si el pase está desactivado o el jugador no existe.

lua
---@param src integer|string   id de servidor o citizenid (vale para jugadores desconectados)
---@param amount integer
---@param source? string       daily | shop | cases | job | playtime | mission | admin (por defecto admin)
---@return { level: integer, xp: integer, leveled: boolean }?
local result = exports.cuxial_tablet:GrantPassXp(source, 250, 'job')

EmitJobCompleted ​

Avisa a la tablet de que un jugador ha completado un trabajo. El pase da pass.xpSources.jobComplete de XP y avanzan las misiones semanales de trabajos. Llámalo solo desde el servidor.

lua
---@param src integer
---@param info? { job?: string, money?: number }
exports.cuxial_tablet:EmitJobCompleted(source, { job = 'trucker', money = 1200 })

Con cuxial_jobs en marcha, la tablet escucha su evento cuxial_jobs:server:JobCompleted y no hace falta llamarlo.

LogHistory ​

Añade una entrada al historial VIP del jugador, la lista que se ve en la pestaña Historial.

lua
---@param src integer|string   id de servidor o citizenid
---@param entry { source: string, title: string, subtitle?: string, amount?: integer, currency?: 'coins'|'cash'|'item', itemKey?: string, rarity?: string, ref?: string }
---@return boolean
exports.cuxial_tablet:LogHistory(source, {
    source = 'admin',
    title = 'Premio del evento',
    amount = 200,
    currency = 'coins',
})

source es uno de shop, cases, daily, pass, wallet, code, gift, loyalty, admin o mission. En coins, amount es negativo cuando se gasta y positivo cuando se recibe.

getSetting ​

Devuelve una copia de una sección de ajustes tal como está ahora, con los cambios hechos desde el panel de administración.

lua
---@param id string   config.tablet | config.vip | config.daily | config.pass | config.cases | config.news | config.live | config.crosshair | config.jobs | data.shop | data.daily | data.pass | data.cases | data.missions | data.jobsOnline | data.jobsCity
---@return table?
local vip = exports.cuxial_tablet:getSetting('config.vip')
print(vip.codes.prefix)

Exports de cliente ​

Open, Close, Toggle, IsOpen ​

Controlan la ventana de la tablet. Open acepta un id de página; sin él, la tablet se abre en su página habitual. La tablet sigue negándose a abrir cuando el jugador está en un estado que tablet.canOpen prohíbe.

lua
---@param page? 'player'|'news'|'jobsOnline'|'jobsCity'|'crosshair'|'vip'
exports.cuxial_tablet:Open('news')
exports.cuxial_tablet:Close()
exports.cuxial_tablet:Toggle()

---@return boolean
local open = exports.cuxial_tablet:IsOpen()

SetPage ​

Cambia de página con la tablet abierta. Devuelve false si la página no existe o está desactivada en tablet.pages.

lua
---@param page string
---@return boolean
exports.cuxial_tablet:SetPage('vip')

IsCrosshairActive ​

Dice si la mira personalizada del jugador se está dibujando en este momento.

lua
---@return boolean
local active = exports.cuxial_tablet:IsCrosshairActive()

State bags ​

BagDóndeValor
cuxialTablet:openJugadortrue mientras ese jugador tiene la tablet abierta.
cuxialTablet:liveJugadorEl id del directo mientras ese jugador está emitiendo.
cuxialTabletLivesGlobalUn contador que crece cada vez que empieza o termina un directo.
cuxialTabletCatalogRevGlobalUn contador que crece cada vez que cambian la tienda, la diaria, el pase o las cajas.
lua
-- servidor
local open = Player(src).state['cuxialTablet:open']

-- cliente
AddStateBagChangeHandler('cuxialTablet:live', nil, function(bagName, _, value)
    -- value es el id del directo, o nil cuando termina
end)

Eventos ​

cuxial_tablet:settingsApplied ​

Servidor y cliente, local en cada lado. Se dispara después de que cambie una sección de ajustes, con el id de la sección. Escúchalo desde tus recursos con AddEventHandler para reaccionar a las ediciones en vivo.

lua
AddEventHandler('cuxial_tablet:settingsApplied', function(id)
    if id == 'data.shop' then
        -- ha cambiado el catálogo de la tienda
    end
end)

Eventos que escucha ​

EventoLadoEfecto
cuxial_jobs:server:JobCompletedServidorDa XP del pase y avanza las misiones de trabajos, cuando cuxial_jobs está en marcha

Hooks ​

Los datos del perfil (vehículos, propiedades, horas trabajadas, estadísticas extra), el XP del pase por trabajos y las imágenes de los ítems salen de los adaptadores de hooks/. Son archivos Lua normales que puedes editar para conectar tus propios recursos. Consulta Hooks.

Eventos internos ​

Cualquier otro evento o callback que empiece por cuxial_tablet: es interno. Comprueban quién llama en el servidor y pueden cambiar sin aviso. No los dispares desde tus recursos.

© Cuxial