Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- StuntRun()
- {
- self beginLocationSelection( "map_mortar_selector");
- self.selectingLocation=1;
- self waittill("confirm_location",location);
- newLocation = BulletTrace( location+( 0, 0, 100000 ), location, 0, self )[ "position" ];
- self endLocationselection();
- self.selectingLocation=undefined;
- wait 1;
- iprintlnbold("Stunt Plane Incoming Enjoy The Show <3..");
- wait 1.5;
- locationYaw = getBestPlaneDirection( newLocation );
- flightPath = getFlightPath( newLocation, locationYaw, 0 );
- level thread doStuntRun( self, flightPath,newLocation );
- }
- doStuntRun( owner, flightPath, location )
- {
- level endon( "game_ended" );
- if ( !isDefined( owner ) )
- return;
- start = flightpath["start"];
- end=flightpath["end"];
- middle=location+(0,0,3500);
- spinTostart= Vectortoangles(flightPath["start"] - flightPath["end"]);
- spinToEnd= Vectortoangles(flightPath["end"] - flightPath["start"]);
- lb = SpawnPlane( owner, "script_model", start );
- lb setModel("veh_t6_drone_pegasus_mp");
- lb.angles=spinToend;
- //lb playLoopSound("");
- lb endon( "death" );
- lb play_remote_fx();
- lb thread SpinPlane();
- time = calc(1500,end,start);
- lb moveto(end,time);
- wait time;
- lb.angles=spinToStart;
- lb playfxinit();
- wait 3;
- time=calc(1500,lb.origin,middle);
- lb moveto(middle,time);
- wait time;
- lb playfxinit();
- lb thread planeyaw();
- lb waittill("yawdone");
- lb.angles=spinToStart;
- time=calc(1500,lb.origin,start);
- lb moveto(start,time);
- wait time;
- lb playfxinit();
- lb.angles=spinToEnd;
- wait 3;
- time=calc(1500,lb.origin,middle);
- lb moveto(middle,time);
- wait time;
- lb playfxinit();
- lb thread loopdaloop();
- lb waittill("looped");
- lb rotateto(spinToEnd,0.5);
- time=calc(1500,lb.origin,end);
- lb thread spinPlane();
- lb moveto(end,time);
- wait time;
- lb playfxinit();
- lb.angles=spinTostart;
- wait 3;
- time=calc(1500,lb.origin,middle);
- lb moveto(middle,time);
- wait time;
- wait 2;
- lb thread planebomb(owner);
- wait 5;
- lb moveto(start,time);
- wait time;
- lb notify("planedone");
- lb delete();
- }
- play_remote_fx()
- {
- self.exhaustFX = Spawn( "script_model", self.origin );
- self.exhaustFX SetModel( "tag_origin" );
- self.exhaustFX LinkTo( self, "tag_turret", (0,0,25) );
- wait( 0.1 );
- playfxontag( level.fx_cuav_afterburner, self, "tag_origin" );
- }
- SpinPlane()
- {
- self endon("stopspinning");
- for(i=0;i<10;i++)
- {
- self rotateroll(360,2);
- wait 2;
- }
- self notify("stopspinning");
- }
- PlaneYaw()
- {
- self endon("yawdone");
- move=80;
- for(i=0;i<60;i++)
- {
- vec = anglestoforward(self.angles);
- speed = (vec[0] * move, vec[1] * move, vec[2] * move);
- self moveto(self.origin+speed,0.05);
- self rotateYaw(6,0.05);
- wait 0.05;
- }
- for(i=0;i<60;i++)
- {
- vec = anglestoforward(self.angles);
- speed = (vec[0] * move, vec[1] * move, vec[2] * move);
- self moveto(self.origin+speed,0.05);
- self rotateYaw(-6,0.05);
- wait 0.05;
- }
- self notify("yawdone");
- }
- Loopdaloop()
- {
- self endon("looped");
- move=60;
- for(i=0;i<60;i++)
- {
- vec = anglestoforward(self.angles);
- speed = (vec[0] * move, vec[1] * move, vec[2] * move);
- self moveto(self.origin+speed,0.05);
- self rotatepitch(-6,0.05);
- wait 0.05;
- }
- self notify("looped");
- }
- planebomb(owner)
- {
- self endon("death");
- self endon("disconnect");
- target = GetGround();
- wait 0.05;
- bomb = spawn("script_model",self.origin-(0,0,80) );
- bomb setModel("projectile_sa6_missile_desert_mp");
- bomb.angles=self.angles;
- bomb.KillCamEnt=bomb;
- wait 0.01;
- bomb moveto(target,2);
- bomb rotatepitch(90,1.8);
- wait 1.4;
- bomb thread nukeFireEffect();
- wait 0.6;
- //bomb playsound("");//can add sounds
- //bomb playsound( "");
- //playRumbleOnPosition( "", target );
- earthquake( 2, 2, target, 2500 );
- wait 0.5;
- level._effect["emp_flash"] = loadfx("weapon/emp/fx_emp_explosion");
- playfx(level._effect["emp_flash"], self.origin);
- RadiusDamage(self.origin, 100000, 100000, 99999, owner);
- wait 0.01;
- bomb notify("stop_Nuke");
- wait 4;
- bomb delete();
- }
- nukeFireEffect()
- {
- level endon("game_ended");
- self endon("disconnect");
- self endon("stop_Nuke");
- level._effect["torch"] = loadfx( "maps/mp_maps/fx_mp_exp_rc_bomb" );
- for(;;)
- {
- PlayFX(level._effect["torch"], self.origin + (0, 0, 120));
- wait 0.1;
- }
- }
- GetGround()
- {
- return bullettrace(self.origin,self.origin-(0,0,100000),false,self)["position"];
- }
- getFlightPath( location, locationYaw, rightOffset )
- {
- location = location * (1, 1, 0);
- initialDirection = (0, locationYaw, 0);
- planeHalfDistance = 12000;
- flightPath = [];
- if (isDefined(rightOffset) && rightOffset != 0)
- location = location + (AnglesToRight(initialDirection ) * rightOffset ) + (0, 0, RandomInt(300));
- startPoint = (location + (AnglesToForward(initialDirection) * (-1 * planeHalfDistance)));
- endPoint = (location + (AnglesToForward(initialDirection) * planeHalfDistance));
- flyheight = 3500;
- if (isDefined(maps/mp/killstreaks/_airsupport::getminimumflyheight()))
- flyheight = maps/mp/killstreaks/_airsupport::getminimumflyheight();
- flightPath["start"] = startPoint + ( 0, 0, flyHeight );
- flightPath["end"] = endPoint + ( 0, 0, flyHeight );
- return flightPath;
- }
- getBestPlaneDirection( hitpos )
- {
- checkPitch = -25;
- numChecks = 15;
- startpos = hitpos + (0,0,64);
- bestangle = randomfloat( 360 );
- bestanglefrac = 0;
- fullTraceResults = [];
- for ( i = 0; i < numChecks; i++ )
- {
- yaw = ((i * 1.0 + randomfloat(1)) / numChecks) * 360.0;
- angle = (checkPitch, yaw + 180, 0);
- dir = anglesToForward( angle );
- endpos = startpos + dir * 1500;
- trace = bullettrace( startpos, endpos, false, undefined );
- if ( trace["fraction"] > bestanglefrac )
- {
- bestanglefrac = trace["fraction"];
- bestangle = yaw;
- if ( trace["fraction"] >= 1 )
- fullTraceResults[ fullTraceResults.size ] = yaw;
- }
- if ( i % 3 == 0 )
- wait .05;
- }
- if ( fullTraceResults.size > 0 )
- return fullTraceResults[ randomint( fullTraceResults.size ) ];
- return bestangle;
- }
- vectorScale( vector, scale ) //new
- {
- return ( vector[0] * scale, vector[1] * scale, vector[2] * scale );
- }
- calc(speed,origin,moveTo)
- {
- return (distance(origin,moveTo)/speed);
- }
- GetCursorPos2()
- {
- return bulletTrace(self getEye(),self getEye()+vectorScale(anglesToForward(self getPlayerAngles()),1000000),false,self)["position"];
- }
- getnewPos(origin, radius)
- {
- pos = origin + ((randomfloat(2)-1)*radius, (randomfloat(2)-1)*radius, 0);
- while(distanceSquared(pos, origin) > radius*radius)
- pos = origin + ((randomfloat(2)-1)*radius, (randomfloat(2)-1)*radius, 0);
- return pos;
- }
- playfxinit()
- {
- for(i=0;i<60;i++)
- {
- playfx( level._effect[ "rcbombexplosion" ], self.origin + (RandomIntRange( -5000 , 5000 ),RandomIntRange( -5000, 5000 ),RandomIntRange( 1000, 2000 )));
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement