Skip to main content

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.