Exports y eventos¶
Api para integrar nb-shops con otros recursos.
Exports (server)¶
getShops¶
Devuelve todas las tiendas desde la cache interna (array). Cada tienda incluye sus metadatos pero no sus items — para eso usa getShopItems.
getShopItems¶
| Parametro | Tipo | Descripcion |
|---|---|---|
shopId |
number | Id de la tienda en nb_shops. |
Devuelve los items de una tienda. Util para tiendas custom integradas en otros scripts.
Callbacks (server -> client)¶
Registrados con Bridge.CreateCallback de nb-bridge.
nb-shops:getRegisteredItems¶
Bridge.TriggerServerCallback('nb-shops:getRegisteredItems', function(items)
-- items: { { name, label, image }, ... }
end)
Devuelve todos los items registrados en el inventario activo (ox / qb / qs / origen) con su icono ya resuelto. Usado internamente por el panel admin para el item picker.
nb-shops:getShopData¶
Bridge.TriggerServerCallback('nb-shops:getShopData', function(data)
-- data: { shop, items, imageMap }
end, shopId)
Para abrir la tienda desde otro script sin usar el marker por defecto.
Eventos del servidor (disparados por el cliente)¶
| Evento | Payload | Descripcion |
|---|---|---|
nb-shops:server:requestShops |
— | Cliente pide la lista de tiendas al cargar. |
nb-shops:server:requestAdminData |
— | Admin pide el dataset completo para el wizard. |
nb-shops:server:purchaseItems |
shopId, cart, paymentMethod |
Ejecuta la compra (valida acceso, stock, fondos). |
nb-shops:server:createShop |
data |
Crea una tienda (admin only). |
nb-shops:server:updateShop |
shopId, data |
Actualiza una tienda (admin only). |
nb-shops:server:deleteShop |
shopId |
Elimina una tienda (admin only, cascade items). |
nb-shops:server:addItem |
shopId, item |
Anade un item a una tienda (admin only). |
nb-shops:server:updateItem |
shopId, itemId, item |
Actualiza un item (admin only). |
nb-shops:server:removeItem |
shopId, itemId |
Elimina un item (admin only). |
nb-shops:server:restockItem |
shopId, itemId |
Resetea current_stock al stock del item. |
nb-shops:server:restockShop |
shopId |
Restock de todos los items no infinitos. |
Eventos del cliente (disparados por el servidor)¶
| Evento | Payload | Descripcion |
|---|---|---|
nb-shops:client:syncShops |
shops[] |
Refresca markers/blips/peds. Se dispara al crear, editar o eliminar tiendas. |
nb-shops:client:refreshPeds |
shops[] |
Re-spawnea los NPCs tenderos. |
nb-shops:client:receiveAdminData |
data |
Respuesta al requestAdminData del panel. |
nb-shops:client:response |
{ success, message, data? } |
Respuesta generica para acciones admin / compras. |
Ejemplo: abrir tienda desde una mision¶
-- client
RegisterNetEvent('my-missions:rewardShop', function(shopId)
Bridge.TriggerServerCallback('nb-shops:getShopData', function(data)
SendNUIMessage({ action = 'openShop', data = data })
SetNuiFocus(true, true)
end, shopId)
end)
Ejemplo: crear una tienda programaticamente¶
-- server
TriggerEvent('nb-shops:server:createShop', {
name = 'Tienda Evento',
type = 'civil',
coords = vector3(24.5, -1347.3, 29.5),
use_marker = true, use_ped = false, use_blip = true,
categories = { 'comida', 'bebidas' },
payment_methods = { 'cash' },
}) -- source = 0 actua como admin
Llamado desde
source = 0(consola), el checkBridge.IsAdmin(0)asume permisos de sistema en la mayoria de frameworks.
Gotchas¶
getShopItemsno filtra por stock — devuelve items concurrent_stock = 0. Filtralo tu si quieres ocultarlos.- Item picker depende del inventario: si usas un inventario no soportado directamente, implementa un override en
bridge/inventory.luaque devuelva{ name, label, image }[]. - Cache: las ediciones desde el panel actualizan cache + DB. Si editas la tabla
nb_shopsa mano, ejecutaexports['nb-shops']:reload()(no expuesto actualmente — reinicia el recurso).