İçeriğe geç

Silahlar, geri tepme ve şarjörler

Üç yer: bs_weapons/config/config_weapons.lua (ekler, şarjörler, gürültü), bs_skills/config/config_recoil.lua (geri tepme) ve bs_inventory/config/config_items.lua içindeki silah eşyaları.

Bir silah, data.weapon = 'WEAPON_X' olan bir envanter eşyasıdır. Mühimmat da eşyadır (ammo_pistol, ammo_rifle…). Dünyada bulduğun silah boştur, bilerek. Bir adminin oluşturduğu silahlar bir şarjörle gelir (spawnRounds).

Ekler, bir tekerlekte taktığın gerçek eşyalardır. Varsayılan tuş O (Weapons.Settings.openKey, komut /weaponwheel). Weapons.Slots içindeki slotlar: muzzle, optic, grip, light, laser, magazine.

Weapons.Attachments içindeki her ek, eşyayı temel oyun bileşenine silah başına eşler, çünkü bir tabanca susturucusu tüfek susturucusundan farklı bir bileşendir. Yanlış eşleşme hiçbir şeyi bozmaz, slot sadece sunulmaz.

Ne yaparlar (Weapons.Effects):

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

Susturucu burada çok önemli, zombiler silah seslerini duyar (Weapons.Noise).

Weapons.Magazines, silah başına bir satır:

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

Her base değeri F1 konsolunda da var (Silahlar ve Geri Tepme).

Şarjör kontrolü (Weapons.MagCheck): oyuncular şarjörlerini kontrol edebilir. Varsayılan olarak tam sayıyı değil, kabaca ne kadar dolu olduğunu söyler (“yaklaşık yarım”). “17 / 30” istiyorsan exact = true yap.

bs_skills/config/config_recoil.lua içinde Skills.Recoil. Her atış kamerayı grubun kick değeri kadar yukarı iter, drift değerine kadar yana kayar, maxClimb değerini asla aşmaz ve shake kadar sarsılır:

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 bir silah için grubu geçersiz kılar (.50 tabanca, revolver, ağır keskin nişancı…).

Onu ölçekleyenler:

  • Savaş yeteneği: seviye 0 lowSkillMult (1.35), azami seviye highSkillMult (0.70). Steady Hands perk’i x steadyHandsMult.
  • Ekler: susturucu ve kabza yükselmeyi ve sarsıntıyı azaltır.
  • Uyuşturucular: bsDrugMods.sway statebag’i de geri tepmeyi ölçekler, drugMin..drugMax ile sınırlı.
  • Focus booster: x steady.
  • F1: herkes için Global.recoilMultiplier.

Atışı bıraktıktan sonra yükselmenin %60’ı 250 ms içinde geri iner (recoverFraction, recoverMs). Ayar yaparken her atışın sayılarını F8’e yazdırmak için debug = true yap.