Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function SWEP:PrimaryAttack()
- local spos = self.Owner:GetShootPos()
- local sdest = spos + (self.Owner:GetAimVector() * 70)
- local kmins = Vector(1,1,1) * -10
- local kmaxs = Vector(1,1,1) * 10
- local tr = util.TraceHull({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL, mins=kmins, maxs=kmaxs})
- -- Hull might hit environment stuff that line does not hit
- if not IsValid(tr.Entity) then
- tr = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL})
- end
- local hitEnt = tr.Entity
- -- effects
- if IsValid(hitEnt) then
- self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER )
- local edata = EffectData()
- edata:SetStart(spos)
- edata:SetOrigin(tr.HitPos)
- edata:SetNormal(tr.Normal)
- edata:SetEntity(hitEnt)
- if hitEnt:IsPlayer() or hitEnt:GetClass() == "prop_ragdoll" then
- util.Effect("BloodImpact", edata)
- end
- if hitEnt:GetClass()=="tree" then
- net.Start("HasHitMiningTree")
- net.WriteVector(hitEnt:GetPos())
- net.SendToServer()
- end
- else
- self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER )
- end
- if SERVER then
- self.Owner:SetAnimation( PLAYER_ATTACK1 )
- end
- self.Weapon:SetNextPrimaryFire(CurTime() + .43)
- local trace = self.Owner:GetEyeTrace()
- if trace.HitPos:Distance(self.Owner:GetShootPos()) <= 75 then
- bullet = {}
- bullet.Num = 1
- bullet.Src = self.Owner:GetShootPos()
- bullet.Dir = self.Owner:GetAimVector()
- bullet.Spread = Vector(0, 0, 0)
- bullet.Tracer = 0
- bullet.Force = 0
- bullet.Damage = 0
- self.Owner:DoAttackEvent()
- self.Owner:FireBullets(bullet)
- self.Weapon:EmitSound("Weapon_Crowbar.Melee_Hit")
- else
- self.Weapon:EmitSound("Zombie.AttackMiss")
- self.Owner:DoAttackEvent()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement