Accueil › Documentation › Personnalisation · origen_admin
Le dossier custom/ te permet d’intégrer n’importe quel système de framework, d’inventaire, d’ambulance, de vêtements, de bannissement ou de véhicules sans toucher au cœur du script. Tous les fichiers sont en escrow_ignore : ils sont conservés lors des mises à jour.
custom/
├── client/
│ ├── actions.lua — revive, skin, tuning, fuel, vehicle actions
│ ├── inventory.lua — clear/view inventory
│ ├── notifications.lua — notifications
│ └── weather.lua — weather/time sync
├── server/
│ ├── actions.lua — revive, kill, ban system hooks, gang setter
│ ├── apartments.lua — fetch/add player apartments
│ ├── business.lua — fetch business list
│ ├── chat.lua — admin chat messages
│ ├── ck.lua — post-CK hook
│ ├── debug.lua — permission tester command (debug only)
│ ├── gangs.lua — fetch gang list, assign gang
│ ├── inventory.lua — view inventory server-side
│ ├── player.lua — read player metadata (health, hunger, thirst, armor)
│ ├── vehicles.lua — fetch/add/delete player vehicles
│ └── weather.lua — weather/time freeze via qb-weathersync
└── framework/
├── client/
│ ├── qb.lua — QBCore/QBX client bridge exports
│ └── esx.lua — ESX client bridge exports
└── server/
├── qb.lua — QBCore/QBX server bridge exports
└── esx.lua — ESX server bridge exportsSelfRevive()Réanime l’admin local. Délègue au Config.AmbulanceSystem configuré.
-- qb-ambulancejob → hospital:client:Revive
-- wasabi_ambulance → wasabi_ambulance:revive
-- default → /revive commandModifySkin()Ouvre le menu de vêtements pour l’admin local. Délègue à Config.ClothingSystem.
-- origen_clothing → origen_clothing:openClothingMenu
-- qb-clothing → qb-clothing:client:openMenu
-- illenium-appearance → illenium-appearance:client:openClothingShop
-- vms_clothestore → exports vms_clothestore:OpenWardrobe()ModifyVehicle()Ouvre le menu de tuning du véhicule actuel. Délègue à Config.TunningSystem.
-- qb-mechanicjob → exports qb-mechanicjob:PaintCategories()
-- vms_tunning → exports vms_tuning:openTuning()
-- esx_tunning → exports esx_tuning:OpenMenu()
-- okokTunning → TriggerServerEvent okokTuning:openFreeMenuSetMaxVehicleFuel(vehicle)Remplit le réservoir du véhicule indiqué à 100 %. Délègue à Config.FuelSystem.
-- default → SetVehicleFuelLevel(vehicle, 100.0)
-- legacyfuel → exports LegacyFuel:SetFuel(vehicle, 100)FixVehicle(vehicle) / UnlockVehicle(vehicle) / BoostVehicle(vehicle)Actions de véhicule intégrées. BoostVehicle applique les maximums de moteur, de freins, de traction et de maniabilité.
ClearInv(source)Vide l’inventaire d’un joueur en exécutant la commande adaptée à Config.Inventory.
Compatibles : origen_inventory, qs-inventory, codem-inventory, ox_inventory, qb-inventory.
SeeInv(source)Ouvre l’inventaire d’un joueur. Se rabat sur origen_admin:server:open_otherinv si l’inventaire n’a pas de commande côté client.
Compatibles côté client : origen_inventory, qs-inventory, codem-inventory, ox_inventory. Solution de repli côté serveur : qb-inventory (via OpenInventoryById).
ShowNotification(text)Affiche une notification à l’admin local. Délègue à Config.Framework.
function ShowNotification(text)
-- 'qbcore' → TriggerEvent("QBCore:Notify", text)
-- 'esx' → Framework.ShowNotification(text)
endGère la synchronisation de la météo et de l’heure. Détecte automatiquement qb-weathersync s’il est présent.
SetWeather(weather, isSynced)Définit le type de météo. Si isSynced = true et que qb-weathersync est en cours d’exécution, la synchronise pour tous les joueurs.
SetWeatherTime(hour, minute)Force l’horloge du jeu sur une heure précise.
SetWeatherSync(state) → active/désactive la synchronisation de qb-weathersyncIsTimeFreezed() / IsWeatherFreezed() → booleanBanPlayerHandler(license, targetId, time, staffName, reason)Appelée lorsque Config.CustomBanSystem = true. Implémente ici ta logique de bannissement personnalisée.
function BanPlayerHandler(license, targetId, time, staffName, reason)
-- implement custom ban
endUnbanPlayerHandler(license)Appelée lors d’un débannissement avec Config.CustomBanSystem = true.
function UnbanPlayerHandler(license)
endIsbannedHandler(license) → false | { banTime, expireTime, reason, staff }Appelée à la connexion d’un joueur avec Config.CustomBanSystem = true. Renvoie false s’il n’est pas banni, ou une table avec les détails du bannissement.
function IsbannedHandler(license)
return false
endOnCK(identifier)Hook déclenché après l’effacement d’un joueur (CK). Ajoute ici ta propre logique de nettoyage : requêtes supplémentaires en base de données, événements, etc.
function OnCK(identifier)
-- Example: delete player properties
-- MySQL.query.await("DELETE FROM player_properties WHERE citizenid = ?", { identifier })
endGetPlayerVehicles(citizenid) → table[]Récupère en base de données les véhicules enregistrés d’un joueur. Résout automatiquement la requête selon Config.GarageSystem et Config.Framework. Renvoie { label, subData (plate), garage } pour chaque véhicule.
AddPlayerVehicle(citizenid, model) n’a pas d’implémentation par défaut : tu dois écrire la requête INSERT pour la table de véhicules propre à ton serveur.
GetPlayerApartments(citizenid) → table[]Récupère les propriétés d’un joueur. Se résout automatiquement selon Config.HousingSystem.
AddPlayerApartment(citizenid, type) n’a pas d’implémentation par défaut : tu dois écrire la requête INSERT pour ton système d’habitation.
Remplace ces fonctions pour lire les métadonnées du joueur selon la structure de ton framework :
| Fonction | Renvoie | Lit par défaut depuis |
|---|---|---|
GetPlayerHealth(player) |
number |
PlayerData.metadata.health (200 par défaut) |
GetPlayerHunger(player) |
number |
PlayerData.metadata.hunger (100 par défaut) |
GetPlayerThirst(player) |
number |
PlayerData.metadata.thirst (100 par défaut) |
GetPlayerArmor(player) |
number |
PlayerData.metadata.armor (0 par défaut) |
SendChatMessage(src, header, color, message)Envoie un message de chat formaté à un joueur.
function SendChatMessage(src, header, color, message)
TriggerClientEvent('chatMessage', src, header, color, message)
end