Store / Pin Protected Backpack Storage [ESX]

PIN protected backpack with persistent ox_inventory storage

Give your players a backpack that's actually secure. Every bag gets its own 4-digit PIN, its own persistent stash and automatic backups, so nothing gets lost.

Features

  • PIN protected storage: each backpack is locked behind a personal 4-digit PIN, salted and hashed, never stored in plain text
  • Persistent ox_inventory stash: contents are saved per backpack and survive restarts
  • Remember this device: players can skip the PIN on their own device, with a configurable lifetime
  • Owner lock (optional): only the first owner can unlock and open a bag
  • Backpack rules: limit players to one backpack and block backpacks inside backpacks
  • Automatic backups: on open, on a timer and on resource stop
  • Discord logging: created, PIN set, unlock success or fail and denied attempts, each toggleable
  • Backpack prop: shown on the player's back while they carry the item
  • Modern PIN menu: clean NUI with animations

Fully configurable from one file

Everything is in config.lua:

  • All UI text: titles, labels, buttons, footer and error messages
  • All UI colours: change one hex value and the whole menu follows
  • UI image: drop in your own PNG and set its name in the config
  • Item, stash size and weight, prop, security, backups, logs and notification messages

Requirements

  • ox_lib
  • ox_inventory
  • oxmysql

Installation

  1. Put peysoh_backpack in your resources folder
  2. Add the item to ox_inventory/data/items.lua (snippet in the README)
  3. Copy the included item icon into ox_inventory/web/images/
  4. Add ensure peysoh_backpack to your server.cfg after ox_lib, oxmysql and ox_inventory
  5. Restart. The database tables are created automatically, so there's no SQL to import.

Details

FrameworkStandalone (ox_inventory based)
DatabaseAuto-created (oxmysql)
ConfigOpen config.lua
CodeEscrow protected (Cfx.re Asset Escrow)
Item iconIncluded
DocumentationREADME with full setup



adb94824ae5dd6c981d6a0d6fa672b3af48e5c2f.pngf3c6cbfa92f0cd715942e11228775692078a3423.png