Files
2026-03-31 10:27:04 +03:00

226 lines
6.4 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.
if CLIENT then
SWEP.WepSelectIcon = surface.GetTextureID("vgui/hud/weapon_doietoolus")
SWEP.DrawWeaponInfoBox = false
SWEP.BounceWeaponIcon = false
killicon.Add( "weapon_doietoolus", "vgui/hud/weapon_doietoolus", Color( 0, 0, 0, 255 ) )
end
SWEP.PrintName = "Entrenching Tool MINES"
SWEP.Category = "Engiener Tools"
SWEP.Spawnable= true
SWEP.AdminSpawnable= true
SWEP.AdminOnly = false
SWEP.ViewModelFOV = 60
SWEP.ViewModel = "models/weapons/doi/v_etool_us.mdl"
SWEP.WorldModel = "models/weapons/doi/w_etool_us.mdl"
SWEP.ViewModelFlip = false
SWEP.AutoSwitchTo = false
SWEP.AutoSwitchFrom = false
SWEP.Slot = 0
SWEP.SlotPos = 0
SWEP.UseHands = true
SWEP.HoldType = "melee2"
SWEP.FiresUnderwater = false
SWEP.DrawCrosshair = false
SWEP.DrawAmmo = true
SWEP.Base = "weapon_base"
SWEP.CSMuzzleFlashes = true
SWEP.Sprint = 0
SWEP.Primary.ClipSize = 0
SWEP.Primary.DefaultClip = 0
SWEP.Primary.Automatic = false
SWEP.Primary.Ammo = "none"
SWEP.Secondary.ClipSize = 0
SWEP.Secondary.DefaultClip = 0
SWEP.Secondary.Automatic = false
SWEP.Secondary.Ammo = "none"
SWEP.Structures = {
{
name = "Мина 'ТМ-62'",
icon = "entities/entity.png",
cat = 0,
entity = "sw_mine_tm62_v3",
count = 10,
corrangle = Angle(90,0,0)
},
}
function SWEP:Initialize()
self:SetWeaponHoldType( self.HoldType )
self:GetOwner().buildtime = 0
end
function SWEP:Deploy()
self:SetNextPrimaryFire( CurTime() + self.Owner:GetViewModel():SequenceDuration() )
self.Weapon:SendWeaponAnim( ACT_VM_DRAW )
Sprint = 0
end
function SWEP:Holster()
self.NextSecondaryAttack = 0
Sprint = 0
return true
end
function SWEP:PrimaryAttack()
if !(self.Weapon:GetNextPrimaryFire() < CurTime()) || not(Sprint == 0) then return end
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self.Owner:SetAnimation( PLAYER_ATTACK1 )
self:SetNextPrimaryFire( CurTime() + 1)
self:SetNextSecondaryFire( CurTime() + 1)
if SERVER then
net.Start("openmenu")
net.WriteTable(self.Structures)
net.Send(self:GetOwner())
end
end
function SWEP:SecondaryAttack()
end
function SWEP:Reload()
if SERVER then
local item = self:GetOwner():GetEyeTrace().Entity
if item:IsValid() then
if item.id != nil then
if item.Owner == self:GetOwner() then
if (item:GetClass() == self.Structures[item.id].entity) or (item:GetModel() == self.Structures[item.id].model) then
item:Remove()
self.Structures[item.id].count = self.Structures[item.id].count + 1
end
end
end
end
end
end
function SWEP:DrawHUDBackground()
if self:GetOwner().buildtime > 0 then
draw.RoundedBox( 20, ScrW()/2-150, ScrH()/2-30, 0+300-self:GetOwner().buildtime*15, 60, Color( 50, 50, 50 , 180) )
draw.RoundedBox( 20, ScrW()/2-145, ScrH()/2-25, 0+290-self:GetOwner().buildtime*14.5, 50, Color( 0, 255, 0 ,125) )
draw.DrawText( tostring(100 - self:GetOwner().buildtime*5) .. '%', "Font3", ScrW()/2-20, ScrH()/2-15, Color( 255, 255, 255 ,255), 0 )
end
end
local delay = 0.5
local nextOccurance = 0
local flag1 = true
if CLIENT then
function SWEP:RenderScreen()
if self.Owner.buildtime < 0 or Sprint == 2 then
--print(1)
self.Weapon:SendWeaponAnim(ACT_VM_IDLE)
end
if input.IsKeyDown(KEY_F) and flag1 then
net.Start("buildstop12")
net.SendToServer()
self.Owner.building = false
self.Owner.buildtime = -3
flag1 = false
timer.Simple(1, function() flag1 = true end)
end
local timeLeft = nextOccurance - CurTime()
if timeLeft < 0 and self:GetOwner().buildtime >= 0 then
self:GetOwner().buildtime = self:GetOwner().buildtime - 0.5
self.Weapon:SendWeaponAnim(ACT_VM_PRIMARYATTACK)
self:GetOwner():SetAnimation( PLAYER_ATTACK1 )
self:SetNextPrimaryFire( CurTime() + delay)
nextOccurance = CurTime() + delay
end
net.Receive("buildanim", function(len, ply)
print(2)
self:GetOwner().buildtime = 20
end)
end
end
if SERVER then
function SWEP:Think()
net.Receive("buildstop12", function(len, ply)
ply:Freeze(false)
if self.LastEnt:IsValid() then
self.Structures[self.LastEnt.id].count = self.Structures[self.LastEnt.id].count + 1
self.LastEnt:Remove()
end
end)
net.Receive("buildtrench", function(len, ply)
if ply:GetActiveWeapon():GetClass() != "engineertool" then return end
local id = net.ReadInt(13)
if (ply:GetEyeTrace().HitPos - ply:GetEyeTrace().StartPos):Length() <= 300 then
if self.Structures[id].count > 0 then
net.Start("buildanim")
net.WriteEntity(item)
net.Send(self:GetOwner())
local item = ents.Create("util_structure")
item:SetPos(ply:GetEyeTrace().HitPos)
item:SetAngles(ply:GetEyeTrace().HitNormal:Angle() + Angle(90,ply:EyeAngles().y,0))
item:SetModel(self.Structures[id].model)
item.hp = self.Structures[id].hp
item.id = id
item.poscoef = -100
item.building = true
item.Owner = self:GetOwner()
item:Spawn()
self.LastEnt = item
self.Structures[id].count = self.Structures[id].count - 1
end
end
end)
net.Receive("setentity", function(len, ply)
if ply:GetActiveWeapon():GetClass() != "engineertoolmines" then return end
local id = net.ReadInt(13)
if (ply:GetEyeTrace().HitPos - ply:GetEyeTrace().StartPos):Length() <= 300 then
if self.Structures[id].count > 0 then
local item = ents.Create(self.Structures[id].entity)
item:SetPos(ply:GetEyeTrace().HitPos + ply:GetEyeTrace().HitNormal * 40)
item:SetAngles(ply:GetEyeTrace().HitNormal:Angle() + self.Structures[id].corrangle)
item.id = id
item.Owner = self:GetOwner()
item:Spawn()
self.LastEnt = item
self.Structures[id].count = self.Structures[id].count - 1
end
end
end)
if (Sprint == 0) then
if self.Owner:KeyDown(IN_SPEED) and (self.Owner:KeyDown(IN_FORWARD) || self.Owner:KeyDown(IN_BACK) || self.Owner:KeyDown(IN_MOVELEFT) || self.Owner:KeyDown(IN_MOVERIGHT)) then
Sprint = 1
end
end
if (Sprint == 1) then
self.Weapon:SendWeaponAnim(ACT_VM_SPRINT_IDLE)
Sprint = 2
end
if (Sprint == 2) then
if self.Owner:KeyReleased(IN_SPEED) then
self.Weapon:SendWeaponAnim(ACT_VM_IDLE)
Sprint = 0
end
end
end
end