Cómo funcionan las integraciones#
Bunkers Creator nunca llama directamente a tu framework, inventario, target o script de llaves. A cada uno se accede a través de un pequeño archivo puente en client/custom/ o server/custom/, y solo se activa el puente de lo que usas. Estas carpetas están abiertas: puedes leer y cambiar cada puente.
Capa | Compatibles | Sin ella |
|---|---|---|
Framework | es_extended · qb-core · qbx_core | Standalone: el dinero siempre se cobra, los administradores son los jugadores con el ace |
Inventario | ox_inventory · qb-inventory · qs-inventory · esx_inventoryhud · origen_inventory · mf-inventory · codem-inventory · tgiann-inventory · lj-inventory · core_inventory · chezza_inventory · ps-inventory · aj-inventory · mythic_inventory | Un inventario en memoria: la producción funciona, pero el almacenamiento y el armero no se pueden abrir y los ítems no se conservan entre reinicios. |
Target | ox_target · qb-target | Zonas de ox_lib con un aviso de texto, que se usan con E. |
Llaves de vehículos | qs-vehiclekeys · qb-vehiclekeys · jg-vehiclekeys · wasabi_carlock · vehicles_keys · mk_vehiclekeys · t1ger_keys · Renewed-Vehiclekeys · jota-dev-vehicle-key · qbx_vehiclekeys | El caddy y los vehículos que entran se entregan sin llaves. |
Teléfono | La app BunkerHQ para qs-smartphone | Los búnkeres solo se gestionan desde el portátil. |
Base de datos | oxmysql | Obligatorio. |
Forzar la detección#
La detección busca un recurso iniciado con un nombre conocido. Si el tuyo tiene otro nombre, o se ejecutan dos candidatos a la vez, fija el valor a mano en shared/config.lua:
-- Auto, the default
Config.Framework = checkDependencies(frameworks) or 'standalone'
Config.Inventory = checkDependencies(inventories) or 'standalone'
Config.Target = checkDependencies(targets) or 'standalone'
Config.VehicleKeys = checkDependencies(vehiclekeys) or 'standalone'
-- Pinned by hand
Config.Framework = 'qbcore' -- esx · qbcore · qbox · standalone
Config.Inventory = 'ox' -- ox · qbcore · qs · esx_inventoryhud · origen · mf · codem · tgiann · lj · core · chezza · ps · aj · mythic · standalone
Config.Target = 'ox' -- ox · qb · standalone
Config.VehicleKeys = 'qs' -- qs · qb · jg · wasabi · vehicles_keys · mk · t1ger · renewed · jotadev · qbx · standaloneLa detección solo ve los recursos que ya están iniciados, así que la solución más habitual es simplemente mover el recurso por encima de ensure qs-bunkers-creator.
Dinero#
Qué | Cuenta |
|---|---|
Comprar un búnker | Banco |
Comprar suministros | Banco |
Vender stock | ESX: |
Para pagar en otro lugar — dinero sucio como ítem, un script de blanqueo — cambia AddMoney en server/custom/frameworks/<framework>.lua.
Los archivos puente#
Lo que ofrece cada puente, por si necesitas adaptar uno:
Frameworks — client/custom/frameworks · server/custom/frameworks
-- client
GetPlayerData()
GetPlayerIdentifier()
ShowNotification(message, type) -- change this to use your own notifications
WaitForPlayerLoaded()
-- server
GetPlayerFromId(source)
GetPlayerIdentifier(source)
GetPlayerName(source) -- { firstName, lastName }
GetPlayerJob(source) -- job name and grade, used for raids
GetPlayerMoney(source, account)
RemoveMoney(source, amount, account)
AddMoney(source, amount, account)
IsAdmin(source) -- who may open /bunkercreator
GetOnDutyPoliceCount(jobs) -- the police gate for missionsInventarios — client/custom/inventories · server/custom/inventories
-- client
OpenInventory(type, id) -- opens a stash
GetItemMetadata(itemName) -- { stackable, maxStack }
-- server
AddItem(source, item, count)
RemoveItem(source, item, count)
GetItemCount(source, item)
GetPlayerInventory(source)
RegisterStash(stashId, label, slots, weight)
AddItemToStash(stashId, item, count)
RemoveItemFromStash(stashId, item, count)
GetStashItems(stashId) -- { item = count }
OpenStash(source, stashId)Los stashes se llaman bunker_<id> (el almacenamiento del búnker, 50 casillas) y gunlocker_<id> (el armero, 50 casillas). El puente de qb-inventory admite tanto la API de stashes actual como la antigua.
Targets — client/custom/targets
Una tabla TargetSystem que crea y elimina las zonas de un búnker: exterior, interior, asalto, walk-in y finalización de misiones. La mayoría de los puntos usan una zona de 1.5 m, los puntos de vehículos 3 m y el garaje 2 m.
Llaves de vehículos — client/custom/vehiclekeys
GiveVehicleKeys(vehicle, plate)
RemoveVehicleKeys(vehicle, plate)Las imágenes de los ítems en el banco de trabajo vienen de la carpeta configurada para tu inventario en Config.InventoryImagePaths. Si tu inventario guarda sus imágenes en otro lugar, cambia la ruta ahí.
La app de teléfono BunkerHQ#
server/custom/sv_bunkerhq.lua alimenta la app BunkerHQ del smartphone de Quasar: los búnkeres que un jugador posee o de los que tiene llaves, con su stock, suministros, nivel de búsqueda y estado de asalto, los búnkeres en venta, el valor de venta del stock en cada ruta y la gestión de poseedores de llaves con un selector de jugadores a menos de 12 m. Usa las mismas reglas de poseedores de llaves que el portátil.
¿No usas la app? El archivo no hace nada perjudicial, pero puedes eliminarlo junto con su línea en fxmanifest.lua.
Añadir un backend#
Copia el puente más parecido
Copia, por ejemplo,
server/custom/inventories/ox.luay su gemelo del cliente, y renómbralos con el nombre de tu recurso. Todos los archivos de la carpeta se cargan automáticamente.Cambia la condición y las llamadas
Cada puente solo se ejecuta cuando es el elegido. Cambia la condición por tu propio nombre y rellena las funciones con los exports de tu recurso:
lua if Config.Inventory ~= 'my_inventory' then return end function AddItem(source, item, count) return exports['my_inventory']:AddItem(source, item, count) end -- ...and the rest of the list aboveRegístralo para la detección
Añade tu recurso a la tabla correspondiente al principio de
shared/config.lua—['my_inventory'] = 'my_inventory'— o fijaConfig.Inventorya él. Añade su carpeta de imágenes aConfig.InventoryImagePaths.
Idiomas#
Se incluyen once traducciones en locales/: inglés (en), español (es), francés (fr), alemán (de), italiano (it), portugués (pt), neerlandés (nl), hindi (hi), japonés (ja) y chino simplificado (zh-CN) y tradicional (zh-TW). Configura Config.Language en shared/config.lua. La interfaz usa el mismo archivo que el juego.
Para añadir otro, copia locales/en.lua a un archivo nuevo, cambia Locales["en"] al principio por tu código, traduce los valores y configura Config.Language con ese código.



