Accueil › Documentation › Personnalisation · origen_boosting

Personnalisation · origen_boosting

Tous les fichiers du dossier custom/ sont en code source ouvert (escrow-ignore) et constituent la couche d’intégration entre origen_boosting et les ressources propres à ton serveur.

text
custom/
├── client/
│   ├── framework.lua
│   ├── functions.lua
│   ├── inventory.lua
│   └── notify.lua
└── server/
    ├── framework.lua
    ├── functions.lua
    ├── inventory.lua
    └── vinscratch.lua

custom/client/framework.lua

Gère la façon dont le script lit les données du joueur côté client, selon le framework actif.

Framework._GetPlayerData() → table

Renvoie l’objet complet des données du joueur depuis le framework actif.

lua
Framework._GetPlayerData = function()
    if Config.Framework == 'qb-core' or Config.Framework == 'qbx_core' then
        return Framework.Functions.GetPlayerData()
    elseif Config.Framework == 'esx' then
        return Framework.GetPlayerData()
    end
end

Framework.GetIdentifier() → string

Renvoie l’identifiant unique du joueur (citizenid pour QBCore/QBX, identifier pour ESX).

lua
Framework.GetIdentifier = function()
    if Config.Framework == 'qb-core' or Config.Framework == 'qbx_core' then
        return Framework.Functions.GetPlayerData().citizenid
    elseif Config.Framework == 'esx' then
        return Framework.GetPlayerData().identifier
    end
end

custom/client/functions.lua

Contient les hooks d’intégration au jeu appelés pendant les missions actives.

Custom.GiveKeys(plate)

Appelée quand le joueur vole un véhicule avec succès. Implémente ici l’intégration avec ton système de clés.

Paramètre Type Description
plate string Plaque d’immatriculation du véhicule volé
lua
Custom.GiveKeys = function(plate)
    -- Example using qb-vehiclekeys
    exports['qb-vehiclekeys']:GiveKeys(plate)
end

Custom.Minigame() → boolean

Appelée quand le joueur doit réussir le mini-jeu de piratage. Doit renvoyer true en cas de réussite ou false en cas d’échec.

Par défaut, utilise origen_hacking. Remplace-le par la ressource de mini-jeu de ton choix.

lua
Custom.Minigame = function()
    local status = exports['origen_hacking']:createGame("alphabet", 30)
    return status
end

Custom.SendDispatch(data)

Appelée quand un événement de la mission doit déclencher une alerte de dispatch à la police.

Paramètre Type Description
data.coords vector3 Position de l’événement
data.vehicle number Entity handle du véhicule
lua
Custom.SendDispatch = function(data)
    local plate = GetVehicleNumberPlateText(data.vehicle)
    exports['ps-dispatch']:CustomAlert({
        coords = data.coords,
        message = 'Vehicle being stolen - ' .. plate,
        dispatchCode = '10-37',
        job = { 'police' },
    })
end

Custom.VehicleDestroy(veh)

Appelée quand le serveur indique que le véhicule de la mission doit être détruit. Par défaut, elle ajoute un avertissement de 20 secondes puis déclenche une explosion.

Paramètre Type Description
veh number Entity handle du véhicule à détruire
lua
Custom.VehicleDestroy = function(veh)
    Internal.Notify(locale('in_game.notifications.vehicle_explosion', 20))
    SetTimeout(20000, function()
        if DoesEntityExist(veh) then
            AddExplosion(GetEntityCoords(veh), 0, 100.0, true, false, true)
        end
    end)
end

Custom.IsOnDuty

Détermine si l’état de service est évalué avant de permettre à un joueur de lancer une mission.

Mets false (par défaut) pour désactiver la vérification, ou assigne une fonction qui renvoie un boolean.

lua
-- Default: no duty check
Custom.IsOnDuty = false
 
-- Example: integrate with origen_police
Custom.IsOnDuty = function()
    return exports['origen_police']:IsOnDuty()
end

custom/client/notify.lua

Gère toutes les notifications côté client, les invites de texte dans l’interface et les indicateurs de progression.

Custom.Notify(text, type, length)

Affiche une notification au joueur. Appelée quand Config.CustomNotify vaut true ou quand un framework personnalisé est utilisé.

Paramètre Type Description
text string Message de la notification
type string Type de notification : 'success', 'error', 'info', 'warning'
length number Durée en millisecondes
lua
Custom.Notify = function(text, type, length)
    lib.notify({
        description = text,
        type = type,
        duration = length,
    })
end

Custom.DrawText(key, text)

Affiche à l’écran une aide textuelle contextuelle.

Paramètre Type Description
key string Libellé de la touche affiché au joueur
text string Texte descriptif
lua
Custom.DrawText = function(key, text)
    lib.showTextUI('[' .. key .. '] - ' .. text)
end

Custom.HideText()

Masque l’aide textuelle.

lua
Custom.HideText = function()
    lib.hideTextUI()
end

Custom.Progress(duration, text) → boolean

Affiche un cercle de progression. Renvoie true une fois terminé.

Paramètre Type Description
duration number Durée en millisecondes
text string Libellé affiché sous le cercle de progression
lua
Custom.Progress = function(duration, text)
    return lib.progressCircle({
        canCancel = false,
        disable = { car = true },
        duration = duration,
        label = text,
        position = 'bottom',
        useWhileDead = false,
    })
end

custom/server/framework.lua

Gère toutes les opérations du framework côté serveur, comme la recherche de joueurs, la gestion de l’argent et les requêtes sur les métiers.

Framework.GetIdentifier(source) → string | false

Renvoie l’identifiant unique d’un joueur à partir de son ID serveur.

Paramètre Type Description
source number ID serveur du joueur

Framework.HasPermission(source, group) → boolean

Vérifie si un joueur appartient à un groupe d’administration précis.

Paramètre Type Description
source number ID serveur du joueur
group string Nom du groupe à vérifier

Framework.GetPlayerData(source) → table

Renvoie l’objet joueur brut du framework actif.

Paramètre Type Description
source number ID serveur du joueur

Framework.GetMoney(source, account) → number

Renvoie le solde d’un compte d’argent du joueur indiqué.

Paramètre Type Description
source number ID serveur du joueur
account string Nom du compte (par ex. 'bank', 'cash')

Framework.RemoveMoney(source, account, amount) → boolean

Retire de l’argent du compte d’un joueur. Renvoie true en cas de succès.

Paramètre Type Description
source number ID serveur du joueur
account string Nom du compte
amount number Montant à retirer

Framework.AddMoney(source, account, amount) → boolean

Ajoute de l’argent au compte d’un joueur.

Paramètre Type Description
source number ID serveur du joueur
account string Nom du compte
amount number Montant à ajouter

Framework.AddOfflineMoney(identifier, account, amount)

Ajoute de l’argent au compte d’un joueur hors ligne à partir de son identifiant.

Paramètre Type Description
identifier string Identifiant du joueur (citizenid ou license)
account string Nom du compte
amount number Montant à ajouter

Framework.GetPlayerByIdentifier(identifier) → table | nil

Recherche un joueur en ligne à partir de son identifiant unique.

Paramètre Type Description
identifier string Identifiant du joueur (citizenid ou license)

Framework.GetPlayersInJob(jobName) → number

Renvoie le nombre de joueurs en ligne qui exercent actuellement le métier indiqué.

Paramètre Type Description
jobName string Nom du métier à compter

custom/server/functions.lua

Custom.PlateGenerator

Remplacement facultatif de la logique intégrée de génération de plaques. Assigne-lui une fonction qui renvoie une chaîne de plaque, ou laisse-le à false pour utiliser le générateur par défaut configuré via Config.PlatePattern.

lua
-- Default: use built-in generator
Custom.PlateGenerator = false
 
-- Custom example
Custom.PlateGenerator = function()
    return 'CUSTOM' .. math.random(10, 99)
end

custom/server/inventory.lua

Custom.AddItem(source, name, amount, slot, metadata) → boolean

Appelée quand le script doit donner un objet à un joueur. Implémente-la quand ton système d’inventaire n’est pas pris en charge nativement ou quand tu as besoin d’une logique personnalisée.

Renvoie true si l’objet a bien été ajouté, false sinon.

Paramètre Type Description
source number ID serveur du joueur
name string Nom de l’objet
amount number Quantité
slot number | nil Emplacement d’inventaire cible (facultatif)
metadata table | nil Métadonnées de l’objet (facultatif)
lua
Custom.AddItem = function(source, name, amount, slot, metadata)
    exports['ox_inventory']:AddItem(source, name, amount, metadata)
    return true
end

custom/server/vinscratch.lua

Gère la logique d’enregistrement en base de données d’un véhicule au VIN gratté lorsque le joueur termine l’interaction de grattage du VIN.

Ce callback est enregistré sous le nom origen_boosting:sv:saveVinVehicle et se déclenche quand le client demande d’enregistrer le véhicule après avoir terminé l’étape de grattage du VIN de la mission.

Adapte ici les requêtes SQL si la structure de ta table de véhicules diffère du schéma par défaut de QBCore ou d’ESX.

lua
lib.callback.register('origen_boosting:sv:saveVinVehicle', function(source, props, model)
    local table = (Config.Framework == 'qb-core' or Config.Framework == 'qbx_core')
        and 'player_vehicles'
        or 'owned_vehicles'
 
    local identifier = Framework.GetIdentifier(source)
 
    -- QBCore / QBX
    if Config.Framework == 'qb-core' or Config.Framework == 'qbx_core' then
        MySQL.Async.execute(
            'INSERT INTO ' .. table .. ' (license, citizenid, vehicle, hash, mods, plate, vin) VALUES (@license, @citizenid, @vehicle, @hash, @mods, @plate, @vin)',
            {
                license = GetPlayerIdentifierByType(source, 'license'),
                citizenid = identifier,
                vehicle = model,
                hash = GetHashKey(model),
                mods = json.encode(props),
                plate = props.plate,
                vin = 1,
            }
        )
    end
end)