Залив
This commit is contained in:
111
gamemodes/cod_custom/entities/weapons/tdm_radio.lua
Normal file
111
gamemodes/cod_custom/entities/weapons/tdm_radio.lua
Normal file
@@ -0,0 +1,111 @@
|
||||
AddCSLuaFile()
|
||||
|
||||
SWEP.PrintName = "Radio"
|
||||
SWEP.Slot = 0
|
||||
SWEP.SlotPos = 4
|
||||
SWEP.Instructions = "LMB - Mark Position, RMB - Zoom"
|
||||
SWEP.ViewModel = "models/tdmg/wep/chands_smallradio.mdl"
|
||||
SWEP.ViewModelFOV = 75
|
||||
SWEP.UseHands = true
|
||||
|
||||
SWEP.Primary.Automatic = false
|
||||
SWEP.Secondary.Automatic = false
|
||||
|
||||
SWEP.DrawAmmo = false
|
||||
|
||||
function SWEP:Initialize()
|
||||
self.Called = false
|
||||
self.FOVED = false
|
||||
self.EndAfter = 0
|
||||
self.PosTable = {}
|
||||
self:SetNWBool('drawarrow', true)
|
||||
if not self.Killstreak then
|
||||
self.Killstreak = "package"
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:Deploy()
|
||||
self:SendWeaponAnim(ACT_VM_DRAW)
|
||||
self:SetHoldType("slam")
|
||||
return true
|
||||
end
|
||||
|
||||
function SWEP:CheckSky()
|
||||
local tr = self:GetOwner():GetEyeTrace().HitPos
|
||||
|
||||
local tr2 = util.TraceLine({
|
||||
start = tr,
|
||||
endpos = tr+Vector(0,0,99999),
|
||||
filter = function( ent ) return ( ent:GetClass() == "prop_static" ) end,
|
||||
})
|
||||
|
||||
return tr2.HitSky
|
||||
end
|
||||
|
||||
function SWEP:PrimaryAttack()
|
||||
if self.Called then return end
|
||||
if not self:CheckSky() then return end
|
||||
self.Called = true
|
||||
self:SendWeaponAnim(ACT_VM_PULLBACK)
|
||||
timer.Simple(0.3, function()
|
||||
if !IsValid(self) then return end
|
||||
self:EmitSound("tdmg/radio_apply.wav")
|
||||
self:SendWeaponAnim(ACT_VM_IDLE)
|
||||
end)
|
||||
if SERVER then
|
||||
local ply = self:GetOwner()
|
||||
local pos = ply:GetEyeTrace().HitPos
|
||||
local cannext = true
|
||||
if self.ManyTimes then
|
||||
table.insert(self.PosTable, pos)
|
||||
pos = self.PosTable
|
||||
|
||||
self.EndAfter = self.EndAfter - 1
|
||||
if self.EndAfter > 0 then
|
||||
cannext = false
|
||||
end
|
||||
end
|
||||
if cannext then
|
||||
ply:SetFOV(0, 0.25)
|
||||
self:SetNWBool('drawarrow', false)
|
||||
timer.Simple(0.3, function()
|
||||
if !IsValid(self) then return end
|
||||
COD:ChooseKillstreakRadio(ply, self, pos)
|
||||
end)
|
||||
timer.Simple(1.2, function()
|
||||
if !IsValid(self) then return end
|
||||
if IsValid(ply) then
|
||||
ply:SelectWeapon(ply.RadioBeforeWep)
|
||||
end
|
||||
self:Remove()
|
||||
end)
|
||||
else
|
||||
timer.Simple(1, function()
|
||||
if !IsValid(self) then return end
|
||||
self.Called = false
|
||||
end)
|
||||
end
|
||||
end
|
||||
timer.Simple(0.4, function()
|
||||
if !IsValid(self) then return end
|
||||
if self.EndAfter == 0 then
|
||||
self:SendWeaponAnim(ACT_VM_HOLSTER)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function SWEP:SecondaryAttack()
|
||||
if self.Called then return end
|
||||
if SERVER then
|
||||
local ply = self:GetOwner()
|
||||
if not self.FOVED then
|
||||
self.FOVED = true
|
||||
ply:SetFOV(50, 0.25)
|
||||
else
|
||||
self.FOVED = false
|
||||
ply:SetFOV(0, 0.25)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SWEP:DrawWorldModel() end
|
||||
Reference in New Issue
Block a user