Accueil › Documentation › Personnalisation · origen_dealerships
Le dossier custom/ contient tous les points d’intégration entre origen_dealerships et le reste de ton serveur. Ces fichiers ne sont pas protégés par l’escrow et doivent être adaptés à ta configuration.
custom/
├── client/
│ ├── framework.lua — player identifier, vehicle props, NPC interaction
│ ├── keys.lua — vehicle key assignment on purchase
│ └── notify.lua — notifications and text UI
└── server/
├── framework.lua — admin check, payments, vehicle DB insertion
├── financing.lua — financing eligibility hook
└── plate.lua — plate generation and uniqueness checkCustom.GetPlayerIdentifier() → stringRenvoie l’identifiant unique du joueur local (citizenid ou identifier selon le framework).
Custom.GetPlayerIdentifier = function()
local identifier = nil
if Config.Framework == 'qb-core' then
identifier = Framework.Functions.GetPlayerData().citizenid
elseif Config.Framework == 'esx' then
identifier = Framework.GetPlayerData().identifier
end
return identifier
endCustom.HandleInteraction(interactionData) → booleanHook appelé quand un joueur tente d’interagir avec le PNJ d’une concession. Renvoie true pour remplacer le déroulement d’interaction par défaut, ou false pour laisser la ressource le gérer normalement.
| Paramètre | Type | Description |
|---|---|---|
interactionData.type |
string |
Type d’interaction. Pour l’instant : 'npc' |
interactionData.onInteract |
function |
Appelle-la pour déclencher l’interaction par défaut depuis le hook |
Custom.HandleInteraction = function(interactionData)
if interactionData.type == 'npc' then
-- interactionData.onInteract() -- uncomment to delegate back
return true -- return true to fully take over
end
return false
endLe remplacement de l’interaction avec le PNJ est désactivé par défaut (return false). Active-le si tu veux utiliser un menu contextuel ox_lib personnalisé ou une ressource d’interaction tierce.
Custom.GetVehicleProps(vehicle) → tableRenvoie les propriétés de l’entité véhicule donnée. Utilise lib.getVehicleProperties quand Config.VehiclePurchase.useOxLibProps vaut true.
| Paramètre | Type | Description |
|---|---|---|
vehicle |
entity |
Handle de l’entité du véhicule |
Custom.GetVehicleProps = function(vehicle)
if Config.VehiclePurchase.useOxLibProps and lib and lib.getVehicleProperties then
return lib.getVehicleProperties(vehicle)
end
-- fallback: returns basic props table
endCustom.SetVehicleProps(vehicle, props) → booleanApplique une table de propriétés à une entité véhicule. Utilise lib.setVehicleProperties quand il est disponible.
| Paramètre | Type | Description |
|---|---|---|
vehicle |
entity |
Handle de l’entité du véhicule |
props |
table |
Table de propriétés (même format que GetVehicleProps) |
Custom.GiveKeys(vehicle, plate) → booleanDonne au joueur local les clés de propriétaire du véhicule indiqué. Appelée automatiquement après l’achat quand Config.VehiclePurchase.giveKeysOnPurchase vaut true.
| Paramètre | Type | Description |
|---|---|---|
vehicle |
entity | nil |
Entité du véhicule. Si nil, plate est utilisé |
plate |
string | nil |
Plaque d’immatriculation. Utilisée en repli si l’entité n’est pas disponible |
Custom.GiveKeys = function(vehicle, plate)
local plateToUse = plate or (DoesEntityExist(vehicle) and GetVehicleNumberPlateText(vehicle) or nil)
TriggerEvent("vehiclekeys:client:SetOwner", plateToUse)
return true
endL’implémentation par défaut déclenche l’événement vehiclekeys:client:SetOwner (compatible avec qb-vehiclekeys). Remplace cette fonction si ton serveur utilise un autre système de clés, comme qs-vehiclekeys ou vehicles_keys.
Custom.Notify(text, type, length)Affiche une notification au joueur local via lib.notify.
| Paramètre | Type | Description |
|---|---|---|
text |
string |
Message déjà traduit |
type |
string |
Type de notification : 'success', 'error', 'warning', 'info' |
length |
number |
Durée en millisecondes |
Custom.Notify = function(text, type, length)
lib.notify({
title = 'Origen Dealerships',
description = text,
type = type,
duration = length
})
endCustom.DrawText(text, key)Affiche le text UI d’ox_lib avec une indication de touche.
| Paramètre | Type | Description |
|---|---|---|
text |
string |
Texte du libellé |
key |
string |
Libellé de la touche affiché entre crochets |
Custom.HideText()Masque le text UI d’ox_lib actif.
Custom.isAdmin(source) → booleanVérifie si le joueur indiqué a des permissions d’administrateur selon Config.AdminGroups.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
Custom.getPlayerIdentifier(source) → string | nilRenvoie l’identifiant unique du joueur (citizenid pour QB/QBX, identifier pour ESX).
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
Custom.doPayment(source, paymentData) → booleanTraite un paiement depuis le compte d’un joueur. Prend en charge les méthodes cash, bank et xp.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
paymentData.method |
string |
Méthode de paiement : 'cash', 'bank', 'xp' |
paymentData.amount |
number |
Montant à débiter |
Custom.doPayment = function(source, paymentData)
-- Handles cash/bank via framework, XP via exports['origen_xp']
endLa méthode de paiement 'xp' nécessite que origen_xp soit en cours d’exécution. Elle appelle exports['origen_xp']:RemoveXPFromLicense(license, amount).
Custom.removeFinanceMoney(source, amount) → booleanDébite du compte bancaire du joueur le paiement d’une mensualité de financement.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
amount |
number |
Montant à débiter de la banque |
Custom.addVehicleToDatabase(source, vehicleModel, plate, props, callback)Insère un véhicule acheté dans la table de véhicules correspondant au framework actif.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
vehicleModel |
string |
Nom du modèle du véhicule (nom de spawn) |
plate |
string |
Chaîne de la plaque d’immatriculation |
props |
table | nil |
Propriétés du véhicule. Si nil, les valeurs par défaut sont utilisées |
callback |
function(success, message) |
Appelée une fois l’insertion en base de données terminée |
Tables cibles :
| Framework | Table |
|---|---|
| QBCore / QBX | player_vehicles |
| ESX | owned_vehicles |
Custom.GetPlayerSourceByIdentifier(identifier) → number | nilRetrouve l’ID serveur (source) d’un joueur connecté à partir de son identifiant unique. Utilisée pour les notifications de paiements de financement.
| Paramètre | Type | Description |
|---|---|---|
identifier |
string |
citizenid (QB/QBX) ou identifier (ESX) |
Custom.canBuyCategory(source, categoryKey, vehicleModel) → { cant: boolean, msg: string }Hook pour ajouter des restrictions personnalisées à l’achat de catégories de véhicules. Renvoie cant = false avec un message pour bloquer l’achat.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
categoryKey |
string |
Identifiant de la catégorie de la concession |
vehicleModel |
string |
Modèle de véhicule en cours d’achat |
Custom.canBuyCategory = function(source, categoryKey, vehicleModel)
-- Example: block category for players without a license
return { cant = true, msg = "" }
endCustom.canFinanceVehicle(source, model, price, period) → { success: boolean, message: string }Hook appelé avant la création d’un contrat de financement. Renvoie success = false avec un message pour bloquer l’opération.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID du joueur sur le serveur |
model |
string |
Modèle du véhicule |
price |
number |
Prix total du véhicule |
period |
number |
Nombre de périodes de paiement demandé |
Custom.canFinanceVehicle = function(source, model, price, period)
return { success = true, message = '' }
endCustom.GeneratePlate() → string | nilGénère une plaque d’immatriculation unique de 8 caractères (4 lettres + 4 chiffres). Réessaie jusqu’à 100 fois pour éviter les collisions. Renvoie nil si aucune plaque unique n’est trouvée après le nombre maximal de tentatives.
Custom.PlateExists(plate) → booleanVérifie si une plaque est déjà enregistrée dans la table des véhicules.
| Paramètre | Type | Description |
|---|---|---|
plate |
string |
Plaque à vérifier |
Interroge player_vehicles pour QBCore/QBX et owned_vehicles pour ESX.