Inicio › Documentación › Personalización · origen_banking
custom/
├── client/
│ ├── framework.lua
│ └── notify.lua
├── server/
│ ├── framework.lua
│ └── inventory.lua
└── shared/
└── notify.luaTodos 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.
Envoltorios finos sobre el bridge del framework activo. Rara vez necesitan cambios.
Internal.GetPlayerData(source) -- Framework player object
Internal.GetPlayerIdentifier(source) -- citizenid / identifier
Internal.GetPlayername(source) -- character display nameInternal.GetMoney(source, account) → numberDevuelve 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.
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) → booleanDa 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) → booleanResta dinero al jugador. Devuelve false cuando el jugador no tiene suficiente.
Custom.IsJobBoss(source, jobName) → booleanDevuelve 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.
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
endPara restringir el acceso por nivel de rango en lugar de por la marca isboss:
Custom.IsJobBoss = function(source, jobName)
local job = Framework.GetPlayerJobData(tonumber(source))
return job ~= nil and job.jobName == jobName and job.gradeRank >= 3
endCustom.HasJobBankAccess(source, jobName) → booleanDevuelve 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:
Custom.HasJobBankAccess = function(source, jobName)
local job = Framework.GetPlayerJobData(tonumber(source))
return job ~= nil and job.jobName == jobName
endCustom.GetPlayerGangName(source) → string | nilDevuelve 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.
Custom.GetPlayerGangName = function(source)
return exports['my_gangs']:GetPlayerGang(source)
endCustom.IsGangBoss(source, gangName) → booleanDevuelve true cuando el jugador es el jefe de la banda indicada.
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
endCustom.HasGangBankAccess(source, gangName) → booleanDevuelve true cuando el jugador debe ver y operar la cuenta de la banda. Por defecto, solo el jefe.
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() → booleanDevuelve 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) → numberDevuelve 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) → booleanDa efectivo al jugador como objeto del inventario.
Custom.RemoveCashItem(source, amount) → booleanQuita efectivo al jugador. Devuelve false cuando el jugador no lleva suficiente.
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 |
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
endCustom.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.
Internal.isPlayerLoaded() → booleanDevuelve true cuando el personaje del jugador está completamente cargado. Comprueba citizenid en QB/QBX e identifier en ESX.
Internal.GetPlayerIdentifier() → string | nilDevuelve el identificador del jugador local.