Zum Inhalt springen

Waffen, Rückstoß und Magazine

Drei Orte: bs_weapons/config/config_weapons.lua (Aufsätze, Magazine, Lärm), bs_skills/config/config_recoil.lua (Rückstoß) und die Waffen-Items in bs_inventory/config/config_items.lua.

Eine Waffe ist ein Inventar-Item mit data.weapon = 'WEAPON_X'. Munition sind auch Items (ammo_pistol, ammo_rifle…). Eine Waffe, die du in der Welt findest, ist leer, mit Absicht. Waffen, die ein Admin spawnt, kommen mit einem Magazin (spawnRounds).

Aufsätze sind echte Items, die du an einem Rad anbringst. Standardtaste O (Weapons.Settings.openKey, Befehl /weaponwheel). Slots in Weapons.Slots: muzzle, optic, grip, light, laser, magazine.

Jeder Aufsatz in Weapons.Attachments ordnet das Item pro Waffe der Komponente des Basisspiels zu, denn ein Pistolen-Schalldämpfer ist eine andere Komponente als ein Gewehr-Schalldämpfer. Eine falsche Zuordnung macht nichts kaputt, der Slot wird dann einfach nicht angeboten.

Was sie bewirken (Weapons.Effects):

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

Der Schalldämpfer ist hier sehr wichtig, Zombies hören Schüsse (Weapons.Noise).

Weapons.Magazines, eine Zeile pro Waffe:

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' },

Jeder base-Wert steht auch in der F1-Konsole (Waffen und Rückstoß).

Magazincheck (Weapons.MagCheck): Spieler können ihr Magazin prüfen. Standardmäßig sagt es ungefähr, wie voll es ist (“etwa halb”), nicht die genaue Anzahl. Setze exact = true, wenn du “17 / 30” willst.

Skills.Recoil in bs_skills/config/config_recoil.lua. Jeder Schuss hebt die Kamera um den kick der Gruppe, driftet seitlich bis drift, steigt nie über maxClimb und verwackelt um 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 überschreibt eine Gruppe für eine Waffe (die .50-Pistole, den Revolver, das schwere Scharfschützengewehr…).

Was ihn skaliert:

  • Kampf-Skill: Level 0 ist lowSkillMult (1.35), das Maximallevel highSkillMult (0.70). Perk Steady Hands x steadyHandsMult.
  • Aufsätze: Schalldämpfer und Griff verringern Anstieg und Verwackeln.
  • Drogen: der Statebag bsDrugMods.sway skaliert den Rückstoß ebenfalls, begrenzt auf drugMin..drugMax.
  • Focus-Booster: x steady.
  • F1: Global.recoilMultiplier für alle.

Nachdem du aufhörst zu schießen, kommen 60 % des Anstiegs innerhalb von 250 ms wieder herunter (recoverFraction, recoverMs). Setze debug = true, um beim Feintuning die Zahlen jedes Schusses in F8 auszugeben.