Saltearse al contenido

Armas, retroceso y cargadores

Tres sitios: bs_weapons/config/config_weapons.lua (accesorios, cargadores, ruido), bs_skills/config/config_recoil.lua (retroceso) y los ítems de armas en bs_inventory/config/config_items.lua.

Un arma es un ítem de inventario con data.weapon = 'WEAPON_X'. La munición también son ítems (ammo_pistol, ammo_rifle…). Un arma que encuentras en el mundo está vacía, a propósito. Las armas que genera un admin vienen con un cargador (spawnRounds).

Los accesorios son ítems reales que montas en una rueda. Tecla por defecto O (Weapons.Settings.openKey, comando /weaponwheel). Ranuras en Weapons.Slots: muzzle, optic, grip, light, laser, magazine.

Cada accesorio de Weapons.Attachments asocia el ítem con el componente del juego base por arma, porque el silenciador de una pistola es un componente distinto del de un rifle. Una asociación equivocada no rompe nada, simplemente no se ofrece esa ranura.

Qué hacen (Weapons.Effects):

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

El silenciador importa mucho aquí, los zombis oyen los disparos (Weapons.Noise).

Weapons.Magazines, una fila por 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' },

Cada valor base también está en la consola F1 (Armas y retroceso).

Revisión del cargador (Weapons.MagCheck): los jugadores pueden revisar su cargador. Por defecto dice más o menos cuán lleno está (“más o menos la mitad”) y no la cuenta exacta. Pon exact = true si quieres “17 / 30”.

Skills.Recoil en bs_skills/config/config_recoil.lua. Cada disparo levanta la cámara según el kick del grupo, se desvía hacia un lado hasta drift, nunca sube más de maxClimb y tiembla según 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 sobrescribe un grupo para un arma (la pistola .50, el revólver, el francotirador pesado…).

Qué lo escala:

  • Habilidad de combate: el nivel 0 es lowSkillMult (1.35), el nivel máximo highSkillMult (0.70). Perk Steady Hands x steadyHandsMult.
  • Accesorios: el silenciador y la empuñadura reducen la subida y el temblor.
  • Drogas: el statebag bsDrugMods.sway también escala el retroceso, limitado a drugMin..drugMax.
  • Booster Focus: x steady.
  • F1: Global.recoilMultiplier para todos.

Cuando dejas de disparar, el 60% de la subida vuelve a bajar en 250 ms (recoverFraction, recoverMs). Pon debug = true para imprimir en F8 los números de cada disparo al ajustar.