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.
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
- Pick a weapon in the list on the left. Use the search box or the Weapons, Vehicle, Other and Edited chips.
- 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.
- For magazine size, go to Ammo & reload and edit the clip under Magazines (weaponcomponents.meta).
- Edit as many weapons as you like. They all end up in one export.
- 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.
ensurethe resource inserver.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:
<?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
<?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
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 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.GetWeaponDamageModifierandGetWeaponRecoilShakeAmplituderead them back.SetPlayerWeaponDamageModifier(player, modifier)andSetPlayerWeaponDefenseModifier(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
ClipSizein weapons.meta for a normal gun. Most guns have a default clip component, and the game uses itsClipSizeinstead. Edit the magazine under Ammo & reload and ship theweaponcomponents.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.
