
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