A weapon panel for FiveM with skin support, ammo refill and license-based access. Works on ESX, QBCore and Qbox out of the box.
Only players an admin has registered can open it. From the panel they can pull the weapons they are allowed to, apply skins from any addon weapon pack, top up ammo, and change tints/attachments. Admins get an extra tab to hand out or take away access.
(ES) Panel de armas con skins, recarga de munición y acceso por licencia. Compatible con ESX / QBCore / Qbox. Solo los jugadores que un admin registre pueden abrirlo.)
- oxmysql
- A weapon skin pack if you want the Skins tab (e.g. any addon
WEAPON_*pack).
-
Drop the
jrmy_armoryfolder in your resources and addensure jrmy_armorytoserver.cfg(after your framework and oxmysql). -
The access table is created automatically on first start. If you'd rather do it by hand, import
sql/install.sql. -
Give yourself admin so you can hand out access. The ace works on every framework:
add_ace group.admin jrmy_armory.admin allowOr from the server console, grant full access to a license/id directly:
armory:grant 1 armory:grant license:xxxxxxxxxxxxxxxx -
Open it in game with
/armory(bind a key from Settings > Key Bindings > FiveM or setConfig.OpenKey).
The Skins tab is driven entirely by Config.Skins. Each entry is one base weapon with a
list of color variants, and every variant is just an addon weapon spawn name from the pack
you installed:
{
id = 'rifle', label = 'Rifle', category = 'rifles',
variants = {
{ weapon = 'WEAPON_YOURPACK_RIFLE_BLACK', label = 'Black', color = '#15171b' },
{ weapon = 'WEAPON_YOURPACK_RIFLE_PINK', label = 'Pink', color = '#edb2c2' },
},
},That is what keeps the resource pack-agnostic — drop in any pack and describe its weapons
here. config.lua ships with a placeholder template; replace the groups with the real spawn
names your pack adds.
Weapon images are read straight from your inventory resource over nui://, so nothing has
to be copied into this resource. Point Config.Images at wherever the images live:
Config.Images = { resource = 'ox_inventory', path = 'web/images', ext = 'png', case = 'lower' }If an image is missing the panel draws a colored silhouette instead, so it never looks broken.
Access is per license. When you grant someone from the Admin tab you choose the scope:
- All — they can pull anything in the catalog and skins (weapons "sueltas").
- Pick — they can only pull the weapons you selected. A picked list is always enforced, and those players see the rest of the catalog locked.
Config.Locale sets the default (en / es). Players can switch it from the header and
their choice is remembered. UI strings live in html/app.js, server messages in locales/.
- Weapons are handed out with the natives, so it behaves like an armory rather than an
inventory shop. If you run an item-based inventory and want the weapons to persist there,
hook
jrmy_armory:cl:giveWeaponon the client.