Início › Documentação › Personalização · origen_quests
Todos os ficheiros personalizáveis estão excluídos da cifragem CFX escrow e podem ser editados sem problema.
custom/
├── cl_drawtext.lua -- Client: interaction text UI (key prompt at locations)
├── cl_framework.lua -- Client: framework, notifications, player data
└── sv_framework.lua -- Server: framework, admin, inventory, integrationsControla o texto de aviso mostrado quando um jogador está perto de uma localização de missão.
DrawQuestText(key, text)Chamada quando o jogador entra no raio de interação de uma localização. A implementação por omissão usa o textUI do ox_lib.
function DrawQuestText(key, text)
lib.showTextUI("[" .. key .. "] - " .. text)
end| Parâmetro | Tipo | Descrição |
|---|---|---|
key |
string |
Etiqueta da tecla a mostrar (p. ex. E) |
text |
string |
Etiqueta de interação definida na configuração da localização |
HideQuestText()Chamada quando o jogador sai do raio de interação.
function HideQuestText()
lib.hideTextUI()
endSubstitui estas funções para usares qualquer sistema de drawtext ou textUI.
Framework.GetLocalIdentifier() → string | nilDevolve o identificador do jogador local (citizenid / license). Usado para sincronizar a XP.
function Framework.GetLocalIdentifier()
-- qbx / qb
local ok, p = pcall(function() return exports.qbx_core:GetPlayerData() end)
return (ok and p) and p.citizenid or nil
endFramework.GetPlayerData() → tableDevolve o objeto completo de dados do jogador do framework. Usado para os metadados da interface.
function Framework.GetPlayerData()
local ok, p = pcall(function() return exports.qbx_core:GetPlayerData() end)
return (ok and p) and p or {}
endFramework.NotifyClient(message, notifyType)Envia uma notificação ao cliente local.
function Framework.NotifyClient(message, notifyType)
-- notifyType: 'inform' | 'success' | 'error' | 'warning'
lib.notify({ description = message, type = notifyType })
endAdapta esta função quando usares Config.NotifySystem = 'custom' com um evento de cliente.
Framework.OnPlayerLoaded(callback)Regista um callback que é executado quando o jogador termina de carregar. Usado para inicializar os dados de missões.
function Framework.OnPlayerLoaded(callback)
AddEventHandler('QBCore:Client:OnPlayerLoaded', callback)
endFramework.TriggerCallback(name, cb, ...)Envolve lib.callback para os callbacks de servidor. Normalmente não precisas de a modificar.
Framework.GetPlayerGang() → stringDevolve o nome da gangue atual do jogador ou "none".
Framework.GetPlayerBusinesses() → tableDevolve os negócios ativos do jogador a partir do statebag.
Framework.GetPlayer(source) → table | nilDevolve o objeto de jogador do framework para o source indicado.
function Framework.GetPlayer(source)
local ok, p = pcall(function() return exports.qbx_core:GetPlayer(src) end)
return (ok and p) and p or nil
endFramework.GetIdentifier(source) → string | nilDevolve o identificador único do jogador (citizenid no QB, license no ESX/standalone).
Framework.HasAdminPermission(source) → booleanVerifica se um jogador tem acesso de administrador. Ordem de resolução segundo Config.AdminSystem:
origen_admin: verifica a permissão "origen_quests" do origen_adminace: verifica IsPlayerAceAllowed(source, Config.AdminAceNode)license: verifica a lista Config.AdminLicensescustom: chama Config.AdminCustom.resource:Config.AdminCustom.hasPermission(source, permission)qb: verifica o grupo do jogador (god, superadmin, admin)esx: verifica o grupo do jogador (superadmin, admin)Framework.Notify(source, message, ntype)Envia uma notificação a um jogador a partir do servidor.
Framework.HasItem(source, item, amount) → booleanVerifica se o jogador tem pelo menos amount unidades de item. Deteta automaticamente o sistema de inventário.
Framework.AddItem(source, item, amount) → booleanAdiciona itens ao inventário do jogador. Devolve true em caso de sucesso.
Framework.RemoveItem(source, item, amount) → booleanRemove itens do inventário do jogador. Devolve true em caso de sucesso.
Framework.GetItems() → tableDevolve todos os itens registados no sistema de inventário ativo. Usado para preencher o seletor de itens do painel de administração.
Framework.GetItemByName(source, itemName) → tableDevolve os dados de um item (com count/amount) para um jogador específico.
Framework.GetItemMetadata(itemName) → tableDevolve os metadados de um item (name, label, image, description) a partir do seu nome.
O script principal chama estas funções para resolver as integrações. Substitui-as em sv_framework.lua para teres controlo total.
Framework.GetPlayerAffiliationsCustom(source) → table | nilChamada quando Config.Integrations.affiliations.mode = 'custom'. Tem de devolver:
return {
gang = "mafia", -- string, gang name or "none"
businesses = { "auto_shop" } -- table of business IDs
}Framework.GetGangsCustom() → tableChamada quando Config.Integrations.gangs.mode = 'custom'. Tem de devolver um array:
return {
{ id = "mafia", label = "Mafia" },
{ id = "ballas", label = "Ballas" },
}Framework.GetBusinessesCustom() → tableChamada quando Config.Integrations.businesses.mode = 'custom'. Tem de devolver um array:
return {
{ id = "auto_shop", label = "Auto Shop", grades = { "owner", "manager" } },
}Framework.SendPoliceDispatchCustom(source, data) → booleanChamada quando Config.Integrations.dispatch.mode = 'custom'. Recebe:
-- data = { message = "...", title = "..." }
-- Return true if the alert was sent successfully.
function Framework.SendPoliceDispatchCustom(_source, _data)
exports['my_dispatch']:SendAlert(_source, _data)
return true
endFramework.CreateLog(data)Chamada internamente quando se realizam ações de administração. Reencaminha para o origen_admin se estiver em execução; caso contrário, recorre ao evento SendDiscordLog.