mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
139 lines
2.7 KiB
Lua
139 lines
2.7 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
AddCSLuaFile()
|
|
|
|
SWEP.PrintName = "Fire Vulcan Minigu"
|
|
SWEP.Category = "Jakub Baku"
|
|
SWEP.Spawnable = false
|
|
SWEP.AdminOnly = false
|
|
|
|
SWEP.ViewModel = "models/weapons/jakubbaku/v_mach_m249mini.mdl"
|
|
SWEP.WorldModel = "models/weapons/w_shotgun.mdl"
|
|
SWEP.UseHands = false
|
|
|
|
SWEP.Primary.Automatic = true
|
|
|
|
SWEP._IsFiring = false
|
|
SWEP._FireSnd = nil
|
|
|
|
function SWEP:Initialize()
|
|
self:SetWeaponHoldType("shotgun")
|
|
end
|
|
|
|
function SWEP:OnStartFiring()
|
|
self._FireSnd = CreateSound(self, "poopass/fireloop.wav")
|
|
self._FireSnd:Play()
|
|
end
|
|
|
|
function SWEP:OnStopFiring()
|
|
if(!self._IsFiring) then return end
|
|
self._FireSnd:Stop()
|
|
self:EmitSound("poopass/winddown.wav")
|
|
end
|
|
|
|
function SWEP:OnRemove()
|
|
self:OnStopFiring()
|
|
end
|
|
|
|
function SWEP:Holster()
|
|
self:OnStopFiring()
|
|
self._IsFiring = false
|
|
return true
|
|
end
|
|
|
|
function SWEP:Think()
|
|
local own = self:GetOwner()
|
|
|
|
if(!self._IsFiring && own:KeyDown(IN_ATTACK)) then
|
|
self._IsFiring = true
|
|
self:OnStartFiring()
|
|
elseif(self._IsFiring && !own:KeyDown(IN_ATTACK)) then
|
|
self:OnStopFiring()
|
|
self._IsFiring = false
|
|
end
|
|
end
|
|
|
|
function SWEP:PrimaryAttack()
|
|
local own = self:GetOwner()
|
|
local b = {
|
|
Src = own:GetShootPos(),
|
|
Dir = own:GetAimVector(),
|
|
Damage = 8,
|
|
Force = 6,
|
|
Tracer = 1,
|
|
TracerName = "eff_baku_burntcer",
|
|
Attacker = own,
|
|
Inflictor = self,
|
|
Num = 1,
|
|
Spread = Vector(1,1,0) * 0.02,
|
|
}
|
|
|
|
if(SERVER) then
|
|
b.Callback = function(_att, _tr, _dmg)
|
|
local ent = _tr.Entity
|
|
|
|
if(!ent:IsPlayer()) then
|
|
ent:Ignite(2)
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
own:MuzzleFlash()
|
|
own:SetAnimation( PLAYER_ATTACK1 )
|
|
self:SendWeaponAnim( ACT_VM_PRIMARYATTACK )
|
|
own:ViewPunch(AngleRand() * 0.002)
|
|
|
|
own:FireBullets(b)
|
|
self:SetNextPrimaryFire(CurTime() + 0.05)
|
|
end
|
|
|
|
function SWEP:SecondaryAttack()
|
|
return false
|
|
end
|
|
|
|
function SWEP:Reload()
|
|
return false
|
|
end
|
|
|
|
function SWEP:DoImpactEffect(tr, dmg)
|
|
local ef = EffectData()
|
|
ef:SetOrigin(tr.HitPos + tr.HitNormal * 2)
|
|
ef:SetNormal(tr.HitNormal)
|
|
ef:SetScale(1)
|
|
|
|
util.Effect("eff_baku_impactor", ef)
|
|
return true
|
|
end
|
|
|
|
function SWEP:FireAnimationEvent(pos, ang, event)
|
|
if(event == 5001) then
|
|
local eff = EffectData()
|
|
eff:SetEntity(self.Owner:GetViewModel())
|
|
eff:SetAttachment(1)
|
|
eff:SetScale(0.5)
|
|
|
|
util.Effect("eff_baku_burnzzle", eff)
|
|
return true
|
|
elseif(event == 6001) then return true
|
|
end
|
|
end
|
|
|
|
if(SERVER)then
|
|
|
|
else
|
|
function SWEP:CustomAmmoDisplay()
|
|
self.AmmoDisplay = self.AmmoDisplay or {}
|
|
self.AmmoDisplay.Draw = false
|
|
|
|
return self.AmmoDisplay
|
|
end
|
|
end |