# Persistent Placed Items & Movement Policies

# Persistent Placed Items & Movement Policies

**Applies to:** `Nord Inventory v2.0.0`

## Persistent placed items

Persistent placement is deliberately separate from ordinary ground drops. Ordinary drops still use the configured lifetime; persistent placements are backed by `nord_inventory_placed_items` plus normal inventory storage and survive resource/server restarts.

```lua
Config.Operations.PersistentPlacedItems = {
    Enabled = true,
    MaxPerPlayer = 30,
    MaxDistance = 8.0,
    DefaultModel = 'prop_cs_cardbox_01'
}
```

When an item is placed persistently, both inventory sides are persisted together through an atomic transaction where applicable. Empty persistent placed inventories are removed from the registry and storage. Arbitrary client-provided models are not trusted.

## Item movement policies

Policies live in `config/operations.lua`. Missing fields mean **allow**.

```lua
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 fields: `allowGive`, `allowDrop`, `allowThrow`, `allowPersistentPlace`, `allowTrunk`, `allowGlovebox`, `allowStash`, `allowContainer`, `allowPlayer`, `allowGround`, `allowedJobs`.

Use item-specific rules for exceptional items and category rules for broad groups. Item rules and server-side validation are authoritative; disabling a NUI action alone is not a security boundary.
