Cómo funcionan las integraciones#
El núcleo de Shutters Creator no sabe qué framework, inventario o target usas. A cada uno se llega a través de un pequeño archivo puente, y el puente correcto se elige al iniciar según los recursos que ya están en marcha. Los puentes de framework (custom/) y los puentes de inventario (server/custom/inventory/) están abiertos para que los edites.
Capa | Compatibles | Sin ella |
|---|---|---|
Framework |
| Obligatorio. El recurso se detiene al iniciar con un error. |
Inventario |
| Modo standalone: la lista Required Item del creador está vacía y la consola repite un aviso. Todo lo demás funciona. |
Target |
| Un aviso 3D y la tecla E — la opción predeterminada. |
Bandas | Bandas de QBCore y Qbox · | No hay selector de bandas en el creador y las reglas de banda no se comprueban. |
Notificaciones · HUD |
| Las notificaciones propias del script; solo se oculta el minimapa mientras el creador está abierto. |
Aviso 3D |
| El texto 3D propio de GTA sobre un recuadro oscuro. |
Minijuego | La prueba de habilidad de ox_lib | Siempre disponible — ox_lib es una dependencia. |
Base de datos |
| Obligatoria. |
La detección busca exactamente los nombres de recurso de arriba y solo ve los recursos que ya están iniciados. Un framework o inventario renombrado, o uno que se inicie después de Shutters Creator, no se encuentra. Corrige el orden en
server.cfg, o añade el nuevo nombre a las tablas deconfig/main.luacomo se muestra abajo.
Frameworks#
Hay dos puentes: custom/esx/ para ESX y custom/qb/ para QBCore. Qbox usa el puente de QB gracias a su compatibilidad integrada con QBCore, así que no hace falta nada más. Cada puente tiene un archivo de cliente y otro de servidor, y esto es lo que el script les pide:
Se usa para | ESX | QBCore · Qbox |
|---|---|---|
Quién es administrador | Grupo | Permiso |
Trabajos y rangos | La lista de trabajos de ESX y el trabajo del jugador | Los trabajos compartidos y el nivel de rango del trabajo del jugador |
Bandas |
| Las bandas compartidas y la banda del jugador |
Comprobación del ítem requerido | La cantidad del ítem en el inventario del jugador | El ítem del jugador por nombre |
El ítem de ganzúa | Registrado como ítem usable de ESX | Registrado como ítem usable de QBCore |
Quién creó una persiana | El identificador del jugador | El citizen id del jugador |
Bandas en ESX#
ESX no tiene bandas propias, así que el acceso por banda en ESX viene de qs-gangs. Con él en marcha, el creador lista todas las bandas excepto la neutral, con los rangos que define qs-gangs. Sin él, el selector de bandas se oculta y las reglas de banda se omiten.
Inventarios#
El puente de inventario alimenta una sola cosa: la lista Required Item del creador, con el nombre, la etiqueta y la imagen de cada ítem. La comprobación en sí — ¿lo lleva el jugador? — pasa por el framework. Cada puente de server/custom/inventory/ lee las imágenes de la propia carpeta de imágenes de ese inventario, así que el creador muestra las mismas imágenes que el inventario del jugador. ox_inventory respeta su convar inventory:imagepath.
Añadir tu propio inventario#
Crea un puente que devuelva tu lista de ítems y luego indica a la detección cuál es tu recurso:
-- server/custom/inventory/myinventory.lua
if Config.Inventory ~= 'myinventory' then
return
end
function sv_inventory:formatItemList()
local itemList = {}
for name, item in pairs(exports['my-inventory']:Items()) do
itemList[name] = {
name = name,
label = item.label,
image = ('nui://my-inventory/images/%s.png'):format(name),
}
end
return itemList
end
-- config/main.lua — add your resource to the inventories table
-- ['my-inventory'] = 'myinventory',Targets#
Pon Config.UseTarget = true y cada punto de interacción se convierte en una caja de target en lugar de un aviso 3D. ox_target se usa cuando está en marcha; si no, qb-target.
Detalle | Valor |
|---|---|
Etiqueta de la opción | Access <shutter name> — la clave de idioma |
Tamaño de la caja |
|
Alcance | 2.5 m. Con los targets activados, el Interaction Distance del creador no se usa. |
Cuándo existe | Se crea cuando el jugador se acerca por primera vez a la persiana y se elimina cuando el recurso se detiene. |
La ganzúa no cambia con los targets: el ítem se sigue usando desde el inventario, en un punto con Enable Lockpick activado.
Notificaciones, el aviso 3D y el HUD#
Estos tres están en custom/client.lua, cada uno como una función que puedes reescribir para usar otro recurso:
Función | Con recursos de Quasar | Sin ellos |
|---|---|---|
|
| Las notificaciones propias del script |
|
| Texto 3D de GTA sobre un recuadro oscuro |
| Oculta el HUD de | Solo oculta el minimapa |
Los mensajes del servidor llegan al jugador a través de la misma Notification, así que un cambio cubre ambos lados. Por ejemplo, para usar las notificaciones de ox_lib, sustituye el cuerpo de la función:
-- custom/client.lua
function Notification(msg, type)
lib.notify({
description = msg,
type = type == 'info' and 'inform' or type, -- ox_lib calls it 'inform'
})
endAñadir tu propio framework#
Un puente de framework es una tabla Lua simple. Copia custom/qb/ o custom/esx/ a custom/<name>/, reescribe cada función para tu core y asigna el nombre de recurso de tu core a <name> en config/main.lua:
local frameworks = {
['es_extended'] = 'esx',
['qb-core'] = 'qb',
['qbx_core'] = 'qb',
['my_core'] = 'mycore', -- loads custom/mycore/server.lua and custom/mycore/client.lua
}Lado | Funciones que llama el script |
|---|---|
Servidor |
|
Cliente |
|
Los argumentos y valores de retorno exactos de cada función están anotados en types.lua (ServerFramework y ClientFramework).



