Accueil › Documentation › Personnalisation · origen_dealerships

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.

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

custom/client/framework.lua

Custom.GetPlayerIdentifier() → string

Renvoie l’identifiant unique du joueur local (citizenid ou identifier selon le framework).

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

Custom.HandleInteraction(interactionData) → boolean

Hook 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
lua
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
end

Le 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) → table

Renvoie 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
lua
Custom.GetVehicleProps = function(vehicle)
    if Config.VehiclePurchase.useOxLibProps and lib and lib.getVehicleProperties then
        return lib.getVehicleProperties(vehicle)
    end
    -- fallback: returns basic props table
end

Custom.SetVehicleProps(vehicle, props) → boolean

Applique 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/client/keys.lua

Custom.GiveKeys(vehicle, plate) → boolean

Donne 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
lua
Custom.GiveKeys = function(vehicle, plate)
    local plateToUse = plate or (DoesEntityExist(vehicle) and GetVehicleNumberPlateText(vehicle) or nil)
    TriggerEvent("vehiclekeys:client:SetOwner", plateToUse)
    return true
end

L’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/client/notify.lua

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
lua
Custom.Notify = function(text, type, length)
    lib.notify({
        title       = 'Origen Dealerships',
        description = text,
        type        = type,
        duration    = length
    })
end

Custom.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/server/framework.lua

Custom.isAdmin(source) → boolean

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

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

Traite 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
lua
Custom.doPayment = function(source, paymentData)
    -- Handles cash/bank via framework, XP via exports['origen_xp']
end

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

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

Retrouve 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
lua
Custom.canBuyCategory = function(source, categoryKey, vehicleModel)
    -- Example: block category for players without a license
    return { cant = true, msg = "" }
end

custom/server/financing.lua

Custom.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é
lua
Custom.canFinanceVehicle = function(source, model, price, period)
    return { success = true, message = '' }
end

custom/server/plate.lua

Custom.GeneratePlate() → string | nil

Gé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) → boolean

Vé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.