Files
VnUtest/garrysmod/addons/tacrp/lua/weapons/tacrp_io_sg550.lua
2026-03-31 10:27:04 +03:00

376 lines
9.5 KiB
Lua
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
SWEP.Base = "tacrp_base"
SWEP.Spawnable = true
AddCSLuaFile()
// names and stuff
SWEP.PrintName = "SIG SG 550-1 Sniper"
SWEP.AbbrevName = "SG 550-1"
SWEP.Category = "[FT] Оружие"
SWEP.SubCatTier = "1Elite"
SWEP.SubCatType = "6Marksman Rifle"
SWEP.Description = "Carbine caliber marksman rifle with fast automatic fire. Easy to control in short bursts and has high armor penetration. Equipped with a 6x scope by default."
SWEP.Description_Quote = "\"I work alone, like you. We always work alone.\"" -- The Bourne Identity (2002)
SWEP.Trivia_Caliber = "5.56x45mm"
SWEP.Trivia_Manufacturer = "SIG Sauer AG"
SWEP.Trivia_Year = "1988"
SWEP.Faction = TacRP.FACTION_COALITION
SWEP.Credits = [[
Model: Hav0c & Twinke Masta
Texture: Twinke Masta
Sound: Farion, Treyarch & Tactical Intervention
Animation: Tactical Intervention
]]
SWEP.ViewModel = "models/weapons/tacint_shark/v_sg550_sniper.mdl"
SWEP.WorldModel = "models/weapons/tacint_shark/w_sg550_sniper.mdl"
SWEP.Slot = 2
SWEP.BalanceStats = {
[TacRP.BALANCE_SBOX] = {
Damage_Max = 25,
Damage_Min = 15,
RecoilKick = 3,
},
[TacRP.BALANCE_TTT] = {
Damage_Max = 22,
Damage_Min = 10,
RPM = 450,
BodyDamageMultipliers = {
[HITGROUP_HEAD] = 4,
[HITGROUP_CHEST] = 1.25,
[HITGROUP_STOMACH] = 1,
[HITGROUP_LEFTARM] = 0.9,
[HITGROUP_RIGHTARM] = 0.9,
[HITGROUP_LEFTLEG] = 0.75,
[HITGROUP_RIGHTLEG] = 0.75,
[HITGROUP_GEAR] = 0.75
},
},
[TacRP.BALANCE_PVE] = {
Damage_Max = 20,
Damage_Min = 12,
},
[TacRP.BALANCE_OLDSCHOOL] = {
RecoilSpreadPenalty = 0.005,
HipFireSpreadPenalty = 0.01,
RecoilDissipationRate = 8,
RecoilMaximum = 15
}
}
SWEP.TTTReplace = TacRP.TTTReplacePreset.MarksmanRifle
SWEP.MuzzleVelocity = 28000
// "ballistics"
SWEP.Damage_Max = 28
SWEP.Damage_Min = 17
SWEP.Range_Min = 1800
SWEP.Range_Max = 4500
SWEP.Penetration = 10
SWEP.ArmorPenetration = 0.95
SWEP.BodyDamageMultipliers = {
[HITGROUP_HEAD] = 5,
[HITGROUP_CHEST] = 1,
[HITGROUP_STOMACH] = 1.25,
[HITGROUP_LEFTARM] = 0.9,
[HITGROUP_RIGHTARM] = 0.9,
[HITGROUP_LEFTLEG] = 0.75,
[HITGROUP_RIGHTLEG] = 0.75,
[HITGROUP_GEAR] = 0.9
}
SWEP.MuzzleVelocity = 25000
// misc. shooting
SWEP.Firemodes = {
1,
2,
}
SWEP.RPM = 700
SWEP.RPMMultSemi = 0.8
SWEP.Spread = 0.0005
SWEP.RecoilResetInstant = false
SWEP.RecoilPerShot = 1
SWEP.RecoilMaximum = 6
SWEP.RecoilResetTime = 0.07
SWEP.RecoilDissipationRate = 24
SWEP.RecoilFirstShotMult = 1
SWEP.RecoilVisualKick = 0.75
SWEP.RecoilKick = 3
SWEP.RecoilStability = 0.45
SWEP.RecoilAltMultiplier = 750
SWEP.RecoilSpreadPenalty = 0.0029
SWEP.HipFireSpreadPenalty = 0.06
SWEP.PeekPenaltyFraction = 0.15
SWEP.CanBlindFire = true
// handling
SWEP.MoveSpeedMult = 0.85
SWEP.ShootingSpeedMult = 0.3
SWEP.SightedSpeedMult = 0.5
SWEP.ReloadSpeedMult = 0.4
SWEP.AimDownSightsTime = 0.42
SWEP.SprintToFireTime = 0.45
SWEP.Sway = 2
SWEP.ScopedSway = 0.1
SWEP.FreeAimMaxAngle = 7
// hold types
SWEP.HoldType = "ar2"
SWEP.HoldTypeSprint = "passive"
SWEP.HoldTypeBlindFire = false
SWEP.GestureShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
SWEP.GestureReload = ACT_HL2MP_GESTURE_RELOAD_SMG1
SWEP.PassiveAng = Angle(0, 0, 0)
SWEP.PassivePos = Vector(0, -2, -5.5)
SWEP.BlindFireAng = Angle(0, 5, 0)
SWEP.BlindFirePos = Vector(3, -2, -5)
SWEP.SprintAng = Angle(30, -15, 0)
SWEP.SprintPos = Vector(5, 0, -2)
SWEP.SightAng = Angle(0, 0, 0)
SWEP.SightPos = Vector(-4.2, -7.5, -4.225)
SWEP.CorrectivePos = Vector(0, 0, 0.1)
SWEP.CorrectiveAng = Angle(0, 0, 0)
SWEP.HolsterVisible = true
SWEP.HolsterSlot = TacRP.HOLSTER_SLOT_BACK
SWEP.HolsterPos = Vector(5, 0, -6)
SWEP.HolsterAng = Angle(0, 0, 0)
// scope
SWEP.Scope = true
SWEP.ScopeOverlay = Material("tacrp/scopes/l96.png", "mips smooth") // Material("path/to/overlay")
SWEP.ScopeFOV = 90 / 6
SWEP.ScopeLevels = 1 // 2 = like CS:S
SWEP.ScopeHideWeapon = true
// reload
-- Устанавливаем размер магазина и начальное кол-во патрон на 0
SWEP.ClipSize = 20
SWEP.DefaultAmmo = 0
SWEP.Ammo = "smg1"
-- Принудительное обнуление при создании (Initialize)
function SWEP:Initialize()
self.BaseClass.Initialize(self)
-- Обнуляем патроны внутри самого оружия
self:SetClip1(0)
-- Обнуляем резервные патроны у игрока через мгновение после спавна
if SERVER then
timer.Simple(0, function()
if IsValid(self) and IsValid(self:GetOwner()) then
self:GetOwner():SetAmmo(0, self:GetPrimaryAmmoType())
end
end)
end
end
SWEP.ReloadTimeMult = 1
SWEP.DropMagazineModel = "models/weapons/tacint_extras/magazines/sg550.mdl"
SWEP.DropMagazineImpact = "plastic"
SWEP.ReloadUpInTime = 1.7
SWEP.DropMagazineTime = 0.6
// sounds
local path = "tacrp/weapons/sg551/sg551_"
local path1 = "tacint_shark/krieg/"
SWEP.Sound_Shoot = path1 .. "sg500.wav"
SWEP.Sound_Shoot_Silenced = path .. "fire_silenced-1.wav"
SWEP.Vol_Shoot = 110
SWEP.ShootPitchVariance = 2.5 // amount to vary pitch by each shot
// effects
// the .qc attachment for the muzzle
SWEP.QCA_Muzzle = 1
// ditto for shell
SWEP.QCA_Eject = 2
SWEP.MuzzleEffect = "muzzleflash_ak47"
SWEP.EjectEffect = 2
// anims
SWEP.AnimationTranslationTable = {
["fire_iron"] = "dryfire",
["fire1"] = "fire1_M",
["fire2"] = "fire2_M",
["fire3"] = "fire3_M",
["fire4"] = {"fire4_M", "fire4_L", "fire4_R"},
["melee"] = {"melee1", "melee2"}
}
SWEP.ProceduralIronFire = {
vm_pos = Vector(0, -0.3, -0.2),
vm_ang = Angle(0, 0.5, 0),
t = 0.2,
tmax = 0.2,
bones = {
{
bone = "ValveBiped.bolt_cover",
pos = Vector(0, 0, -3),
t0 = 0.01,
t1 = 0.1,
},
},
}
// attachments
SWEP.AttachmentElements = {
["sights"] = {
BGs_VM = {
{1, 2}
},
BGs_WM = {
{2, 2}
},
},
["irons"] = {
BGs_VM = {
{1, 1}
},
BGs_WM = {
{2, 1}
},
},
["tactical"] = {
BGs_VM = {
{3, 1}
},
BGs_WM = {
{3, 1}
},
},
}
SWEP.Attachments = {
[1] = {
PrintName = "Optic",
Category = {"ironsights", "optic_cqb", "optic_medium", "optic_sniper"},
InstalledElements = {"sights"},
Bone = "ValveBiped.sg551_rootbone",
WMBone = "Box01",
AttachSound = "tacrp/weapons/optic_on.wav",
DetachSound = "tacrp/weapons/optic_off.wav",
VMScale = 0.75,
WMScale = 0.75,
Pos_VM = Vector(-5.1, 0, 5.5),
Pos_WM = Vector(0, 5, 1),
Ang_VM = Angle(90, 0, 0),
Ang_WM = Angle(0, -90, 0),
},
[2] = {
PrintName = "Muzzle",
Category = "silencer",
Bone = "ValveBiped.sg551_rootbone",
WMBone = "Box01",
AttachSound = "tacrp/weapons/silencer_on.wav",
DetachSound = "tacrp/weapons/silencer_off.wav",
VMScale = 0.85,
Pos_VM = Vector(-3.2, 0.05, 32.25),
Pos_WM = Vector(0.1, 36, -1.2),
Ang_VM = Angle(90, 0, 0),
Ang_WM = Angle(0, -90, 0),
},
[3] = {
PrintName = "Tactical",
Category = {"tactical", "tactical_zoom", "tactical_ebullet"},
InstalledElements = {"tactical"},
Bone = "ValveBiped.sg551_rootbone",
WMBone = "Box01",
AttachSound = "tacrp/weapons/flashlight_on.wav",
DetachSound = "tacrp/weapons/flashlight_off.wav",
Pos_VM = Vector(-4.25, -0.75, 15),
Pos_WM = Vector(2, 13, -0.5),
Ang_VM = Angle(90, 0, -90),
Ang_WM = Angle(-90, -90 + 3.5, 0),
},
[4] = {
PrintName = "Accessory",
Category = {"acc", "perk_extendedmag", "acc_sling", "acc_duffle", "acc_bipod"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[5] = {
PrintName = "Bolt",
Category = {"bolt_automatic"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[6] = {
PrintName = "Trigger",
Category = {"trigger_auto"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[7] = {
PrintName = "Ammo",
Category = {"ammo_rifle"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[8] = {
PrintName = "Perk",
Category = {"perk", "perk_melee", "perk_shooting", "perk_reload"},
AttachSound = "tacrp/weapons/flashlight_on.wav",
DetachSound = "tacrp/weapons/flashlight_off.wav",
},
}
local function addsound(name, spath)
sound.Add({
name = name,
channel = 16,
volume = 1.0,
sound = spath
})
end
addsound("tacint_krieg.Remove_Clip", path1 .. "magout.wav")
addsound("tacint_krieg.Insert_Clip", path1 .. "magin.ogg")
addsound("tacint_krieg.Insert_Clip-mid", path1 .. "magin.wav")
addsound("tacint_krieg.bolt_action", path1 .. "boltback.ogg")
addsound("tacint_krieg.bolt_slap", path1 .. "boltback.ogg")
addsound("tacint_krieg.bolt_back", path1 .. "boltback.ogg")
addsound("tacint_krieg.throw_catch", path .. "throw_catch.wav")
addsound("tacint_krieg.fire_selector", path .. "fire_selector.wav")