CapsAdmin

Untitled

Mar 12th, 2011
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.00 KB | None | 0 0
  1. easylua.Start(Ply"oh")
  2. local ENT = {}
  3.  
  4. ENT.Type = "anim"
  5. ENT.Base = "base_entity"
  6.  
  7. ENT.Model = Model("models/Effects/combineball.mdl")
  8. ENT.ClassName = "combat_jeep"
  9.  
  10. if SERVER then
  11.  
  12.     function ENT:Initialize()
  13.        
  14.         self:SetModel( self.Model )
  15.         self:PhysicsInit( SOLID_VPHYSICS )
  16.         self:SetMoveType( MOVETYPE_VPHYSICS )
  17.         self:SetSolid( SOLID_VPHYSICS )
  18.         self:PhysWake()
  19.         self:SetColor(0,0,0,0)
  20.  
  21.  
  22.         local now = CurTime() - 120
  23.         local pos = self:GetPos( )
  24.         local ang = self:GetAngles( )
  25.            
  26.         ang:RotateAroundAxis( ang:Up( ), 180 )
  27.  
  28.         self.Veh = ents.Create( "prop_vehicle_jeep" )
  29.             self.Veh:SetKeyValue( "VehicleScript", "scripts/vehicles/jeep_test.txt" )
  30.             self.Veh:SetModel( "models/buggy.mdl" )
  31.             self.Veh:SetAngles( ang )
  32.         self.Veh:Spawn( )
  33.        
  34.         timer.Simple(0, function()
  35.             if self:IsValid() and self.Veh:IsValid() then
  36.                 self.Veh:SetPos( self:GetPos() )
  37.                 self.Veh:GetPhysicsObject():Sleep()
  38.             end
  39.         end)
  40.  
  41.         // Passenger Seats - Gunners
  42.         self.GunnerSeats = {}
  43.         self.MountedGuns = {}
  44.         local gunnerseats,gunnerangles,mgpos,mgang = {},{},{},{}
  45.  
  46.         // Seat
  47.         // Pos
  48.         gunnerseats[1] = Vector( 0, -70, 70 )
  49.         gunnerseats[2] = Vector( 20, -35, 20 )
  50.         // Ang
  51.         gunnerangles[1] = Angle( 0, 0, 0 )
  52.         gunnerangles[2] = Angle( 0, 0, 0 )
  53.         // Gunner
  54.  
  55.         // Mounted gun pos
  56.         mgpos[1] = Vector( 0, -50, 90 )
  57.         mgpos[2] = Vector( 17, 10, 46 )
  58.        
  59.         // Mounted gun angles
  60.         mgang[1] = Angle( 0, 90, 0 )
  61.         mgang[2] = Angle( 0, 90, 0 )
  62.        
  63.         local mnt, mntp = {},{}
  64.         mnt[1] = Angle( 0, 90, 180 )
  65.         mnt[2] = Angle( 0, -90, 180 )
  66.        
  67.         mntp[1] = Vector( 10, -32, 38.5 )
  68.         mntp[2] = Vector( 10, 32, 38.5 )
  69.  
  70.         for i=1,1 do
  71.             self.GunnerSeats[i] = ents.Create( "prop_vehicle_prisoner_pod" )
  72.             self.GunnerSeats[i]:SetPos( self.Veh:LocalToWorld( gunnerseats[i] ) )
  73.             self.GunnerSeats[i]:SetModel( "models/nova/jeep_seat.mdl" )
  74.             self.GunnerSeats[i]:SetKeyValue( "vehiclescript", "scripts/vehicles/prisoner_pod.txt" )
  75.             self.GunnerSeats[i]:SetKeyValue( "LimitView", "60" )
  76.             self.GunnerSeats[i].HandleAnimation = function( v, p ) return p:SelectWeightedSequence( ACT_GMOD_SIT_ROLLERCOASTER ) end
  77.             self.GunnerSeats[i]:SetAngles( self.Veh:GetAngles() + gunnerangles[i] )
  78.             self.GunnerSeats[i]:SetParent( self.Veh )
  79.             self.GunnerSeats[i]:Spawn()
  80.             self.GunnerSeats[i].isGunner = true
  81.  
  82.  
  83.             self.MountedGuns[i] = ents.Create( "prop_physics_override" )
  84.             self.MountedGuns[i]:SetPos( self.Veh:LocalToWorld( mgpos[i] ) )
  85.             self.MountedGuns[i]:SetAngles( self.Veh:GetAngles() + mgang[i] )
  86.             self.MountedGuns[i]:SetModel( "models/Airboatgun.mdl" )
  87.             self.MountedGuns[i]:SetParent( self.GunnerSeats[i] )
  88.             self.MountedGuns[i]:SetSolid( SOLID_NONE )
  89.             self.MountedGuns[i].LastAttack = now
  90.             self.MountedGuns[i]:Spawn()
  91.             self.GunnerSeats[i].MountedWeapon = self.MountedGuns[i]
  92.         end
  93.  
  94.         for i=2,2 do
  95.             self.MountedGuns[i] = ents.Create( "prop_physics_override" )
  96.             self.MountedGuns[i]:SetPos( self.Veh:LocalToWorld( mgpos[i] ) )
  97.             self.MountedGuns[i]:SetAngles( self.Veh:GetAngles() + mgang[i] )
  98.             self.MountedGuns[i]:SetModel( "models/weapons/w_mach_m249para.mdl" )
  99.             self.MountedGuns[i]:SetParent( self.Veh )
  100.             self.MountedGuns[i]:SetSolid( SOLID_NONE )
  101.             self.MountedGuns[i].LastAttack = now
  102.             self.MountedGuns[i]:Spawn()
  103.            
  104.             self.GunnerSeats[i] = ents.Create( "prop_vehicle_prisoner_pod" )
  105.             self.GunnerSeats[i]:SetPos( self.Veh:LocalToWorld( gunnerseats[i] ) )
  106.             self.GunnerSeats[i]:SetModel( "models/nova/jeep_seat.mdl" )
  107.             self.GunnerSeats[i]:SetKeyValue( "vehiclescript", "scripts/vehicles/prisoner_pod.txt" )
  108.             self.GunnerSeats[i]:SetKeyValue( "LimitView", "60" )
  109.             self.GunnerSeats[i].HandleAnimation = function( v, p ) return p:SelectWeightedSequence( ACT_GMOD_SIT_ROLLERCOASTER ) end
  110.             self.GunnerSeats[i]:SetAngles( self.Veh:GetAngles() + gunnerangles[i] )
  111.             self.GunnerSeats[i]:SetParent( self.Veh )
  112.             self.GunnerSeats[i].MountedWeapon = self.MountedGuns[i]
  113.             self.GunnerSeats[i]:Spawn()
  114.             self.GunnerSeats[i].isGunner= true
  115.         end
  116.  
  117.     end
  118.  
  119.     function ENT:OnRemove()
  120.         SafeRemoveEntity(self.Veh)
  121.     end
  122.        
  123.     function ENT:Think( )
  124.         local seat
  125.         local gunner
  126.         local wep
  127.         // Gunners
  128.         for i=1,1 do
  129.        
  130.             seat = self.GunnerSeats[i]
  131.             gunner = seat:GetDriver()
  132.             wep = seat.MountedWeapon
  133.            
  134.             if( ValidEntity( seat ) && ValidEntity( gunner ) && ValidEntity( wep ) ) then
  135.            
  136.                 local ang = gunner:EyeAngles()
  137.                
  138.                 if ( gunner:KeyDown( IN_ATTACK ) && wep.LastAttack + .06 <= CurTime() ) then
  139.                    
  140.                     ang = ang + Angle( math.Rand(-.8,.8), math.Rand(-.8,.8), 0 )
  141.                    
  142.                     local bullet = {}
  143.                     bullet.Num      = 1
  144.                     bullet.Src      = wep:GetPos() + wep:GetForward() * 55
  145.                     bullet.Dir      = wep:GetAngles():Forward()                 // Dir of bullet
  146.                     bullet.Spread   = Vector( .03, .03, .03 )               // Aim Cone
  147.                     bullet.Tracer   = 1                                         // Show a tracer on every x bullets  
  148.                     bullet.Force    = 0                                     // Amount of force to give to phys objects
  149.                     bullet.Damage   = 0
  150.                     bullet.AmmoType = "Ar2"
  151.                     bullet.TracerName = "AirboatGunHeavyTracer"
  152.                     bullet.Callback = function ( a, b, c )
  153.                                            
  154.                                             util.BlastDamage( gunner, gunner, b.HitPos, 40, 25 )
  155.                                            
  156.                                             return { damage = true, effects = DoDefaultEffect }
  157.                                            
  158.                                         end
  159.                                        
  160.                     wep:FireBullets( bullet )
  161.                     wep:EmitSound( "npc/turret_floor/shoot"..math.random(2,3)..".wav", 400, 60 )   
  162.  
  163.                     local effectdata = EffectData()
  164.                         effectdata:SetStart( wep:GetPos() )
  165.                         effectdata:SetOrigin( wep:GetPos() )
  166.                     util.Effect( "RifleShellEject", effectdata )  
  167.  
  168.                     local e = EffectData()
  169.                         e:SetStart( wep:GetPos()+wep:GetForward() * 62 )
  170.                         e:SetOrigin( wep:GetPos()+wep:GetForward() * 62 )
  171.                         e:SetEntity( wep )
  172.                         e:SetAttachment(1)
  173.                     util.Effect( "ChopperMuzzleFlash", e )
  174.  
  175.                     wep.LastAttack = CurTime() + 0.05
  176.            
  177.                 end
  178.  
  179.                 if gunner:KeyDown( IN_MOVELEFT ) then
  180.                 ang = seat:GetAngles():Right() * 2
  181.                 seatang = seat:GetAngles()
  182.                 seatang:RotateAroundAxis(seatang:Up(),ang.yaw)
  183.                 seat:SetAngles(seatang)
  184.                 end
  185.                 if gunner:KeyDown( IN_MOVERIGHT ) then
  186.                 ang = seat:GetAngles():Right() * -2
  187.                 seatang = seat:GetAngles()
  188.                 seatang:RotateAroundAxis(seatang:Up(),ang.yaw)
  189.                 seat:SetAngles(seatang)
  190.                 end
  191.  
  192.                
  193.                 wep:SetAngles( ang )
  194.             end
  195.            
  196.         end
  197.         //
  198.         for i=2,2 do
  199.        
  200.             seat = self.GunnerSeats[i]
  201.             gunner = seat:GetDriver()
  202.             wep = seat.MountedWeapon
  203.            
  204.             if( ValidEntity( seat ) && ValidEntity( gunner ) && ValidEntity( wep ) ) then
  205.            
  206.                 local ang = gunner:EyeAngles()
  207.                
  208.                 if ( gunner:KeyDown( IN_ATTACK ) && wep.LastAttack + .06 <= CurTime() ) then
  209.                    
  210.                     ang = ang + Angle( math.Rand(-.8,.8), math.Rand(-.8,.8), 0 )
  211.                    
  212.                     local bullet = {}
  213.                     bullet.Num      = 1
  214.                     bullet.Src      = wep:GetPos() + wep:GetForward() * 55
  215.                     bullet.Dir      = wep:GetAngles():Forward()                 // Dir of bullet
  216.                     bullet.Spread   = Vector( .04, .04, .04 )               // Aim Cone
  217.                     bullet.Tracer   = 1                                         // Show a tracer on every x bullets  
  218.                     bullet.Force    = 0                                     // Amount of force to give to phys objects
  219.                     bullet.Damage   = 5
  220.                     bullet.AmmoType = "Ar2"
  221.                     bullet.TracerName = "Tracer"                           
  222.                     wep:FireBullets( bullet )
  223.                     wep:EmitSound( "Weapon_M249.Single", 80, 60 )  
  224.  
  225.                     local effectdata = EffectData()
  226.                         effectdata:SetStart( wep:GetPos() + Vector(0,-10,6) )
  227.                         effectdata:SetOrigin( wep:GetPos() + Vector(0,-10,6)  )
  228.                         effectdata:SetAngle( wep:GetAngles() + Angle(0,90,0))
  229.                     util.Effect( "RifleShellEject", effectdata )  
  230.                     local Attachment = wep:GetAttachment( 1 )
  231.  
  232.                     local e = EffectData()
  233.                         e:SetOrigin( Attachment.Pos )
  234.                         e:SetAngle(wep:GetAngles())
  235.                         e:SetScale( 2 )
  236.                     util.Effect( "MuzzleEffect", e )
  237.  
  238.                     wep.LastAttack = CurTime()
  239.            
  240.                 end
  241.  
  242.                
  243.                 wep:SetAngles( ang )
  244.             end
  245.            
  246.         end
  247.        
  248.         self:NextThink(CurTime())
  249.         return true
  250.     end
  251.        
  252.        
  253. end
  254.  
  255. scripted_ents.Register(ENT, ENT.ClassName, true)
  256.  
  257. if SERVER then create(ENT.ClassName) end
  258.  
  259. easylua.End()
Advertisement
Add Comment
Please, Sign In to add comment