• Swep Burst Fire
    1 replies, posted
Hi, I'm making a swep using the cs base and have it to where they shoot 3 bullets but they get shoot all at once...I'm using a for loop to shoot the bullets here's my primary function function SWEP:PrimaryAttack() self.Weapon:SetNextSecondaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) if ( !self:CanPrimaryAttack() ) then return end for i=1,3 do // Play shoot sound self.Weapon:EmitSound( self.Primary.Sound ) // Shoot the bullet self:CSShootBullet( self.Primary.Damage, self.Primary.Recoil, self.Primary.NumShots, self.Primary.Cone ) // Remove 1 bullet from our clip self:TakePrimaryAmmo( 1 ) if ( self.Owner:IsNPC() ) then return end // Punch the player's view self.Owner:ViewPunch( Angle( math.Rand(-0.2,-0.1) * self.Primary.Recoil, math.Rand(-0.1,0.1) *self.Primary.Recoil, 0 ) ) // In singleplayer this function doesn't get called on the client, so we use a networked float // to send the last shoot time. In multiplayer this is predicted clientside so we don't need to // send the float. end if ( (SinglePlayer() && SERVER) || CLIENT ) then self.Weapon:SetNetworkedFloat( "LastShootTime", CurTime() ) end end
[lua] function SWEP:PrimaryAttack() self.Weapon:SetNextSecondaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) if ( !self:CanPrimaryAttack() ) then return end for i=1,3 do timer.Simple(i*shootDelay,function(self) --NEW LINE HERE // Play shoot sound self.Weapon:EmitSound( self.Primary.Sound ) // Shoot the bullet self:CSShootBullet( self.Primary.Damage, self.Primary.Recoil, self.Primary.NumShots, self.Primary.Cone ) // Remove 1 bullet from our clip self:TakePrimaryAmmo( 1 ) if ( self.Owner:IsNPC() ) then return end // Punch the player's view self.Owner:ViewPunch( Angle( math.Rand(-0.2,-0.1) * self.Primary.Recoil, math.Rand(-0.1,0.1) *self.Primary.Recoil, 0 ) ) // In singleplayer this function doesn't get called on the client, so we use a networked float // to send the last shoot time. In multiplayer this is predicted clientside so we don't need to // send the float. end,self) --...AND HERE end if ( (SinglePlayer() && SERVER) || CLIENT ) then self.Weapon:SetNetworkedFloat( "LastShootTime", CurTime() ) end end [/lua]
Sorry, you need to Log In to post a reply to this thread.