Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local bit=bit
- if not bit then error"You need http://luaforge.net/projects/bit/ OR https://dl.dropbox.com/u/1910689/gmod/bit.lua for Garry's Mod 12!" end
- if SERVER then AddCSLuaFile"shared.lua" end
- SWEP.PrintName = "#HL2_Crowbar"
- SWEP.Slot = 0
- SWEP.SlotPos = 0
- SWEP.DrawWeaponInfoBox=false
- SWEP.ViewModel = "models/weapons/v_crowbar.mdl"
- SWEP.WorldModel = "models/weapons/w_crowbar.mdl"
- SWEP.ViewModelFOV=54
- SWEP.Primary.ClipSize = -1
- SWEP.Primary.DefaultClip = -1
- SWEP.Primary.Automatic = true
- SWEP.Primary.Ammo = "none"
- SWEP.Secondary.ClipSize = -1
- SWEP.Secondary.DefaultClip = -1
- SWEP.Secondary.Automatic = false
- SWEP.Secondary.Ammo = "none"
- SWEP.SwingSound = "Weapon_Crowbar.Single"
- SWEP.HitSound = "Weapon_Crowbar.Melee_Hit"
- SWEP.HoldType="melee"
- SWEP.Delay=0.4
- SWEP.Range=75
- SWEP.Damage=25
- function SWEP:Initialize()
- if ( SERVER ) then
- self:SetNPCMinBurst( 0 )
- self:SetNPCMaxBurst( 0 )
- self:SetNPCFireRate( self.Primary.Delay )
- end
- self:SetWeaponHoldType( self.HoldType )
- end
- function SWEP:PrimaryAttack()
- self:SetNextPrimaryFire(CurTime() + self.Delay)
- self.Owner:SetAnimation(PLAYER_ATTACK1)
- local tracedata = {}
- tracedata.start = self.Owner:EyePos()
- tracedata.endpos = self.Owner:EyePos()+(self.Owner:GetAimVector()*self.Range)
- tracedata.filter = {self.Owner}
- local trace = util.TraceLine(tracedata) --I should be using hull traces here.
- if(trace.Hit)then
- self:SendWeaponAnim(ACT_VM_HITCENTER)
- self:EmitSound(self.HitSound)
- if((not trace.HitWorld) and SERVER)then
- local Dmg = DamageInfo()
- Dmg:SetAttacker(self.Owner)
- Dmg:SetInflictor(self)
- Dmg:SetDamage(self.Damage)
- Dmg:SetDamageForce(self.Owner:EyeAngles():Forward()*(self.Damage*700))
- Dmg:SetDamagePosition(trace.HitPos)
- Dmg:SetDamageType(DMG_SLASH)
- trace.Entity:TakeDamageInfo(Dmg)
- if(IsValid(trace.Entity:GetPhysicsObject()))then
- trace.Entity:SetPhysicsAttacker(self.Owner)
- end
- end
- if(trace.MatType!=MAT_GRATE)then
- local B = {} --bullets should be clientside. oh well.
- B.Num=1
- B.Src=self.Owner:EyePos()
- B.Dir=self.Owner:GetAimVector()
- B.Spread=Vector(0,0,0)
- B.Tracer=0
- B.Force=0
- B.Damage=0
- B.Callback=function() return {damage=false} end
- self.Owner:FireBullets(B)
- end
- else
- self:SendWeaponAnim(ACT_VM_MISSCENTER)
- self:EmitSound(self.SwingSound)
- end
- end
- function SWEP:SecondaryAttack()
- return false
- end
- function SWEP:DrawWeaponSelection(x,y,w,t,a)
- draw.SimpleText("c","TitleFont2",x+w/2,y,Color(255,255,255,a),TEXT_ALIGN_CENTER)
- end
- ---------------------------------------------------------*/
- function SWEP:DrawWeaponSelection( x, y, wide, tall, alpha )
- surface.SetDrawColor( color_transparent )
- surface.SetTextColor( 255, 220, 0, alpha )
- surface.SetFont( "TitleFont2" )
- local w, h = surface.GetTextSize( "c" )
- surface.SetTextPos( x + ( wide / 2 ) - ( w / 2 ),
- y + ( tall / 2 ) - ( h / 2 ) )
- surface.DrawText( "c" )
- end
- function SWEP:GetCapabilities()
- return bit.bor(CAP_WEAPON_MELEE_ATTACK1 , CAP_INNATE_MELEE_ATTACK1)
- end
- function SWEP:SetupWeaponHoldTypeForAI( t )
- self.ActivityTranslateAI = {}
- self.ActivityTranslateAI [ ACT_STAND ] = ACT_IDLE_MELEE
- self.ActivityTranslateAI [ ACT_IDLE_ANGRY ] = ACT_IDLE_ANGRY_MELEE
- self.ActivityTranslateAI [ ACT_MP_RUN ] = ACT_HL2MP_RUN_MELEE
- self.ActivityTranslateAI [ ACT_MP_CROUCHWALK ] = ACT_HL2MP_WALK_CROUCH_MELEE
- self.ActivityTranslateAI [ ACT_MELEE_ATTACK1 ] = ACT_MELEE_ATTACK1
- self.ActivityTranslateAI [ ACT_RELOAD ] = ACT_RELOAD
- end
Advertisement
Add Comment
Please, Sign In to add comment