Cómo funcionan las integraciones#
Nada dentro de Robberies Creator sabe qué framework, target, inventario o dispatch usas. A cada uno se llega mediante un pequeño archivo bridge en client/custom/ o server/custom/, sin cifrar y editable, y solo se ejecuta el bridge del recurso detectado. La detección ocurre al arrancar, y la consola muestra lo que eligió.
Capa | Compatibles | Sin ella |
|---|---|---|
Framework |
| Obligatorio. El dinero, los trabajos, los rangos, los ítems y el recuento de policías vienen de él. |
Bandas |
| Los cooldowns de banda no hacen nada. Todo lo demás funciona. ESX no tiene bandas propias. |
Inventario |
| Los ítems se gestionan con las funciones propias del framework, y el selector de ítems lee la tabla |
Target |
| Un aviso integrado: acércate, lee |
Dispatch |
| Una alerta integrada: los agentes reciben una notificación, un sonido y un blip parpadeante con una ruta durante 60 segundos. |
Puertas | Integradas, con el sistema de puertas de GTA. | No hay nada que instalar. No se usa ningún recurso de doorlock. |
Barra de progreso · Quick check |
| Obligatorio: ox_lib es una dependencia. |
Láseres · Minijuegos |
| Dependencias obligatorias. |
Base de datos |
| Obligatorio. |
Cada integración opcional se degrada sin hacer ruido. Un target o dispatch que falta pasa al integrado en lugar de lanzar un error; por eso importa la línea del arranque: es el único sitio que te dice que una capa pasó a
standaloneantes de que te lo diga un jugador.
Forzar la detección#
Cada capa se encuentra buscando recursos iniciados en orden de prioridad: gana el primero que se encuentra. Para fijar uno a mano, sustituye la llamada de detección en config/main.lua por el id de su lista:
-- Auto, the default: the first started resource in the list wins.
Config.Inventory = DependencyCheck(inventories) or 'standalone'
-- Manual: skip detection entirely.
Config.Inventory = 'codem' -- codem-inventory
Config.Dispatch = 'ps-dispatch'Merece la pena cuando hay dos candidatos en ejecución a la vez (qs-police-creator tiene prioridad sobre qs-dispatch cuando ambos están en ejecución) o cuando un recurso se ha renombrado en tu servidor. Estos cuatro no están en el panel de ajustes a propósito: los bridges se eligen mientras carga el recurso, así que solo pueden cambiar con un reinicio.
Ajuste | Ids |
|---|---|
|
|
|
|
|
|
|
|
Policía y dispatch#
Dos cosas distintas, configuradas en dos sitios:
Pregunta | Dónde |
|---|---|
Cuántos agentes deben estar conectados para empezar | El nodo Police Count de cada robo, con su propia lista de trabajos, cantidad y rango mínimo. |
Qué trabajos reciben la llamada de dispatch |
|
El nodo Police Alert envía la llamada desde el cliente del líder a través del dispatch detectado, en la posición del líder o en una fija. Su panel muestra los campos extra que entiende tu dispatch: prioridad e imagen para qs-dispatch y qs-police-creator, escala y duración del blip para cd_dispatch, etc. La alternativa integrada avisa a los nombres de trabajo policiales habituales (police, sheriff, lspd, bcso, sasp, sahp, fib, ranger, trooper, marshal).
Bandas#
El alcance Gang de Set Cooldown y la condición Cooldown necesitan conocer la banda del líder. Se lee en este orden:
qs-crime-creator, cuando está en ejecución: su banda, así que todos los miembros comparten el cooldown sea cual sea su trabajo.Tu framework, mediante
GetPlayerGangenserver/custom/frameworks/. QBCore y Qbox devuelven la banda del jugador; ESX y standalone no devuelven ninguna.
Un jugador sin banda (o con la banda none de QBCore) no recibe cooldown de banda. Para usar otro script de bandas, haz que GetPlayerGang(source) devuelva su nombre o id de banda:
-- server/custom/frameworks/esx.lua (or the bridge you use)
function GetPlayerGang(source)
local gang = exports['my-gangs']:GetPlayerGang(source)
return gang and gang.name or nil -- nil = no gang
endDisparadores Item Use#
Un disparador Item Use no registra el ítem por sí mismo; escucha a tu inventario y framework para detectar el momento en que se usa cualquier ítem. ox_inventory (y origen), qs-inventory, ESX, QBCore y Qbox se enganchan automáticamente cinco segundos después del inicio. El ítem debe ser usable en tu inventario para que el uso llegue al script.
Notificaciones y sonidos#
Robberies Creator muestra sus propias notificaciones, con el estilo del creador: no hace falta ningún recurso de notificaciones. Cada una reproduce además un breve sonido de interfaz de GTA según su tipo. Config.NotificationSounds en config/main.lua los cambia:
Config.NotificationSounds = nil -- the built-in sounds
Config.NotificationSounds = false -- silent
Config.NotificationSounds = { -- your own; a missing type uses info's
info = { name = 'NAV_UP_DOWN', set = 'HUD_FRONTEND_DEFAULT_SOUNDSET' },
success = { name = 'MISSION_PASS_NOTIFY', set = 'DLC_HEISTS_GENERAL_FRONTEND_SOUNDS' },
warning = { name = 'CHECKPOINT_PERFECT', set = 'HUD_MINI_GAME_SOUNDSET' },
error = { name = 'CHECKPOINT_MISSED', set = 'HUD_MINI_GAME_SOUNDSET' },
}Otro recurso puede mostrar una de estas notificaciones a un jugador desde el servidor:
TriggerClientEvent('qs-robberies:notify', source, 'The vault is open', 'success', 5000)
-- type: info · success · warning · errorLogs de Discord#
El registro es un nodo, no un archivo de configuración: coloca un nodo Discord Webhook donde quieras un mensaje: al empezar, al tocar un láser, al tener éxito. Cada uno tiene su propia URL de webhook, nombre y avatar del bot, título, descripción, color, pie y miniatura del embed, así que distintos robos pueden publicar en distintos canales. Solo se aceptan direcciones de webhook de discord.com y discordapp.com.
Añadir un backend#
Dar soporte a algo que no está en la lista es un archivo más una línea. Cada bridge empieza con una comprobación, así que solo se ejecuta el elegido:
Copia el bridge más parecido
Copia el archivo más cercano (
server/custom/inventory/ox.lua,client/custom/dispatch/standalone.lua) y renómbralo con el nombre de tu recurso.Rellena sus funciones
Dos funciones alimentan el selector de ítems. Dar y quitar ítems pasa al framework salvo que definas también
Inventory_AddItem,Inventory_RemoveItem,Inventory_HasItemyInventory_GetItemCount.lua -- server/custom/inventory/myinventory.lua if Config.Inventory ~= 'myinventory' then return end function GetAllItems() local items = {} for name, data in pairs(exports['my-inventory']:GetItems()) do items[#items + 1] = { name = name, label = data.label or name, weight = data.weight or 0 } end return items end function GetInventoryImagePath() return 'nui://my-inventory/html/images/', 'nui://my-inventory/html/images/placeholder.png' endUna función de cliente recibe la alerta.
datallevamessage,alertCode,alertSnippet,coords,priority,imagey los ajustes del blip.lua -- client/custom/dispatch/mydispatch.lua if Config.Dispatch ~= 'mydispatch' then return end function SendPoliceAlert(data) exports['my-dispatch']:CustomAlert({ code = data.alertCode, text = data.message, coords = data.coords, jobs = Config.PoliceJobs, }) endSeis funciones de cliente:
AddSphereZone,RemoveZone,AddEntityTarget,RemoveEntityTarget,AddModelTargetyRemoveModelTarget. Cada opción llevaname,label,icon,distance,canInteractyonSelect; copiaclient/custom/targets/ox_target.luacomo modelo.Regístralo para la detección
Añade una entrada a la lista correspondiente al principio de
config/main.lua(nombre del recurso y luego id) y reinicia.lua local inventories = { { 'ox_inventory', 'ox' }, -- … { 'my-inventory', 'myinventory' }, }
Idiomas#
Se incluyen veinte traducciones en locales/, que cubren tanto los mensajes del juego como todo el creador:
EN · ES · FR · DE · PT · IT · NL · PL · TR · AR · ZH · JA · KO · RU · SV · DA · NO · CS · RO · HU
Elige uno en /robberiesconfig → General; se aplica en vivo, sin reiniciar. Cualquier texto que falte en una traducción pasa al inglés. Para corregir una expresión, edita el archivo JSON de tu idioma: los archivos no están cifrados.



