Configuration
La configuracion principal esta en:
config/config.lua
Los textos estan en:
locales/es.lua
locales/en.lua
Idioma
Config.Locale = 'es'
Config.FallbackLocale = 'en'
Localeselecciona el idioma principal.FallbackLocalese usa cuando falta una traduccion en el idioma principal.
Identificador
Config.IdentifierType = 'license'
Este valor se utiliza en el adaptador standalone para buscar el identificador del jugador.
Con los frameworks integrados se usa el identificador nativo del personaje:
- QBX:
citizenid - QBCore:
citizenid - ESX: identificador proporcionado por
xPlayer
Framework
Config.Compatibility = {
framework = 'auto'
}
Valores soportados:
auto
qbx
qbcore
esx
standalone
En auto, el orden real de deteccion es qbx → qbcore → esx; si ninguno esta disponible se usa standalone.
Interaccion clasica
Config.UI = {
interactKey = 38,
interactDistance = 1.6,
drawDistance = 25.0
}
interactKey: control de FiveM para interactuar.38corresponde normalmente aE.interactDistance: distancia maxima para mostrar/usar la interaccion clasica.drawDistance: distancia desde la que se dibujan los markers de sucursales.
ox_target / qb-target
Config.Target = {
system = 'auto',
distance = 2.5
}
Valores de system:
auto
ox_target
qb-target
disabled
auto intenta primero ox_target, despues qb-target. Si no encuentra ninguno, usa la tecla de interaccion.
Con disabled puedes forzar siempre el modo clasico aunque tengas un target iniciado.
distance define la distancia de interaccion de las zonas/modelos creados mediante target.
Nombre del banco
Config.Bank.label = 'Cold Bank'
Se utiliza en la interfaz y como nombre de los blips de las sucursales.
Comision de cajero
Config.Bank.atmWithdrawFeePercent = 0
La comision solo se aplica al retirar dinero desde un ATM.
Ejemplo para cobrar un 2%:
Config.Bank.atmWithdrawFeePercent = 2
Las retiradas realizadas desde una sucursal bancaria no tienen esta comision.
Limites por operacion
Config.Bank.minAmount = 1
Config.Bank.maxDeposit = 500000
Config.Bank.maxWithdraw = 500000
Config.Bank.maxTransfer = 250000
minAmount: cantidad minima aceptada.maxDeposit: ingreso maximo por operacion.maxWithdraw: retirada maxima por operacion.maxTransfer: transferencia maxima por operacion.
El servidor vuelve a validar estos limites aunque la NUI sea manipulada.
Historial
Config.Bank.historyLimit = 30
Controla cuantos movimientos recientes carga la interfaz.
Los movimientos se guardan en:
cold_bank_transactions
Tipos registrados:
deposit
withdraw
transfer_out
transfer_in
Anti-spam
Config.Bank.actionCooldownMs = 1200
Es el tiempo minimo, en milisegundos, entre acciones del mismo tipo realizadas por un jugador.
El cooldown se valida en servidor.
Cajeros automaticos
Config.Bank.atmModels = {
`prop_atm_01`,
`prop_atm_02`,
`prop_atm_03`,
`prop_fleeca_atm`
}
Config.Bank.atmDetectRadius = 20.0
atmModels contiene los modelos de ATM que el recurso puede detectar en el mapa.
Puedes añadir otros props compatibles usando su hash/modelo.
atmDetectRadius controla el radio usado por el modo clasico para buscar un cajero cercano.
Sucursales bancarias
Config.Bank.branches = {
{
coords = vector3(149.4, -1040.4, 29.37),
heading = 20.0,
label = 'Banco Fleeca - Legion Square'
}
}
Cada sucursal necesita:
coords: posicion de interaccion.heading: orientacion usada por la zona de target.label: nombre descriptivo del punto.
Puedes añadir o eliminar sucursales de esta tabla.
Las sucursales permiten:
- Ingresar efectivo.
- Retirar sin comision de ATM.
- Realizar transferencias.
Transferencias
El destinatario se puede introducir como:
ID de servidor
O como numero de cuenta:
CB000123
Consideraciones importantes:
- Solo se pueden hacer transferencias desde una sucursal.
- El destinatario debe estar conectado.
- No puedes transferirte dinero a ti mismo.
- La transferencia se descuenta/abona usando la economia real del framework activo.
- Se registra un
transfer_outpara el emisor y untransfer_inpara el receptor.
Los numeros de cuenta se generan automaticamente cuando se crea la cuenta de cold_bank:
CB000001
CB000002
...
Blips de sucursales
Config.Bank.branchBlip = {
enabled = true,
sprite = 108,
color = 2,
scale = 0.85,
category = 10
}
enabled: muestra u oculta los blips.sprite: icono de FiveM/GTA.color: color del blip.scale: tamaño.category: categoria usada para agrupar las sucursales en la lista del mapa.
Todas las sucursales usan Config.Bank.label como nombre del blip.
Marker
Config.Bank.markerColor = {
r = 184,
g = 255,
b = 42,
a = 120
}
Controla el color del marker dibujado en las sucursales.
Seguridad de proximidad
cold_bank no confia solo en que el cliente diga que esta delante de un banco.
Al abrir una sesion:
- El servidor consulta la posicion real del ped.
- Las sucursales se validan contra
Config.Bank.branches. - La sesion expira si deja de utilizarse.
- La proximidad se vuelve a comprobar en cada ingreso, retirada o transferencia.
- Si el jugador se aleja mientras la UI esta abierta, el cliente la cierra y el servidor rechazaria igualmente la operacion.
La duracion interna de la sesion se renueva mientras el jugador sigue operando y permanece cerca del punto valido.
Base de datos
cold_bank_accounts
Guarda la identidad auxiliar de cold_bank:
identifiercharacter_nameaccount_numbercash_balancebank_balance
Los campos cash_balance y bank_balance se usan como economia principal solo en modo standalone. Con QBX/QBCore/ESX, el saldo real se obtiene del framework.
cold_bank_transactions
Guarda el historial:
- Tipo de movimiento.
- Cantidad.
- Saldo posterior.
- Identificador/nombre de contraparte cuando corresponde.
- Fecha de creacion.
Export para otros recursos
Export cliente:
exports['cold_bank']:OpenBank()
El export abre cold_bank en contexto ATM en la posicion actual del jugador. Es util para integrar una interaccion personalizada, pero las reglas de cajero siguen aplicandose: comision ATM y sin transferencias.