Stability Notes
Stability Notes
Runtime guardrails and patterns for production servers.
Applies to: Nord Inventory v2.0.0
Nord Inventory stability notes
Large weapons on back
- Up to two long weapons can be displayed at once.
- Cosmetic weapon props are networked so nearby players can see them.
- The equipped weapon is excluded by unique item UID.
- Back props are hidden while dead or inside a vehicle and are restored automatically.
- Inventory synchronization uses the lightweight player snapshot, so it also works with the NUI closed.
- Position/rotation is configurable under
Config.BackWeapons.
Item-use props
- Hand prop convention corrected to bone
60309and rotation order0. - Common consumable/utility models are normalized through
Config.ItemPropAttachments. rotOrderis now preserved by server sanitization.- Admin-created hand props use known model calibration when available.
Static validation
web/app.jspassed Node syntax validation.- EN/PT JSON parsed successfully.
- Every static Lua
L('...')notification key exists in both EN and PT. - No duplicate HTML IDs detected.
- Referenced manifest files validated.
Native compatibility guards
Nord Inventory no longer requires NetworkGetEntityIsNetworked or
SetEntityCompletelyDisableCollision to exist as Lua globals.
Vehicle control uses normal network-control natives directly. Attached props and
back weapons use SetEntityCollision(false, false) as the compatible baseline,
with complete collision disabling only when the current artifact exposes it.
Network IDs are also read through guarded helpers because ambient NPC vehicles can disappear while an inventory or trunk session watchdog is running.
v2.0.0 runtime hardening
- networked long-weapon back props are removed reliably after ownership migration;
- stale/legacy equipped weapon snapshots fall back to weapon-name matching so the back prop does not remain until relog;
- pending ground-model loads are invalidated when a drop leaves range or is removed, preventing ghost props;
- metadata-aware
CanCarryItemavoids incorrect stack acceptance; stack = falserequires one free slot per item and creates count-1 instances;- legacy malformed unique stacks and missing UID/serial/container identities are repaired safely during load;
- server-owned identities cannot be erased/replaced by
SetMetadata/UpdateMetadata; - failed robbery transfers no longer remove Fast Slot pins;
- same-slot moves are no-op operations;
- transient SQL save failures keep inventories dirty for a later autosave retry;
- player disconnect and resource-restart synchronization include fallback/resnapshot paths.