Accueil › Documentation › Personnalisation · origen_housing

Personnalisation · origen_housing

Le dossier custom/ te permet d’intégrer n’importe quel framework, inventaire, système de vêtements, système de clés, garage, dispatch et synchronisation météo sans toucher au cœur. Tous les fichiers sont escrow_ignore : ils survivent aux mises à jour.

text
custom/
├── client/
│   ├── framework.lua   — player identifier
│   ├── notify.lua      — notifications, draw text, external interactions
│   ├── inventory.lua   — stash opening and access gate
│   ├── clothing.lua    — wardrobe
│   ├── garages.lua     — keys, vehicle mods, custom garage
│   ├── house.lua       — access gate, enter/exit hooks
│   ├── robbery.lua     — dispatch alert, lockpick minigame
│   ├── raid.lua        — raid skill check
│   └── weather.lua     — weather sync pause/resume
└── server/
    ├── framework.lua   — identifier, name, job, money, items, police count
    ├── permissions.lua — permission check
    ├── inventory.lua   — stash registration
    ├── garages.lua     — vehicle queries
    └── house.lua       — purchase, delete, upgrade, furniture hooks

custom/client/framework.lua

Framework.GetPlayerIdentifier() → string | nil

Renvoie l’identifiant unique du joueur local.


custom/client/notify.lua

Custom.Notify(text, type, length)

Affiche une notification. Par défaut : lib.notify. Remplace-la quand Config.CustomNotify = true.

Custom.DrawText(text, key) / Custom.HideText()

Affiche ou masque le texte d’aide à l’interaction. Remplace-les quand Config.CustomDrawText = true.

Système d’interaction externe

Utilisé quand Config.ExternalInteractionSystem = true. Implémente ces fonctions pour utiliser ox_target ou équivalent :

lua
Custom.CreateCoordsInteraction = function(id, coords, drawDistance, distance, inVehicle, label, onSelect)
    -- e.g. exports.ox_target:addCoords(...)
end
 
Custom.RemoveCoordsInteraction = function(id, coords) end
 
Custom.CreateEntityInteraction = function(id, type, entity, drawDistance, distance, label, onSelect) end
 
Custom.RemoveEntityInteraction = function(id, entity) end

custom/client/inventory.lua

Custom.OpenStash(id, data) — ouvre un coffre

Appelée quand Config.CustomInventory = true. Implémente ici la logique d’ouverture du coffre.

lua
Custom.OpenStash = function(id, data)
    -- data: { label, slots, weight }
end

Custom.CanOpenStash(houseID, hasSecurity) → boolean

Contrôle l’accès aux coffres. Si la maison possède l’amélioration storage_security, hasSecurity = true. Par défaut, renvoie not hasSecurity.


custom/client/clothing.lua

Custom.Wardrobe(id)

Ouvre la garde-robe correspondant à l’ID donné. Appelée quand Config.CustomClothing = true.

lua
Custom.Wardrobe = function(id)
    -- exports['origen_clothing']:openOutfitMenu(true, true)
end

custom/client/garages.lua

Custom.GiveVehicleKeys(vehicle, plate)

Donne les clés du véhicule après sa sortie du garage. Implémente ici ton système de clés.

lua
Custom.GiveVehicleKeys = function(vehicle, plate)
    TriggerEvent("vehiclekeys:client:SetOwner", plate)
end

Custom.GetVehicleMods(vehicle) / Custom.SetVehicleProperties(vehicle, props)

Récupère ou définit les propriétés du véhicule. Par défaut, délègue à Config.Framework.

Custom.GetClosestVehicle(coords) → vehicle entity

Trouve le véhicule le plus proche de coordonnées données.

Custom.OpenCustomGarage(houseID, garageType, coords)

Ouvre un système de garages personnalisé. Appelée quand Config.CustomGarage = true.

Custom.OnEnterGarage(houseID) / Custom.OnExitGarage(houseID)

Hooks déclenchés quand le joueur entre dans l’intérieur du garage intégré ou en sort.


custom/client/house.lua

Custom.CanAccessHouse(houseID) → boolean

Contrôle l’entrée dans une maison. Renvoie false pour bloquer l’accès.

Custom.OnEnterHouse(houseID) / Custom.OnExitHouse(houseID)

Déclenchées quand le joueur entre dans une maison ou en sort.

Custom.OnNearbyEntryPoint(houseID, distance, isOwned, data)

Déclenchée à chaque tick tant que le joueur est près d’un point d’entrée.

Custom.CanOpenHouseMenu() → boolean

Contrôle l’ouverture du menu de gestion à l’intérieur de la maison.

Custom.OnFreecam(state)

Déclenchée quand la caméra libre (utilisée pendant le placement ou l’aperçu de la maison) est activée ou désactivée.


custom/client/robbery.lua

Custom.Dispatch(coords)

Envoie une alerte de cambriolage à la police. Par défaut, utilise origen_police. Remplace-la quand Config.Dispatch = 'custom'.

lua
Custom.Dispatch = function(coords)
    TriggerServerEvent("SendAlert:police", {
        coords = coords,
        type   = 'GENERAL',
        title  = 'House robbery',
        job    = Config.PoliceJob,
    })
end

Custom.LockpickMinigame(advanced)

Remplace le mini-jeu de crochetage quand Config.Lockpick.customLockpickMinigame = true. Appelle LockpickResult(true/false) avec le résultat.

lua
Custom.LockpickMinigame = function(advanced)
    local result = true  -- your minigame result
    LockpickResult(result)
end

custom/client/raid.lua

Custom.RaidSkillcheck() → boolean

Appelée quand la police utilise stormram pour perquisitionner une maison. Par défaut, utilise lib.skillCheck. Renvoie true en cas de réussite.


custom/client/weather.lua

Custom.DisableWeatherSync() / Custom.EnableWeatherSync()

Appelées à l’entrée ou à la sortie d’un intérieur shell. Mets en pause ou relance ici ta ressource de synchronisation météo.


custom/server/framework.lua

Fonction Renvoie Description
Framework.GetIdentifier(source) string | nil Identifiant unique du joueur
Framework.GetPlayerName(source) string | nil Nom complet du joueur
Framework.GetPlayerJob(source) { name, grade } Métier et grade du joueur
Framework.GetMoney(source, method) number Solde pour le mode de paiement donné
Framework.RemoveMoney(source, amount, method) — Retire de l’argent
Framework.Removeitem(source, itemName, amount) — Retire un objet de l’inventaire
Framework.GetGroup(source) string Groupe de permissions du joueur
Framework.GetPoliceCount() number Agents actuellement en service

custom/server/permissions.lua

Custom.hasPermission(src, action) → boolean, string

Vérifie si un joueur peut effectuer une action ('create', 'delete', 'edit'). Vérifie d’abord les permissions par métier, puis les permissions ace, puis les groupes du framework.


custom/server/inventory.lua

Custom.RegisterStash(id, data)

Enregistre un coffre dans le système d’inventaire actif. Appelée quand un joueur entre dans une maison.

lua
Custom.RegisterStash = function(id, data)
    -- data: { label, slots, weight }
    -- exports.ox_inventory:RegisterStash(id, data.label, data.slots, data.weight)
end

custom/server/garages.lua

Ces fonctions utilisent automatiquement Config.Columns pour construire des requêtes valables pour n’importe quel framework :

Fonction Renvoie Description
Custom.GetOwnerIdentifierByPlate(plate) string | false Identifiant du propriétaire d’une plaque
Custom.UpdateGarageVehicle(plate, keep, garage, mods, cb) — Range ou récupère un véhicule
Custom.GetVehiclesFromGarage(garage_id) table[] Tous les véhicules rangés dans un garage

custom/server/house.lua

Hooks d’événement déclenchés à des moments clés. Tous sont vides par défaut : ajoute ta logique personnalisée :

Fonction Déclenchée quand
Custom.OnBuyHouse(src, data) Un joueur achète une maison
Custom.OnDeleteHouse(src, data) Une maison est supprimée
Custom.OnBuyUpgrade(src, data) Un joueur achète une amélioration de maison
Custom.OnBuyFurniture(src, data) Un joueur achète un meuble
Custom.OnDeleteFurniture(src, data) Un meuble est supprimé
Custom.OnStartBuilding(data) Une maison démarre sa phase de construction
Custom.OnTryBuyObject(src, data) → boolean Avant un achat — renvoie false pour le bloquer