Accueil › Documentation › 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.
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 hooksFramework.GetPlayerIdentifier() → string | nilRenvoie l’identifiant unique du joueur local.
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.
Utilisé quand Config.ExternalInteractionSystem = true. Implémente ces fonctions pour utiliser ox_target ou équivalent :
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) endCustom.OpenStash(id, data) — ouvre un coffreAppelée quand Config.CustomInventory = true. Implémente ici la logique d’ouverture du coffre.
Custom.OpenStash = function(id, data)
-- data: { label, slots, weight }
endCustom.CanOpenStash(houseID, hasSecurity) → booleanContrô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.Wardrobe(id)Ouvre la garde-robe correspondant à l’ID donné. Appelée quand Config.CustomClothing = true.
Custom.Wardrobe = function(id)
-- exports['origen_clothing']:openOutfitMenu(true, true)
endCustom.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.
Custom.GiveVehicleKeys = function(vehicle, plate)
TriggerEvent("vehiclekeys:client:SetOwner", plate)
endCustom.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 entityTrouve 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.CanAccessHouse(houseID) → booleanContrô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() → booleanContrô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.Dispatch(coords)Envoie une alerte de cambriolage à la police. Par défaut, utilise origen_police. Remplace-la quand Config.Dispatch = 'custom'.
Custom.Dispatch = function(coords)
TriggerServerEvent("SendAlert:police", {
coords = coords,
type = 'GENERAL',
title = 'House robbery',
job = Config.PoliceJob,
})
endCustom.LockpickMinigame(advanced)Remplace le mini-jeu de crochetage quand Config.Lockpick.customLockpickMinigame = true. Appelle LockpickResult(true/false) avec le résultat.
Custom.LockpickMinigame = function(advanced)
local result = true -- your minigame result
LockpickResult(result)
endCustom.RaidSkillcheck() → booleanAppelée quand la police utilise stormram pour perquisitionner une maison. Par défaut, utilise lib.skillCheck. Renvoie true en cas de réussite.
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.
| 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.hasPermission(src, action) → boolean, stringVé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.RegisterStash(id, data)Enregistre un coffre dans le système d’inventaire actif. Appelée quand un joueur entre dans une maison.
Custom.RegisterStash = function(id, data)
-- data: { label, slots, weight }
-- exports.ox_inventory:RegisterStash(id, data.label, data.slots, data.weight)
endCes 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 |
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 |