Cómo funcionan las integraciones#
Doorlock Creator no lleva tu framework, inventario ni target fijados en el código. Cada uno vive tras un pequeño archivo puente sin cifrar, y el puente adecuado se elige al iniciar el recurso comprobando qué recursos ya están en marcha. No hay que seleccionar nada a mano.
Capa | Compatibles | Se usa para | Sin él |
|---|---|---|---|
Framework | es_extended · qb-core · qbx_core | Admins, trabajos y rangos, identificadores de personaje, ítems que lleva y dinero. | El recurso se detiene con un error. Se necesita un framework. |
Inventario | qs-inventory · ox_inventory · qb-inventory · tgiann-inventory · codem-inventory | La lista de ítems, con imágenes, en el campo Required Item del creador. | La lista queda vacía y la consola repite un aviso cada pocos segundos. Por lo demás, las puertas funcionan. |
Target | ox_target · qb-target | La opción Lock / Unlock de cada puerta, cuando | Mantén |
Text UI | qs-textui | Un aviso 3D con estilo | Texto simple del juego sobre un recuadro oscuro. |
HUD | qs-interface | Se oculta mientras el creador está abierto. | Solo se oculta el minimapa. |
La detección solo ve los recursos que ya se han iniciado. Inicia tu framework, inventario y target antes de
qs-doorlock-creatorenserver.cfg.
Frameworks#
QBCore y Qbox comparten un puente (custom/qb/); ESX tiene el suyo (custom/esx/). Lo que lee cada uno:
Qué | ESX | QBCore | Qbox |
|---|---|---|---|
Admins |
|
| |
Lista de jugadores permitidos |
|
| |
Dinero |
|
|
|
Cada uno de ellos es una función corta en el puente — playerIsAdmin, getIdentifier, getAccountMoney, removeAccountMoney, getItem, getJobName, getJobGrade —, así que un servidor con cuentas renombradas o un sistema de staff propio cambia una función en lugar del script.
El aviso [E] o un target#
-- config/main.lua
Config.UseTarget = false -- true = ox_target / qb-target, false = [E] prompt
Config.TargetWidth = 5.0 -- size of the target box placed on each door
Config.TargetHeight = 5.0
Config.ZoneDebug = false -- true draws the boxes while you test
Config.Doorlock.DrawTextZOffset = 0.35 -- height of the [E] prompt above the doorCon un target, cada puerta tiene una caja en su centro con una opción — Unlock door o Lock door según su estado—, accesible desde la distancia de la puerta. ox_target se usa mediante su compatibilidad integrada con qtarget, que viene activada. Las puertas marcadas con hidden no tienen aviso ni target en ningún modo.
Notificaciones#
Mensajes como Invalid passcode los dibuja la propia interfaz de Doorlock Creator. Para enviarlos a tu sistema de notificaciones, edita Notification en custom/client.lua — ya hay ejemplos para qs-interface y ox_lib, comentados:
-- custom/client.lua
---@param msg string
---@param type 'info' | 'error' | 'success'
function Notification(msg, type)
lib.notify({ title = 'Doors', description = msg, type = type })
endLos scripts de servidor pueden mostrar la misma notificación a un jugador con TriggerClientEvent('doorlock:notification', source, 'Vault opened', 'success').
El HUD y el aviso#
ToggleHud en el mismo archivo oculta el minimapa y el HUD de qs-interface mientras el creador está abierto; añade ahí el export de tu propio HUD. DrawText3D dibuja el aviso [E] y se puede apuntar a cualquier otro recurso de texto 3D de la misma forma.
Forzar la detección#
Cada capa es una pequeña tabla en config/main.lua que asocia un nombre de recurso con un puente. Cuando hay dos candidatos en marcha a la vez la elección no está garantizada, así que elimina los que no quieras, o añade una línea para un recurso renombrado:
local inventories = {
['qs-inventory'] = 'qs',
-- ['ox_inventory'] = 'ox', -- commented out: never pick ox_inventory
['my-inventory'] = 'qb', -- a renamed qb-inventory
}
local frameworks = {
['es_extended'] = 'esx',
['qb-core'] = 'qb',
['qbx_core'] = 'qb',
}Añadir un inventario#
Copia el puente más parecido
Duplica el archivo de
server/custom/inventory/cuyo inventario se parezca más al tuyo y nómbralo con tu clave —myinv.lua.Cambia la comprobación y la lista de ítems
Pon tu clave en la primera línea y haz que
formatItemListdevuelva tus ítems con una imagen:lua if Config.Inventory ~= 'myinv' then return end function sv_inventory:formatItemList() local items = exports['my-inventory']:Items() for name, item in pairs(items) do item.name = name item.image = 'nui://my-inventory/html/images/' .. (item.image or name .. '.png') end return items endRegístralo
Añade
['my-inventory'] = 'myinv'a la tablainventoriesenconfig/main.luay reinicia.
Si un jugador lleva un ítem se pregunta al framework, así que un inventario nuevo solo necesita la lista de ítems. Un target que no sea ox_target ni qb-target se añade igual en client/custom/target/main.lua.
Idiomas#
Se incluyen trece traducciones en locales/: checo (cs), danés (da), alemán (de), inglés (en), español (es), francés (fr), italiano (it), neerlandés (nl), noruego (no), portugués (pt), rumano (ro), esloveno (sl) y sueco (sv). Elige uno con Config.Locale.
Para otro idioma, copia en.json a xx.json, traduce los valores (nunca las claves) y pon Config.Locale = 'xx'. Cualquier clave que le falte a una traducción usa el inglés, y la consola la indica para que puedas completarla.



