← Guides
Installation

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.

You need file access to the server (not just txAdmin's recipe deploy) and a text editor. Framework doesn't matter for the pack itself — only for the last step.

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.

If a ped T-poses or the weapon has no grip, stop here and read Fix missing weapon animations & T-pose — it's a load-order problem, not a bad install.

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