SCRIPT

Documentación de Banco, cajeros y tarjeta

Otra Vida Banco (ov_banco)

Que hace

ov_banco es un sistema bancario completo para servidores FiveM con qb-core. Cada jugador tiene una cuenta con numero propio (por ejemplo OV12345678), una tarjeta bancaria con PIN, y puede operar en sucursales y en cajeros automaticos. Ademas maneja las cuentas comunes ("sociedades") de trabajos y bandas, y trae un panel de administracion para el staff.

Lo mas importante:

Requisitos

RequisitoDetalle
Frameworkqb-core
Dependencias declaradas en el fxmanifestox_lib, oxmysql, ox_inventory, qb-core
Lua5.4 (lua54 'yes')
Base de datosMySQL o MariaDB, mediante oxmysql
Inventarioox_inventory (la tarjeta es un item)

El recurso declara provide 'Renewed-Banking' y provide 'okokBanking'. Por eso no debe estar activo a la vez otro recurso que ocupe esos nombres.

Instalacion

  1. Descarga el recurso desde el Portal de Cfx.re (seccion de assets comprados) con la cuenta Cfx.re con la que hiciste la compra. El recurso viene protegido con Asset Escrow de Cfx.re: solo funciona en servidores cuya clave de licencia pertenece a tu cuenta.
  2. Copia la carpeta ov_banco dentro de resources de tu servidor.
  3. Declara el item de la tarjeta en ox_inventory (archivo de items). El nombre debe coincidir con Config.ItemTarjeta (por defecto bank_card) y debe usar el export del recurso al usarse:
   ['bank_card'] = {
       label = 'Tarjeta bancaria',
       weight = 10,
       stack = false,
       client = { export = 'ov_banco.UsarTarjeta' },
   },

Ajusta peso, etiqueta e imagen a tu inventario.

  1. Agrega en server.cfg, despues de ox_lib, oxmysql, qb-core y ox_inventory:
   ensure ov_banco
  1. Da el permiso de administracion al grupo que corresponda:
   add_ace group.admin command.bancoadmin allow
  1. Inicia el servidor. No hay archivo .sql: al arrancar, el recurso crea solo las tablas ov_banco_perfiles, ov_banco_cuentas, ov_banco_movimientos y ov_banco_log (CREATE TABLE IF NOT EXISTS). En consola veras [ov_banco] listo: ....

El codigo no lee convars de server.cfg (no usa GetConvar).

Archivos editables: en el fxmanifest.lua el bloque escrow_ignore deja sin cifrar shared/config.lua y toda la carpeta html/ (interfaz web). Puedes editar la configuracion y personalizar la interfaz. El resto del codigo (client/ y server/) va cifrado por Asset Escrow.

Configuracion

Todo esta en shared/config.lua. Opciones principales:

ClaveValor por defectoPara que sirve
Config.AdminAce'command.bancoadmin'Permiso ACE que abre el panel de administracion
Config.AdminComando'bancoadmin'Nombre del comando del panel
Config.NombreBanco'Otra Vida Banco'Nombre que se muestra en la interfaz y avisos
Config.MaxDeposito5000000Maximo por deposito
Config.MaxRetiro5000000Maximo por retiro en sucursal
Config.MaxTransferencia2000000Maximo por transferencia
Config.LimiteDiarioTransferencias5000000Suma maxima enviada por transferencia en 24 h (0 = sin limite)
Config.MaxRetiroATM50000Maximo por retiro en cajero
Config.LimiteDiarioATM250000Retiros en cajero en 24 h (0 = sin limite)
Config.ComisionTransferencia0Porcentaje que se cobra a quien envia (0 = gratis)
Config.AlertaMonto1000000Movimientos de este valor o mas se avisan al webhook
Config.Webhook''URL de Discord para alertas y ajustes del admin (opcional)
Config.PinDigitos4Digitos del PIN
Config.PinIntentos3Fallos permitidos antes del bloqueo
Config.PinBloqueoSegundos300Duracion del bloqueo
Config.SesionSegundos300Una sesion de cajero o sucursal caduca a los 5 minutos
Config.DistanciaSucursal6.0Metros maximos al mostrador mientras se opera
Config.DistanciaCajero4.0Metros maximos al cajero mientras se opera
Config.ExigirTarjetatrueEl cajero pide tarjeta y PIN
Config.ItemTarjeta'bank_card'Nombre del item de la tarjeta
Config.CostoTarjetaNueva500Costo de reponer la tarjeta (la primera es gratis)
Config.CostoCambioPin0Costo de cambiar el PIN
Config.RangoSociedadPorDefecto4Grado minimo para operar la cuenta de un trabajo si el grado no es "jefe"
Config.RangoSociedad{}Grado minimo por trabajo, por ejemplo police = 4
Config.SociedadesInicial{}Cuentas de sociedad que se crean al arrancar, con su saldo inicial
Config.Distancia2.0Metros para ver el aviso [E]
Config.TeclaInteractuar38Tecla de interaccion (E)
Config.Blipsactivo = true, sprite = 108, color = 69, escala = 0.7Marcas de sucursales en el mapa
Config.PedModelo'U_M_M_BankMan'Modelo del empleado de sucursal
Config.ModelosCajero4 modelos de ATMProps que se tratan como cajero
Config.Bancos8 sucursalesLista de sucursales: nombre, ped (vec4) y punto (vec3)

Para agregar una sucursal, anade una linea a Config.Bancos con el nombre, la posicion del empleado y el punto de interaccion.

Comandos y permisos

ElementoDetalle
/bancoadminAbre el panel de administracion (el nombre sale de Config.AdminComando). Solo en juego; exige el permiso ACE
Permiso ACEcommand.bancoadmin (clave Config.AdminAce)
Tecla E (control 38)Abre el banco en sucursal o cajero cuando aparece el aviso
Item bank_cardAl usarlo desde el inventario abre el cajero cercano; si no hay uno cerca, avisa que te acerques a un cajero

Exports del servidor (para otros scripts, cuentas de sociedad identificadas por su clave, por ejemplo el nombre del trabajo):

ExportUso
GetAccountBalance(clave), GetAccount(clave), GetSocietyBalance(clave), getAccountMoney(clave)Devuelven el saldo de la sociedad
AddMoney(clave, cantidad, motivo), AddSocietyMoney, addAccountMoneySuman dinero a la sociedad
RemoveMoney(clave, cantidad, motivo), RemoveSocietyMoney, removeAccountMoneyRestan dinero de la sociedad
CreateJobAccount(clave, saldo), CreateGangAccount(clave, saldo), createAccount(clave)Crean la cuenta si no existe
handleTransaction(cuenta, titulo, cantidad, mensaje, emisor, receptor, tipo)Compatible con Renewed-Banking; con tipo = 'withdraw' resta, en otro caso suma

Ejemplo:

local saldo = exports.ov_banco:GetAccountBalance('police')
exports.ov_banco:AddMoney('police', 5000, 'multa')

Export del cliente: UsarTarjeta (lo usa el item de la tarjeta).

Como se usa

Primera vez

  1. Ve a una sucursal y acercate al empleado. Aparece el aviso [E].
  2. Pulsa E. La cuenta se abre sola.
  3. En la pestana Seguridad, crea tu PIN (4 digitos por defecto). Recibes la tarjeta en el inventario; la primera es gratis.

En la sucursal puedes depositar, retirar, transferir, ver el historial y manejar la cuenta de tu trabajo o banda si tu grado lo permite. Si te alejas del mostrador o pasa el tiempo de sesion, la ventana se cierra.

En un cajero

  1. Colocate frente al cajero y pulsa E (o usa la tarjeta desde el inventario). Hace falta tener la tarjeta.
  2. Escribe el PIN. Tras los fallos permitidos, la tarjeta queda bloqueada temporalmente.
  3. Opera dentro de los limites del cajero.

Transferencias: escribe el numero de cuenta destino, la cantidad y una nota opcional. No se puede enviar a una cuenta propia, inexistente o congelada.

Sociedades: quien tenga el grado necesario (o sea jefe) puede depositar, retirar y enviar desde la cuenta del trabajo o la banda.

Para administradores

  1. Escribe /bancoadmin en el juego (con el permiso ACE asignado).
  2. Busca a un jugador por texto y abre su cuenta.
  3. Acciones disponibles, todas con registro en ov_banco_log (y en el webhook si lo configuraste):
  4. Ajustar saldo (sumar o restar). El motivo es obligatorio, minimo 3 caracteres.
  5. Congelar o descongelar la cuenta.
  6. Reiniciar PIN: anula PIN y tarjeta; la persona debe crear un PIN nuevo en una sucursal.
  7. Ajustar una cuenta de sociedad, tambien con motivo.
  8. Para alertas en Discord, pon la URL en Config.Webhook y ajusta Config.AlertaMonto.
  9. Para que un trabajo o banda tenga cuenta desde el inicio, usa Config.SociedadesInicial. Tambien se crean cuando otro script las pide con los exports.

Preguntas frecuentes

Puedo cambiar los limites de retiro o transferencia? Si. Edita los valores Config.Max... y Config.Limite... en shared/config.lua y reinicia el recurso.

Hay que importar un archivo SQL? No. Las tablas se crean solas al iniciar, siempre que oxmysql este conectado.

Un script de trabajos usa qb-banking, Renewed-Banking u okokBanking. Funciona? El recurso responde a los exports de sociedad listados arriba y declara provide para Renewed-Banking y okokBanking. Los scripts que llamen a esos nombres de export quedan atendidos por ov_banco. Consulta la documentacion del script concreto para confirmar que export usa.

El jugador perdio la tarjeta, que hago? Puede pedir una nueva en la sucursal con su PIN (costo Config.CostoTarjetaNueva). Si olvido el PIN, un admin lo reinicia desde /bancoadmin.

El cajero no se abre. Verifica que el prop sea uno de Config.ModelosCajero, que el jugador tenga el item de la tarjeta en el inventario, que ox_inventory este iniciado antes y que el item este declarado con el mismo nombre que Config.ItemTarjeta.

Donde veo los errores? En la consola del servidor (mensajes [ov_banco]) y en la consola F8 del cliente. Puedes activar Config.Debug = true para mas informacion.

Actualizaciones y soporte

Las versiones nuevas aparecen en el Portal de Cfx.re (en tus recursos comprados) y en la tienda. Descargalas con la misma cuenta Cfx.re de la compra y reemplaza la carpeta, conservando tus cambios en shared/config.lua. Para soporte, abre un ticket en el Discord de la tienda: [enlace de soporte]. Indica la version del recurso, el error de consola y los pasos para reproducirlo.