Przejdź do głównej zawartości

Broń, odrzut i magazynki

Trzy miejsca: bs_weapons/config/config_weapons.lua (dodatki, magazynki, hałas), bs_skills/config/config_recoil.lua (odrzut) i przedmioty broni w bs_inventory/config/config_items.lua.

Broń to przedmiot w ekwipunku z data.weapon = 'WEAPON_X'. Amunicja to też przedmioty (ammo_pistol, ammo_rifle…). Broń znaleziona w świecie jest pusta, celowo. Broń stworzona przez admina ma jeden magazynek (spawnRounds).

Dodatki to prawdziwe przedmioty, które montujesz w kole. Domyślny klawisz O (Weapons.Settings.openKey, komenda /weaponwheel). Sloty w Weapons.Slots: muzzle, optic, grip, light, laser, magazine.

Każdy dodatek w Weapons.Attachments mapuje przedmiot na komponent z podstawowej gry dla każdej broni osobno, bo tłumik do pistoletu to inny komponent niż do karabinu. Zła para niczego nie psuje, slot po prostu nie jest oferowany.

Co robią (Weapons.Effects):

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

Tłumik ma tu duże znaczenie, zombie słyszą strzały (Weapons.Noise).

Weapons.Magazines, jeden wiersz na broń:

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

Każda wartość base jest też w konsoli F1 (Broń i odrzut).

Sprawdzanie magazynka (Weapons.MagCheck): gracze mogą sprawdzić magazynek. Domyślnie mówi mniej więcej, jak jest pełny (“mniej więcej w połowie”), a nie dokładną liczbę. Ustaw exact = true, jeśli chcesz “17 / 30”.

Skills.Recoil w bs_skills/config/config_recoil.lua. Każdy strzał podnosi kamerę o kick grupy, znosi na bok do drift, nigdy nie wspina się powyżej maxClimb i drży o 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 nadpisuje grupę dla jednej broni (pistolet .50, rewolwer, ciężki snajperski…).

Co go skaluje:

  • Umiejętność walki: poziom 0 to lowSkillMult (1.35), poziom maksymalny highSkillMult (0.70). Perk Steady Hands x steadyHandsMult.
  • Dodatki: tłumik i chwyt zmniejszają wznoszenie i drżenie.
  • Narkotyki: statebag bsDrugMods.sway też skaluje odrzut, ograniczony do drugMin..drugMax.
  • Booster Focus: x steady.
  • F1: Global.recoilMultiplier dla wszystkich.

Po przestaniu strzelania 60% wzniosu wraca w dół w ciągu 250 ms (recoverFraction, recoverMs). Ustaw debug = true, żeby przy strojeniu wypisywać liczby każdego strzału w F8.