Inicio › Documentación › Personalización · origen_vendings

Personalización · origen_vendings

La carpeta custom/ contiene la capa de bridge de origen_vendings. Estos ficheros están excluidos del escrow y son los únicos que debes editar para integrar el recurso con tu stack.

text
custom/
├── client.lua   ← TextUI and notification bridges
└── server.lua   ← Framework, permissions, economy, and inventory bridges

Edita solo los ficheros de custom/. El resto de ficheros del recurso están protegidos por escrow y no deben modificarse.


custom/client.lua

Define dos objetos bridge usados en todo el lado cliente: HelpText y Notify.

HelpText

Controla el aviso TextUI que se muestra cuando el jugador está cerca de una máquina expendedora.


HelpText.GetResourceName() → string

Devuelve el nombre del recurso que proporciona el TextUI.

lua
HelpText.GetResourceName = function()
    return 'ox_lib'
end

HelpText.ShowHelpText(message, position?)

Muestra el TextUI en pantalla. Se llama automáticamente cuando el jugador entra en el radio de interacción de una máquina.

Parámetro Tipo Descripción
message string Texto a mostrar
position string? Posición en pantalla. Por defecto 'left-center'
lua
-- Default implementation (ox_lib)
HelpText.ShowHelpText = function(message, position)
    exports.ox_lib:showTextUI(message, {
        position = position or 'left-center',
        icon     = 'shopping-cart',
    })
end

HelpText.HideHelpText()

Oculta el TextUI activo. Se llama automáticamente cuando el jugador sale del radio de interacción.

lua
-- Default implementation (ox_lib)
HelpText.HideHelpText = function()
    exports.ox_lib:hideTextUI()
end

Notify

Controla las notificaciones emergentes del juego enviadas al jugador (compra correcta, errores, etc.).


Notify.GetResourceName() → string

Devuelve el nombre del recurso que proporciona las notificaciones.

lua
Notify.GetResourceName = function()
    return 'ox_lib'
end

Notify.SendNotify(message, type?, time?)

Notificación sencilla sin título.

Parámetro Tipo Descripción
message string Texto a mostrar
type string? 'success' | 'error' | 'info' | 'warning'. Por defecto 'info'
time number? Duración en milisegundos. Por defecto 3000
lua
-- Default implementation (ox_lib)
Notify.SendNotify = function(message, _type, time)
    exports.ox_lib:notify({
        description = message,
        type        = _type or 'info',
        duration    = time  or 3000,
        position    = Config.NotificationPosition or 'top-right',
    })
end

Notify.SendNotification(title, message, type?, time?)

Notificación con título.

Parámetro Tipo Descripción
title string Título de la notificación. Por defecto 'Vending'
message string Cuerpo de la notificación
type string? 'success' | 'error' | 'info' | 'warning'. Por defecto 'info'
time number? Duración en milisegundos. Por defecto 3000
lua
-- Default implementation (ox_lib)
Notify.SendNotification = function(title, message, _type, time)
    exports.ox_lib:notify({
        title       = title or 'Vending',
        description = message,
        type        = _type or 'info',
        duration    = time  or 3000,
        position    = Config.NotificationPosition or 'top-right',
    })
end

custom/server.lua

Define el objeto bridge Custom usado en todo el lado servidor. Gestiona la integración con el framework, los permisos, la economía y el inventario.

El proveedor de inventario se guarda en caché la primera vez que se usa. Si cambias Config.Inventory en ejecución, reinicia el recurso para que lo vuelva a detectar.


Custom.getIdentifier(source) → string | nil

Devuelve el identificador único del jugador (citizenid en QBCore/QBX, license en ESX).

Parámetro Tipo Descripción
source number ID de servidor del jugador

Custom.getStaffLevel(source) → 'full' | false

Comprueba si el jugador tiene acceso de administración al panel de máquinas expendedoras. Devuelve 'full' si lo tiene y false en caso contrario.

Comprueba (por orden):

  1. La marca de administrador del framework (qb-core / qbx_core)
  2. Cualquier grupo ACE definido en Config.GroupPermissions
  3. El ACE genérico command
Parámetro Tipo Descripción
source number ID de servidor del jugador
lua
-- Usage example inside a callback
local level = Custom.getStaffLevel(source)
if not level then return end -- not an admin

Custom.getMoney(source, account?) → number | nil

Devuelve el saldo del jugador en la cuenta indicada.

Parámetro Tipo Descripción
source number ID de servidor del jugador
account string? 'cash' (por defecto) o 'bank'

Custom.removeMoney(source, amount, account?, reason?) → boolean, string?

Descuenta dinero al jugador. Devuelve true si funciona, o false más una cadena de error si falla.

Parámetro Tipo Descripción
source number ID de servidor del jugador
amount number Cantidad a descontar (debe ser > 0)
account string? 'cash' (por defecto) o 'bank'
reason string? Etiqueta de la transacción. Por defecto 'origen_vendings'

Posibles cadenas de error:

Error Causa
'invalid_amount' La cantidad es nil, 0 o negativa
'player_not_found' El framework no pudo resolver al jugador
'insufficient_funds' El saldo es inferior a la cantidad solicitada
'framework_denied' El RemoveMoney del framework devolvió false
'framework_not_supported' El framework activo no está soportado
lua
local ok, err = Custom.removeMoney(source, 50, 'cash')
if not ok then
    print('Payment failed:', err)
end

Custom.giveItem(source, itemName, amount, metadata?) → boolean

Entrega un objeto al jugador usando el inventario activo. Comprueba la capacidad de carga cuando está soportado.

Parámetro Tipo Descripción
source number ID de servidor del jugador
itemName string Nombre interno del objeto
amount number Cantidad a entregar
metadata table? Metadatos opcionales del objeto

Custom.itemExists(itemName) → boolean

Devuelve true si el objeto está registrado en el inventario activo.

Parámetro Tipo Descripción
itemName string Nombre interno del objeto

Custom.getInventoryName() → string

Devuelve el nombre del recurso de inventario activo (por ejemplo 'ox_inventory', 'qb-inventory'). Útil para logs y depuración.


Custom.getAllInventoryItems() → table[]

Devuelve todos los objetos registrados en el inventario activo, ordenados alfabéticamente por etiqueta. Lo usa el panel de administración para rellenar el selector de objetos.

Cada entrada de la tabla devuelta:

Campo Tipo Descripción
name string Nombre interno del objeto
label string Nombre visible
weight number Peso del objeto
stack boolean Si el objeto es apilable
image string URL de la imagen NUI resuelta, o '' si no se encuentra