Inicio › Documentación › Personalización · origen_banking

Personalización · origen_banking

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

Todos los ficheros de custom/ figuran en escrow_ignore, así que son totalmente editables. No llames nunca directamente a exports del framework desde estos ficheros cuando ya existe un método en el bridge: amplía bridge/framework/<name>/server.lua en su lugar.


custom/server/framework.lua

Resolución de jugadores

Envoltorios finos sobre el bridge del framework activo. Rara vez necesitan cambios.

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

Internal.GetMoney(source, account) → number

Devuelve el saldo del jugador para el tipo de cuenta indicado. Cuando account es 'cash' y el efectivo es un objeto del inventario, lee la cantidad del objeto en lugar de la cuenta del 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 Descripción
source number ID de servidor del jugador
account string Tipo de cuenta. Aquí solo se personaliza 'cash'; cualquier otro pasa al framework

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

Da dinero al jugador. Devuelve false si el importe no es válido o no es positivo.

Parámetro Tipo Descripción
source number ID de servidor del jugador
account string Tipo de cuenta
amount number Importe positivo a añadir
reason string Etiqueta opcional para los registros y los frameworks extendidos

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

Resta dinero al jugador. Devuelve false cuando el jugador no tiene suficiente.


Custom.IsJobBoss(source, jobName) → boolean

Devuelve true cuando el jugador es el jefe del trabajo indicado. Se llama cada vez que se evalúa el acceso a la cuenta del trabajo.

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 el acceso por nivel de rango en lugar de por la 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

Devuelve true cuando el jugador debe ver y operar la cuenta del trabajo. Por defecto, solo el jefe. Los usuarios con acceso concedido manualmente se gestionan aparte mediante usersAccess.

Para ampliarlo a todos los empleados:

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

Devuelve la banda a la que pertenece el jugador, o nil. Lee PlayerData.gang en QB/QBX. ESX no tiene soporte nativo de bandas y devuelve nil.

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

Custom.IsGangBoss(source, gangName) → boolean

Devuelve true cuando el jugador es el jefe de la banda 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

Devuelve true cuando el jugador debe ver y operar la cuenta de la banda. Por defecto, solo el jefe.


custom/server/inventory.lua

Gestiona el efectivo como objeto del inventario. Custom.CashItem se resuelve como 'cash' en origen_inventory fuera de ESX, y como 'money' en todos los demás casos.

Custom.CashIsInventoryItem() → boolean

Devuelve true cuando el bridge de inventario activo gestiona el efectivo. Si es false, todas las operaciones de efectivo recurren a la cuenta del framework.

Custom.GetCashItem(source) → number

Devuelve la cantidad del objeto de efectivo que lleva el jugador. Recurre al saldo del framework cuando el bridge no tiene GetItemCount.

Custom.AddCashItem(source, amount) → boolean

Da efectivo al jugador como objeto del inventario.

Custom.RemoveCashItem(source, amount) → boolean

Quita efectivo al jugador. Devuelve false cuando el jugador no lleva suficiente.


custom/shared/notify.lua

Custom.Notify(data)

Punto de entrada único para todas las notificaciones. Se ejecuta en ambos lados: en el servidor la reenvía al cliente, y en el cliente delega en el bridge de notificaciones.

Campo Tipo Descripción
title string Título de la notificación
description string Texto del cuerpo
type string Tipo de notificación
duration number Duración en milisegundos
source number Jugador destinatario, solo en el servidor. Por defecto -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)

Muestra la ayuda de interacción cerca de bancos y cajeros, con el formato [key] - text.

Custom.HideText()

Oculta la ayuda que se esté mostrando.


custom/client/framework.lua

Internal.isPlayerLoaded() → boolean

Devuelve true cuando el personaje del jugador está completamente cargado. Comprueba citizenid en QB/QBX e identifier en ESX.

Internal.GetPlayerIdentifier() → string | nil

Devuelve el identificador del jugador local.