Skip to content

Exports y eventos

API pública de Cuxial Abastecimiento: exports de servidor de las centrales, eventos de servidor y el gancho que se ejecuta al cobrar una partida.

Consulta las centrales de abastos desde tus propios recursos, reacciona a los cambios de stock y a las cestas sin pagar, y ejecuta tu código cuando se cobra una partida. Todo es de servidor. Cuxial Abastecimiento no tiene exports de cliente.

Los exports del mercado solo ven las centrales activas. Las incluidas vienen desactivadas, así que GetCentrals() devuelve una lista vacía hasta que el staff active alguna en el editor.

Exports de servidor ​

GetCentrals ​

Lista las centrales activas.

lua
exports.cuxial_supply:GetCentrals()

Devuelve: { id: string, label: string, area: 'city'|'county' }[].

GetProducts ​

Lista todos los productos activos.

lua
exports.cuxial_supply:GetProducts()

Devuelve: { id, label, category, unit, item, units, origin }[]. item es el ítem del inventario y units las unidades por caja.

GetStock ​

Devuelve las cajas de un producto que guarda una central.

lua
exports.cuxial_supply:GetStock(central, product)
ParámetroTipoDescripción
centralstringId de la central.
productstringId del producto.

Devuelve: number, o nil si la central no guarda ese producto o no está lista.

GetPrice ​

Devuelve los precios actuales de una caja.

lua
exports.cuxial_supply:GetPrice(central, product)

Devuelve: { buy, sell, wholesale, retail }, o nil. buy es lo que paga la central por una caja ahora, sell lo que cobra, wholesale y retail los precios en su terminal para los trabajos mayoristas y en las tiendas.

GetPrices ​

Devuelve los precios y el stock de todos los productos de una central.

lua
exports.cuxial_supply:GetPrices(central)

Devuelve: table<string, { buy, sell, wholesale, retail, stock, cap }> por id de producto, o nil.

lua
local prices = exports.cuxial_supply:GetPrices('paleto')
if prices and prices.eggs then
    print(('Huevos: %d cajas, se pagan a $%d'):format(prices.eggs.stock, prices.eggs.buy))
end

Purchase ​

Saca cajas del stock de una central a su precio de venta, caja a caja, y registra la venta. No cobra al jugador ni da ítems: eso lo hace tu recurso con el coste que devuelve.

lua
exports.cuxial_supply:Purchase(central, product, amount, meta)
ParámetroTipoDescripción
centralstringId de la central.
productstringId del producto.
amountnumberCajas, de 1 a 10000.
metatable?{ citizenid, name } opcional que se escribe en el libro de movimientos.

Devuelve: true, coste si sale bien, o false, motivo ('payload', 'error_not_ready', 'error_stock').

lua
local ok, cost = exports.cuxial_supply:Purchase('paleto', 'flour', 2, { citizenid = cid, name = name })
if ok then
    -- cobra `cost` al comprador y entrégale la mercancía
end

AddStock ​

Añade cajas a una central, hasta su tope.

lua
exports.cuxial_supply:AddStock(central, product, amount, reason)
ParámetroTipoDescripción
centralstringId de la central.
productstringId del producto.
amountnumberCajas, de 1 a 100000.
reasonstring?Texto que se escribe en el libro de movimientos.

Devuelve: true, stock con el stock nuevo, o false, motivo.

Eventos de servidor ​

Eventos locales de servidor, que se escuchan con AddEventHandler.

cuxial_supply:server:StockChanged ​

Se lanza cada vez que cambia el stock de un producto en una central.

ParámetroTipoDescripción
centralstringId de la central.
productstringId del producto.
stocknumberStock nuevo.
deltanumberCambio, positivo o negativo.
reasonstring'deliver', 'purchase', 'admin', 'add', 'consume' o 'restock'.
lua
AddEventHandler('cuxial_supply:server:StockChanged', function(central, product, stock, delta, reason)
    if stock == 0 then
        print(('%s se ha quedado sin %s'):format(central, product))
    end
end)

cuxial_supply:server:BasketUnpaid ​

Se lanza cuando un cliente sale de un supermercado con la cesta sin pagar.

ParámetroTipoDescripción
srcnumberId de servidor del jugador.
storestringId del supermercado.
data.unitsnumberUnidades de la cesta.
data.totalnumberValor de la cesta.
data.lostnumberUnidades que no pudieron volver a una balda.
data.restockedbooleanSi los productos se devolvieron a las baldas.
lua
AddEventHandler('cuxial_supply:server:BasketUnpaid', function(src, store, data)
    -- manda un aviso a la policía, sube el nivel de búsqueda...
end)

Gancho: onFinish ​

server/hooks.lua es un archivo abierto. Su función onFinish se ejecuta una vez por cada miembro de la tripulación que cobra al terminar una partida. Escribe tu código dentro.

server/hooks.lua
lua
function CuxialSupply.hooks.onFinish(src, data)
    -- tu código
end
ParámetroTipoDescripción
srcnumberId de servidor del jugador que ha cobrado.
data.runIdnumberId de la partida en cuxial_jobs_runs. 0 si no se pudo guardar.
data.regionnumberid de la línea en data/regions.lua.
data.scorenumberTareas hechas por este jugador.
data.moneynumberDinero pagado a este jugador.
data.xpnumberXP dada a este jugador.
data.ownerstringIdentificador de personaje del dueño de la tripulación.

Un error dentro del gancho se captura y se muestra en la consola del servidor. El pago no se ve afectado.

Base de datos ​

Las consultas de solo lectura son seguras en estas tablas. Las filas de este trabajo en las tablas cuxial_jobs_* tienen job = 'supply'.

TablaContenido
cuxial_jobs_playersUna fila por personaje: level, xp, progreso diario.
cuxial_jobs_runsPartidas terminadas: region, owner, crew_size, outcome, hora de inicio y de fin.
cuxial_jobs_run_membersQué hizo y qué ganó cada miembro en una partida.
cuxial_supply_stockStock por central y producto.
cuxial_supply_ledgerLibro de entregas, compras y cambios de stock.
cuxial_supply_historyHistorial de precios de las centrales.

© Cuxial