Accueil › Documentation › 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.
custom/
├── client/
│ ├── framework.lua
│ ├── functions.lua
│ ├── inventory.lua
│ └── notify.lua
└── server/
├── framework.lua
├── functions.lua
├── inventory.lua
└── vinscratch.luaGère la façon dont le script lit les données du joueur côté client, selon le framework actif.
Framework._GetPlayerData() → tableRenvoie l’objet complet des données du joueur depuis le framework actif.
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
endFramework.GetIdentifier() → stringRenvoie l’identifiant unique du joueur (citizenid pour QBCore/QBX, identifier pour ESX).
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
endContient 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é |
Custom.GiveKeys = function(plate)
-- Example using qb-vehiclekeys
exports['qb-vehiclekeys']:GiveKeys(plate)
endCustom.Minigame() → booleanAppelé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.
Custom.Minigame = function()
local status = exports['origen_hacking']:createGame("alphabet", 30)
return status
endCustom.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 |
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' },
})
endCustom.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 |
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)
endCustom.IsOnDutyDé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.
-- Default: no duty check
Custom.IsOnDuty = false
-- Example: integrate with origen_police
Custom.IsOnDuty = function()
return exports['origen_police']:IsOnDuty()
endGè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 |
Custom.Notify = function(text, type, length)
lib.notify({
description = text,
type = type,
duration = length,
})
endCustom.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 |
Custom.DrawText = function(key, text)
lib.showTextUI('[' .. key .. '] - ' .. text)
endCustom.HideText()Masque l’aide textuelle.
Custom.HideText = function()
lib.hideTextUI()
endCustom.Progress(duration, text) → booleanAffiche 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 |
Custom.Progress = function(duration, text)
return lib.progressCircle({
canCancel = false,
disable = { car = true },
duration = duration,
label = text,
position = 'bottom',
useWhileDead = false,
})
endGè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 | falseRenvoie 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) → booleanVé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) → tableRenvoie l’objet joueur brut du framework actif.
| Paramètre | Type | Description |
|---|---|---|
source |
number |
ID serveur du joueur |
Framework.GetMoney(source, account) → numberRenvoie 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) → booleanRetire 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) → booleanAjoute 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 | nilRecherche un joueur en ligne à partir de son identifiant unique.
| Paramètre | Type | Description |
|---|---|---|
identifier |
string |
Identifiant du joueur (citizenid ou license) |
Framework.GetPlayersInJob(jobName) → numberRenvoie 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.PlateGeneratorRemplacement 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.
-- Default: use built-in generator
Custom.PlateGenerator = false
-- Custom example
Custom.PlateGenerator = function()
return 'CUSTOM' .. math.random(10, 99)
endCustom.AddItem(source, name, amount, slot, metadata) → booleanAppelé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) |
Custom.AddItem = function(source, name, amount, slot, metadata)
exports['ox_inventory']:AddItem(source, name, amount, metadata)
return true
endGè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.
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)