Operations & Forensics Center — v2.0.0

Operations & Forensics Center — v2.0.0

Nord Inventory v2.0.0 includes an admin-only Operations Center built around the existing server-authoritative inventory model.

Included systems

Permissions

The normal Nord Inventory permission bridge is used:

Nord Staff/ACE/database access continues to flow through the existing permission bridge.

Inventory Manager source of truth

The manager deliberately uses different sources depending on player state:

Auto-SQL

The runtime creates these tables with CREATE TABLE IF NOT EXISTS:

The same schema is included in sql/nord_inventory.sql for manual installations. Existing inventory data is not deleted or rewritten by the Operations migration included with v2.0.0.

Item policies

Edit config/operations.lua. Missing properties mean allow, so updating from an older build does not block existing item movement.

Config.Operations.ItemPolicies = {
    ByName = {
        police_evidence = {
            allowGive = false,
            allowDrop = false,
            allowThrow = false,
            allowTrunk = false,
            allowGlovebox = false,
            allowedJobs = { police = 0 }
        }
    },
    ByCategory = {
        identity = {
            allowDrop = false,
            allowThrow = false
        }
    }
}

Supported policy fields: allowGive, allowDrop, allowThrow, allowPersistentPlace, allowTrunk, allowGlovebox, allowStash, allowContainer, allowPlayer, allowGround, allowedJobs.

Persistent placement

Config.Operations.PersistentPlacedItems controls the feature. Persistent items are intentionally different from ordinary drops:

Scan safety

Forensics scans are on-demand and bounded by:

The scanner overlays live cached inventories on top of database rows. That prevents stale database state and live state from being counted twice.

Equipment Slots 2.0

Existing category rules remain valid. An equipment slot may additionally use items = { ... }:

{
    key = 'phone',
    slot = 8,
    items = { 'phone', 'nord_phone' },
    label = 'Phone',
    icon = 'fa-mobile-screen'
}

Extra equipment slots are opt-in in config/ui.lua so an update does not unexpectedly reserve more player slots.

Optional clothing bridge

Config.Operations.ClothingBridge provides an opt-in hand-off for physical clothing items. It is disabled by default so existing servers keep their current appearance flow.

When enabled, an item whose category matches Category is treated as usable through the configured client export, for example:

ClothingBridge = {
    Enabled = true,
    Category = 'clothing',
    Resource = 'nord_appearance',
    ClientExport = 'UseInventoryClothingItem'
}

The target export receives (itemData, slot) and should return false to reject the equip action. Item-specific use.mode = 'export' definitions always take priority over this generic bridge.

Exports

Server exports added by the Operations module:

exports.nord_inventory:GetItemPolicy(itemName)
exports.nord_inventory:CreateInventorySnapshot(invKey, reason)
exports.nord_inventory:GetInventoryLedger(filters)
exports.nord_inventory:FindItemInstances(filters)

Production notes

The anti-dupe scan is diagnostic: it records alerts but never deletes items automatically. Snapshot restore requires an elevated permission and creates a safety snapshot first. Offline admin edits are audited through the existing Nord ecosystem audit system.


Revision #1
Created 2026-09-30 01:04:42 UTC by Riguita
Updated 2026-09-30 01:04:42 UTC by Riguita