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

357 lines
9.1 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 = "Glock 18C"
SWEP.Category = "[FT] Оружие" // "Tactical RP (Extras)"
SWEP.SubCatTier = "3Security"
SWEP.SubCatType = "3Machine Pistol"
SWEP.Description = "Machine pistol with high fire rate and mobility."
SWEP.Description_Quote = "\"Sooner or later, you'll have to jump.\""
SWEP.Trivia_Caliber = "9x19mm"
SWEP.Trivia_Manufacturer = "Glock Ges.m.b.H"
SWEP.Trivia_Year = "1982"
SWEP.Faction = TacRP.FACTION_NEUTRAL
SWEP.Credits = [[
Model: Hav0k101
Texture: el maestro de graffiti
Sound: BlitzBoaR, Lorn, Ghost597879, Zeven II
Animation: Tactical Intervention
]]
SWEP.ViewModel = "models/weapons/tacint_extras/v_glock18.mdl"
SWEP.WorldModel = "models/weapons/tacint_extras/w_glock18.mdl"
SWEP.Slot = 1
SWEP.BalanceStats = {
[TacRP.BALANCE_SBOX] = {
Damage_Max = 20,
Damage_Min = 6,
},
[TacRP.BALANCE_TTT] = {
Damage_Max = 10,
Damage_Min = 4,
Range_Min = 200,
Range_Max = 1750,
RPM = 1000,
HipFireSpreadPenalty = 0.015,
RecoilMaximum = 10,
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 = 2,
},
[TacRP.BALANCE_OLDSCHOOL] = {
RecoilDissipationRate = 25,
RecoilMaximum = 10
}
}
SWEP.TTTReplace = TacRP.TTTReplacePreset.MachinePistol
// "ballistics"
SWEP.Damage_Max = 18
SWEP.Damage_Min = 6
SWEP.Range_Min = 400
SWEP.Range_Max = 1500
SWEP.Penetration = 3
SWEP.ArmorPenetration = 0.425
SWEP.ArmorBonus = 0.5
SWEP.MuzzleVelocity = 10500
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 = 1000
SWEP.Spread = 0.011
SWEP.RecoilPerShot = 1
SWEP.RecoilMaximum = 7
SWEP.RecoilResetTime = 0.1
SWEP.RecoilDissipationRate = 15
SWEP.RecoilFirstShotMult = 1 // multiplier for the first shot's recoil amount
SWEP.RecoilVisualKick = 2
SWEP.RecoilKick = 4
SWEP.RecoilSpreadPenalty = 0.005
SWEP.HipFireSpreadPenalty = 0.024
SWEP.CanBlindFire = true
// handling
SWEP.MoveSpeedMult = 0.975
SWEP.ShootingSpeedMult = 0.75
SWEP.SightedSpeedMult = 0.8
SWEP.ReloadSpeedMult = 0.75
SWEP.AimDownSightsTime = 0.25
SWEP.SprintToFireTime = 0.25
SWEP.Sway = 1
SWEP.ScopedSway = 0.5
SWEP.FreeAimMaxAngle = 3
// hold types
SWEP.HoldType = "revolver"
SWEP.HoldTypeSprint = "normal"
SWEP.HoldTypeBlindFire = false
SWEP.GestureShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL
SWEP.GestureReload = ACT_HL2MP_GESTURE_RELOAD_PISTOL
SWEP.PassiveAng = Angle(0, 0, 0)
SWEP.PassivePos = Vector(0, -2, -5)
SWEP.BlindFireAng = Angle(0, 5, 0)
SWEP.BlindFirePos = Vector(0, -2, -5)
SWEP.BlindFireSuicideAng = Angle(-125, 0, 45)
SWEP.BlindFireSuicidePos = Vector(25, 12, -5)
SWEP.SprintAng = Angle(0, 30, 0)
SWEP.SprintPos = Vector(2, 0, -12)
SWEP.SightAng = Angle(0, 0, 0)
SWEP.SightPos = Vector(-3.31, 0, -3.2)
SWEP.CorrectivePos = Vector(0.02, -1, 0)
SWEP.CorrectiveAng = Angle(0.05, -0.05, 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 = 30
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.ReloadTimeMult = 1.4
SWEP.DropMagazineModel = "models/weapons/tacint_extras/magazines/glock.mdl"
SWEP.DropMagazineImpact = "pistol"
SWEP.ReloadUpInTime = 0.85
SWEP.DropMagazineTime = 0.2
// sounds
local path = "tacrp/weapons/p2000/p2000_"
local path2 = "tacint_extras/glock18/"
SWEP.Sound_Shoot = "^" .. path2 .. "glock18-1.wav"
SWEP.Sound_Shoot_Silenced = "tacrp_extras/glock/" .. "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 = 4
SWEP.MuzzleEffect = "muzzleflash_pistol"
SWEP.EjectEffect = 1
// anims
SWEP.AnimationTranslationTable = {
["deploy"] = "draw",
["fire_iron"] = "shoot2",
["fire"] = {"shoot1", "shoot2", "shoot3"},
["blind_fire"] = {"blind_shoot1", "blind_shoot2", "blind_shoot3"},
["melee"] = {"melee1", "melee2"}
}
SWEP.ProceduralIronFire = {
vm_pos = Vector(0, -0.5, -0.6),
vm_ang = Angle(0, 2, 0),
t = 0.2,
tmax = 0.2,
bones = {
{
bone = "ValveBiped.slide",
pos = Vector(0, 0, -3),
t0 = 0,
t1 = 0.2,
},
{
bone = "ValveBiped.hammer",
ang = Angle(-15, 0, 0),
t0 = 0,
t1 = 0.15,
},
{
bone = "ValveBiped.Bip01_R_Finger1",
ang = Angle(0, -15, 0),
t0 = 0,
t1 = 0.1,
},
{
bone = "ValveBiped.Bip01_R_Finger11",
ang = Angle(-35, 0, 0),
t0 = 0,
t1 = 0.15,
},
},
}
SWEP.NoIdle = true
SWEP.ShootTimeMult = 0.4
SWEP.LastShot = true
// attachments
SWEP.Attachments = {
[1] = {
PrintName = "Optic",
Category = "optic_pistol",
Bone = "ValveBiped.slide",
WMBone = "ValveBiped.Bip01_R_Hand", // someone forgor to rig the box bone
AttachSound = "tacrp/weapons/optic_on.wav",
DetachSound = "tacrp/weapons/optic_off.wav",
VMScale = 0.9,
WMScale = 1.2,
Pos_VM = Vector(0.21, 0.7, -0.05),
Ang_VM = Angle(0, 90, 180),
Pos_WM = Vector(2, 1.2, -4.5),
Ang_WM = Angle(180, 0, 0),
},
[2] = {
PrintName = "Muzzle",
Category = "silencer",
Bone = "ValveBiped.barrel_assembly",
WMBone = "ValveBiped.Bip01_R_Hand",
AttachSound = "tacrp/weapons/silencer_on.wav",
DetachSound = "tacrp/weapons/silencer_off.wav",
VMScale = 0.5,
WMScale = 0.6,
Pos_VM = Vector(-0.5, 0.25, 7),
Ang_VM = Angle(90, 0, 0),
Pos_WM = Vector(14.2, 1.2, -4.25),
Ang_WM = Angle(0, 0, 180),
},
[3] = {
PrintName = "Tactical",
Category = {"tactical", "tactical_zoom", "tactical_ebullet"},
Bone = "ValveBiped.p2000_rootbone",
WMBone = "ValveBiped.Bip01_R_Hand",
AttachSound = "tacrp/weapons/flashlight_on.wav",
DetachSound = "tacrp/weapons/flashlight_off.wav",
VMScale = 1.1,
WMScale = 1.2,
Pos_VM = Vector(-2.1, -0.23, 6.6),
Ang_VM = Angle(90, 0, 180),
Pos_WM = Vector(10.5, 1.2, -2.75),
Ang_WM = Angle(0, 0, 0),
},
[4] = {
PrintName = "Accessory",
Category = {"acc", "acc_extmag_smg", "acc_holster", "acc_brace"},
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_pistol"},
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_extras_glock18.clip_in", path2 .. "Clipin.wav")
addsound("tacint_extras_glock18.clip_in-mid", path .. "clip_in-mid.wav")
addsound("tacint_extras_glock18.clip_out", path2 .. "Clipout.wav")
addsound("tacint_extras_glock18.slide_action", path .. "slide_action.wav")
addsound("tacint_extras_glock18.slide_shut", path .. "slide_shut.wav")
addsound("tacint_extras_glock18.cock_hammer", path .. "cockhammer.wav")