All packs
Armory FiveM police armory script in action

FiveM script

Armory

A police armory for FiveM. Officers take the gear their rank allows, and every weapon is signed out with a serial number.

$14.99

Version
1.0.5
Compatible with
ESX, QBCore, Qbox, ox_inventory, Standalone
License
Bound to your Cfx.re account (code-locked)
Delivery
Right after payment, to your Cfx.re account
Refunds
Digital product, no refunds after deliveryTebex terms of sale

About

Armory adds a police armory to your station. Officers walk up to the armory window, pick the ready-made loadout their rank allows or single pieces of equipment, and sign it all out.

Attachments (flashlight, scope, grip, extended magazine, suppressor) are picked on a turning 3D model and show up on it right away. Every weapon gets a serial number; returns are checked against what was issued, and every issue and return is logged.

Used together with Gunrack, long guns go from the armory panel straight into the rack of a nearby vehicle.

What is included

  • Rank based loadouts: Patrol, Shotgun Patrol, Patrol Rifle and SWAT (editable in config.lua)
  • Single equipment: sidearms, taser, nightstick, flashlight, shotgun, rifles, SMG, radio, bandages and body armor
  • Turning 3D preview, attachments appear on the model as you pick them
  • Attachments limited by rank (example: suppressor for Lieutenant and up)
  • ARM-XXXXXX serial on every weapon, shown in ox_inventory and QBCore item info
  • Return checks: weapons by serial, attachments, unused ammo and radios come back
  • Anything missing stays on the officer's record; supervisors see it with /armorylist and write it off with /armoryclear
  • Issue and return log in data/log.json, optional Discord webhook

What is in the package

Cfx asset escrow locks only the core of the script. The config, language and framework / inventory bridge files you adapt to your server stay open, and the UI files are not locked either.

  • armory(9)
    • fxmanifest.lua
    • config.luaOpen
    • README.md
    • client(2)
      • main.luaLocked
      • preview.luaLocked
    • server(3)
      • framework.luaOpen
      • inventory.luaOpen
      • main.luaLocked
    • shared(1)
      • init.luaLocked
    • locales(9)
      • tr.luaOpen
      • en.luaOpen
      • de.luaOpen
      • es.luaOpen
      • fr.luaOpen
      • it.luaOpen
      • nl.luaOpen
      • pl.luaOpen
      • pt.luaOpen
    • html(4)
      • index.html
      • app.js
      • style.css
      • img(12)
        • WEAPON_CARBINERIFLE.png
        • WEAPON_COMBATPISTOL.png
        • WEAPON_FLASHLIGHT.png
        • WEAPON_NIGHTSTICK.png
        • WEAPON_PISTOL.png
        • WEAPON_PUMPSHOTGUN.png
        • WEAPON_SMG.png
        • WEAPON_SPECIALCARBINE.png
        • WEAPON_STUNGUN.png
        • item_armor.png
        • item_bandage.png
        • item_radio.png
    • data(2)
      • issued.json
      • log.json

Technical details

Performance

  • No loop at all with ox_target or qb-target
  • In marker mode a distance check every 800 ms, and every frame only within 12 m of an armory
  • The 3D preview runs only while the panel is open

Security

  • Everything is checked on the server: job, rank, distance to the armory and cooldown
  • One loadout at a time; a weapon cannot be taken twice before it is returned
  • Rounds that do not come back are logged, and new gear then waits a short cooldown

Framework and inventory

  • ESX Legacy, QBCore, Qbox and standalone (ACE permission)
  • ox_inventory, QBCore inventories, the ESX loadout or native weapons
  • ox_target, qb-target, or a marker and the E key without a target script
  • On QBCore and Qbox only officers on duty take gear
  • Needs OneSync (on by default on current servers)

Open files

  • Code-locked with Cfx asset escrow
  • Open: config.lua, language files, server/framework.lua, server/inventory.lua
  • Framework and inventory bridges are open, so a custom inventory can be added

With other scripts

  • Exports for MDT and evidence scripts: GetIssued(source), IsArmoryWeapon(serial)
  • With Gunrack: long guns load into a vehicle rack, weapons left in a rack count on return
  • Optional stock per weapon, refilled with /armoryrestock

Languages

  • 9 languages included: English, Turkish, German, French, Spanish, Portuguese (Brazil), Polish, Dutch, Italian
  • Set Config.Locale = 'en', or 'auto' to show every player the language of their own game
  • Copy a file in locales/ to add any other language