🏪 Player-Owned Stores
Players can own and operate their own Ammunation locations. Manage stock, track sales history, set up interaction zones — a real business loop, not a static vendor.
📋 4-Step Order & License Workflow
No more instant-buy weapons. Every purchase flows through 4 dedicated UIs:
-
Customer browses the catalogue and submits an order
-
Manager reviews and approves
-
LSPD verifies the buyer's license
-
Customer returns to collect
Creates real RP opportunities for store owners and police.
🎯 XP-Driven Recoil System
The more your players shoot, the better they get. Earn XP per shot and per hit — recoil gradually reduces up to a configurable cap. Skill matters. Grinders get rewarded.
🏹 Shooting Ranges
Fully configurable practice ranges with object or NPC targets, per-weapon-group fees that scale with rounds, and per-range overrides. Perfect for training before a heist.
🛡️ Anti-Exploit Built In
-
Per-minute order & XP rate limits
-
World-shot cooldown
-
Optional auto-kick on abuse
-
Full server-side validation
🔗 Plug & Play Integrations
-
Frameworks: QBCore and ESX (auto-detected)
-
Targets: qb-target or ox_target (auto-detected)
-
Inventories: ox_inventory, qs-inventory, codem-inventory, qb-inventory — examples included
-
Notifications: okokNotify, mythic_notify, ox_lib — examples included
-
Discord webhooks for admin, orders, LSPD, and range channels
📦 What's Included
-
Full source (escrowed/open — edit to your model)
-
Custom NUI (HTML/CSS/JS) — clean, modern, mobile-friendly
-
QBCore + ESX SQL files (safe to re-run)
-
Translatable locales
-
Complete configuration in a single
Config.lua -
Detailed README
⚙️ Commands
Command
Purpose
-
/ammuadmin
Admin panel — create/delete stores, change ownership
-
/lspdammu
LSPD verification panel
-
/shootingstats
Player's XP / accuracy / recoil stats
-
/setshootingxp
Admin XP override.

