Accueil › Documentation › Personnalisation · origen_doorlock
Le dossier custom/ te permet d’intégrer n’importe quel framework, système de notifications ou logique de logs sans toucher au noyau. Tous les fichiers sont escrow_ignore : ils sont conservés lors des mises à jour.
custom/
├── client/
│ ├── framework.lua — player identifier, job, gang
│ └── notify.lua — notifications, draw text, hide text
└── server/
├── framework.lua — player group, identifier
├── permissions.lua — admin/permission check
└── logs.lua — Discord webhook loggingFramework.GetPlayerIdentifier() → string | nilRenvoie l’identifiant unique du joueur local (citizenid / identifier).
Framework.GetPlayerIdentifier = function()
-- Config.Framework == 'custom': implement here
return nil
endFramework.GetPlayerJob() → stringRenvoie le nom du métier actuel du joueur local.
Framework.GetPlayerJob = function()
return 'unemployed'
endFramework.GetPlayerJobGroup() → numberRenvoie le niveau de grade du métier du joueur local.
Framework.GetPlayerJobGroup = function()
return 0
endFramework.GetPlayerGang() → stringRenvoie le nom du gang du joueur local. Renvoie 'none' par défaut.
Framework.GetPlayerGang = function()
return 'none'
endFramework.GetPlayerGangGrade() → numberRenvoie le grade de gang du joueur local. Renvoie 0 par défaut.
Framework.GetPlayerGangGrade = function()
return 0
endCustom.Notify(text, type, length)Affiche une notification au joueur local.
Custom.Notify = function(text, type, length)
-- Add your custom notification here
endPris en charge d’office : qb-core (Framework.Functions.Notify) et esx (Framework.ShowNotification).
Custom.DrawText(text, key)Affiche un texte d’indication d’interaction (p. ex. [E] - Open door).
Pris en charge via Config.Drawtext : qb-core, esx_textui, ox_lib.
Custom.DrawText = function(text, key)
-- Add your custom draw text here
endCustom.HideText()Masque le texte d’indication d’interaction.
Custom.HideText = function()
-- Add your custom hide text here
endFramework.GetGroup(source) → stringRenvoie le groupe de permissions du joueur (p. ex. 'admin', 'god').
Framework.GetGroup = function(source)
-- Config.Framework == 'custom': implement here
return 'user'
endFramework.GetIdentifier(source) → string | nilRenvoie l’identifiant unique du joueur côté serveur.
Framework.GetIdentifier = function(source)
return nil
endCustom.hasPermission(source) → booleanVérifie si un joueur a la permission d’utiliser les commandes de gestion des portes. Valide par rapport à Config.GroupPermissions en utilisant à la fois les groupes du framework et les permissions Ace de FiveM (IsPlayerAceAllowed).
Custom.hasPermission = function(src)
-- Default: checks Config.GroupPermissions via framework group + ace permissions
-- To override:
return false
endCustom.DiscordLog(title, message, webHook)Envoie un log sous forme d’embed Discord vers l’URL de webhook indiquée. Ignoré automatiquement si le webhook est vide ou s’il s’agit du marqueur par défaut 'YOUR_DISCORD_WEBHOOK'.
Custom.DiscordLog = function(title, message, webHook)
-- Default implementation sends a Discord embed via PerformHttpRequest
-- To use a different logging system, replace this function:
print('[DoorLock] ' .. title .. ': ' .. message)
endLes trois webhooks se configurent dans Config.Logs :
| Webhook | Déclenché quand |
|---|---|
Config.Logs.CreateDoor |
Une nouvelle porte est créée depuis le menu de gestion |
Config.Logs.DeleteDoor |
Une porte est supprimée depuis le menu de gestion |
Config.Logs.DoorsUsage |
Un joueur verrouille ou déverrouille une porte |