Cómo funcionan las integraciones#
Nada dentro de Banking Creator sabe qué framework o inventario usas. Cada movimiento de dinero pasa por unas pocas funciones — GetMoney, AddMoney, RemoveMoney, AddItem y similares — definidas por un pequeño adaptador para lo que tengas instalado. Solo se carga el adaptador correspondiente.
Capa | Compatibles | Sin ello |
|---|---|---|
Framework |
| Obligatorio. |
Inventario |
| Sin tarjetas físicas; establece |
Target |
|
|
Viviendas |
| Sin pestaña Mortgage, mostrador de propiedades ni casas como garantía. |
Teléfono |
| Solo notificaciones en pantalla. |
Notificaciones / texto de ayuda |
| Notificaciones de ox_lib y una etiqueta 3D dibujada. |
Misiones |
| Sin misiones bancarias. |
Cada integración opcional se desactiva en silencio. Si falta un recurso, su función desaparece de la interfaz en lugar de producir errores.
Frameworks#
Config.Framework se rellena buscando es_extended, luego qb-core, luego qbx_core. Se incluyen dos adaptadores, en server/custom/framework/ y client/custom/framework/: esx.lua y qb.lua.
Framework | Tabla de jugadores | Identificador | Jefe |
|---|---|---|---|
ESX |
|
| Nombre de grado |
QBCore / Qbox |
|
|
|
Inventarios y el ítem de tarjeta#
Config.Inventory es el primero de estos que esté en ejecución: origen_inventory, qs-inventory, ox_inventory, qb-inventory, core_inventory, ps-inventory, codem-inventory, tgiann-inventory — si no, standalone. Las tarjetas se entregan mediante las funciones de ítems del propio framework, así que funciona cualquier inventario que se integre con ESX o QBCore; origen_inventory tiene su propio adaptador en server/custom/inventory/origen.lua.
El ítem de tarjeta es creditcard y está registrado como usable: usarlo cerca de un cajero abre el teclado de PIN. Sus metadatos guardan id, owner, cardNumber, ownerName, valid y cardType; el PIN y el estado de congelación siempre se vuelven a leer de la base de datos, así que editar los metadatos de un ítem no le da acceso a nadie.
Con ox_inventory también puedes usar la tarjeta desde el lado del cliente, que comprueba si hay un cajero cerca antes de consultar al servidor:
['creditcard'] = {
label = 'Credit Card',
weight = 10,
stack = false,
close = true,
client = { export = 'qs-banking.CreateCard' },
},Targeting#
El targeting no se detecta — configúralo en config.lua:
Config.UseTarget = 'ox_target' -- 'ox_target', 'qb-target' or 'none'Con un target, cada punto de sucursal y cada cajero adicional se convierte en una zona de caja que abre el banco, el portátil del jefe recibe una opción Boss Menu, cada cajero colocado recibe una zona y los modelos de Config.ATMModels reciben una opción ATM en todas partes. Las zonas se reconstruyen cada vez que cambia una sucursal. Config.Debug = true las dibuja para que puedas comprobar su tamaño. Los cierres de puertas siempre usan E, haya target o no.
Notificaciones y texto de ayuda#
Los mensajes en pantalla usan qs-interface cuando está iniciado y, si no, lib.notify de ox_lib. Los avisos [E] usan qs-textui cuando está iniciado y, si no, una etiqueta 3D nativa.
Para usar otro sistema, edita SendTextMessage(msg, type) y DrawText3D(x, y, z, text, id, key) en client/custom/framework/esx.lua o qb.lua. type es 'inform', 'error' o 'success'.
qs-housing#
La integración opcional más grande. Todo lo siguiente está desactivado salvo que Config.RealEstate.enable esté activado y el recurso de Config.RealEstate.resource (por defecto qs-housing) esté en ejecución. Se comprueba en vivo, así que detener qs-housing simplemente oculta la pestaña Mortgage y el mostrador de propiedades.
Objeto de qs-housing | Se usa para |
|---|---|
| Nombres de casas, precios, entrada (para puntos de ruta), y fotos y descripciones cuando existen esas columnas. |
| Quién posee qué, casas alquiladas y el crédito de vivienda que se paga en la pestaña Loans. |
| Rechaza una venta a un jugador que ya está en su límite de casas. |
| Traspasa la escritura y las llaves cuando una sucursal compra, vende, embarga o libera una casa. |
Los residentes ofrecen una casa a una sucursal desde tu script de viviendas con un solo evento de servidor — el banco comprueba que es suya, que no está alquilada y que no está a crédito:
-- client side, from the house menu
local buyers = lib.callback.await('qs-banking:getHouseBuyers', false)
-- { { id, label, ownerName, treasury }, ... } branches with the Real Estate licence
TriggerServerEvent('qs-banking:server:offerHouseToBank', houseName, buyers[1].id, askingPrice)qs-smartphone#
Las notificaciones pasan por exports['qs-smartphone']:sendPhoneNotification, agrupadas en appId y appName. Apunta Config.PhoneNotifications.resource a una copia renombrada del teléfono si es necesario. Qué eventos se envían se explica en Uso.
Config.PhoneNotifications = {
enable = true,
resource = 'qs-smartphone',
appId = 'bank',
appName = 'Bank',
-- onDeposit, onWithdraw, onTransferIn, onTransferOut,
-- onCredit, onInstalment, onStandingOrder, lowBalance
}Registros de Discord#
Pega una URL de webhook por canal en server/custom/misc/webhooks.lua. Cada publicación es un embed con el jugador, su id de servidor, la cuenta, el importe y si ocurrió en un mostrador o en un cajero.
Webhooks = {
['deposit'] = 'https://discord.com/api/webhooks/...',
['withdraw'] = 'https://discord.com/api/webhooks/...',
['transfer'] = 'https://discord.com/api/webhooks/...',
['create_card'] = 'https://discord.com/api/webhooks/...', -- new cards and branch purchases
}Una URL vacía desactiva ese canal, y el aviso de inicio indica cuáles están vacías.
Hooks para tu propia lógica#
Archivo | Para qué sirve |
|---|---|
|
|
| Con qs-inventory en ejecución, da a cada jugador tres misiones bancarias — |
| Las zonas creadas para cada recurso de targeting: tamaños, iconos, etiquetas y distancias. |
Sustituir la detección#
Cada capa se elige al iniciarse el recurso. Fija una reemplazando la línea de detección en config.lua:
-- Auto, the default
Config.Framework = esxHas and 'esx' or qbHas and 'qb' or qbxHas and 'qbx' or 'esx'
Config.Inventory = detectInventory()
-- Pinned
Config.Framework = 'qb'
Config.Inventory = 'ox_inventory'Conviene hacerlo cuando hay dos candidatos en ejecución a la vez, cuando se ha renombrado un recurso o en Qbox.
Añadir un framework#
Copia el adaptador más parecido en server/custom/framework/ y client/custom/framework/, cambia su primera línea a tu valor de Config.Framework e implementa las mismas globales:
Lado | Debe definir |
|---|---|
Servidor |
|
Cliente |
|
Los nombres de las cuentas de dinero son 'money' (efectivo) y 'bank'; asígnalos a los nombres de tu framework dentro del adaptador, como hace el de QBCore con cash.
Idiomas#
Se incluyen 41 traducciones completas en locales/: ar, bg, bn, ca, cs, da, de, el, en, es, et, fa, fi, fr, he, hi, hr, hu, id, it, ja, ko, lt, lv, ms, nl, no, pl, pt, ro, ru, sk, sl, sv, sw, th, tr, uk, ur, vi, zh. Un solo idioma sirve para todo el servidor, interfaz incluida:
# server.cfg — applies to every Quasar resource that reads it
setr qs:locale "es"o establece Config.Language directamente. Cada archivo se agrupa según dónde aparece el texto:
Grupo | Abarca |
|---|---|
| Toda la interfaz — pestañas, botones, paneles, el creador, nombres de licencias ( |
| Mensajes en pantalla. |
| Líneas que se escriben en el historial de un jugador. |
| Notificaciones del teléfono. |
| Los avisos |
Las claves que faltan o se eliminan vuelven al inglés, así que un archivo personalizado sigue funcionando tras una actualización. Para añadir un idioma, coloca un nuevo <code>.json junto a los demás y apunta el idioma hacia él. El dinero se formatea con Config.Intl — por ejemplo, locales = 'es-ES' y currency = 'EUR'.



