Accueil › Documentation › Personnalisation · origen_admin

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.

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

custom/client/actions.lua

SelfRevive()

Réanime l’admin local. Délègue au Config.AmbulanceSystem configuré.

lua
-- qb-ambulancejob → hospital:client:Revive
-- wasabi_ambulance → wasabi_ambulance:revive
-- default          → /revive command

ModifySkin()

Ouvre le menu de vêtements pour l’admin local. Délègue à Config.ClothingSystem.

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

lua
-- qb-mechanicjob → exports qb-mechanicjob:PaintCategories()
-- vms_tunning    → exports vms_tuning:openTuning()
-- esx_tunning    → exports esx_tuning:OpenMenu()
-- okokTunning    → TriggerServerEvent okokTuning:openFreeMenu

SetMaxVehicleFuel(vehicle)

Remplit le réservoir du véhicule indiqué à 100 %. Délègue à Config.FuelSystem.

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


custom/client/inventory.lua

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).


custom/client/notifications.lua

ShowNotification(text)

Affiche une notification à l’admin local. Délègue à Config.Framework.

lua
function ShowNotification(text)
    -- 'qbcore' → TriggerEvent("QBCore:Notify", text)
    -- 'esx'    → Framework.ShowNotification(text)
end

custom/client/weather.lua

Gè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-weathersync

IsTimeFreezed() / IsWeatherFreezed() → boolean


custom/server/actions.lua

BanPlayerHandler(license, targetId, time, staffName, reason)

Appelée lorsque Config.CustomBanSystem = true. Implémente ici ta logique de bannissement personnalisée.

lua
function BanPlayerHandler(license, targetId, time, staffName, reason)
    -- implement custom ban
end

UnbanPlayerHandler(license)

Appelée lors d’un débannissement avec Config.CustomBanSystem = true.

lua
function UnbanPlayerHandler(license)
end

IsbannedHandler(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.

lua
function IsbannedHandler(license)
    return false
end

custom/server/ck.lua

OnCK(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.

lua
function OnCK(identifier)
    -- Example: delete player properties
    -- MySQL.query.await("DELETE FROM player_properties WHERE citizenid = ?", { identifier })
end

custom/server/vehicles.lua

GetPlayerVehicles(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.


custom/server/apartments.lua

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.


custom/server/player.lua

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)

custom/server/chat.lua

SendChatMessage(src, header, color, message)

Envoie un message de chat formaté à un joueur.

lua
function SendChatMessage(src, header, color, message)
    TriggerClientEvent('chatMessage', src, header, color, message)
end