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

Personalização · origen_banking

text
custom/
├── client/
│   ├── framework.lua
│   └── notify.lua
├── server/
│   ├── framework.lua
│   └── inventory.lua
└── shared/
    └── notify.lua

Todos os ficheiros de custom/ constam do escrow_ignore, pelo que são totalmente editáveis. Nunca chames diretamente exports da framework a partir destes ficheiros quando já existir um método no bridge: em vez disso, alarga bridge/framework/<name>/server.lua.


custom/server/framework.lua

Resolução de jogadores

Invólucros finos sobre o bridge da framework ativa. Raramente precisam de alterações.

lua
Internal.GetPlayerData(source)        -- Framework player object
Internal.GetPlayerIdentifier(source)  -- citizenid / identifier
Internal.GetPlayername(source)        -- character display name

Internal.GetMoney(source, account) → number

Devolve o saldo do jogador para o tipo de conta indicado. Quando account é 'cash' e o dinheiro vivo é um item do inventário, lê a quantidade do item em vez da conta da framework.

lua
Internal.GetMoney = function(source, account)
    if account == 'cash' and Custom.CashIsInventoryItem() then
        return Custom.GetCashItem(source)
    end
    return Framework.GetAccountBalance(tonumber(source), account)
end
Parâmetro Tipo Descrição
source number ID de servidor do jogador
account string Tipo de conta. Aqui só se personaliza 'cash'; qualquer outro passa para a framework

Internal.AddMoney(source, account, amount, reason) → boolean

Dá dinheiro ao jogador. Devolve false se o montante for inválido ou não positivo.

Parâmetro Tipo Descrição
source number ID de servidor do jogador
account string Tipo de conta
amount number Montante positivo a adicionar
reason string Etiqueta opcional para os registos e as frameworks estendidas

Internal.RemoveMoney(source, account, amount, reason) → boolean

Retira dinheiro ao jogador. Devolve false quando o jogador não tem o suficiente.


Custom.IsJobBoss(source, jobName) → boolean

Devolve true quando o jogador é o chefe do trabalho indicado. É chamada sempre que se avalia o acesso à conta do trabalho.

lua
Custom.IsJobBoss = function(source, jobName)
    local src = tonumber(source)
    if not src or src <= 0 then return false end
    local jobData = Framework.GetPlayerJobData(src)
    if not jobData then return false end
    return jobData.jobName == jobName and jobData.boss == true
end

Para restringir o acesso por nível de grau em vez de pela marca isboss:

lua
Custom.IsJobBoss = function(source, jobName)
    local job = Framework.GetPlayerJobData(tonumber(source))
    return job ~= nil and job.jobName == jobName and job.gradeRank >= 3
end

Custom.HasJobBankAccess(source, jobName) → boolean

Devolve true quando o jogador deve ver e operar a conta do trabalho. Por omissão, apenas o chefe. Os utilizadores com acesso concedido manualmente são geridos à parte através de usersAccess.

Para o alargar a todos os empregados:

lua
Custom.HasJobBankAccess = function(source, jobName)
    local job = Framework.GetPlayerJobData(tonumber(source))
    return job ~= nil and job.jobName == jobName
end

Custom.GetPlayerGangName(source) → string | nil

Devolve a gangue a que o jogador pertence, ou nil. Lê PlayerData.gang em QB/QBX. O ESX não tem suporte nativo de gangues e devolve nil.

lua
Custom.GetPlayerGangName = function(source)
    return exports['my_gangs']:GetPlayerGang(source)
end

Custom.IsGangBoss(source, gangName) → boolean

Devolve true quando o jogador é o chefe da gangue indicada.

lua
Custom.IsGangBoss = function(source, gangName)
    local Player = Framework.GetPlayer(source)
    local gang = Player and Player.PlayerData.gang
    return gang and gang.name == gangName and gang.grade.level >= 2
end

Custom.HasGangBankAccess(source, gangName) → boolean

Devolve true quando o jogador deve ver e operar a conta da gangue. Por omissão, apenas o chefe.


custom/server/inventory.lua

Gere o dinheiro vivo como item do inventário. Custom.CashItem resolve-se como 'cash' no origen_inventory fora do ESX, e como 'money' em todos os outros casos.

Custom.CashIsInventoryItem() → boolean

Devolve true quando o bridge de inventário ativo gere o dinheiro vivo. Se for false, todas as operações de dinheiro vivo recorrem à conta da framework.

Custom.GetCashItem(source) → number

Devolve a quantidade do item de dinheiro que o jogador transporta. Recorre ao saldo da framework quando o bridge não tem GetItemCount.

Custom.AddCashItem(source, amount) → boolean

Dá dinheiro vivo ao jogador como item do inventário.

Custom.RemoveCashItem(source, amount) → boolean

Retira dinheiro vivo ao jogador. Devolve false quando o jogador não transporta o suficiente.


custom/shared/notify.lua

Custom.Notify(data)

Ponto de entrada único para todas as notificações. Corre em ambos os lados: no servidor reencaminha-a para o cliente, e no cliente delega no bridge de notificações.

Campo Tipo Descrição
title string Título da notificação
description string Texto do corpo
type string Tipo de notificação
duration number Duração em milissegundos
source number Jogador destinatário, apenas no servidor. Por omissão -1
lua
Custom.Notify = function(data)
    if isServer then
        TriggerClientEvent('ox_lib:notify', data.source or -1, data)
    else
        Notify.SendNotification(data.title, data.description, data.type, data.duration)
    end
end

custom/client/notify.lua

Custom.DrawText(text, key)

Mostra a dica de interação junto de bancos e multibancos, no formato [key] - text.

Custom.HideText()

Oculta a dica que estiver a ser mostrada.


custom/client/framework.lua

Internal.isPlayerLoaded() → boolean

Devolve true quando a personagem do jogador está totalmente carregada. Verifica citizenid em QB/QBX e identifier em ESX.

Internal.GetPlayerIdentifier() → string | nil

Devolve o identificador do jogador local.