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.
---@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.
---@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.
---@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
endGrantPassXp
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.
---@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.
---@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.
---@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.
---@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.
---@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.
---@param page string
---@return boolean
exports.cuxial_tablet:SetPage('vip')IsCrosshairActive
Dice si la mira personalizada del jugador se está dibujando en este momento.
---@return boolean
local active = exports.cuxial_tablet:IsCrosshairActive()State bags
| Bag | Dónde | Valor |
|---|---|---|
cuxialTablet:open | Jugador | true mientras ese jugador tiene la tablet abierta. |
cuxialTablet:live | Jugador | El id del directo mientras ese jugador está emitiendo. |
cuxialTabletLives | Global | Un contador que crece cada vez que empieza o termina un directo. |
cuxialTabletCatalogRev | Global | Un contador que crece cada vez que cambian la tienda, la diaria, el pase o las cajas. |
-- 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.
AddEventHandler('cuxial_tablet:settingsApplied', function(id)
if id == 'data.shop' then
-- ha cambiado el catálogo de la tienda
end
end)Eventos que escucha
| Evento | Lado | Efecto |
|---|---|---|
cuxial_jobs:server:JobCompleted | Servidor | Da 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.
