add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,227 @@
if CLIENT then
SWEP.WepSelectIcon = surface.GetTextureID( "vgui/hud/item_gene_therapy" )
SWEP.BounceWeaponIcon = true
SWEP.DrawWeaponInfoBox = true
end
SWEP.PrintName = "Genetherapy"
SWEP.Author = "Craft_Pig"
SWEP.Purpose =
[[
]]
SWEP.Category = "NMRIH"
SWEP.ViewModelFOV = 65
SWEP.ViewModel = "models/weapons/nmrih/items/genetherapy/v_item_genetherapy.mdl"
SWEP.WorldModel = "models/weapons/nmrih/items/genetherapy/w_genetherapy.mdl"
SWEP.UseHands = true
SWEP.DrawCrosshair = false
SWEP.Spawnable = true
SWEP.Slot = 0
SWEP.SlotPos = 5
SWEP.DrawAmmo = true
SWEP.Primary.Ammo = "genetherapy"
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = 1
SWEP.Primary.Automatic = false
SWEP.Secondary.Ammo = "none"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = false
SWEP.HitDistance = 90
SWEP.PrimaryHitTime = 0.1
local HealAmount = 0
local ArmorAmount = 50
local InitializeSEF = false
function SWEP:Initialize()
self:SetHoldType("slam")
local FilePathSEF = "lua/SEF/SEF_Functions.lua"
if file.Exists(FilePathSEF, "GAME") then
InitializeSEF = true
else
InitializeSEF = false
end
end
function SWEP:Deploy()
local owner = self:GetOwner()
self:SendWeaponAnim(ACT_VM_DRAW)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.Idle = 0
self.Sprint = 0
self.Walk = 0
self.Give = 0
self.InitializeHealing = 0
self.vmcamera = nil
if owner:GetAmmoCount(self.Primary.Ammo) == 0 then owner:StripWeapon("weapon_nmrih_genetherapy") end -- Reminder
return true
end
local function Heal(owner, weapon)
local activeWeapon = owner:GetActiveWeapon()
if IsValid(weapon) then
if IsValid(owner) and SERVER and activeWeapon:GetClass() == "weapon_nmrih_genetherapy" then -- Reminder
if InitializeSEF == true then
owner:ApplyEffect("Tenacity", math.huge)
else
owner:SetHealth(math.min(owner:GetMaxHealth(), owner:Health() + HealAmount))
owner:SetArmor(math.min(owner:GetMaxArmor(), owner:Armor() + ArmorAmount))
end
owner:RemoveAmmo(1, "genetherapy") -- Reminder
-- owner:EmitSound("nil")
weapon:Deploy()
end
end
end
function SWEP:PrimaryAttack()
local owner = self.Owner
if owner:GetAmmoCount(self.Primary.Ammo) == 0 then return end
self:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self:SetNextPrimaryFire(CurTime() + self.Owner:GetViewModel():SequenceDuration() + 0)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.InitializeHealing = 1
self.Idle = 1
end
function SWEP:SecondaryAttack()
local owner = self:GetOwner()
local dmginfo = DamageInfo()
local tr = util.TraceLine( {
start = owner:GetShootPos(),
endpos = owner:GetShootPos() + owner:GetAimVector() * self.HitDistance,
filter = owner,
mask = MASK_SHOT_HULL
} )
if ( !IsValid( tr.Entity ) ) then
tr = util.TraceHull( {
start = owner:GetShootPos(),
endpos = owner:GetShootPos() + owner:GetAimVector() * self.HitDistance,
filter = owner,
mins = Vector( -10, -10, -8 ),
maxs = Vector( 10, 10, 8 ),
mask = MASK_SHOT_HULL
} )
end
if self.InitializeHealing == 1 then return end
self.Owner:SetAnimation( PLAYER_ATTACK1 )
self:SendWeaponAnim(ACT_VM_HITCENTER)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self:SetNextSecondaryFire(CurTime() + 0.9)
self.Idle = 0
self.Sprint = 0
self.Walk = 0
timer.Create("TimerHitWhen", self.PrimaryHitTime, 1, function() -- Impact Timer
if SERVER then
if ( SERVER and IsValid( tr.Entity ) and ( tr.Entity:IsNPC() or tr.Entity:IsPlayer() or tr.Entity:Health() > 0 ) ) then
dmginfo:SetDamage(10)
dmginfo:SetAttacker(self.Owner)
dmginfo:SetInflictor(self)
dmginfo:SetDamageType(DMG_CRUSH)
tr.Entity:TakeDamageInfo(dmginfo)
end
end
end)
end
function SWEP:Reload()
local owner = self:GetOwner()
local trace = owner:GetEyeTrace()
if self.Give == 1 then return end
if IsValid(trace.Entity) and trace.Entity:IsPlayer() then
local targetPlayer = trace.Entity
self:SendWeaponAnim(ACT_VM_THROW)
self.IdleTimer = CurTime() + self.Owner:GetViewModel():SequenceDuration()
self.Idle = 0
self.Sprint = 0
self.Walk = 0
self.Give = 1
owner:RemoveAmmo(1, "genetherapy")
if CLIENT then return end
timer.Create("TimerNMRIHBandageGive", 1.2, 1, function()
if targetPlayer:HasWeapon("weapon_nmrih_genetherapy") then
targetPlayer:GiveAmmo( 1, "genetherapy")
else
targetPlayer:Give("weapon_nmrih_genetherapy")
end
-- print(owner:Nick() .. " gave a bandage to " .. targetPlayer:Nick())
self:Deploy()
end)
end
end
function SWEP:Think()
local owner = self.Owner
if self.InitializeHealing == 1 and self.IdleTimer <= CurTime() then
if IsValid(self) then
Heal(owner, self)
end
end
if self.InitializeHealing == 1 then return end
if (owner:KeyDown(IN_FORWARD + IN_BACK + IN_MOVELEFT + IN_MOVERIGHT) and owner:KeyDown(IN_SPEED)) then -- If Sprinting
if self.Sprint == 0 and self.IdleTimer <= CurTime() then
self:SendWeaponAnim(ACT_VM_SPRINT_IDLE)
self.Sprint = 1
self.Walk = 0
self.Idle = 0
end
elseif (owner:KeyDown(IN_FORWARD + IN_BACK + IN_MOVELEFT + IN_MOVERIGHT)) then -- If Walking
if self.Walk == 0 and self.IdleTimer <= CurTime() then
self:SendWeaponAnim(ACT_VM_IDLE_LOWERED)
self.Walk = 1
self.Sprint = 0
self.Idle = 0
end
elseif self.Idle == 0 and self.IdleTimer <= CurTime() then -- Idle Sequence
self:SendWeaponAnim(ACT_VM_IDLE)
self.Idle = 1
self.Sprint = 0
self.Walk = 0
end
end
function SWEP:Holster()
timer.Remove("TimerHitWhen")
timer.Remove("TimerNMRIHBandageGive")
return true
end
function SWEP:PostDrawViewModel( vm )
local attachment = vm:GetAttachment(1)
if attachment then
self.vmcamera = vm:GetAngles() - attachment.Ang
else
self.vmcamera = Angle(0, 0, 0)
end
end
function SWEP:CalcView( ply, pos, ang, fov )
self.vmcamera = self.vmcamera or Angle(0, 0, 0)
return pos, ang + self.vmcamera, fov
end