Troubleshooting
/doors Does Not Open
Check:
add_ace group.admin nord.doorlock.admin allow
Confirm:
Config.AdminAce = 'nord.doorlock.admin'
If using framework groups, verify Config.AdminGroups.
Door Disappears After Restart
Run:
doors_storage
Check that:
ready=true
error=none
In JSON mode, Nord Doorlock uses KVP as the authoritative store and JSON as a mirror.
Do not assume an empty data/doors.json means KVP is empty.
Developer check:
local health = exports.nord_doorlock:GetStorageHealth()
print(json.encode(health))
Same Door Is Locked Twice / Feels Locked From Behind
Run:
doors_dedupe
Also verify that the same physical object was not captured into two separate definitions.
Nord Doorlock normally blocks this automatically.
Two-Leaf Door Only Controls One Side
Edit the definition and verify that Door 1 and Door 2 are both captured.
Both physical objects must be stored in the same double-door definition.
Do not create each leaf as a separate overlapping Nord Doorlock entry.
Door Locks While Still Open
Relevant settings:
Config.DoorCloseRate = 10.0
Config.DoorCloseTimeoutMs = 2500
Config.DoorCloseSnapFallback = true
Config.DoorPhysicalFallback = true
For unusual MLO doors, increase the timeout before disabling physical fallback.
Cannot Capture a Barred Gate
The capture system uses:
Config.AdminCaptureRadius = 0.42
Config.AdminCaptureFallbackRadius = 1.35
Config.AdminCaptureScreenRadius = 0.075
Aim near the visual center of the door or gate.
A valid capture candidate should be highlighted.
World Lock Icon Appears Too Far Away
Reduce:
Config.DoorStateIconDistance = 6.0
Example:
Config.DoorStateIconDistance = 4.0
Duplicate World Lock Icon
Verify:
Config.DoorStateIconMergeDistance = 0.35
Then run:
doors_dedupe
ox_lib lib Is Nil
Nord Doorlock only uses ox_lib functions when the corresponding global exists.
If you explicitly configure an ox provider, make sure your ox_lib setup exposes the required functions before Nord Doorlock starts.
Otherwise use:
Config.Notify = 'auto'
Config.TextUI = 'auto'
Lockpick Always Works on a Standalone Custom Inventory
Integrate your inventory in:
server/bridge/inventory.lua
The default standalone inventory fallback cannot know whether the player really owns an item.
MySQL Storage Fails
Verify:
ensure oxmysql
ensure nord_doorlock
and:
Config.Storage = 'mysql'
Run:
doors_storage
Check server console errors from:
[nord_doorlock:storage]
Door State Does Not Update in Another Script
Read the state from the server:
local locked =
exports.nord_doorlock:GetDoorState(id)
or request the synchronized client value on the client.
Do not cache the state forever in another resource unless you also handle state changes.