Advertisement
Guest User

BO2 1.19 GSC Stunt Run Script

a guest
May 28th, 2015
345
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.39 KB | None | 0 0
  1. StuntRun()
  2. {
  3.  
  4. self beginLocationSelection( "map_mortar_selector");
  5. self.selectingLocation=1;
  6. self waittill("confirm_location",location);
  7. newLocation = BulletTrace( location+( 0, 0, 100000 ), location, 0, self )[ "position" ];
  8. self endLocationselection();
  9. self.selectingLocation=undefined;
  10. wait 1;
  11. iprintlnbold("Stunt Plane Incoming Enjoy The Show <3..");
  12. wait 1.5;
  13. locationYaw = getBestPlaneDirection( newLocation );
  14. flightPath = getFlightPath( newLocation, locationYaw, 0 );
  15. level thread doStuntRun( self, flightPath,newLocation );
  16. }
  17.  
  18. doStuntRun( owner, flightPath, location )
  19. {
  20. level endon( "game_ended" );
  21.  
  22. if ( !isDefined( owner ) )
  23. return;
  24. start = flightpath["start"];
  25. end=flightpath["end"];
  26. middle=location+(0,0,3500);
  27.  
  28. spinTostart= Vectortoangles(flightPath["start"] - flightPath["end"]);
  29. spinToEnd= Vectortoangles(flightPath["end"] - flightPath["start"]);
  30.  
  31. lb = SpawnPlane( owner, "script_model", start );
  32. lb setModel("veh_t6_drone_pegasus_mp");
  33. lb.angles=spinToend;
  34. //lb playLoopSound("");
  35. lb endon( "death" );
  36. lb play_remote_fx();
  37. lb thread SpinPlane();
  38.  
  39. time = calc(1500,end,start);
  40. lb moveto(end,time);
  41. wait time;
  42. lb.angles=spinToStart;
  43. lb playfxinit();
  44. wait 3;
  45.  
  46. time=calc(1500,lb.origin,middle);
  47. lb moveto(middle,time);
  48. wait time;
  49. lb playfxinit();
  50.  
  51. lb thread planeyaw();
  52. lb waittill("yawdone");
  53.  
  54. lb.angles=spinToStart;
  55. time=calc(1500,lb.origin,start);
  56. lb moveto(start,time);
  57. wait time;
  58. lb playfxinit();
  59. lb.angles=spinToEnd;
  60. wait 3;
  61.  
  62. time=calc(1500,lb.origin,middle);
  63. lb moveto(middle,time);
  64. wait time;
  65. lb playfxinit();
  66.  
  67. lb thread loopdaloop();
  68. lb waittill("looped");
  69.  
  70. lb rotateto(spinToEnd,0.5);
  71. time=calc(1500,lb.origin,end);
  72. lb thread spinPlane();
  73. lb moveto(end,time);
  74. wait time;
  75. lb playfxinit();
  76.  
  77. lb.angles=spinTostart;
  78. wait 3;
  79.  
  80. time=calc(1500,lb.origin,middle);
  81. lb moveto(middle,time);
  82. wait time;
  83.  
  84. wait 2;
  85.  
  86. lb thread planebomb(owner);
  87.  
  88. wait 5;
  89.  
  90. lb moveto(start,time);
  91. wait time;
  92.  
  93. lb notify("planedone");
  94. lb delete();
  95. }
  96.  
  97.  
  98. play_remote_fx()
  99. {
  100. self.exhaustFX = Spawn( "script_model", self.origin );
  101. self.exhaustFX SetModel( "tag_origin" );
  102. self.exhaustFX LinkTo( self, "tag_turret", (0,0,25) );
  103. wait( 0.1 );
  104.  
  105. playfxontag( level.fx_cuav_afterburner, self, "tag_origin" );
  106. }
  107.  
  108. SpinPlane()
  109. {
  110. self endon("stopspinning");
  111. for(i=0;i<10;i++)
  112. {
  113. self rotateroll(360,2);
  114. wait 2;
  115. }
  116. self notify("stopspinning");
  117. }
  118.  
  119. PlaneYaw()
  120. {
  121. self endon("yawdone");
  122. move=80;
  123. for(i=0;i<60;i++)
  124. {
  125. vec = anglestoforward(self.angles);
  126. speed = (vec[0] * move, vec[1] * move, vec[2] * move);
  127. self moveto(self.origin+speed,0.05);
  128. self rotateYaw(6,0.05);
  129. wait 0.05;
  130. }
  131. for(i=0;i<60;i++)
  132. {
  133. vec = anglestoforward(self.angles);
  134. speed = (vec[0] * move, vec[1] * move, vec[2] * move);
  135. self moveto(self.origin+speed,0.05);
  136. self rotateYaw(-6,0.05);
  137. wait 0.05;
  138. }
  139. self notify("yawdone");
  140. }
  141. Loopdaloop()
  142. {
  143. self endon("looped");
  144. move=60;
  145. for(i=0;i<60;i++)
  146. {
  147. vec = anglestoforward(self.angles);
  148. speed = (vec[0] * move, vec[1] * move, vec[2] * move);
  149. self moveto(self.origin+speed,0.05);
  150. self rotatepitch(-6,0.05);
  151. wait 0.05;
  152. }
  153. self notify("looped");
  154. }
  155. planebomb(owner)
  156. {
  157. self endon("death");
  158. self endon("disconnect");
  159. target = GetGround();
  160. wait 0.05;
  161. bomb = spawn("script_model",self.origin-(0,0,80) );
  162. bomb setModel("projectile_sa6_missile_desert_mp");
  163. bomb.angles=self.angles;
  164. bomb.KillCamEnt=bomb;
  165. wait 0.01;
  166. bomb moveto(target,2);
  167. bomb rotatepitch(90,1.8);
  168. wait 1.4;
  169. bomb thread nukeFireEffect();
  170. wait 0.6;
  171. //bomb playsound("");//can add sounds
  172. //bomb playsound( "");
  173. //playRumbleOnPosition( "", target );
  174. earthquake( 2, 2, target, 2500 );
  175. wait 0.5;
  176. level._effect["emp_flash"] = loadfx("weapon/emp/fx_emp_explosion");
  177. playfx(level._effect["emp_flash"], self.origin);
  178. RadiusDamage(self.origin, 100000, 100000, 99999, owner);
  179. wait 0.01;
  180. bomb notify("stop_Nuke");
  181. wait 4;
  182. bomb delete();
  183. }
  184. nukeFireEffect()
  185. {
  186. level endon("game_ended");
  187. self endon("disconnect");
  188. self endon("stop_Nuke");
  189. level._effect["torch"] = loadfx( "maps/mp_maps/fx_mp_exp_rc_bomb" );
  190. for(;;)
  191. {
  192. PlayFX(level._effect["torch"], self.origin + (0, 0, 120));
  193. wait 0.1;
  194. }
  195. }
  196. GetGround()
  197. {
  198. return bullettrace(self.origin,self.origin-(0,0,100000),false,self)["position"];
  199. }
  200.  
  201. getFlightPath( location, locationYaw, rightOffset )
  202. {
  203. location = location * (1, 1, 0);
  204. initialDirection = (0, locationYaw, 0);
  205. planeHalfDistance = 12000;
  206. flightPath = [];
  207.  
  208. if (isDefined(rightOffset) && rightOffset != 0)
  209. location = location + (AnglesToRight(initialDirection ) * rightOffset ) + (0, 0, RandomInt(300));
  210.  
  211. startPoint = (location + (AnglesToForward(initialDirection) * (-1 * planeHalfDistance)));
  212. endPoint = (location + (AnglesToForward(initialDirection) * planeHalfDistance));
  213.  
  214. flyheight = 3500;
  215. if (isDefined(maps/mp/killstreaks/_airsupport::getminimumflyheight()))
  216. flyheight = maps/mp/killstreaks/_airsupport::getminimumflyheight();
  217.  
  218. flightPath["start"] = startPoint + ( 0, 0, flyHeight );
  219. flightPath["end"] = endPoint + ( 0, 0, flyHeight );
  220.  
  221. return flightPath;
  222. }
  223. getBestPlaneDirection( hitpos )
  224. {
  225.  
  226. checkPitch = -25;
  227.  
  228. numChecks = 15;
  229.  
  230. startpos = hitpos + (0,0,64);
  231.  
  232. bestangle = randomfloat( 360 );
  233. bestanglefrac = 0;
  234.  
  235. fullTraceResults = [];
  236.  
  237. for ( i = 0; i < numChecks; i++ )
  238. {
  239. yaw = ((i * 1.0 + randomfloat(1)) / numChecks) * 360.0;
  240. angle = (checkPitch, yaw + 180, 0);
  241. dir = anglesToForward( angle );
  242.  
  243. endpos = startpos + dir * 1500;
  244.  
  245. trace = bullettrace( startpos, endpos, false, undefined );
  246.  
  247. if ( trace["fraction"] > bestanglefrac )
  248. {
  249. bestanglefrac = trace["fraction"];
  250. bestangle = yaw;
  251.  
  252. if ( trace["fraction"] >= 1 )
  253. fullTraceResults[ fullTraceResults.size ] = yaw;
  254. }
  255.  
  256. if ( i % 3 == 0 )
  257. wait .05;
  258. }
  259.  
  260. if ( fullTraceResults.size > 0 )
  261. return fullTraceResults[ randomint( fullTraceResults.size ) ];
  262.  
  263. return bestangle;
  264. }
  265. vectorScale( vector, scale ) //new
  266. {
  267. return ( vector[0] * scale, vector[1] * scale, vector[2] * scale );
  268. }
  269.  
  270. calc(speed,origin,moveTo)
  271. {
  272. return (distance(origin,moveTo)/speed);
  273. }
  274.  
  275. GetCursorPos2()
  276. {
  277. return bulletTrace(self getEye(),self getEye()+vectorScale(anglesToForward(self getPlayerAngles()),1000000),false,self)["position"];
  278. }
  279.  
  280. getnewPos(origin, radius)
  281. {
  282.  
  283. pos = origin + ((randomfloat(2)-1)*radius, (randomfloat(2)-1)*radius, 0);
  284. while(distanceSquared(pos, origin) > radius*radius)
  285. pos = origin + ((randomfloat(2)-1)*radius, (randomfloat(2)-1)*radius, 0);
  286.  
  287. return pos;
  288. }
  289. playfxinit()
  290. {
  291. for(i=0;i<60;i++)
  292. {
  293. playfx( level._effect[ "rcbombexplosion" ], self.origin + (RandomIntRange( -5000 , 5000 ),RandomIntRange( -5000, 5000 ),RandomIntRange( 1000, 2000 )));
  294.  
  295. }
  296. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement