Guest User

Untitled

a guest
Jun 25th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. #include maps\mp\gametypes\_hud_util;
  2. #include maps\mp\_utility;
  3. #include common_scripts\utility;
  4.  
  5. init()
  6. {
  7. level thread onPlayerConnect();
  8. precacheShader("ac130_overlay_105mm");
  9. level.fx[0]=loadfx("fire/fire_smoke_trail_m");
  10. level.fx[1]=loadfx("fire/tank_fire_engine");
  11. level.fx[2]=loadfx("smoke/smoke_trail_black_heli");
  12. level.chopper_fx["explode"]["medium"] = loadfx("explosions/aerial_explosion");
  13. }
  14.  
  15. onPlayerConnect()
  16. {
  17. for( ;; )
  18. {
  19. level waittill( "connected", p );
  20. p thread onPlayerSpawned();
  21. }
  22. }
  23.  
  24. onPlayerSpawned()
  25. {
  26. self endon( "disconnect" );
  27. for( ;; )
  28. {
  29. self waittill( "spawned_player" );
  30. self thread monitorButtons();
  31. if(self isHost())
  32. self thread giveReaper();
  33. }
  34. }
  35.  
  36. giveReaper()
  37. {
  38. self endon( "disconnect" );
  39. self endon( "death" );
  40. if( !isDefined( level.reaperInUse ) )
  41. level.reaperInUse = 0;
  42. self thread monitorDeath();
  43. self.inReaper = 0;
  44. self.showHUD = 0;
  45. self thread reaperHUD();
  46. cW = [];
  47. curWeapon = 0;
  48. for( ;; )
  49. {
  50. self waittillmatch( "buttonPress", "Right" );
  51. if( !self.isShooting )
  52. {
  53. if( !level.reaperInUse * !self.inReaper || level.reaperInUse * self.inReaper)
  54. {
  55. self.inReaper = !self.inReaper;
  56. level.reaperInUse = !level.reaperInUse;
  57. if( self.inReaper * level.reaperInUse )
  58. {
  59. cW[0] = self GetWeaponsListPrimaries();
  60. cW[1] = self getWeaponsListOffhands();
  61. curWeapon = self getCurrentWeapon();
  62. self takeAllWeapons();
  63. self giveWeapon( "killstreak_ac130_mp" );
  64. self switchToWeapon( "killstreak_ac130_mp" );
  65. wait 1.5;
  66. self VisionSetNakedForPlayer( "black_bw" );
  67. wait .25;
  68. self.showHUD = 1;
  69. self PlayerLinkWeaponviewToDelta( level.ac130, "tag_player", 1.0, 35, 35, 35, 35 );
  70. wait .15;
  71. self ThermalVisionFOFOverlayOn();
  72. self ThermalVisionOn();
  73. self VisionSetThermalForPlayer( getDvar( "mapname" ) );
  74. self thread monitorFire();
  75. }
  76. else if( !level.reaperInUse * !self.inReaper )
  77. {
  78. self thermalVisionOff();
  79. self notify( "closed" );
  80. self visionSetNakedForPlayer( "black_bw" );
  81. self.showHUD = 0;
  82. self unlink();self setClientDvar( "cg_fovmin", 1 );
  83. wait .25;
  84. self visionSetNakedForPlayer( getDvar( "mapname" ));
  85. self thermalvisionFOFOverlayOff();
  86. self takeWeapon( "killstreak_ac130_mp" );
  87. for( i = 0; i < cW[0].size; i++ )
  88. self giveWeapon( cW[0][i] );
  89. for( i = 0; i < cW[1].size; i++ )
  90. self giveWeapon( cW[1][i] );
  91. wait .25;
  92. self switchToWeapon( curWeapon );
  93. }
  94. }
  95. }
  96. else
  97. self iPrintlnBold( "^7ERROR: Can't close laptop while missile is being fired" );
  98. }
  99. }
  100.  
  101.  
  102. monitorFire()
  103. {
  104. self endon( "disconnect" );
  105. self endon( "closed" );
  106. zoom = 60;
  107. self.isShooting = 0;
  108. for( ; isAlive( self ) * self.inReaper; )
  109. {
  110. self setClientDvar( "cg_fovmin", zoom );
  111. self waittill( "buttonPress", button );
  112. if( button == "RS" )
  113. {
  114. if( zoom == 60 )
  115. zoom = 10;
  116. else
  117. zoom = 60;
  118. }
  119. else if( button == "RT" )
  120. {
  121. self.isShooting = 1;
  122. earthquake( 0.2, 1, self getEye(), 1000 );
  123. self playLocalSound( "ac130_105mm_fire" );
  124. missile = spawn( "script_model", self getEye() - ( 0, 0, 30 ) );
  125. missile setModel( "projectile_cbu97_clusterbomb" );
  126. missile playLoopSound("veh_b2_dist_loop");
  127. missile missileControl( self );
  128. missile playSound("harrier_jet_crash");
  129. missile delete();
  130. self.isShooting = 0;
  131. }
  132. }
  133. }
  134.  
  135.  
  136. missileControl( shooter )
  137. {
  138. turnSpeed = .05;
  139. rollAngle = 0;
  140. vecParts = 0;
  141. v = 0;
  142. vec = 0;
  143. for ( ;; )
  144. {
  145. for( i = 0; i < level.fx.size; i++ )
  146. playFX( level.fx[0], self getTagOrigin( "tag_origin" ) );
  147. pAngles = vectorToAngles( shooter traceView() - self.origin );
  148. self.angles = pAngles;
  149. flyLocation = self.origin + anglesToForward( pAngles ) * 100;
  150. self moveTo( flyLocation, .05 );
  151. if( distance( shooter traceView(), self.origin ) < 70 )
  152. {
  153. 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";
  154. playFX( level.chopper_fx["explode"]["medium"], shooter traceView() );
  155. vecParts = strTok( origins, "|" );
  156. for ( i = 0; i < vecParts.size; i++ )
  157. {
  158. v = strTok( vecParts[i], " " );
  159. vec = ( int( v[0] ), int( v[1] ), int( v[2] ) );
  160. playFX( level.chopper_fx["explode"]["medium"], shooter traceView() - vec );
  161. playFX( level.chopper_fx["explode"]["medium"], shooter traceView() + vec );
  162. }
  163. earthquake( 3, 1.5, shooter traceView(), 800 );
  164. RadiusDamage( shooter traceView(), 500, 350, 50, shooter );
  165. break;
  166. }
  167. wait .05;
  168. }
  169. }
  170.  
  171.  
  172. reaperHUD()
  173. {
  174. self endon( "disconnect" );
  175. reapHUD = newClientHudElem( self );
  176. reapHUD.x = 0;
  177. reapHUD.y = 0;
  178. reapHUD.alignX = "center";
  179. reapHUD.alignY = "middle";
  180. reapHUD.horzAlign = "center";
  181. reapHUD.vertAlign = "middle";
  182. reapHUD.foreground = true;
  183. reapHUD.alpha = 1;
  184. reapHUD setShader( "ac130_overlay_105mm", 640, 480 );
  185. for( ; isAlive( self ) ; )
  186. {
  187. reapHUD.alpha = self.showHUD;
  188. wait .05;
  189. }
  190. reapHUD destroy();
  191. }
  192.  
  193.  
  194. monitorDeath()
  195. {
  196. self waittill( "death" );
  197. self unlink();
  198. if( self.inReaper )
  199. {
  200. level.reaperInUse = 0;
  201. self.inReaper = 0;
  202. }
  203. }
  204.  
  205.  
  206. TraceView()
  207. {
  208. return BulletTrace(self getEye(), anglesToForward(self getPlayerAngles()) * 1000000, 1, self)["position"];
  209. }
  210.  
  211.  
  212. monitorButtons()
  213. {
  214. self endon( "disconnect" );
  215. self endon( "death" );
  216. ent = spawnStruct();
  217. buttons = strTok( "Right|+actionslot 4;RS|+melee;RT|+attack", ";" );
  218. for( i = 0; i < buttons.size; i++ )
  219. {
  220. split = strTok( buttons[i], "|" );
  221. self notifyOnPlayerCommand( split[0], split[1] );
  222. }
  223. for( ;; )
  224. {
  225. for( i = 0; i < buttons.size; i++ )
  226. {
  227. button = strTok( buttons[i], "|" );
  228. self thread waittill_string( button[0], ent );
  229. }
  230. ent waittill( "returned", btn );
  231. ent notify( "die" );
  232. self notify( "buttonPress", btn );
  233. }
  234. }
Add Comment
Please, Sign In to add comment