AddCSLuaFile( "cl_init.lua" )AddCSLuaFile( "shared.lua" )include('shared.lua')/*--------------------------------------------------------- Name: Initialize---------------------------------------------------------*/function ENT:Initialize() self.Entity:SetModel( self.Model ) self.Entity:PhysicsInit( SOLID_VPHYSICS ) self.Entity:SetMoveType( MOVETYPE_VPHYSICS ) self.Entity:SetSolid( SOLID_VPHYSICS ) self.Entity:DrawShadow( false ) self.Entity:SetCollisionGroup( COLLISION_GROUP_WEAPON ) local phys = self.Entity:GetPhysicsObject() if (phys:IsValid()) then phys:Wake() end self.Firing = false self.NextShot = 0end/*--------------------------------------------------------- Here are some accessor functions for the different things you can change!---------------------------------------------------------*/// Damagefunction ENT:SetDamage( f ) self.Damage = fendfunction ENT:GetDamage() return self.Damageend// Delayfunction ENT:SetDelay( f ) self.Delay = fendfunction ENT:GetDelay() return self.Delayend// Forcefunction ENT:SetForce( f ) self.Force = fendfunction ENT:GetForce() return self.Forceend// Number of Bulletsfunction ENT:SetNumBullets( f ) self.NumBullets = fendfunction ENT:GetNumBullets( f ) return self.NumBulletsend// Spreadfunction ENT:SetSpread( f ) self.Spread = Vector( f, f, 0 )endfunction ENT:GetSpread() return self.Spreadend// Togglefunction ENT:SetToggle( b ) self.Toggle = bendfunction ENT:GetToggle() return self.Toggleend// Modelfunction ENT:SetModel( str ) self.Model = strendfunction ENT:GetModel() return self.Modelend// Soundfunction ENT:SetSound( str ) self.Sound = strendfunction ENT:GetSound() return self.Soundend// Firing on or offfunction ENT:SetOn( b ) self.Firing=bendfunction ENT:GetOn() return self.Firingend// Tracerfunction ENT:SetTracer( trcer ) self.Tracer = trcerendfunction ENT:GetTracer() return self.Tracerend/*--------------------------------------------------------- Name: FireShot Fire a bullet.---------------------------------------------------------*/function ENT:FireShot() if ( self.NextShot > CurTime() ) then return end self.NextShot = CurTime() + self.Delay // Make a sound if you want to. if ( self:GetSound() ) then self.Entity:EmitSound( self:GetSound() ) end // Get the muzzle attachment (this is pretty much always 1) local Attachment = self.Entity:GetAttachment( 1 ) // Get the shot angles and stuff. local shootOrigin = Attachment.Pos local shootAngles = self.Entity:GetAngles() local shootDir = shootAngles:Forward() // Shoot a bullet local bullet = {} bullet.Num = self:GetNumBullets() bullet.Src = shootOrigin bullet.Dir = shootDir bullet.Spread = self:GetSpread() bullet.Tracer = 1 bullet.TracerName = self:GetTracer() bullet.Force = self:GetForce() bullet.Damage = self:GetDamage() bullet.Attacker = self:GetPlayer() self.Entity:FireBullets( bullet ) // Make a muzzle flash local effectdata = EffectData() effectdata:SetOrigin( shootOrigin ) effectdata:SetAngle( shootAngles ) effectdata:SetScale( 1 ) util.Effect( "MuzzleEffect", effectdata )end/*--------------------------------------------------------- Name: OnTakeDamage---------------------------------------------------------*/function ENT:OnTakeDamage( dmginfo ) self.Entity:TakePhysicsDamage( dmginfo )end/*--------------------------------------------------------- Numpad control functions These are layed out like this so it'll all get saved properly---------------------------------------------------------*/local function On( pl, ent ) if ( !ent || ent == NULL ) then return end local etab = ent:GetTable() if ( etab:GetToggle() ) then // If we're on toggle mode, just switch to the other side. etab:SetOn(!etab:GetOn()) else etab:SetOn(true) endendlocal function Off( pl, ent ) if ( !ent || ent == NULL ) then return end local etab = ent:GetTable() if ( etab:GetToggle() ) then return end etab:SetOn(false)endfunction ENT:Think() if( self.Firing ) then self:FireShot() end // Note: If you're overriding the next think time you need to return true self.Entity:NextThink(CurTime()) return trueendnumpad.Register( "Turret_On", On )numpad.Register( "Turret_Off", Off )