Accueil › Documentation › Personnalisation · origen_vendings

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.

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

Modifie 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.


custom/client.lua

Définit deux objets bridge utilisés dans tout le côté client : HelpText et Notify.

HelpText

Contrôle l’invite TextUI affichée lorsque le joueur se trouve près d’un distributeur.


HelpText.GetResourceName() → string

Renvoie le nom de la ressource qui fournit le TextUI.

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

HelpText.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'
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()

Masque le TextUI actif. Appelé automatiquement lorsque le joueur quitte le rayon d’interaction.

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

Notify

Contrôle les notifications en jeu envoyées au joueur (achat réussi, erreurs, etc.).


Notify.GetResourceName() → string

Renvoie le nom de la ressource qui fournit les notifications.

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

Notify.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
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?)

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
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

Dé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 | nil

Renvoie 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' | false

Vé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) :

  1. Le drapeau d’administrateur du framework (qb-core / qbx_core)
  2. Tout groupe ACE défini dans Config.GroupPermissions
  3. L’ACE générique command
Paramètre Type Description
source number ID serveur du joueur
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

Renvoie 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
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

Donne 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) → boolean

Renvoie true si l’item est enregistré dans l’inventaire actif.

Paramètre Type Description
itemName string Nom interne de l’item

Custom.getInventoryName() → string

Renvoie 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