ATY Scripts Logo
ATY Scripts/Docs/Weapon Editor/Shooting range

Shooting range

Shooting range

The range measures what a weapon actually does, under conditions you can rebuild exactly. It needs the range scope.

/gunsmithrange

Why scenarios

Setting distance and target by hand makes every session slightly different, and the numbers stop being comparable. A scenario rebuilds the same conditions every time — which is the precondition for comparing anything at all.

Scenario Distance Target Notes
Close quarters 5 m Patrol
Mid range 25 m Static
Long range 80 m Static
Armoured target 15 m Armoured
Under pressure 10 m Full combat
Bench 15 m Static, immortal Damage, spread and RPM only — nothing dies, so TTK and STK are not measured
Distance curve from 5 m Static, immortal The target steps further away stage by stage

The distance curve collects a set number of countable hits at each stage before the target moves back on its own. The target must be immortal for this: a death would cut the curve in half, and a killing blow is excluded from the measurement anyway.

Scenarios live in Config.RangeScenarios. Their id is written into every session record and later used to compare sessions of the same scenario, so changing an id breaks comparison against older records.

What it records

Metric Meaning
TTK Time to kill
STK Shots to kill
DPS Damage per second
Accuracy Hits over shots
Avg / total damage Per hit, and cumulative
RPM Measured rate of fire
Zone split Head / torso / limb hit counts

Sessions are stored in aty_gunsmith_range with the balance version they were recorded under. Without that, comparing two sessions across a deploy would be meaningless.

Only sessions with three or more hits are recorded.

Comparing

The comparison panel needs at least two recorded sessions. It shows the difference without a verdict: a lower TTK means faster, which is good on one weapon and bad on another. The call is yours.

Where sessions come from different balance versions, the panel says so — and reminds you that meta fields only took effect after a restart, so a session recorded before that restart was measured on the old values.

Class averages shown next to a result are computed from your own recorded sessions. They are also what the balance lab linter compares against.

Falloff

Falloff fields — start range, end range, damage modifier — are meta class. A change only reaches the curve after a server restart. The range says so on the curve panel rather than letting you measure a value that is not live yet.

Where it is

The default range zone is defined in Config.Zones:

shooting_range = { coords = vector3(13.0, -1097.0, 29.8), radius = 2.0, label = 'range' },

and referenced from Config.Access.range.zones. Move it, or add more, to suit your map.

See also

  • Balance lab
  • Permissions
ATY Scripts LogoATY SCRIPTS

Creamos scripts de FiveM altamente optimizados para QBCore y ESX. Máximo rendimiento, código preciso, cero lag.

Unirse a la comunidad

Socio

Socios oficiales de Tebex. Pago seguro e integración con Cfx.re Keymaster.

Legal

Sin afiliación con Rockstar Games, Cfx.re, FiveM ni Take-Two Interactive. Las compras se rigen por los Términos de Servicio de Tebex.

© 2026 ATY SCRIPTS. Todos los derechos reservados.