Início › Documentação › Personalização · origen_vendings
A pasta custom/ contém a camada de bridge do origen_vendings. Estes ficheiros estão excluídos do escrow e são os únicos que deves editar para integrar o recurso com a tua stack.
custom/
├── client.lua ← TextUI and notification bridges
└── server.lua ← Framework, permissions, economy, and inventory bridgesEdita apenas os ficheiros dentro de custom/. Os restantes ficheiros do recurso estão protegidos por escrow e não devem ser modificados.
Define dois objetos bridge usados em todo o lado cliente: HelpText e Notify.
Controla o aviso TextUI apresentado quando o jogador está perto de uma máquina de venda automática.
HelpText.GetResourceName() → stringDevolve o nome do recurso que fornece o TextUI.
HelpText.GetResourceName = function()
return 'ox_lib'
endHelpText.ShowHelpText(message, position?)Mostra o TextUI no ecrã. É chamado automaticamente quando o jogador entra no raio de interação de uma máquina.
| Parâmetro | Tipo | Descrição |
|---|---|---|
message |
string |
Texto a apresentar |
position |
string? |
Posição no ecrã. Por omissão 'left-center' |
-- Default implementation (ox_lib)
HelpText.ShowHelpText = function(message, position)
exports.ox_lib:showTextUI(message, {
position = position or 'left-center',
icon = 'shopping-cart',
})
endHelpText.HideHelpText()Oculta o TextUI ativo. É chamado automaticamente quando o jogador sai do raio de interação.
-- Default implementation (ox_lib)
HelpText.HideHelpText = function()
exports.ox_lib:hideTextUI()
endControla as notificações emergentes do jogo enviadas ao jogador (compra bem-sucedida, erros, etc.).
Notify.GetResourceName() → stringDevolve o nome do recurso que fornece as notificações.
Notify.GetResourceName = function()
return 'ox_lib'
endNotify.SendNotify(message, type?, time?)Notificação simples, sem título.
| Parâmetro | Tipo | Descrição |
|---|---|---|
message |
string |
Texto a apresentar |
type |
string? |
'success' | 'error' | 'info' | 'warning'. Por omissão 'info' |
time |
number? |
Duração em milissegundos. Por omissão 3000 |
-- 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',
})
endNotify.SendNotification(title, message, type?, time?)Notificação com título.
| Parâmetro | Tipo | Descrição |
|---|---|---|
title |
string |
Título da notificação. Por omissão 'Vending' |
message |
string |
Corpo da notificação |
type |
string? |
'success' | 'error' | 'info' | 'warning'. Por omissão 'info' |
time |
number? |
Duração em milissegundos. Por omissão 3000 |
-- 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',
})
endDefine o objeto bridge Custom usado em todo o lado servidor. Trata da integração com a framework, das permissões, da economia e do inventário.
O fornecedor de inventário fica em cache na primeira utilização. Se alterares Config.Inventory em execução, reinicia o recurso para que seja detetado de novo.
Custom.getIdentifier(source) → string | nilDevolve o identificador único do jogador (citizenid no QBCore/QBX, license no ESX).
| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador |
Custom.getStaffLevel(source) → 'full' | falseVerifica se o jogador tem acesso de administração ao painel das máquinas de venda automática. Devolve 'full' se tiver e false caso contrário.
Verifica (por ordem):
qb-core / qbx_core)Config.GroupPermissionscommand| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador |
-- Usage example inside a callback
local level = Custom.getStaffLevel(source)
if not level then return end -- not an adminCustom.getMoney(source, account?) → number | nilDevolve o saldo do jogador na conta indicada.
| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador |
account |
string? |
'cash' (por omissão) ou 'bank' |
Custom.removeMoney(source, amount, account?, reason?) → boolean, string?Retira dinheiro ao jogador. Devolve true em caso de sucesso, ou false mais uma cadeia de erro em caso de falha.
| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador |
amount |
number |
Quantia a retirar (tem de ser > 0) |
account |
string? |
'cash' (por omissão) ou 'bank' |
reason |
string? |
Etiqueta da transação. Por omissão 'origen_vendings' |
Possíveis cadeias de erro:
| Erro | Causa |
|---|---|
'invalid_amount' |
A quantia é nil, 0 ou negativa |
'player_not_found' |
A framework não conseguiu resolver o jogador |
'insufficient_funds' |
O saldo é inferior à quantia pedida |
'framework_denied' |
O RemoveMoney da framework devolveu false |
'framework_not_supported' |
A framework ativa não é suportada |
local ok, err = Custom.removeMoney(source, 50, 'cash')
if not ok then
print('Payment failed:', err)
endCustom.giveItem(source, itemName, amount, metadata?) → booleanEntrega um item ao jogador através do inventário ativo. Verifica a capacidade de carga quando é suportado.
| Parâmetro | Tipo | Descrição |
|---|---|---|
source |
number |
ID de servidor do jogador |
itemName |
string |
Nome interno do item |
amount |
number |
Quantidade a entregar |
metadata |
table? |
Metadados opcionais do item |
Custom.itemExists(itemName) → booleanDevolve true se o item estiver registado no inventário ativo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
itemName |
string |
Nome interno do item |
Custom.getInventoryName() → stringDevolve o nome do recurso de inventário atualmente ativo (por exemplo 'ox_inventory', 'qb-inventory'). Útil para logs e depuração.
Custom.getAllInventoryItems() → table[]Devolve todos os itens registados no inventário ativo, ordenados alfabeticamente pela etiqueta. É usado pelo painel de administração para preencher o seletor de itens.
Cada entrada da tabela devolvida:
| Campo | Tipo | Descrição |
|---|---|---|
name |
string |
Nome interno do item |
label |
string |
Nome visível |
weight |
number |
Peso do item |
stack |
boolean |
Se o item é empilhável |
image |
string |
URL da imagem NUI resolvida, ou '' se não for encontrada |