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

379 lines
9.3 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 = "Skorpion vz. 61"
SWEP.AbbrevName = "Skorpion"
SWEP.Category = "[FT] Оружие"
SWEP.SubCatTier = "4Consumer"
SWEP.SubCatType = "3Machine Pistol"
SWEP.Description = "Light machine pistol with good range, recoil and spread."
SWEP.Description_Quote = "\"Please remove any metallic items you're carrying, keys, loose change...\"" -- The Matrix (1999), lobby shootout
SWEP.Trivia_Caliber = ".32 ACP"
SWEP.Trivia_Manufacturer = "CZ Uherský Brod"
SWEP.Trivia_Year = "1963"
SWEP.Faction = TacRP.FACTION_MILITIA
SWEP.Credits = "Assets: Tactical Intervention"
SWEP.ViewModel = "models/weapons/tacint/v_skorpion.mdl"
SWEP.WorldModel = "models/weapons/tacint/w_skorpion.mdl"
SWEP.Slot = 1
SWEP.BalanceStats = {
[TacRP.BALANCE_SBOX] = {
Damage_Max = 18,
Damage_Min = 10,
ArmorPenetration = 0.6,
RecoilKick = 1,
ClipSize = 30,
DefaultBodygroups = "0000",
},
[TacRP.BALANCE_TTT] = {
Damage_Max = 9,
Damage_Min = 5,
Range_Min = 500,
Range_Max = 2500,
RPM = 850,
ClipSize = 30,
DefaultBodygroups = "0000",
BodyDamageMultipliers = {
[HITGROUP_HEAD] = 2,
[HITGROUP_CHEST] = 1,
[HITGROUP_STOMACH] = 1,
[HITGROUP_LEFTARM] = 0.9,
[HITGROUP_RIGHTARM] = 0.9,
[HITGROUP_LEFTLEG] = 0.75,
[HITGROUP_RIGHTLEG] = 0.75,
[HITGROUP_GEAR] = 0.9
},
},
[TacRP.BALANCE_PVE] = {
Damage_Max = 6,
Damage_Min = 3,
},
[TacRP.BALANCE_OLDSCHOOL] = {
RecoilMaximum = 10
}
}
SWEP.TTTReplace = TacRP.TTTReplacePreset.MachinePistol
// "ballistics"
SWEP.DefaultBodygroups = "0000"
SWEP.Damage_Max = 18
SWEP.Damage_Min = 9
SWEP.Range_Min = 400
SWEP.Range_Max = 2000
SWEP.Penetration = 4 // units of metal this weapon can penetrate
SWEP.ArmorPenetration = 0.5
SWEP.ArmorBonus = 0.75
SWEP.MuzzleVelocity = 12500
SWEP.BodyDamageMultipliers = {
[HITGROUP_HEAD] = 3,
[HITGROUP_CHEST] = 1,
[HITGROUP_STOMACH] = 1,
[HITGROUP_LEFTARM] = 1,
[HITGROUP_RIGHTARM] = 1,
[HITGROUP_LEFTLEG] = 0.75,
[HITGROUP_RIGHTLEG] = 0.75,
[HITGROUP_GEAR] = 0.9
}
// misc. shooting
SWEP.Firemodes = {
2,
1
}
SWEP.RPM = 850
SWEP.Spread = 0.009
SWEP.RecoilSpreadPenalty = 0.0014
SWEP.HipFireSpreadPenalty = 0.011
SWEP.ShootTimeMult = 0.5
SWEP.RecoilResetInstant = false
SWEP.RecoilPerShot = 1
SWEP.RecoilMaximum = 9
SWEP.RecoilResetTime = 0.01
SWEP.RecoilDissipationRate = 40
SWEP.RecoilFirstShotMult = 1.25
SWEP.RecoilVisualKick = 0.5
SWEP.RecoilKick = 1.5
SWEP.RecoilStability = 0.75
SWEP.CanBlindFire = true
// handling
SWEP.MoveSpeedMult = 0.975
SWEP.ShootingSpeedMult = 0.75
SWEP.SightedSpeedMult = 0.8
SWEP.ReloadSpeedMult = 0.6
SWEP.AimDownSightsTime = 0.275
SWEP.SprintToFireTime = 0.30
SWEP.Sway = 1
SWEP.ScopedSway = 0.3
SWEP.FreeAimMaxAngle = 3
// hold types
SWEP.HoldType = "revolver"
SWEP.HoldTypeSprint = "normal"
SWEP.HoldTypeBlindFire = "pistol"
SWEP.GestureShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_AR2
SWEP.GestureReload = ACT_HL2MP_GESTURE_RELOAD_SMG1
SWEP.PassiveAng = Angle(-2.5, -1, 0)
SWEP.PassivePos = Vector(0, -2, -4)
SWEP.BlindFireAng = Angle(0, 5, 0)
SWEP.BlindFirePos = Vector(3, -2, -5)
SWEP.BlindFireSuicideAng = Angle(-135, 0, 45)
SWEP.BlindFireSuicidePos = Vector(31, 25, -5)
SWEP.SprintAng = Angle(30, -15, 0)
SWEP.SprintPos = Vector(5, 0, -2)
SWEP.SightAng = Angle(-4.26, -1.025, 1)
SWEP.SightPos = Vector(-5.2, -5, -2.4)
SWEP.CorrectivePos = Vector(1.2, 0, -0.4)
SWEP.CorrectiveAng = Angle(5.5, -2.7, 0)
SWEP.HolsterVisible = true
SWEP.HolsterSlot = TacRP.HOLSTER_SLOT_PISTOL
SWEP.HolsterPos = Vector(0, 3, -4)
SWEP.HolsterAng = Angle(90, 0, 0)
// reload
-- Устанавливаем размер магазина и начальное кол-во патрон на 0
SWEP.ClipSize = 20
SWEP.DefaultAmmo = 0
SWEP.Ammo = "pistol"
-- Принудительное обнуление при создании (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.Ammo_Expanded = "ti_pistol_light"
SWEP.ReloadTimeMult = 1
SWEP.DropMagazineModel = "models/weapons/tacint/magazines/skorpion.mdl"
SWEP.DropMagazineImpact = "pistol"
SWEP.ReloadUpInTime = 0.9
SWEP.DropMagazineTime = 0.2
// sounds
local path = "TacRP/weapons/skorpion/"
SWEP.Sound_Shoot = "^" .. path .. "fire-1.wav"
SWEP.Sound_Shoot_Silenced = path .. "fire_silenced-1.wav"
SWEP.Vol_Shoot = 100
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_pistol"
SWEP.EjectEffect = 1
// anims
SWEP.AnimationTranslationTable = {
["fire_iron"] = "fire2_M",
["fire1"] = {"fire1_L", "fire1_M"},
["fire2"] = {"fire2_M", "fire2_R"},
["fire3"] = {"fire3_L", "fire3_M"},
["fire4"] = {"fire4_M", "fire4_R"},
["fire5"] = {"fire5_L", "fire5_M", "fire5_R"},
["melee"] = {"melee1", "melee2"}
}
SWEP.ProceduralIronFire = {
vm_pos = Vector(0, -0.3, -0.15),
vm_ang = Angle(0, 0.5, 0),
t = 0.1,
tmax = 0.2,
bones = {
{
bone = "bolt_handle",
pos = Vector(0, 0, -3),
t0 = 0,
t1 = 0.1,
},
{
bone = "ValveBiped.Bip01_R_Finger1",
ang = Angle(0, -15, 0),
t0 = 0,
t1 = 0.2,
},
{
bone = "ValveBiped.Bip01_R_Finger11",
ang = Angle(-35, 0, 0),
t0 = 0,
t1 = 0.2,
},
},
}
// attachments
SWEP.AttachmentElements = {
["foldstock"] = {
BGs_VM = {
{1, 1}
},
BGs_WM = {
{1, 1}
}
},
["tactical"] = {
BGs_VM = {
{3, 1}
},
},
["smallmag"] = {
BGs_VM = {
{2, 1}
},
BGs_WM = {
{2, 1}
}
},
}
SWEP.Attachments = {
--[1] = {
--PrintName = "Optic",
--Category = "optic_pistol",
--Bone = "Skorpion_ROOT",
--WMBone = "Bone02",
--AttachSound = "tacrp/weapons/optic_on.wav",
--DetachSound = "tacrp/weapons/optic_off.wav",
--VMScale = 1.2,
--WMScale = 1.2,
--Pos_VM = Vector(4.6, 0, 0.5),
--Ang_VM = Angle(90, 0, 180),
--Pos_WM = Vector(-12, 1.25, -5),
--Ang_WM = Angle(0, 0, 180),
--},
[1] = {
PrintName = "Muzzle",
Category = "silencer",
Bone = "Skorpion_ROOT",
WMBone = "Bone02",
AttachSound = "TacRP/weapons/silencer_on.wav",
DetachSound = "TacRP/weapons/silencer_off.wav",
VMScale = 0.6,
WMScale = 0.7,
Pos_VM = Vector(3.75, -0.015, 14),
Ang_VM = Angle(90, 0, 180),
Pos_WM = Vector(1.5, 1.25, -4.3),
Ang_WM = Angle(0, 0, 180),
},
[2] = {
PrintName = "Tactical",
Category = {"tactical", "tactical_zoom", "tactical_ebullet"},
Bone = "Skorpion_ROOT",
WMBone = "Bone02",
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
VMScale = 0.75,
WMScale = 0.75,
Pos_VM = Vector(3, 0, 8),
Ang_VM = Angle(90, 0, 0),
Pos_WM = Vector(-4, 1.25, -3.5),
Ang_WM = Angle(0, 0, 0),
},
[3] = {
PrintName = "Accessory",
Category = {"acc", "acc_foldstock", "acc_extmag_smg", "acc_holster"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[4] = {
PrintName = "Bolt",
Category = {"bolt_automatic"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[5] = {
PrintName = "Trigger",
Category = {"trigger_auto"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[6] = {
PrintName = "Ammo",
Category = {"ammo_pistol"},
AttachSound = "TacRP/weapons/flashlight_on.wav",
DetachSound = "TacRP/weapons/flashlight_off.wav",
},
[7] = {
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_Skorpion.Clip_Out", path .. "clip_out-1.wav")
addsound("TacInt_Skorpion.Clip_In", path .. "clip_in-1.wav")
addsound("TacInt_Skorpion.bolt_action", path .. "bolt_action-1.wav")
addsound("TacInt_pdw.fire_select", "TacRP/weapons/pdw/fire_select-1.wav")