La ventana del creador#
Todo en Doorlock Creator ocurre en una sola ventana, que abren con /doorlockcreator el staff y los trabajos indicados en Config.CreatorJobs (consulta Instalación). Los jugadores nunca la ven: solo ven el aviso en la puerta.

Dónde | Qué hay |
|---|---|
Door Locks (izquierda) | Todas las puertas del servidor, cada una marcada como Single Door o Multi Door, con un cuadro de búsqueda (Search doors...) y el total. |
Create new | Abre un formulario de puerta vacío. |
Teleport | En cada fila. Pide confirmación y luego te lleva a la puerta: útil para revisar una puerta que alguien ha reportado. |
El formulario (derecha) | Create door o Edit door #id: ajustes, animación, sonidos, la propia puerta y sus requisitos. Save, Cancel y Delete están abajo. |
Nada se configura en archivos. Cada puerta, regla y código se define aquí, se guarda en la base de datos y se envía a todos los jugadores en cuanto pulsas Save; la lista incluso se actualiza para otro admin que tenga el creador abierto.
Crear una puerta#
Ponle nombre
Pulsa Create new. En Door Settings dale un nombre que reconozcas después —
mrpd_armory,pdm_office. Los nombres son únicos en todo el servidor.Elige la puerta
En Door Coordinates pulsa Select 1 Door Entity (o Select 2 Door Entities para una puerta doble). La ventana se oculta; apunta a la puerta —se resalta y se marca— y haz clic izquierdo. La selección termina sola cuando se han elegido suficientes puertas y la ventana vuelve.
Decide quién la abre
Añade trabajos, jugadores, un ítem, una tarifa o un código en Requirements — o nada, para una puerta que cualquiera puede bloquear y desbloquear.
Guarda
La puerta se crea bloqueada y aparece en la lista. Acércate a ella para probarla.

Door Settings#
Campo | Qué hace |
|---|---|
Door Name | Obligatorio y único. Se muestra en la lista y lo usan los scripts para encontrar la puerta. |
Visible Distance | A cuántos metros debe estar un jugador. Por defecto, |
Multi Door | Convierte la puerta en una puerta doble que necesita exactamente dos entidades de puerta. |
Qué puertas se pueden bloquear#
Cualquier cosa que el propio juego trate como puerta: puertas batientes, puertas correderas de cristal, persianas de garaje, portones y barreras, de GTA o de un MLO. Cada una se registra en el sistema nativo de puertas de GTA, así que se abre y gira con normalidad cuando está desbloqueada y se mantiene cerrada cuando está bloqueada. Un prop estático que no es un modelo de puerta no se puede bloquear: no se mueve, así que el creador no tiene nada que sujetar.
Puertas simples y dobles#
Una puerta simple es una entidad. Una puerta doble — marca Multi Door (requires two doors) — son dos hojas que siempre se bloquean y desbloquean juntas, con un solo aviso en medio de ambas.

El formulario no permite guardar una puerta simple con dos hojas ni una doble con una, así que una puerta nunca queda medio bloqueada. Para cambiar de una a otra, marca o desmarca la casilla y vuelve a seleccionar las puertas.
Requisitos de acceso#
Los requisitos deciden quién puede usar una puerta. Se comprueban en el servidor cada vez, en este orden:
Código — si la puerta tiene uno, para desbloquearla primero hace falta el código correcto. Bloquearla nunca lo pide.
Ninguna otra regla — la puerta es pública: cualquiera dentro del alcance puede bloquearla y desbloquearla.
Si no, basta con una regla cualquiera — el jugador está en la lista de jugadores, o tiene un trabajo y rango permitidos, o lleva el ítem, o (para desbloquear) tiene el dinero.

Regla | Se define con | Se cumple cuando |
|---|---|---|
Job Access | Un trabajo, uno o más rangos, Add Job Rule | El jugador tiene ese trabajo con uno de los rangos seleccionados. |
Player Access | Una búsqueda por nombre o identificador | El personaje del jugador está en la lista. |
Item Access | Un ítem de tu inventario | El jugador lleva al menos uno. |
Money Access | Una cantidad y un tipo de dinero | Solo para desbloquear: el jugador puede pagar la cantidad. |
Código | Cuatro dígitos | Solo para desbloquear: se escribe el código correcto. Un bloqueo extra sobre las demás reglas, no un sustituto. |
Job Access#
Elige un trabajo de la lista que conoce tu framework, selecciona uno o más rangos en Allowed Grades y pulsa Add Job Rule. Añade tantos trabajos como necesite la puerta: police rangos 2–4 y sheriff rangos 3–5 en la misma puerta de la armería, por ejemplo. Los rangos son exactos: seleccionar solo el rango 4 no deja pasar al rango 5, así que selecciona todos los rangos que deban pasar.
Player Access#
Escribe al menos dos caracteres de un nombre o identificador en Allowed Players y haz clic en un resultado. Los jugadores se buscan en tu base de datos, así que no necesitan estar conectados. Lo que se guarda es el personaje —el identifier de ESX o el citizenid de QBCore / Qbox—, así que los otros personajes del jugador no pueden pasar. Haz clic en una etiqueta para quitar a alguien. Se muestran hasta Config.MaxSearchResults (20) resultados por búsqueda.
Item Access#
Elige un ítem en Required Item, de la lista de ítems de tu inventario. Basta con llevarlo: el ítem nunca se consume, así que una tarjeta sigue funcionando. El script no incluye ítems: usa uno que ya tengas o añade una tarjeta:
-- ox_inventory/data/items.lua
['door_keycard'] = {
label = 'Door Keycard',
weight = 10,
stack = false,
close = true,
description = 'Opens restricted doors',
},-- qb-core/shared/items.lua
door_keycard = { name = 'door_keycard', label = 'Door Keycard', weight = 10, type = 'item', image = 'door_keycard.png', unique = true, useable = false, shouldClose = true, description = 'Opens restricted doors' },-- qs-inventory/shared/items.lua
['door_keycard'] = {
name = 'door_keycard',
label = 'Door Keycard',
weight = 10,
type = 'item',
image = 'door_keycard.png',
unique = true,
useable = false,
shouldClose = true,
description = 'Opens restricted doors',
},INSERT INTO `items` (`name`, `label`, `weight`) VALUES ('door_keycard', 'Door Keycard', 1);Reinicia el inventario y luego el doorlock para que el nuevo ítem aparezca en la lista.
Money Access#
Define una cantidad en Money Requirement y una cuenta en Money Type — las opciones vienen de Config.MoneyTypes (Money, Bank, Black Money). En QBCore y Qbox, Money es la cuenta cash, y Black Money es markedbills en QBCore y el ítem black_money en Qbox.
La tarifa se cobra en cada desbloqueo, incluso a jugadores que pasaron por una regla de trabajo, jugador o ítem. Eso la convierte en un peaje, no en una llave alternativa: úsala para un gimnasio de pago, la barrera de un lavadero de coches o una zona VIP. A un jugador que no puede pagar se le indica Not enough money y la puerta sigue bloqueada. Bloquear siempre es gratis.
Código#
Escribe cuatro dígitos en Door Passcode (optional). Cuando un jugador desbloquea la puerta se abre un teclado; escribe el código con las teclas numéricas o haciendo clic, Enter confirma, Backspace borra y Esc cierra. Un código incorrecto muestra Invalid passcode.

El código se comprueba en el servidor y nunca se envía a los jugadores, así que no se puede leer desde un cliente. Un código por sí solo abre la puerta a quien lo conozca; combinado con un trabajo, el jugador necesita ambos: el trabajo y el código. Vacía el campo para quitarlo.
Animación y sonidos#
Cada puerta tiene su propia Interaction animation —el deslizamiento de tarjeta por defecto— que reproduce el jugador que la bloquea o desbloquea, solo cuando el servidor lo ha aprobado.
Campo | Qué hace |
|---|---|
Play ped animation when locking / unlocking | Desactívalo en puertas que deben abrirse sin gesto: escaparates de tiendas, portones que se abren desde un coche. |
Anim dictionary · Anim clip | Cualquier animación de GTA. Por defecto, |
Duration (ms) | Cuánto dura, entre 150 y 6000. |
Unlock / Lock dictionary and clip | Opcional. Una animación distinta para cada sentido: una llave que gira hacia un lado y vuelve. Vacío significa la principal. |
UI sounds reproduce un clic de bloqueo o desbloqueo para todos los que estén a unos 12 m del alcance de la puerta. Desmárcalo por puerta, o pon Config.DisableSounds = true para silenciar todas las puertas y la interfaz a la vez.
Cómo usan los jugadores una puerta#
Modo | Qué ve el jugador |
|---|---|
|
|
| Una opción Unlock door / Lock door en la puerta con ox_target o qb-target. |
El aviso se muestra a todos dentro del alcance; las reglas se comprueban al usarlo, y un jugador que no las cumple recibe You are not allowed to use this door. El servidor también comprueba que el jugador está realmente junto a la puerta e ignora las pulsaciones repetidas dentro de Config.Doorlock.ToggleCooldownMs (750 ms).
Autobloqueo#
Una puerta puede volver a bloquearse sola unos segundos después de que alguien la desbloquee: la puerta de una celda, una entrada trasera que nunca debe quedar abierta. Bloquearla a mano antes de que se acabe el tiempo cancela el temporizador.
Alcance | Dónde |
|---|---|
Todas las puertas |
|
Una puerta |
|
El valor por puerta se define en la base de datos. Ejecuta esto con el nombre de la puerta y luego reinicia el recurso para que recargue las puertas:
UPDATE `qs_doorlocks`
SET `data` = JSON_SET(`data`, '$.autolockSeconds', 10)
WHERE `name` = 'mrpd_cells_main';Otros valores por puerta#
Otros dos valores se leen de los mismos datos y se definen igual:
Clave | Efecto |
|---|---|
|
|
| Qué tan rápido se mueve una puerta automática, un portón o una persiana. Por defecto, |
Editar, teletransportar y borrar#
Haz clic en una puerta de la lista para abrirla. Cambia lo que quieras —reglas, distancia, animación, incluso las entidades de puerta— y pulsa Save; todos los jugadores reciben la nueva versión al instante y la puerta mantiene su estado de bloqueo actual. Delete pide confirmación y no se puede deshacer: la puerta se libera y gira libremente para todos.
Guardado y sincronización#
Cada bloqueo y desbloqueo se escribe en la base de datos, así que las puertas mantienen su estado tras un reinicio.
Un jugador que entra recibe todas las puertas en paquetes pequeños (
Config.Doorlock.SyncChunkSize, 25 por paquete), así que un servidor con cientos de puertas no se atasca al conectar.Los estados se vuelven a aplicar poco después de entrar, para las puertas de MLO que cargan tarde.
Cada cambio —de un jugador, un autobloqueo o un script— llega a todos a la vez.



