The Creator Window#
Everything in Doorlock Creator happens in one window, opened with /doorlockcreator by staff and the jobs listed in Config.CreatorJobs (see Installation). Players never see it — they only see the prompt at the door.

Where | What is there |
|---|---|
Door Locks (left) | Every door on the server, each marked Single Door or Multi Door, with a search box (Search doors...) and the count. |
Create new | Opens an empty door form. |
Teleport | On every row. Asks for confirmation, then takes you to the door — handy for checking a door somebody reported. |
The form (right) | Create door or Edit door #id: settings, animation, sounds, the door itself and its requirements. Save, Cancel and Delete sit at the bottom. |
Nothing is configured in files. Every door, rule and passcode is set here, saved to the database and pushed to every player the moment you press Save — the list even refreshes for another admin who has the creator open.
Creating a Door#
Name it
Press Create new. In Door Settings give it a name you will recognise later —
mrpd_armory,pdm_office. Names are unique across the server.Pick the door
In Door Coordinates press Select 1 Door Entity (or Select 2 Door Entities for a double door). The window hides; aim at the door — it is outlined and marked — and left-click. Selection ends on its own once enough doors are picked and the window comes back.
Decide who opens it
Add jobs, players, an item, a fee or a passcode under Requirements — or nothing, for a door anyone may lock and unlock.
Save
The door is created locked and appears in the list. Walk up to it to test.

Door Settings#
Field | What it does |
|---|---|
Door Name | Required and unique. Shown in the list and used by scripts to find the door. |
Visible Distance | How close, in metres, a player must be. Defaults to |
Multi Door | Turns the door into a double door that needs exactly two door entities. |
Which doors can be locked#
Anything the game itself treats as a door: swing doors, sliding glass doors, garage shutters, gates and barriers, from GTA or from an MLO. Each is registered in GTA's native door system, so it opens and swings normally when unlocked and is held shut when locked. A static prop that is not a door model cannot be locked — it does not move, so the creator has nothing to hold.
Single and Double Doors#
A single door is one entity. A double door — tick Multi Door (requires two doors) — is two leaves that always lock and unlock together, with one prompt in the middle between them.

The form refuses to save a single door with two leaves or a double door with one, so a door is never half-locked. To change one into the other, tick or untick the box and select the doors again.
Access Requirements#
Requirements decide who may use a door. They are checked on the server every time, in this order:
Passcode — if the door has one, unlocking needs the right code first. Locking never asks for it.
No other rule set — the door is public: anyone in range can lock and unlock it.
Otherwise, any one rule is enough — the player is on the list of players, or has an allowed job and grade, or carries the item, or (to unlock) has the money.

Rule | Set with | Passes when |
|---|---|---|
Job Access | A job, one or more grades, Add Job Rule | The player has that job at one of the selected grades. |
Player Access | A search by name or identifier | The player's character is on the list. |
Item Access | One item from your inventory | The player carries at least one. |
Money Access | An amount and a money type | Unlocking only: the player can pay the amount. |
Passcode | Four digits | Unlocking only: the right code is typed. An extra lock on top of the other rules, not a replacement. |
Job Access#
Pick a job from the list your framework knows, select one or more grades in Allowed Grades, and press Add Job Rule. Add as many jobs as the door needs — police grades 2–4 and sheriff grades 3–5 on the same armory door, for example. Grades are exact: selecting only grade 4 does not let grade 5 in, so select every grade that should pass.
Player Access#
Type at least two characters of a name or identifier in Allowed Players and click a result. Players are searched in your database, so they do not need to be online. What is stored is the character — the ESX identifier or the QBCore / Qbox citizenid — so a player's other characters are not let in. Click a chip to remove someone. Up to Config.MaxSearchResults (20) results are shown per search.
Item Access#
Choose one item in Required Item, from the item list of your inventory. Carrying it is enough: the item is never taken, so a keycard keeps working. The script ships no items — use one you have, or add a keycard:
-- 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);Restart the inventory and then the doorlock so the new item shows in the list.
Money Access#
Set an amount in Money Requirement and an account in Money Type — the options come from Config.MoneyTypes (Money, Bank, Black Money). On QBCore and Qbox, Money is the cash account, and Black Money is markedbills on QBCore and the black_money item on Qbox.
The fee is taken on every unlock — including by players who passed through a job, player or item rule. That makes it a toll, not an alternative key: use it for a paid gym, a car wash gate, a VIP area. A player who cannot pay is told Not enough money and the door stays locked. Locking is always free.
Passcode#
Type four digits in Door Passcode (optional). When a player unlocks the door a keypad opens; they type the code with the number keys or by clicking, Enter confirms, Backspace deletes and Esc closes. A wrong code shows Invalid passcode.

The code is checked on the server and never sent to players, so it cannot be read from a client. A code alone makes the door open to whoever knows it; combined with a job, the player needs both the job and the code. Clear the field to remove it.
Animation and Sounds#
Each door has its own Interaction animation — the keycard swipe by default — played by the player who locks or unlocks it, only once the server has agreed.
Field | What it does |
|---|---|
Play ped animation when locking / unlocking | Off for doors that should open without a gesture: shop fronts, gates opened from a car. |
Anim dictionary · Anim clip | Any GTA animation. Defaults to |
Duration (ms) | How long it plays, between 150 and 6000. |
Unlock / Lock dictionary and clip | Optional. A different animation for each direction — a key turned one way and back. Empty means the main one. |
UI sounds plays a lock or unlock click to everyone within about 12 m of the door's range. Untick it per door, or set Config.DisableSounds = true to mute every door and the interface at once.
How Players Use a Door#
Mode | What the player sees |
|---|---|
|
|
| An Unlock door / Lock door option on the door with ox_target or qb-target. |
The prompt shows to everyone in range; the rules are checked when it is used, and a player who fails gets You are not allowed to use this door. The server also checks that the player is really standing at the door and ignores repeated presses within Config.Doorlock.ToggleCooldownMs (750 ms).
Autolock#
A door can lock itself again a number of seconds after somebody unlocks it — a cell door, a back entrance that should never be left open. Locking it by hand before the time runs out cancels the timer.
Scope | Where |
|---|---|
Every door |
|
One door |
|
The per-door value is set in the database. Run this with the door's name, then restart the resource so it reloads the doors:
UPDATE `qs_doorlocks`
SET `data` = JSON_SET(`data`, '$.autolockSeconds', 10)
WHERE `name` = 'mrpd_cells_main';Other per-door values#
Two more values are read from the same data and set the same way:
Key | Effect |
|---|---|
|
|
| How fast an automatic door, a gate or a shutter moves. Defaults to |
Editing, Teleporting and Deleting#
Click a door in the list to open it. Change anything — rules, distance, animation, even the door entities — and press Save; every player gets the new version immediately and the door keeps its current lock state. Delete asks for confirmation and cannot be undone: the door is released and swings freely for everyone.
Saving and Syncing#
Every lock and unlock is written to the database, so doors keep their state through a restart.
A player who joins receives every door in small packets (
Config.Doorlock.SyncChunkSize, 25 per packet), so a server with hundreds of doors does not stall on connect.States are applied again shortly after joining, for MLO doors that stream in late.
Every change — by a player, an autolock or a script — reaches everyone at once.



