• Swep Charge up?
    4 replies, posted
hi. I have a question. Ive been trying to make it so that before my swep fires a bullet, it "Charges Up" for 4 seconds before the bullet shoots. Ive tried a bunch of scripts but i cant seem to get this to work. Any help?
I don't have the answer right here for you, but try looking at the newton launcher code in the terrortown files. I believe its class name is weapon_ttt_push
i want the charge up to not do anything to the bullet itself. i want it to delay for 4 seconds before shooting the bullet.
Hello, I would recoment you using a timer.Simple() :) Exemple [code] local time = 4 timer.Simple(time, function() <code> end [/code] This will only make a 4 sec delay before it shoots!
[QUOTE=Errolight;39849305]Hello, I would recoment you using a timer.Simple() :) Exemple [code] local time = 4 timer.Simple(time, function() <code> end [/code] This will only make a 4 sec delay before it shoots![/QUOTE] D'oh But of course! Why didn't i think of timers! Thanks! [editline]9th March 2013[/editline] alright. the swep now "charges up". but i am having a problem. Now, instead of just creating one bullet, it creates loads, taking up the clip ammon AND the ammo that hasn't been reloaded yet! What is going on??? [code] function SWEP:PrimaryAttack() if self.Weapon:Clip1() > 39 then local shoot_angle = Vector(0,0,0) if self.Owner:IsNPC() then if self.Owner:GetEnemy() != NULL && self.Owner:GetEnemy() != nil then shoot_angle = self.Owner:GetEnemy():GetPos() - self.Owner:GetPos() //apply accuracy shoot_angle = shoot_angle + Vector(math.random(-85,85),math.random(-85,85),math.random(-85,85))*(shoot_angle:Distance(Vector(0,0,0))/1500) //print("Shoot angle is:") //print(shoot_angle) shoot_angle:Normalize() //print("Normalized, shoot angle is:") //print(shoot_angle) else return end else shoot_angle = self.Owner:GetAimVector() end local shoot_pos = self.Owner:GetPos() + self.Owner:GetRight() * 5 + self.Owner:GetUp() * 50 + shoot_angle * 35 if self.Owner:IsPlayer() then shoot_pos = self.Owner:GetPos() + self.Owner:GetRight() * 5 + self.Owner:GetUp() * 55 + shoot_angle * 35 end local time = 2 self.Weapon:EmitSound("DSBFGC1.wav") timer.Simple(time, function() local shot = ents.Create("d3_rocket") if (IsValid(shot)) then shot:SetModel( "models/dav0r/hoverball.mdl" ) shot:SetParent(rocket) shot:SetPos(shoot_pos) shot:SetAngles(shoot_angle:Angle()) shot:Activate() shot:Spawn() end local phy = shot:GetPhysicsObject() if phy:IsValid() then phy:ApplyForceCenter((shoot_angle * 10000)) end self.Owner:MuzzleFlash() self.Weapon:SendWeaponAnim( ACT_VM_PRIMARYATTACK ) self.Owner:SetAnimation( PLAYER_ATTACK1 ) self.Weapon:EmitSound(Sound(self.Primary.Sound)) //self.Owner:ViewPunch(Angle( -self.Primary.Recoil, 0, 0 )) if !self.Owner:IsNPC() then if (self.Primary.TakeAmmoPerBullet) then self:TakePrimaryAmmo(self.Primary.NumShots) else self:TakePrimaryAmmo(40) end end //if not self:CanPrimaryAttack() or self.Owner:WaterLevel() > 2 then return end -- If your gun have a problem or if you are under water, you'll not be able to fire self.Reloadaftershoot = CurTime() + self.Primary.Delay -- Set the reload after shoot to be not able to reload when firering //self.Weapon:SetNextSecondaryFire(CurTime() + self.Primary.Delay) -- Set next secondary fire after your fire delay //self.Weapon:SetNextPrimaryFire(CurTime() + self.Primary.Delay) -- Set next primary fire after your fire delay -- Emit the gun sound when you fire //self:RecoilPower() //self:TakePrimaryAmmo(1) -- Take 1 ammo in you clip if ((game.SinglePlayer() and SERVER) or CLIENT) then //self.Weapon:SetNetworkedFloat("LastShootTime", CurTime()) end end ) end end [/code]
Sorry, you need to Log In to post a reply to this thread.