111 lines
2.8 KiB
Lua
111 lines
2.8 KiB
Lua
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 |