Skip to content
Weapons Meta Editor

Weapons Meta Editor

Edit weapons.meta from the game's default values: damage, fire rate, range, falloff, clip size, recoil and flags, then export the meta files and fxmanifest.

Open the tool Last updated

The Weapons Meta Editor starts from the real default weapons.meta block of every base game and DLC weapon, lets you change damage, fire rate, range, reload, clip size, accuracy, recoil and flags with an explanation per field, compares everything against the game default, and exports a weapons.meta, a weaponcomponents.meta, an fxmanifest.lua and an optional runtime Lua script.

What it is for

Weapon balancing on a FiveM server usually means copying a 200 line <Item type="CWeaponInfo"> block, changing three numbers and hoping nothing else broke. This editor keeps the whole game block for you and only rewrites the fields you touch, so an edited weapon exports as the complete block with your changes in it. You see the default next to every value, derived stats like shots to down a player, and a list of every change you made across all weapons.

Typical jobs: lowering PvP damage on rifles, giving pistols less range, making a sniper semi auto, raising a magazine size, removing recoil shake, or checking what an old weapons.meta from a pack actually changes.

Quick start

  1. Pick a weapon in the list on the left. Use the search box or the Weapons, Vehicle, Other and Edited chips.
  2. Change values with the slider or type a number. Changed fields turn amber, show a changed badge and a Reset link, and the game default is always shown next to the field name.
  3. For magazine size, go to Ammo & reload and edit the clip under Magazines (weaponcomponents.meta).
  4. Edit as many weapons as you like. They all end up in one export.
  5. On the right, open the weapons.meta tab (and components if you changed a clip), then download the files and copy the fxmanifest tab into your resource.
  6. ensure the resource in server.cfg. Players need to reconnect to pick up the changes.

Your edits are saved in this browser. Reset everything in the top bar puts every weapon and clip back to the game defaults after a confirmation.

Tip

You can link straight to a weapon with ?w=WEAPON_NAME, for example /tools/weapons-meta-editor?w=WEAPON_CARBINERIFLE.

The weapon list

The top bar shows the game build the defaults come from (build 3889) and how many weapons and clips you have edited.

Chip What it lists
Weapons Hand weapons, grouped by weapon group (pistols, SMGs, rifles, MGs, shotguns, snipers, heavy, thrown, melee, stun gun). Custom weapons from an import show up here under Imported.
Vehicle Vehicle weapons, grouped by the DLC they came with.
Other Everything else in the game files that is not a hand or vehicle weapon.
Edited Only the weapons that will be exported. The count is on the chip.

Search matches the weapon name, label, group and DLC. Edited weapons carry an edited badge in the list.

The editor

The header shows the weapon picture, label, internal name and which DLC and file the default comes from. Reset weapon (N) puts that one weapon back to default. For a custom imported weapon the button is Remove instead.

Sections

The section chips filter the fields: All, Damage, Fire, Range, Ammo & reload, Accuracy & recoil, Movement & misc, and Changed N, which shows only the fields you changed on this weapon.

Melee and special weapons hide gun only fields like recoil and falloff. Show every field turns them on, and also adds an Other fields panel with every other single value field in the weapon’s block (no descriptions there, change with care). Fields that identify the weapon (Name, Model, Audio, Slot, Group, WheelSlot, StatName, HumanNameHash, PickupHash, MPPickupHash) are never editable.

Numbers keep the game’s style: a field that is a float in the game file stays a float with six decimals, an integer stays an integer. Sliders widen automatically when the default or your value is past the usual range.

Damage

Field What it does
Damage Base damage per bullet, or per hit for melee. A player goes down at 100 points of damage without armour.
DamageType BULLET, EXPLOSIVE, ELECTRIC, MELEE and so on.
NetworkPlayerDamageModifier Multiplier on Damage when the target is another player. The main PvP damage knob on a FiveM server.
NetworkHeadShotPlayerDamageModifier Headshot multiplier against players.
NetworkHitLimbsDamageModifier Arm and leg hit multiplier against players.
NetworkPedDamageModifier Multiplier when a player hits an NPC in a network session.
HeadShotDamageModifierPlayer, MaxHeadShotDistancePlayer Headshot multiplier against peds and the distance past which headshots count as body shots.
HeadShotDamageModifierAI NPC headshot multiplier. The game default of 1000 makes NPC headshots near instant kills.
HitLimbsDamageModifier, LightlyArmouredDamageModifier, VehicleDamageModifier Limb, light armour and vehicle damage multipliers.
ArmouredVehicleGlassDamageOverride Damage to bulletproof glass per hit. -1 uses the per group value.
MeleeDamageMultiplier Pistol whip or rifle butt damage. -1 keeps the default.
Penetration How well bullets go through thin materials.
Force, ForceHitPed, ForceHitVehicle, ForceHitFlyingHeli, FragImpulse, KillshotImpulseScale Physics push on objects, peds, vehicles, helicopters and breakables.
KnockdownCount Hits needed to knock a ped over. -1 disables it.
DamageTime Duration of damage over time effects, like the stun gun.

Fire

Field What it does
FireType INSTANT_HIT for hitscan bullets, PROJECTILE for rockets and grenades, plus MELEE, DELAYED_HIT, VOLUMETRIC_PARTICLE, NONE.
TimeBetweenShots Minimum time between shots in seconds. Lower fires faster.
AlternateWaitTime Wait before the alternate fire (for example the double barrel’s second shell). -1 is not used.
BulletsInBatch, BatchSpread Pellets per shot and their spread. Each pellet deals the full Damage.
Speed Bullet speed. Mostly affects tracers for hitscan weapons.
SpinUpTime, SpinTime, SpinDownTime Minigun barrel timing.

Range

Field What it does
WeaponRange Maximum distance a bullet can hit anything.
LockOnRange Lock on distance (aim assist, homing launchers).
DamageFallOffRangeMin Full damage up to this distance.
DamageFallOffRangeMax Distance where damage reaches its lowest value.
DamageFallOffModifier Damage multiplier at and past the max falloff range. 1.0 means no falloff.
AiSoundRange How far NPCs hear the shot. -1 uses the group default.

Ammo and reload

Field What it does
ClipSize Rounds per magazine, but only for weapons without a default clip component.
AmmoInfo Ammo type the weapon uses and shares, picked from every ammo type in the game.
ReloadTimeMP, ReloadTimeSP Reload time online and in single player. -1 lets the reload animation decide.
AnimReloadRate Reload animation speed. Above 1.0 reloads faster.
VehicleReloadTime Reload time when shooting from a vehicle.
AmmoDiminishingRate Ammo drain for things like the jerry can and fire extinguisher.

Under the fields, Magazines (weaponcomponents.meta) lists every clip component the weapon can attach, marks the default clip and shows each default size. Change a number there to change the real magazine size.

Accuracy and recoil

AccuracySpread, AccurateModeAccuracyModifier, RunAndGunAccuracyModifier, RunAndGunAccuracyMinOverride, RecoilAccuracyMax, RecoilErrorTime, RecoilRecoveryRate, RecoilShakeAmplitude (camera shake strength), RecoilShakeHash and RecoilShakeHashFirstPerson (picked from the shakes the game uses), MinTimeBetweenRecoilShakes in ms, and BulletDirectionOffsetInDegrees.

Movement and misc

CameraFov, ZoomFactorForAccurateMode, FirstPersonScopeFov, ExpandPedCapsuleRadius, and the weapon wheel bars HudDamage, HudSpeed, HudCapacity, HudAccuracy and HudRange (display only).

WeaponFlags also lives here. Current flags show as chips: click one to remove it. Flags you removed from the default stay visible crossed out, click to add them back. Add a flag… lists every flag the game uses, with a short description for the common ones:

Flag What it does
Automatic Keeps firing while the trigger is held.
OnlyFireOneShotPerTriggerPress Semi auto: one shot per press.
Silenced Silent weapon, no gunshot events for AI.
ArmourPenetrating Ignores body armour.
IgnoreHelmets Headshots ignore helmets.
NonLethal Does not kill (stun gun style).
FirstPersonScope Scope overlay in first person.
HiddenFromWeaponWheel Not shown in the weapon wheel.

Derived stats

The Derived stats panel shows estimates worked out from the meta values, with the old value under a tile when you changed it.

Tile Meaning
Damage per shot Damage, times the pellet count for shotguns.
Fire rate Rounds per minute. For semi auto weapons it is a cap, you cannot click faster.
Burst DPS Every bullet hitting, no falloff, no armour.
Empty a clip Time to fire the whole default magazine.
Reload ReloadTimeMP, or “animation” when it is -1. With a real reload time you also get DPS including reloads.
Shots to down a player Body shots with no armour, using NetworkPlayerDamageModifier, plus the headshot count.
Full damage to / Max range Falloff start, the damage left at the falloff max, and WeaponRange.

For guns a falloff chart shows damage over distance for the current values against the default. Melee weapons get Damage per hit, Hits to down a player and Range instead.

These numbers ignore scripts that change damage modifiers, armour, limb hits and animation timing, so treat them as a comparison tool, not the final truth.

Importing an existing weapons.meta

Click Import weapons.meta, paste the file or use Open file, then Parse. You can paste a whole file or a single <Item type="CWeaponInfo"> block, and a weaponcomponents.meta works too (clip sizes are picked up).

  • Base game weapons are compared against their defaults, so you see exactly what the file changes. Their block becomes the new base for that weapon.
  • Weapons that are not in the base game (add-on guns) are added as custom weapons under Imported and exported as they are.
  • The result line tells you how many weapons were loaded, how many differ from the game default, how many are not in the base game, and how many clip components were read.

Output

The right column has five tabs.

Tab What you get
weapons.meta One file with only the weapons you changed, each as its complete block.
components weaponcomponents.meta with the clip components you changed.
fxmanifest A ready fxmanifest.lua for the files you have.
Lua A client script for the runtime alternative (damage and recoil shake only).
Changes Every edited weapon and clip, field by field, default next to the new value, with a reset per field or per weapon.

weapons.meta

Weapons are placed in the same slot of the <Infos> list they sit in inside the game file:

weapons.meta
<?xml version="1.0" encoding="UTF-8"?>
<CWeaponInfoBlob>
  <SlotNavigateOrder />
  <SlotBestOrder />
  <TintSpecValues />
  <FiringPatternAliases />
  <UpperBodyFixupExpressionData />
  <AimingInfos />
  <Infos>
    <Item>
      <Infos />
    </Item>
    <Item>
      <Infos>
        <Item type="CWeaponInfo">
          <Name>WEAPON_PISTOL</Name>
          <Model>W_PI_PISTOL</Model>
          <!-- ...the rest of the game block, unchanged... -->
          <Damage value="30.000000" />
          <!-- ... -->
          <TimeBetweenShots value="0.370000" />
          <!-- ... -->
        </Item>
      </Infos>
    </Item>
    <Item>
      <Infos />
    </Item>
    <Item>
      <Infos />
    </Item>
  </Infos>
  <VehicleWeaponInfos />
  <WeaponGroupDamageForArmouredVehicleGlass />
  <Name>fivemad weapons</Name>
</CWeaponInfoBlob>

weaponcomponents.meta

weaponcomponents.meta
<?xml version="1.0" encoding="UTF-8"?>
<CWeaponComponentInfoBlob>
  <Data />
  <Infos>
    <Item type="CWeaponComponentClipInfo">
      <Name>COMPONENT_PISTOL_CLIP_01</Name>
      <Model>w_pi_pistol_mag1</Model>
      <!-- ... -->
      <ClipSize value="16" />
      <ReloadData ref="RELOAD_DEFAULT_WITH_EMPTIES" />
    </Item>
  </Infos>
  <InfoBlobName>fivemad weapon components</InfoBlobName>
</CWeaponComponentInfoBlob>

fxmanifest.lua

fxmanifest.lua
fx_version 'cerulean'
game 'gta5'

files {
    'weapons.meta',
    'weaponcomponents.meta'
}

data_file 'WEAPONINFO_FILE_PATCH' 'weapons.meta'
data_file 'WEAPONCOMPONENTSINFO_FILE' 'weaponcomponents.meta'

Put the meta files next to this fxmanifest.lua in one resource folder. WEAPONINFO_FILE_PATCH is the type commonly used to override base game weapons. Items replace the game’s weapon by <Name>, which is why the export always ships the whole block.

Lua (runtime alternative)

Damage and recoil shake can also be changed from a client script, without a meta file. The Lua tab writes that script for your Damage and RecoilShakeAmplitude changes, and lists the weapons whose other changes still need the meta file:

client.lua
-- client.lua (client side, runs for every player)
-- Damage is worked out on the shooter's client, so every client needs this, not just the server.

-- SetWeaponDamageModifier (game native 0x4757F00BC6323CFE) multiplies the weapon's base damage.
-- It is not reset when the resource stops, the value stays until something sets it again.
local damageModifiers = {
    [`WEAPON_PISTOL`] = 1.1538, -- Damage 26 -> 30
}

-- SetWeaponRecoilShakeAmplitude is a FiveM native, it writes RecoilShakeAmplitude directly.
local recoilAmplitude = {
    -- no RecoilShakeAmplitude changes
}

CreateThread(function()
    for weapon, modifier in pairs(damageModifiers) do
        SetWeaponDamageModifier(weapon, modifier)
    end
    for weapon, amplitude in pairs(recoilAmplitude) do
        SetWeaponRecoilShakeAmplitude(weapon, amplitude)
    end
end)
  • SetWeaponDamageModifier(weaponHash, multiplier) multiplies the weapon’s base damage on the client that runs it. It does not need to run every frame and it is not reset when the resource stops.
  • SetWeaponRecoilShakeAmplitude(weaponHash, amplitude) is a FiveM native that sets RecoilShakeAmplitude directly. GetWeaponDamageModifier and GetWeaponRecoilShakeAmplitude read them back.
  • SetPlayerWeaponDamageModifier(player, modifier) and SetPlayerWeaponDefenseModifier(player, modifier) scale damage per player for every weapon, useful for buffs, safe zones or jobs.

Damage is worked out on the shooter’s client, so a runtime modifier has to run on every client. Use natives when you want to tune damage live or per situation. Use weapons.meta for everything else (fire rate, range, falloff, reload, accuracy, flags) and for values that should be the same for everyone from the moment they join.

Common mistakes

  • Changing ClipSize in weapons.meta for a normal gun. Most guns have a default clip component, and the game uses its ClipSize instead. Edit the magazine under Ammo & reload and ship the weaponcomponents.meta.
  • Shipping only the changed lines. A partial <Item> breaks the weapon. Ship the whole block, which the export does for you.
  • Two resources editing the same weapon. The one loaded last wins. Keep all weapon edits in one resource.
  • Expecting a resource restart to be enough. Players have to reconnect to pick up meta changes.
  • Running the runtime Lua on the server. It is client side and has to run on every client.

Note

Nobody outside Rockstar has an official description of every CWeaponInfo field. The one line explanations are the community’s best understanding plus what the values in the game files show. Test big changes in game.

Limitations

Only single value fields can be edited. Nested blocks such as OverrideForces, attach points and the explosion table are kept as they are (an import that changes them still exports them). The derived stats are estimates. Everything runs in your browser and nothing is uploaded.