//AddCSLuaFile( "cl_init.lua" ) -- Make sure clientside AddCSLuaFile( "shared.lua" ) -- and shared scripts are sent. include('shared.lua') function ENT:Initialize() self.bombTime = 20 // in seconds self.defuseTime = 66*5 // this is in server ticks REMEMBER TO CHANGE THIS IN shared.lua // self.countDown = self.bombTime self.countDown = 0 // this makes the bomb explode the next time self.Timer is called self.defuse = self.defuseTime self:SetNWInt("DefuseTimer", self.defuseTime) self:SetModel("models/weapons/w_c4_planted.mdl") self:PhysicsInit( SOLID_VPHYSICS ) self:SetMoveType( MOVETYPE_VPHYSICS ) self:SetSolid( SOLID_VPHYSICS ) self:SetCollisionGroup(COLLISION_GROUP_WEAPON) // collides with everything except players local phys = self:GetPhysicsObject() if ( phys:IsValid() ) then phys:Wake() end self:SetUseType(CONTINUOUS_USE) self.bombsprite = ents.Create("env_sprite") self.bombsprite:SetKeyValue("model","sprites/blueflare1.spr") self.bombsprite:SetKeyValue("scale","0.3") self.bombsprite:SetKeyValue("rendermode","3") self.bombsprite:SetKeyValue("rendercolor","255 0 0") self.bombsprite:SetPos(self:GetPos() + Vector(0,0,10)) self.bombsprite:SetParent(self) self.bombsprite:Spawn() self.bombsprite:Fire("ShowSprite","",0) // timer.Simple(1, self.Timer, self) timer.Simple(0.5,self.SpriteToggle, self) end function ENT:SpriteToggle() if !self:IsValid() then return end if self.chargecountdown == 0 then return end self.bombsprite:Fire("ToggleSprite","",0) timer.Simple(0.5,self.SpriteToggle,self) end function ENT:Use( ply, caller ) self.defuse = self.defuse - 1 self:SetNWInt("DefuseTimer", self.defuse ) if self.defuse <= 0 then self:Remove() end end function ENT:Timer() if !self:IsValid() then return; end if self.countDown > 0 then // self:EmitSound("weapons/c4/c4_beep1.wav") self.Owner:PrintMessage(HUD_PRINTCENTER, self.countDown) self.countDown = self.countDown - 1 timer.Simple(1, self.Timer, self) else // self:EmitSound("ambient/explosions/explode_1.wav") // self:EmitSound("weapons/c4/c4_explode1.wav") // self:EmitSound("weapons/c4/c4_exp_deb2.wav") for k, v in pairs(player.GetAll()) do v:EmitSound("ambient/explosions/explode_1.wav") v:EmitSound("weapons/c4/c4_explode1.wav") v:EmitSound("weapons/c4/c4_exp_deb2.wav") end local wallTable = ents.FindInSphere( self:GetPos(), 1200 ) for _,wall in pairs(wallTable) do if ValidEntity(wall:GetNetworkedEntity("OwnerObj")) && wall:GetNetworkedEntity("OwnerObj"):IsPlayer() then constraint.RemoveAll( wall ) wall:SetParent( nil ) wall:SetMoveType( MOVETYPE_VPHYSICS ) wall:SetSolid( SOLID_VPHYSICS ) wall:SetPhysicsAttacker(self.Owner) local phys = wall:GetPhysicsObject() if phys:IsValid() then phys:EnableMotion( true ) phys:Wake() phys:ApplyForceCenter( (wall:GetPos() - self:GetPos() ):Normalize() * 999999999999999 ) end wall:Ignite( 10, 0 ) /* timer.Simple( 8, function() if !wall:IsValid() or wall:IsPlayer() then return end wall:Remove() end) */ end end local explode = ents.Create( "env_explosion" ) explode:SetPos( self:GetPos() ) explode:SetOwner( self.Owner ) explode:Spawn() explode:SetKeyValue( "iMagnitude", "220" ) explode:Fire( "Explode", 0, 0 ) self.sparktable = {} for i = 1,12,1 do self.EntSpark = ents.Create("env_spark") table.insert(self.sparktable, self.EntSpark) end for _,Sparks in pairs(self.sparktable) do local trace = {} trace.start = self:GetPos() + Vector(0,0,200) trace.endpos = self:GetPos() + Vector(math.random(-350,350),math.random(-350,350),math.random(0,250)) local tr = util.TraceLine(trace) Sparks:SetKeyValue("Magnitude",tostring(math.random(2,8))) Sparks:SetKeyValue("TrailLength",tostring(math.random(1,3))) Sparks:SetPos(tr.HitPos) Sparks:Spawn() Sparks:Fire("SparkOnce","",0) Sparks:Fire("kill","",2) end self:Remove() end end function ENT:OnRemove( ) self.bombsprite:Remove() end