Install a weapon pack in FiveM
This covers a standard Story Loadout weapon pack — the kind that adds one or more new weapons with their own models, stats and animations. You'll go from the downloaded folder to firing the weapon in game.
1. Drop the resource in
Unzip the pack and move the folder into your resources directory. Keep our folder name — don't rename it, the manifest and data files reference it.
resources/
[sl]/
sl_weapons_tempest/
fxmanifest.lua
stream/
data/
weapons.meta
weaponcomponents.meta
weaponanimations.meta
loadouts.meta
The [sl] wrapper folder is optional but keeps our resources together and loading in the right order.
2. Start it before your framework loads weapons
Add it to server.cfg. Order matters: the pack must start before anything that reads weapon data (most inventory scripts do this on their own start).
# after mapmanager / chat / spawnmanager, before your framework
ensure sl_weapons_tempest
# ...then your inventory / framework resources
3. Confirm the data files are being read
Our fxmanifest.lua already declares the meta files with data_file entries. You don't need to touch server.cfg for those. Start the server and watch the console — you want to see the resource start with no red lines. A warning about a missing audio bank is fine for melee-free packs.
4. Give yourself the weapon to test
Every weapon has a hash name, listed in the pack's README (e.g. WEAPON_TEMPEST_LONGSWORD). Test with a console command before wiring it into shops:
# RCON / server console, target your own player id
giveWeapon 1 WEAPON_TEMPEST_LONGSWORD 250
Or client-side while developing:
GiveWeaponToPed(PlayerPedId(), `WEAPON_TEMPEST_LONGSWORD`, 250, false, true)
5. Add it to your inventory / shop
Now register the weapon with your framework so players can actually get it. The item name is the weapon hash, lowercased, in most inventories.
ox_inventory
-- data/weapons.lua
['WEAPON_TEMPEST_LONGSWORD'] = {
label = 'Tempest Longsword',
weight = 1800,
durability = 0.1,
},
ESX (legacy items)
INSERT INTO items (name, label) VALUES
('weapon_tempest_longsword', 'Tempest Longsword');
QBCore
-- qb-core/shared/weapons.lua
[`WEAPON_TEMPEST_LONGSWORD`] = {
name = 'weapon_tempest_longsword',
label = 'Tempest Longsword',
weapontype = 'Melee',
ammotype = nil,
},
6. Restart and verify
- Weapon appears in the shop / can be spawned.
- Model loads (no invisible weapon, no error prop).
- Draw, idle, attack and holster animations all play.
- Components attach cleanly if it's a ranged weapon.
That's it. The same flow works for every Story Loadout weapon pack — only the folder name and hashes change.
Questions, or something not working? The Discord is the fastest way to get an answer — and where every new drop lands first.
Join the Discord