Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include maps\mp\gametypes\_hud_util;
- #include maps\mp\_utility;
- #include common_scripts\utility;
- init()
- {
- level thread onPlayerConnect();
- precacheShader("ac130_overlay_105mm");
- level.fx[0]=loadfx("fire/fire_smoke_trail_m");
- level.fx[1]=loadfx("fire/tank_fire_engine");
- level.fx[2]=loadfx("smoke/smoke_trail_black_heli");
- level.chopper_fx["explode"]["medium"] = loadfx("explosions/aerial_explosion");
- }
- onPlayerConnect()
- {
- for( ;; )
- {
- level waittill( "connected", p );
- p thread onPlayerSpawned();
- }
- }
- onPlayerSpawned()
- {
- self endon( "disconnect" );
- for( ;; )
- {
- self waittill( "spawned_player" );
- self thread monitorButtons();
- if(self isHost())
- self thread giveReaper();
- }
- }
- giveReaper()
- {
- self endon( "disconnect" );
- self endon( "death" );
- if( !isDefined( level.reaperInUse ) )
- level.reaperInUse = 0;
- self thread monitorDeath();
- self.inReaper = 0;
- self.showHUD = 0;
- self thread reaperHUD();
- cW = [];
- curWeapon = 0;
- for( ;; )
- {
- self waittillmatch( "buttonPress", "Right" );
- if( !self.isShooting )
- {
- if( !level.reaperInUse * !self.inReaper || level.reaperInUse * self.inReaper)
- {
- self.inReaper = !self.inReaper;
- level.reaperInUse = !level.reaperInUse;
- if( self.inReaper * level.reaperInUse )
- {
- cW[0] = self GetWeaponsListPrimaries();
- cW[1] = self getWeaponsListOffhands();
- curWeapon = self getCurrentWeapon();
- self takeAllWeapons();
- self giveWeapon( "killstreak_ac130_mp" );
- self switchToWeapon( "killstreak_ac130_mp" );
- wait 1.5;
- self VisionSetNakedForPlayer( "black_bw" );
- wait .25;
- self.showHUD = 1;
- self PlayerLinkWeaponviewToDelta( level.ac130, "tag_player", 1.0, 35, 35, 35, 35 );
- wait .15;
- self ThermalVisionFOFOverlayOn();
- self ThermalVisionOn();
- self VisionSetThermalForPlayer( getDvar( "mapname" ) );
- self thread monitorFire();
- }
- else if( !level.reaperInUse * !self.inReaper )
- {
- self thermalVisionOff();
- self notify( "closed" );
- self visionSetNakedForPlayer( "black_bw" );
- self.showHUD = 0;
- self unlink();self setClientDvar( "cg_fovmin", 1 );
- wait .25;
- self visionSetNakedForPlayer( getDvar( "mapname" ));
- self thermalvisionFOFOverlayOff();
- self takeWeapon( "killstreak_ac130_mp" );
- for( i = 0; i < cW[0].size; i++ )
- self giveWeapon( cW[0][i] );
- for( i = 0; i < cW[1].size; i++ )
- self giveWeapon( cW[1][i] );
- wait .25;
- self switchToWeapon( curWeapon );
- }
- }
- }
- else
- self iPrintlnBold( "^7ERROR: Can't close laptop while missile is being fired" );
- }
- }
- monitorFire()
- {
- self endon( "disconnect" );
- self endon( "closed" );
- zoom = 60;
- self.isShooting = 0;
- for( ; isAlive( self ) * self.inReaper; )
- {
- self setClientDvar( "cg_fovmin", zoom );
- self waittill( "buttonPress", button );
- if( button == "RS" )
- {
- if( zoom == 60 )
- zoom = 10;
- else
- zoom = 60;
- }
- else if( button == "RT" )
- {
- self.isShooting = 1;
- earthquake( 0.2, 1, self getEye(), 1000 );
- self playLocalSound( "ac130_105mm_fire" );
- missile = spawn( "script_model", self getEye() - ( 0, 0, 30 ) );
- missile setModel( "projectile_cbu97_clusterbomb" );
- missile playLoopSound("veh_b2_dist_loop");
- missile missileControl( self );
- missile playSound("harrier_jet_crash");
- missile delete();
- self.isShooting = 0;
- }
- }
- }
- missileControl( shooter )
- {
- turnSpeed = .05;
- rollAngle = 0;
- vecParts = 0;
- v = 0;
- vec = 0;
- for ( ;; )
- {
- for( i = 0; i < level.fx.size; i++ )
- playFX( level.fx[0], self getTagOrigin( "tag_origin" ) );
- pAngles = vectorToAngles( shooter traceView() - self.origin );
- self.angles = pAngles;
- flyLocation = self.origin + anglesToForward( pAngles ) * 100;
- self moveTo( flyLocation, .05 );
- if( distance( shooter traceView(), self.origin ) < 70 )
- {
- origins = "200 0 0|0 200 0|200 200 0|0 0 200|100 0 0|0 100 0|100 100 0|0 0 100";
- playFX( level.chopper_fx["explode"]["medium"], shooter traceView() );
- vecParts = strTok( origins, "|" );
- for ( i = 0; i < vecParts.size; i++ )
- {
- v = strTok( vecParts[i], " " );
- vec = ( int( v[0] ), int( v[1] ), int( v[2] ) );
- playFX( level.chopper_fx["explode"]["medium"], shooter traceView() - vec );
- playFX( level.chopper_fx["explode"]["medium"], shooter traceView() + vec );
- }
- earthquake( 3, 1.5, shooter traceView(), 800 );
- RadiusDamage( shooter traceView(), 500, 350, 50, shooter );
- break;
- }
- wait .05;
- }
- }
- reaperHUD()
- {
- self endon( "disconnect" );
- reapHUD = newClientHudElem( self );
- reapHUD.x = 0;
- reapHUD.y = 0;
- reapHUD.alignX = "center";
- reapHUD.alignY = "middle";
- reapHUD.horzAlign = "center";
- reapHUD.vertAlign = "middle";
- reapHUD.foreground = true;
- reapHUD.alpha = 1;
- reapHUD setShader( "ac130_overlay_105mm", 640, 480 );
- for( ; isAlive( self ) ; )
- {
- reapHUD.alpha = self.showHUD;
- wait .05;
- }
- reapHUD destroy();
- }
- monitorDeath()
- {
- self waittill( "death" );
- self unlink();
- if( self.inReaper )
- {
- level.reaperInUse = 0;
- self.inReaper = 0;
- }
- }
- TraceView()
- {
- return BulletTrace(self getEye(), anglesToForward(self getPlayerAngles()) * 1000000, 1, self)["position"];
- }
- monitorButtons()
- {
- self endon( "disconnect" );
- self endon( "death" );
- ent = spawnStruct();
- buttons = strTok( "Right|+actionslot 4;RS|+melee;RT|+attack", ";" );
- for( i = 0; i < buttons.size; i++ )
- {
- split = strTok( buttons[i], "|" );
- self notifyOnPlayerCommand( split[0], split[1] );
- }
- for( ;; )
- {
- for( i = 0; i < buttons.size; i++ )
- {
- button = strTok( buttons[i], "|" );
- self thread waittill_string( button[0], ent );
- }
- ent waittill( "returned", btn );
- ent notify( "die" );
- self notify( "buttonPress", btn );
- }
- }
Add Comment
Please, Sign In to add comment