Salta ai contenuti

Armi, rinculo e caricatori

Tre posti: bs_weapons/config/config_weapons.lua (accessori, caricatori, rumore), bs_skills/config/config_recoil.lua (rinculo) e gli oggetti arma in bs_inventory/config/config_items.lua.

Un’arma è un oggetto dell’inventario con data.weapon = 'WEAPON_X'. Anche le munizioni sono oggetti (ammo_pistol, ammo_rifle…). Un’arma che trovi nel mondo è scarica, di proposito. Le armi che un admin fa comparire hanno un caricatore (spawnRounds).

Gli accessori sono oggetti reali che monti da una ruota. Tasto predefinito O (Weapons.Settings.openKey, comando /weaponwheel). Slot in Weapons.Slots: muzzle, optic, grip, light, laser, magazine.

Ogni accessorio in Weapons.Attachments associa l’oggetto al componente del gioco base per arma, perché il soppressore di una pistola è un componente diverso da quello di un fucile. Un abbinamento sbagliato non rompe nulla, lo slot semplicemente non viene offerto.

Cosa fanno (Weapons.Effects):

suppressor = { noiseScale = 0.28 }, -- 90 m of noise becomes ~25 m
grip = { recoil = 0.85 },
extmag = { ammo = 1.5 },

Il soppressore conta molto qui, gli zombie sentono gli spari (Weapons.Noise).

Weapons.Magazines, una riga per arma:

WEAPON_PISTOL = { base = 12, ext = 16, ammo = 'ammo_pistol' },
WEAPON_SMG = { base = 30, ext = 45, drum = 100, ammo = 'ammo_pistol' },
WEAPON_ASSAULTRIFLE = { base = 30, ext = 45, drum = 100, ammo = 'ammo_rifle' },

Ogni valore base è anche nella console F1 (Armi e rinculo).

Controllo del caricatore (Weapons.MagCheck): i giocatori possono controllare il caricatore. Di default dice più o meno quanto è pieno (“circa a metà”) e non il numero esatto. Imposta exact = true se vuoi “17 / 30”.

Skills.Recoil in bs_skills/config/config_recoil.lua. Ogni colpo solleva la telecamera del kick del gruppo, deriva di lato fino a drift, non sale mai oltre maxClimb e trema di shake:

groups = {
pistol = { kick = 0.35, drift = 0.10, maxClimb = 2.5, shake = 0.05 },
rifle = { kick = 0.30, drift = 0.12, maxClimb = 3.5, shake = 0.10 },
shotgun = { kick = 1.10, drift = 0.25, maxClimb = 3.0, shake = 0.22 },
sniper = { kick = 1.40, drift = 0.20, maxClimb = 3.0, shake = 0.20 },
...
},

weapons.WEAPON_X sovrascrive un gruppo per una singola arma (la pistola .50, il revolver, il cecchino pesante…).

Cosa lo scala:

  • Skill di combattimento: il livello 0 è lowSkillMult (1.35), il livello massimo highSkillMult (0.70). Perk Steady Hands x steadyHandsMult.
  • Accessori: il soppressore e l’impugnatura riducono salita e tremolio.
  • Droghe: lo statebag bsDrugMods.sway scala anche il rinculo, limitato a drugMin..drugMax.
  • Booster Focus: x steady.
  • F1: Global.recoilMultiplier per tutti.

Dopo che smetti di sparare, il 60% della salita rientra in 250 ms (recoverFraction, recoverMs). Imposta debug = true per stampare in F8 i numeri di ogni colpo durante la regolazione.