Advertisement
4FunPlayin

AGM Missile

Oct 4th, 2011
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.91 KB | None | 0 0
  1. /*Must go to
  2. Mods\<urmod>\maps\mp\killstreaks\_remotemissile.gsc*/
  3.  
  4. #include maps\mp\_utility;
  5. #include common_scripts\utility;
  6.  
  7. init()
  8. {
  9. mapname = getDvar( "mapname" );
  10. if ( mapname == "mp_suburbia" )
  11. {
  12. level.missileRemoteLaunchVert = 7000;
  13. level.missileRemoteLaunchHorz = 10000;
  14. level.missileRemoteLaunchTargetDist = 2000;
  15. }
  16. else if ( mapname == "mp_mainstreet" )
  17. {
  18. level.missileRemoteLaunchVert = 7000;
  19. level.missileRemoteLaunchHorz = 10000;
  20. level.missileRemoteLaunchTargetDist = 2000;
  21. }
  22. else
  23. {
  24. level.missileRemoteLaunchVert = 14000;
  25. level.missileRemoteLaunchHorz = 7000;
  26. level.missileRemoteLaunchTargetDist = 1500;
  27.  
  28. }
  29. precacheItem( "remotemissile_projectile_mp" );
  30. precacheShader( "ac130_overlay_grain" );
  31.  
  32. level.rockets = [];
  33.  
  34. level.killstreakFuncs["predator_missile"] = ::tryUsePredatorMissile;
  35.  
  36. level.missilesForSightTraces = [];
  37. }
  38.  
  39.  
  40. tryUsePredatorMissile( lifeId )
  41. {
  42. self thread spawnUAVForAGM();
  43. return true;
  44. }
  45.  
  46. drawLine( start, end, timeSlice, color )
  47. {
  48. drawTime = int(timeSlice * 20);
  49. for( time = 0; time < drawTime; time++ )
  50. {
  51. line( start, end, color,false, 1 );
  52. wait ( 0.05 );
  53. }
  54. }
  55.  
  56. /#
  57. _fire_noplayer( lifeId, player )
  58. {
  59. upVector = (0, 0, level.missileRemoteLaunchVert );
  60. backDist = level.missileRemoteLaunchHorz;
  61. targetDist = level.missileRemoteLaunchTargetDist;
  62.  
  63. forward = AnglesToForward( player.angles );
  64. startpos = player.origin + upVector + forward * backDist * -1;
  65. targetPos = player.origin + forward * targetDist;
  66.  
  67. rocket = MagicBullet( "remotemissile_projectile_mp", startpos, targetPos, player );
  68.  
  69. if ( !IsDefined( rocket ) )
  70. return;
  71.  
  72. rocket thread handleDamage();
  73.  
  74. rocket.lifeId = lifeId;
  75. rocket.type = "remote";
  76.  
  77. player CameraLinkTo( rocket, "tag_origin" );
  78. player ControlsLinkTo( rocket );
  79.  
  80. rocket thread Rocket_CleanupOnDeath();
  81.  
  82. wait ( 2.0 );
  83.  
  84. player ControlsUnlink();
  85. player CameraUnlink();
  86. }
  87. #/
  88.  
  89. handleDamage()
  90. {
  91. self endon ( "death" );
  92. self endon ( "deleted" );
  93.  
  94. self setCanDamage( true );
  95.  
  96. for ( ;; )
  97. {
  98. self waittill( "damage" );
  99.  
  100. println ( "projectile damaged!" );
  101. }
  102. }
  103.  
  104.  
  105. MissileEyes( player, rocket )
  106. {
  107. //level endon ( "game_ended" );
  108. player endon ( "joined_team" );
  109. player endon ( "joined_spectators" );
  110.  
  111. rocket thread Rocket_CleanupOnDeath();
  112. player thread Player_CleanupOnGameEnded( rocket );
  113. player thread Player_CleanupOnTeamChange( rocket );
  114.  
  115. player VisionSetMissilecamForPlayer( "black_bw", 0 );
  116.  
  117. player endon ( "disconnect" );
  118.  
  119. if ( isDefined( rocket ) )
  120. {
  121. player VisionSetMissilecamForPlayer( game["thermal_vision"], 1.0 );
  122. player thread delayedFOFOverlay();
  123. player CameraLinkTo( rocket, "tag_origin" );
  124. player ControlsLinkTo( rocket );
  125.  
  126. if ( getDvarInt( "camera_thirdPerson" ) )
  127. player setThirdPersonDOF( false );
  128.  
  129. rocket waittill( "death" );
  130.  
  131. // is defined check required because remote missile doesnt handle lifetime explosion gracefully
  132. // instantly deletes its self after an explode and death notify
  133. if ( isDefined(rocket) )
  134. player maps\mp\_matchdata::logKillstreakEvent( "predator_missile", rocket.origin );
  135.  
  136. player ControlsUnlink();
  137. player freezeControlsWrapper( true );
  138.  
  139. // If a player gets the final kill with a hellfire, level.gameEnded will already be true at this point
  140. if ( !level.gameEnded || isDefined( player.finalKill ) )
  141. player thread staticEffect( 0.5 );
  142.  
  143. wait ( 0.5 );
  144.  
  145. player ThermalVisionFOFOverlayOff();
  146.  
  147. player CameraUnlink();
  148.  
  149. if ( getDvarInt( "camera_thirdPerson" ) )
  150. player setThirdPersonDOF( true );
  151.  
  152. }
  153.  
  154. player clearUsingRemote();
  155. }
  156.  
  157.  
  158. delayedFOFOverlay()
  159. {
  160. self endon ( "death" );
  161. self endon ( "disconnect" );
  162. level endon ( "game_ended" );
  163.  
  164. wait ( 0.15 );
  165.  
  166. self ThermalVisionFOFOverlayOn();
  167. }
  168.  
  169. staticEffect( duration )
  170. {
  171. self endon ( "disconnect" );
  172.  
  173. staticBG = newClientHudElem( self );
  174. staticBG.horzAlign = "fullscreen";
  175. staticBG.vertAlign = "fullscreen";
  176. staticBG setShader( "white", 640, 480 );
  177. staticBG.archive = true;
  178. staticBG.sort = 10;
  179.  
  180. static = newClientHudElem( self );
  181. static.horzAlign = "fullscreen";
  182. static.vertAlign = "fullscreen";
  183. static setShader( "ac130_overlay_grain", 640, 480 );
  184. static.archive = true;
  185. static.sort = 20;
  186.  
  187. wait ( duration );
  188.  
  189. static destroy();
  190. staticBG destroy();
  191. }
  192.  
  193.  
  194. Player_CleanupOnTeamChange( rocket )
  195. {
  196. rocket endon ( "death" );
  197. self endon ( "disconnect" );
  198.  
  199. self waittill_any( "joined_team" , "joined_spectators" );
  200.  
  201. if ( self.team != "spectator" )
  202. {
  203. self ThermalVisionFOFOverlayOff();
  204. self ControlsUnlink();
  205. self CameraUnlink();
  206.  
  207. if ( getDvarInt( "camera_thirdPerson" ) )
  208. self setThirdPersonDOF( true );
  209. }
  210. self clearUsingRemote();
  211.  
  212. level.remoteMissileInProgress = undefined;
  213. }
  214.  
  215.  
  216. Rocket_CleanupOnDeath()
  217. {
  218. entityNumber = self getEntityNumber();
  219. level.rockets[ entityNumber ] = self;
  220. self waittill( "death" );
  221.  
  222. level.rockets[ entityNumber ] = undefined;
  223. }
  224.  
  225.  
  226. Player_CleanupOnGameEnded( rocket )
  227. {
  228. rocket endon ( "death" );
  229. self endon ( "death" );
  230.  
  231. level waittill ( "game_ended" );
  232.  
  233. self ThermalVisionFOFOverlayOff();
  234. self ControlsUnlink();
  235. self CameraUnlink();
  236.  
  237. if ( getDvarInt( "camera_thirdPerson" ) )
  238. self setThirdPersonDOF( true );
  239. }
  240.  
  241. dudemovealready()
  242. {
  243. while(1)
  244. {
  245. self moveTo(self.origin+(0, 80000, 0), 230);
  246. wait 20;
  247. self rotateyaw( 90, 10 );
  248. self moveTo(self.origin-(80000, 0, 0), 230);
  249. wait 20;
  250. self rotateyaw( 90, 10 );
  251. self moveTo(self.origin-(0, 80000, 0), 230);
  252. wait 20;
  253. self rotateyaw( 90, 10 );
  254. self moveTo(self.origin+(80000, 0, 0), 230);
  255. wait 20;
  256. self rotateyaw( 90, 10 );
  257. }
  258. }
  259.  
  260. returnToNormal()
  261. {
  262. self unlink();
  263. self show();
  264. self setOrigin(self.oldOrigin);
  265. self ThermalVisionFOFOverlayOff();
  266. self ThermalVisionOff();
  267. self setClientDvar("cg_gun_x", 0); //invisible gun
  268. self setOrigin(self.oldOrigin);
  269. self freezeControls(false);
  270. }
  271.  
  272. spawnUAVForAGM()
  273. {
  274. self endon("agm_hit");
  275. self endon("disconnect");
  276. self notifyOnPlayerCommand( "fiy", "+attack" );
  277.  
  278. self giveweapon("killstreak_ac130_mp");
  279. wait 0.2;
  280. self switchToWeapon("killstreak_ac130_mp");
  281.  
  282. wait 2;
  283.  
  284. uavwithagm = spawn("script_model", self.origin+(7000, -3000, 5500) );
  285. uavwithagm setModel( "vehicle_uav_static_mp" );
  286. uavwithagm Solid();
  287. uavwithagm.angles = (0, 90, 315);
  288. uavwithagm thread dudemovealready();
  289. uavwithagm.health = 600; //in case of miss xP
  290.  
  291. self.OldOrigin = self.origin;
  292.  
  293. wait 0.3; //let it rest.. lols
  294.  
  295. self PlayerLinkTo( uavwithagm, "tag_origin", 0.5, 0, 180, 0, 45);
  296. wait 0.1; //0.1 isn't really useful..
  297. self hide();//hides the shit ass you
  298. self ThermalVisionFOFOverlayOn();
  299. self ThermalVisionOn();
  300. self setClientDvar("cg_gun_x", -50); //invisible gun
  301. wait 0.3;
  302.  
  303. self waittill("fiy");
  304. firing = GetCursorPos();
  305. missile = MagicBullet("remotemissile_projectile_mp", uavwithagm.origin, firing, self);
  306. missile.angles = self getPlayerAngles();
  307.  
  308. maps\mp\killstreaks\_remotemissile::MissileEyes( self, missile );
  309.  
  310. wait 1;
  311. self ThermalVisionFOFOverlayOn();
  312. self giveweapon("killstreak_ac130_mp");
  313. wait 0.2;
  314. self switchToWeapon("killstreak_ac130_mp");
  315.  
  316. self waittill("fiy");
  317. firing = GetCursorPos();
  318. missile = MagicBullet("remotemissile_projectile_mp", uavwithagm.origin, firing, self);
  319. missile.angles = self getPlayerAngles();
  320.  
  321. maps\mp\killstreaks\_remotemissile::MissileEyes( self, missile );
  322. wait 1;
  323. self ThermalVisionFOFOverlayOn();
  324. self giveweapon("killstreak_ac130_mp");
  325. wait 0.2;
  326. self switchToWeapon("killstreak_ac130_mp");
  327.  
  328. self waittill("fiy");
  329. firing = GetCursorPos();
  330. missile = MagicBullet("remotemissile_projectile_mp", uavwithagm.origin, firing, self);
  331. missile.angles = self getPlayerAngles();
  332.  
  333. maps\mp\killstreaks\_remotemissile::MissileEyes( self, missile );
  334.  
  335. self returnToNormal();
  336.  
  337. uavwithagm delete();
  338. }
  339.  
  340.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement