Início › Documentação › Personalização · origen_doorlock
A pasta custom/ permite-te integrar qualquer framework, sistema de notificações ou lógica de logs sem mexer no núcleo. Todos os ficheiros são escrow_ignore, por isso mantêm-se após as atualizações.
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 | nilDevolve o identificador único do jogador local (citizenid / identifier).
Framework.GetPlayerIdentifier = function()
-- Config.Framework == 'custom': implement here
return nil
endFramework.GetPlayerJob() → stringDevolve o nome do trabalho atual do jogador local.
Framework.GetPlayerJob = function()
return 'unemployed'
endFramework.GetPlayerJobGroup() → numberDevolve o nível de grau do trabalho do jogador local.
Framework.GetPlayerJobGroup = function()
return 0
endFramework.GetPlayerGang() → stringDevolve o nome da gangue do jogador local. Por omissão devolve 'none'.
Framework.GetPlayerGang = function()
return 'none'
endFramework.GetPlayerGangGrade() → numberDevolve o grau de gangue do jogador local. Por omissão devolve 0.
Framework.GetPlayerGangGrade = function()
return 0
endCustom.Notify(text, type, length)Mostra uma notificação ao jogador local.
Custom.Notify = function(text, type, length)
-- Add your custom notification here
endSuportados de origem: qb-core (Framework.Functions.Notify) e esx (Framework.ShowNotification).
Custom.DrawText(text, key)Mostra um texto de indicação de interação (p. ex. [E] - Open door).
Suportados através de Config.Drawtext: qb-core, esx_textui, ox_lib.
Custom.DrawText = function(text, key)
-- Add your custom draw text here
endCustom.HideText()Oculta o texto de indicação de interação.
Custom.HideText = function()
-- Add your custom hide text here
endFramework.GetGroup(source) → stringDevolve o grupo de permissões do jogador (p. ex. 'admin', 'god').
Framework.GetGroup = function(source)
-- Config.Framework == 'custom': implement here
return 'user'
endFramework.GetIdentifier(source) → string | nilDevolve o identificador único do jogador no servidor.
Framework.GetIdentifier = function(source)
return nil
endCustom.hasPermission(source) → booleanVerifica se um jogador tem permissão para usar os comandos de gestão de portas. Valida em relação a Config.GroupPermissions, usando tanto os grupos do framework como as permissões Ace do FiveM (IsPlayerAceAllowed).
Custom.hasPermission = function(src)
-- Default: checks Config.GroupPermissions via framework group + ace permissions
-- To override:
return false
endCustom.DiscordLog(title, message, webHook)Envia um log com um embed do Discord para o URL de webhook indicado. É ignorado automaticamente se o webhook estiver vazio ou for o marcador por omissão '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)
endOs três webhooks configuram-se em Config.Logs:
| Webhook | Disparado quando |
|---|---|
Config.Logs.CreateDoor |
É criada uma porta nova a partir do menu de gestão |
Config.Logs.DeleteDoor |
É eliminada uma porta a partir do menu de gestão |
Config.Logs.DoorsUsage |
Um jogador bloqueia ou desbloqueia uma porta |