Início › Documentação › Personalização · origen_quests

Personalização · origen_quests

Todos os ficheiros personalizáveis estão excluídos da cifragem CFX escrow e podem ser editados sem problema.

text
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, integrations

custom/cl_drawtext.lua

Controla 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.

lua
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.

lua
function HideQuestText()
    lib.hideTextUI()
end

Substitui estas funções para usares qualquer sistema de drawtext ou textUI.


custom/cl_framework.lua

Framework.GetLocalIdentifier() → string | nil

Devolve o identificador do jogador local (citizenid / license). Usado para sincronizar a XP.

lua
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
end

Framework.GetPlayerData() → table

Devolve o objeto completo de dados do jogador do framework. Usado para os metadados da interface.

lua
function Framework.GetPlayerData()
    local ok, p = pcall(function() return exports.qbx_core:GetPlayerData() end)
    return (ok and p) and p or {}
end

Framework.NotifyClient(message, notifyType)

Envia uma notificação ao cliente local.

lua
function Framework.NotifyClient(message, notifyType)
    -- notifyType: 'inform' | 'success' | 'error' | 'warning'
    lib.notify({ description = message, type = notifyType })
end

Adapta 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.

lua
function Framework.OnPlayerLoaded(callback)
    AddEventHandler('QBCore:Client:OnPlayerLoaded', callback)
end

Framework.TriggerCallback(name, cb, ...)

Envolve lib.callback para os callbacks de servidor. Normalmente não precisas de a modificar.

Framework.GetPlayerGang() → string

Devolve o nome da gangue atual do jogador ou "none".

Framework.GetPlayerBusinesses() → table

Devolve os negócios ativos do jogador a partir do statebag.


custom/sv_framework.lua

Framework.GetPlayer(source) → table | nil

Devolve o objeto de jogador do framework para o source indicado.

lua
function Framework.GetPlayer(source)
    local ok, p = pcall(function() return exports.qbx_core:GetPlayer(src) end)
    return (ok and p) and p or nil
end

Framework.GetIdentifier(source) → string | nil

Devolve o identificador único do jogador (citizenid no QB, license no ESX/standalone).

Framework.HasAdminPermission(source) → boolean

Verifica se um jogador tem acesso de administrador. Ordem de resolução segundo Config.AdminSystem:

  1. origen_admin: verifica a permissão "origen_quests" do origen_admin
  2. ace: verifica IsPlayerAceAllowed(source, Config.AdminAceNode)
  3. license: verifica a lista Config.AdminLicenses
  4. custom: chama Config.AdminCustom.resource:Config.AdminCustom.hasPermission(source, permission)
  5. qb: verifica o grupo do jogador (god, superadmin, admin)
  6. 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) → boolean

Verifica se o jogador tem pelo menos amount unidades de item. Deteta automaticamente o sistema de inventário.

Framework.AddItem(source, item, amount) → boolean

Adiciona itens ao inventário do jogador. Devolve true em caso de sucesso.

Framework.RemoveItem(source, item, amount) → boolean

Remove itens do inventário do jogador. Devolve true em caso de sucesso.

Framework.GetItems() → table

Devolve 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) → table

Devolve os dados de um item (com count/amount) para um jogador específico.

Framework.GetItemMetadata(itemName) → table

Devolve os metadados de um item (name, label, image, description) a partir do seu nome.


Hooks de integração

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 | nil

Chamada quando Config.Integrations.affiliations.mode = 'custom'. Tem de devolver:

lua
return {
    gang      = "mafia",       -- string, gang name or "none"
    businesses = { "auto_shop" }  -- table of business IDs
}

Framework.GetGangsCustom() → table

Chamada quando Config.Integrations.gangs.mode = 'custom'. Tem de devolver um array:

lua
return {
    { id = "mafia",  label = "Mafia" },
    { id = "ballas", label = "Ballas" },
}

Framework.GetBusinessesCustom() → table

Chamada quando Config.Integrations.businesses.mode = 'custom'. Tem de devolver um array:

lua
return {
    { id = "auto_shop", label = "Auto Shop", grades = { "owner", "manager" } },
}

Framework.SendPoliceDispatchCustom(source, data) → boolean

Chamada quando Config.Integrations.dispatch.mode = 'custom'. Recebe:

lua
-- data = { message = "...", title = "..." }
-- Return true if the alert was sent successfully.
function Framework.SendPoliceDispatchCustom(_source, _data)
    exports['my_dispatch']:SendAlert(_source, _data)
    return true
end

Framework.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.