SWEP.Base = "tacrp_base" SWEP.Spawnable = false AddCSLuaFile() // names and stuff SWEP.PrintName = "Складной нож" SWEP.Category = "[FT] Специальное Оружие" SWEP.NoAimAssist = true SWEP.SubCatTier = "9Special" SWEP.SubCatType = "8Melee Weapon" SWEP.ViewModel = "models/weapons/tacint/v_knife.mdl" SWEP.WorldModel = "models/weapons/tacint/w_knife.mdl" SWEP.NoRanger = true SWEP.NoStatBox = false SWEP.Slot = 0 SWEP.NPCUsable = false SWEP.PrimaryMelee = true SWEP.MeleeDamage = 35 SWEP.MeleeAttackTime = 0.4 SWEP.MeleeRange = 72 SWEP.MeleeAttackMissTime = 0.5 SWEP.MeleeDelay = 0.15 SWEP.MeleeThrowForce = 2000 SWEP.MeleeDamageType = DMG_SLASH SWEP.MeleeRechargeRate = 1 SWEP.MeleePerkStr = 0.5 SWEP.MeleePerkAgi = 0.5 SWEP.MeleePerkInt = 0.5 SWEP.Lifesteal = 0 SWEP.DamageCharge = 0 SWEP.Firemode = 0 SWEP.RPM = 120 SWEP.CanBlindFire = false SWEP.Ammo = "" SWEP.ClipSize = -1 SWEP.Primary.ClipSize = -1 // handling SWEP.MoveSpeedMult = 1 SWEP.MeleeSpeedMult = 1 SWEP.MeleeSpeedMultTime = 0.5 SWEP.SprintToFireTime = 0.25 SWEP.QuickNadeTimeMult = 0.8 SWEP.Scope = false SWEP.Sway = 0 // hold types SWEP.HoldType = "knife" SWEP.HoldTypeSprint = "knife" SWEP.GestureShoot = ACT_HL2MP_GESTURE_RANGE_ATTACK_PISTOL SWEP.GestureReload = ACT_HL2MP_GESTURE_RELOAD_PISTOL SWEP.GestureBash = ACT_HL2MP_GESTURE_RANGE_ATTACK_KNIFE SWEP.GestureBash2 = ACT_HL2MP_GESTURE_RANGE_ATTACK_MELEE SWEP.MidAirSpreadPenalty = 0 SWEP.PassiveAng = Angle(-2.5, 0, 0) SWEP.PassivePos = Vector(1, 0, -5) SWEP.SprintAng = Angle(0, 0, 0) SWEP.SprintPos = Vector(2, 0, -5) SWEP.CustomizeAng = Angle(0, 25, 0) SWEP.CustomizePos = Vector(2, 0, -12) SWEP.SprintMidPoint = { Pos = Vector(2, 0, -5), Ang = Angle(0, 0, 0) } SWEP.Sound_Lunge = "npc/fast_zombie/leap1.wav" SWEP.HolsterVisible = false SWEP.HolsterSlot = TacRP.HOLSTER_SLOT_GEAR SWEP.HolsterPos = Vector(2, 0, 0) SWEP.HolsterAng = Angle(-90, -90, 15) // attachments SWEP.Attachments = { [1] = { PrintName = "Technique", Category = "melee_tech", AttachSound = "TacRP/weapons/flashlight_on.wav", DetachSound = "TacRP/weapons/flashlight_off.wav", }, [2] = { PrintName = "Special", Category = "melee_spec", AttachSound = "TacRP/weapons/flashlight_on.wav", DetachSound = "TacRP/weapons/flashlight_off.wav", }, [3] = { PrintName = "Boost", Category = "melee_boost", AttachSound = "TacRP/weapons/flashlight_on.wav", DetachSound = "TacRP/weapons/flashlight_off.wav", }, } SWEP.FreeAim = false SWEP.DrawCrosshair = true SWEP.DrawCrosshairInSprint = true SWEP.CrosshairStatic = true function SWEP:PrimaryAttack() local stop = self:RunHook("Hook_PreShoot") if stop then return end local owner = self:GetOwner() if IsValid(owner) then local tr = owner:GetEyeTrace(72) if IsValid(tr.Entity) and tr.Entity.LVS then return end end self:Melee() return end function SWEP:ThinkSprint() end function SWEP:ThinkSights() end function SWEP:ThinkHoldBreath() local ret = self:RunHook("Hook_Recharge") if ret then return end local f = 10 - math.min(self:GetValue("MeleePerkInt"), 0.5) * 2 - math.max((self:GetValue("MeleePerkInt") - 0.5) * 2, 0) * 6 self:SetBreath(math.min(1, self:GetBreath() + FrameTime() / f * self:GetValue("MeleeRechargeRate"))) end SWEP.NoBreathBar = false SWEP.BreathSegmentSize = 0 local breath_a = 0 local last = 1 local lastt = 0 function SWEP:DrawBreathBar(x, y, w, h) if self:GetValue("NoBreathBar") then return end local seg = self:GetValue("BreathSegmentSize") if CurTime() > lastt + 1 then breath_a = math.Approach(breath_a, 0, FrameTime() * 2) elseif breath_a < 1 then breath_a = math.Approach(breath_a, 1, FrameTime()) end local breath = self:GetBreath() if last != self:GetBreath() then lastt = CurTime() last = breath end if breath_a == 0 then return end x = x - w / 2 y = y - h / 2 surface.SetDrawColor(90, 90, 90, 200 * breath_a) surface.DrawOutlinedRect(x - 1, y - 1, w + 2, h + 2, 1) surface.SetDrawColor(0, 0, 0, 75 * breath_a) surface.DrawRect(x, y, w, h) if seg > 0 then local segcount = math.ceil(1 / seg) surface.SetDrawColor(255, 255, 255, 200 * breath_a) for i = 1, segcount - 1 do local d = i / segcount surface.DrawLine(x + w * d, y, x + w * d, y + h) end end if seg > 0 and breath < seg then surface.SetDrawColor(255, 128, 0, 150 * breath_a) else surface.SetDrawColor(255, 255, 255, 150 * breath_a) end surface.DrawRect(x, y, w * breath, h) end function SWEP:CalcView(ply, pos, ang, fov) return pos, ang, fov end SWEP.AutoSpawnable = false