Accueil › Documentation › Personnalisation · origen_vendings
Le dossier custom/ contient la couche de bridge d’origen_vendings. Ces fichiers sont exclus de l’escrow et ce sont les seuls que tu dois modifier pour intégrer la ressource à ta stack.
custom/
├── client.lua ← TextUI and notification bridges
└── server.lua ← Framework, permissions, economy, and inventory bridgesModifie uniquement les fichiers à l’intérieur de custom/. Tous les autres fichiers de la ressource sont protégés par l’escrow et ne doivent pas être modifiés.
Définit deux objets bridge utilisés dans tout le côté client : HelpText et Notify.
Contrôle l’invite TextUI affichée lorsque le joueur se trouve près d’un distributeur.
HelpText.GetResourceName() → stringRenvoie le nom de la ressource qui fournit le TextUI.
HelpText.GetResourceName = function()
return 'ox_lib'
endHelpText.ShowHelpText(message, position?)Affiche le TextUI à l’écran. Appelé automatiquement lorsque le joueur entre dans le rayon d’interaction d’un distributeur.
| Paramètre | Type | Description |
|---|---|---|
message |
string |
Texte à afficher |
position |
string? |
Position à l’écran. Par défaut '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()Masque le TextUI actif. Appelé automatiquement lorsque le joueur quitte le rayon d’interaction.
-- Default implementation (ox_lib)
HelpText.HideHelpText = function()
exports.ox_lib:hideTextUI()
endContrôle les notifications en jeu envoyées au joueur (achat réussi, erreurs, etc.).
Notify.GetResourceName() → stringRenvoie le nom de la ressource qui fournit les notifications.
Notify.GetResourceName = function()
return 'ox_lib'
endNotify.SendNotify(message, type?, time?)Notification simple, sans titre.
| Paramètre | Type | Description |
|---|---|---|
message |
string |
Texte à afficher |
type |
string? |
'success' | 'error' | 'info' | 'warning'. Par défaut 'info' |
time |
number? |
Durée en millisecondes. Par défaut 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?)Notification avec titre.
| Paramètre | Type | Description |
|---|---|---|
title |
string |
Titre de la notification. Par défaut 'Vending' |
message |
string |
Corps de la notification |
type |
string? |
'success' | 'error' | 'info' | 'warning'. Par défaut 'info' |
time |
number? |
Durée en millisecondes. Par défaut 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',
})
endDéfinit l’objet bridge Custom utilisé dans tout le côté serveur. Il gère l’intégration avec le framework, les permissions, l’économie et l’inventaire.
Le fournisseur d’inventaire est mis en cache à la première utilisation. Si tu modifies Config.Inventory à l’exécution, redémarre la ressource pour qu’il soit détecté à nouveau.
Custom.getIdentifier(source) → string | nilRenvoie l’identifiant unique du joueur (citizenid pour QBCore/QBX, license pour ESX).
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID serveur du joueur |
Custom.getStaffLevel(source) → 'full' | falseVérifie si le joueur a un accès d’administration au panneau des distributeurs. Renvoie 'full' si c’est le cas, false sinon.
Vérifie (dans l’ordre) :
qb-core / qbx_core)Config.GroupPermissionscommand| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID serveur du joueur |
-- Usage example inside a callback
local level = Custom.getStaffLevel(source)
if not level then return end -- not an adminCustom.getMoney(source, account?) → number | nilRenvoie le solde du joueur sur le compte indiqué.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID serveur du joueur |
account |
string? |
'cash' (par défaut) ou 'bank' |
Custom.removeMoney(source, amount, account?, reason?) → boolean, string?Déduit de l’argent au joueur. Renvoie true en cas de succès, ou false accompagné d’une chaîne d’erreur en cas d’échec.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID serveur du joueur |
amount |
number |
Montant à déduire (doit être > 0) |
account |
string? |
'cash' (par défaut) ou 'bank' |
reason |
string? |
Libellé de la transaction. Par défaut 'origen_vendings' |
Chaînes d’erreur possibles :
| Erreur | Cause |
|---|---|
'invalid_amount' |
Le montant est nil, 0 ou négatif |
'player_not_found' |
Le framework n’a pas pu identifier le joueur |
'insufficient_funds' |
Le solde est inférieur au montant demandé |
'framework_denied' |
Le RemoveMoney du framework a renvoyé false |
'framework_not_supported' |
Le framework actif n’est pas pris en charge |
local ok, err = Custom.removeMoney(source, 50, 'cash')
if not ok then
print('Payment failed:', err)
endCustom.giveItem(source, itemName, amount, metadata?) → booleanDonne un item au joueur via l’inventaire actif. Vérifie la capacité de transport lorsque c’est pris en charge.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID serveur du joueur |
itemName |
string |
Nom interne de l’item |
amount |
number |
Quantité à donner |
metadata |
table? |
Métadonnées facultatives de l’item |
Custom.itemExists(itemName) → booleanRenvoie true si l’item est enregistré dans l’inventaire actif.
| Paramètre | Type | Description |
|---|---|---|
itemName |
string |
Nom interne de l’item |
Custom.getInventoryName() → stringRenvoie le nom de la ressource d’inventaire actuellement active (par exemple 'ox_inventory', 'qb-inventory'). Utile pour les logs et le débogage.
Custom.getAllInventoryItems() → table[]Renvoie tous les items enregistrés dans l’inventaire actif, triés par ordre alphabétique de libellé. Utilisé par le panneau d’administration pour remplir le sélecteur d’items.
Chaque entrée de la table renvoyée :
| Champ | Type | Description |
|---|---|---|
name |
string |
Nom interne de l’item |
label |
string |
Nom affiché |
weight |
number |
Poids de l’item |
stack |
boolean |
Indique si l’item est empilable |
image |
string |
URL de l’image NUI résolue, ou '' si introuvable |