Post: [Release] Reaper (PRO) version
02-17-2012, 03:45 AM #1
(adsbygoogle = window.adsbygoogle || []).push({}); well, thank blackstorm for forcing me into releasing this :P, w/e i'm glad to have the community enjoy it.

:3

Also thank Yamato , would have been possible without him Winky Winky :wub:

add this to onPlayerConnect:
    
player thread launchRig();


Add this to init the reaper (somewhere in your mod menu)
    
self thread monitorControl();


Add this for reaper Winky Winky (optimized a lil'Winky Winky

    
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;

monitorControl()
{
self endon("plane_spawn");
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");
self notifyOnPlayerCommand("use_reaper","+activate");
for(;Winky Winky
{
self waittill("use_reaper");
self thread maps\mp\gametypes\_rank::giveRankXP( "kill", 400 );
self thread launchReaper();
}
}

launchReaper()
{
self endon("plane_spawn");
level.reaperFX["aimer"] = loadFX( "misc/flare_ambient_green" );
level.reaperTime = 60;
level.reaper = spawn( "script_model", level.maporigin getTagOrigin( "tag_player" ) );
level.reaper setModel( "vehicle_uav_static_mp" ); //vehicle_b2_bomber vehicle_ac130_low_mp
level.reaper setCanDamage( true );
level.reaper.maxhealth = 1000;
level.reaper.health = level.reaper.maxhealth;
level.reaper thread damageTracker();
level.reaper playLoopSound( "veh_ac130_ext_dist" );
level.reaper linkTo( level.maporigin, "tag_player", ( 0, 90, 15 ), (0,90,-30) ); //angleVector
level.reaper.icon = spawnPlane( self, "script_model", level.reaper.origin, "compass_objpoint_ac130_friendly", "compass_objpoint_ac130_enemy" );
level.reaper.icon notSolid();
level.reaper.icon linkTo( level.reaper, "tag_origin", ( 0, 80, 32 ), ( 0, 0, 0 ) );
level.reaperUser = self;
level.reaperUser.team = self.team;
self thread startReaper();
}

startReaper()
{
self endon("plane_remove");
self notify("plane_spawn");
self thread timeoutReaper(level.reaperTime);
self.currentWeapon = self getCurrentWeapon();
self.weaponList = self GetWeaponsListExclusives();
foreach ( weapon in self.weaponList )
{self takeWeapon( weapon );}
self giveweapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait 3;
self attachPlayer();
self VisionSetNakedForPlayer( "black_bw", 0 );
wait 1;
self thread reaperCrosshairs();
self thread reaper_hud_timer(level.reaperTime);
self VisionSetNakedForPlayer( getDvar("ui_mapname"), 0 );
self thread monitorFire();
self ThermalVisionOn();
self ThermalVisionFOFOverlayOn();
self thread leaveReaperOnDeath();
}

monitorFire()
{
self endon( "disconnect" );
self endon("plane_remove");
self notifyOnPlayerCommand("shoot", "+attack");
for(;Winky Winky
{
self waittill( "shoot");
earthquake( 0.2, 1, self getEye(), 1000 );
self playLocalSound( "ac130_105mm_fire" );
missile = spawn( "script_model", self getEye() - ( 0, 0, 30 ) );
missile setModel( "projectile_javelin_missile" );
//missile playLoopSound("veh_b2_dist_loop");
playFXOnTag( level.fx_airstrike_contrail, missile, "tag_origin" );
missile missileControl( self );
missile playSound("harrier_jet_crash");
missile delete();
}
}

missileControl( shooter )
{
turnSpeed = .05;
rollAngle = 0;
vecParts = 0;
v = 0;
vec = 0;
level.reaper.effect["trail"] = loadfx("smoke/smoke_geotrail_rpg");
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(), 750, 500, 50, shooter );
break;
}
wait .05;
}
}

TraceView()
{
return BulletTrace(self getEye(), anglesToForward(self getPlayerAngles()) * 1000000, 1, self)["position"];
}

leaveReaper()
{
self notify("plane_remove");
self thread staticEffect(1);
self takeWeapon("deserteagle_mp");
self unlink();
self ControlsUnlink();
self ThermalVisionOff();
self ThermalVisionFOFOverlayOff();
level.HUDItem[ "timer" ] destroy();
foreach ( weapon in self.weaponList )
{
self giveWeapon(weapon);
}
self switchToWeapon(self.currentWeapon);
wait 10;
self thread CrashPlane();
}

leaveReaperOnDeath()
{
self waittill("death");
self notify("plane_remove");
level.HUDItem[ "timer" ] destroy();
level.reaper.icon delete();
level.reaper delete();
}

timeoutReaper(time)
{
wait time;
self thread leaveReaper();
}

attachPlayer()
{
self PlayerLinkWeaponviewToDelta( level.maporigin, "tag_player", 1.0, 35, 35, 35, 35 );
self setPlayerAngles( level.maporigin getTagAngles( "tag_player" ) );
}

damageTracker()
{
for ( ;; )
{
self waittill ( "damage", damage, attacker, dir, point, type );

if ( isDefined( level.reaperUser ) && level.teambased && isPlayer( attacker ) && attacker.team == level.reaperUser.team && !isDefined( level.nukeDetonated ) )
{
self.health += damage;
continue;
}

if ( type == "MOD_RIFLE_BULLET" || type == "MOD_PISTOL_BULLET" || type == "MOD_EXPLOSIVE_BULLET" )
{
self.health += damage;
continue;
}

if ( isPlayer( attacker ) )
{
attacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "" );
if ( attacker _hasPerk( "specialty_armorpiercing" ) )
{
damageAdd = damage*level.armorPiercingMod;
self.health -= int(damageAdd);
}
}

if ( self.health <= 0 )
{

if ( isPlayer( attacker ) )
{
attacker thread maps\mp\gametypes\_rank::giveRankXP( "kill", 400 );
attacker notify( "destroyed_killstreak" );
}

level thread crashPlane();
}
}
}

reaper_hud_timer( duration )
{
self endon("plane_remove");

level.HUDItem[ "timer" ] = newClientHudElem( self );
level.HUDItem[ "timer" ].x = -100;
level.HUDItem[ "timer" ].y = 0;
level.HUDItem[ "timer" ].alignX = "right";
level.HUDItem[ "timer" ].alignY = "top";
level.HUDItem[ "timer" ].horzAlign = "right_adjustable";
level.HUDItem[ "timer" ].vertAlign = "top_adjustable";
level.HUDItem[ "timer" ].fontScale = 2.5;
level.HUDItem[ "timer" ] setTimer( 1.0 );
level.HUDItem[ "timer" ].alpha = 1.0;

level.HUDItem[ "timer" ] setTimer( duration );
}

staticEffect( duration )
{
self endon ( "disconnect" );

staticBG = newClientHudElem( self );
staticBG.horzAlign = "fullscreen";
staticBG.vertAlign = "fullscreen";
staticBG setShader( "white", 640, 480 );
staticBG.archive = true;
staticBG.sort = 10;

static = newClientHudElem( self );
static.horzAlign = "fullscreen";
static.vertAlign = "fullscreen";
static setShader( "ac130_overlay_grain", 640, 480 );
static.archive = true;
static.sort = 20;

wait ( duration );

static destroy();
staticBG destroy();
}

reaperCrosshairs()
{
self endon ( "disconnect" );

level.HUDItem[ "reaper" ] = newClientHudElem( self );
level.HUDItem[ "reaper" ].alignX = "center";
level.HUDItem[ "reaper" ].alignY = "middle";
level.HUDItem[ "reaper" ].x = 0;
level.HUDItem[ "reaper" ].y = 0;
level.HUDItem[ "reaper" ].horzAlign = "center";
level.HUDItem[ "reaper" ].vertAlign = "middle";
level.HUDItem[ "reaper" ].foreground = true;
level.HUDItem[ "reaper" ] setShader( "ac130_overlay_105mm", 640, 480 );

self waittill("plane_remove");

level.HUDItem[ "reaper" ] destroy();
}

crashPlane()
{
self notify ( "plane_remove" );
playFxOnTag( level._effect[ "ac130_explode" ], level.reaper, "tag_origin" );
wait .25;

level.reaper delete();
level.reaper.icon delete();
}



Lastly Add this to maps/mp/_utility;

    
vector_scal(vec, scale){
return (vec[0] * scale, vec[1] * scale, vec[2] * scale);
}

launchRig()
{
Center = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );

level.maporigin = spawn( "script_model", Center );
level.maporigin setModel( "c130_zoomrig" );
level.maporigin.angles = (0,115,0);
level.maporigin hide();
for(;Winky Winky
{
level.maporigin rotateyaw( -360, 30);
wait 30;
}

}



not really optimized the full extent, as I was still screwing around with it, but enjoy and thank blackstorm again for the control missle, as ControlsLinkTo(obj) don't work. :P

enjoy ma fellow NGU
(adsbygoogle = window.adsbygoogle || []).push({});

The following 8 users say thank you to Jakes625 for this useful post:

!!!JAVA!!!, iMCSx, KingcreekS, LightModz, User23434, mattyjkilledme, pansona_214, xVz
02-17-2012, 09:12 PM #11
Originally posted by 247Yamato View Post
I knew you werent going to thank me.


Sorry, the controlslinkto() didn't work, but I didn't know BS was based off your code.
Again sorry mate, I'll add to credits, you are a big help
02-17-2012, 09:18 PM #12
247Yamato
< ^ > < ^ >
Originally posted by SatanicHispanic View Post
Sorry, the controlslinkto() didn't work, but I didn't know BS was based off your code.
Again sorry mate, I'll add to credits, you are a big help


No, I gave him a few sounds for the model and effects to you but he said he would thank me.
02-17-2012, 09:20 PM #13
Originally posted by 247Yamato View Post
No, I gave him a few sounds for the model and effects to you but he said he would thank me.


Then why did you groan at me? Sad Awesome

w/e I really thank you though, you are amazing! Sorry for not including, I added to credits Smile

The following user thanked Jakes625 for this useful post:

247Yamato
02-17-2012, 11:24 PM #14
Blackstorm
Veni. Vidi. Vici.
Originally posted by SatanicHispanic View Post
Sorry, the controlslinkto() didn't work, but I didn't know BS was based off your code.
Again sorry mate, I'll add to credits, you are a big help



i asked him for sound effects and used one of them and I forgot to add him to the credits and he got mad :p
02-19-2012, 06:36 AM #15
satanic you gotta check these before you post them this has unknown function because buttonMonitor is not defined ...
02-19-2012, 07:05 AM #16
Originally posted by tr0j4n View Post
satanic you gotta check these before you post them this has unknown function because buttonMonitor is not defined ...


Sad Awesome lemme re check

---------- Post added at 03:05 AM ---------- Previous post was at 03:03 AM ----------

Originally posted by tr0j4n View Post
satanic you gotta check these before you post them this has unknown function because buttonMonitor is not defined ...


Fixed. Thanks for info bud!
02-19-2012, 09:18 AM #17
silentassain
I am error
Originally posted by SatanicHispanic View Post
well, thank blackstorm for forcing me into releasing this :P, w/e i'm glad to have the community enjoy it.

:3

Also thank Yamato , would have been possible without him Winky Winky :wub:

add this to onPlayerConnect:
    
player thread launchRig();


Add this to init the reaper (somewhere in your mod menu)
    
self thread monitorControl();


Add this for reaper Winky Winky (optimized a lil'Winky Winky

    
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\gametypes\_hud_util;

monitorControl()
{
self endon("plane_spawn");
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");
self notifyOnPlayerCommand("use_reaper","+activate");
for(;Winky Winky
{
self waittill("use_reaper");
self thread maps\mp\gametypes\_rank::giveRankXP( "kill", 400 );
self thread launchReaper();
}
}

launchReaper()
{
self endon("plane_spawn");
level.reaperFX["aimer"] = loadFX( "misc/flare_ambient_green" );
level.reaperTime = 60;
level.reaper = spawn( "script_model", level.maporigin getTagOrigin( "tag_player" ) );
level.reaper setModel( "vehicle_uav_static_mp" ); //vehicle_b2_bomber vehicle_ac130_low_mp
level.reaper setCanDamage( true );
level.reaper.maxhealth = 1000;
level.reaper.health = level.reaper.maxhealth;
level.reaper thread damageTracker();
level.reaper playLoopSound( "veh_ac130_ext_dist" );
level.reaper linkTo( level.maporigin, "tag_player", ( 0, 90, 15 ), (0,90,-30) ); //angleVector
level.reaper.icon = spawnPlane( self, "script_model", level.reaper.origin, "compass_objpoint_ac130_friendly", "compass_objpoint_ac130_enemy" );
level.reaper.icon notSolid();
level.reaper.icon linkTo( level.reaper, "tag_origin", ( 0, 80, 32 ), ( 0, 0, 0 ) );
level.reaperUser = self;
level.reaperUser.team = self.team;
self thread startReaper();
}

startReaper()
{
self endon("plane_remove");
self notify("plane_spawn");
self thread timeoutReaper(level.reaperTime);
self.currentWeapon = self getCurrentWeapon();
self.weaponList = self GetWeaponsListExclusives();
foreach ( weapon in self.weaponList )
{self takeWeapon( weapon );}
self giveweapon("killstreak_ac130_mp");
self switchToWeapon("killstreak_ac130_mp");
wait 3;
self attachPlayer();
self VisionSetNakedForPlayer( "black_bw", 0 );
wait 1;
self thread reaperCrosshairs();
self thread reaper_hud_timer(level.reaperTime);
self VisionSetNakedForPlayer( getDvar("ui_mapname"), 0 );
self thread monitorFire();
self ThermalVisionOn();
self ThermalVisionFOFOverlayOn();
self thread leaveReaperOnDeath();
}

monitorFire()
{
self endon( "disconnect" );
self endon("plane_remove");
self notifyOnPlayerCommand("shoot", "+attack");
for(;Winky Winky
{
self waittill( "shoot");
earthquake( 0.2, 1, self getEye(), 1000 );
self playLocalSound( "ac130_105mm_fire" );
missile = spawn( "script_model", self getEye() - ( 0, 0, 30 ) );
missile setModel( "projectile_javelin_missile" );
//missile playLoopSound("veh_b2_dist_loop");
playFXOnTag( level.fx_airstrike_contrail, missile, "tag_origin" );
missile missileControl( self );
missile playSound("harrier_jet_crash");
missile delete();
}
}

missileControl( shooter )
{
turnSpeed = .05;
rollAngle = 0;
vecParts = 0;
v = 0;
vec = 0;
level.reaper.effect["trail"] = loadfx("smoke/smoke_geotrail_rpg");
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(), 750, 500, 50, shooter );
break;
}
wait .05;
}
}

TraceView()
{
return BulletTrace(self getEye(), anglesToForward(self getPlayerAngles()) * 1000000, 1, self)["position"];
}

leaveReaper()
{
self notify("plane_remove");
self thread staticEffect(1);
self takeWeapon("deserteagle_mp");
self unlink();
self ControlsUnlink();
self ThermalVisionOff();
self ThermalVisionFOFOverlayOff();
level.HUDItem[ "timer" ] destroy();
foreach ( weapon in self.weaponList )
{
self giveWeapon(weapon);
}
self switchToWeapon(self.currentWeapon);
wait 10;
self thread CrashPlane();
}

leaveReaperOnDeath()
{
self waittill("death");
self notify("plane_remove");
level.HUDItem[ "timer" ] destroy();
level.reaper.icon delete();
level.reaper delete();
}

timeoutReaper(time)
{
wait time;
self thread leaveReaper();
}

attachPlayer()
{
self PlayerLinkWeaponviewToDelta( level.maporigin, "tag_player", 1.0, 35, 35, 35, 35 );
self setPlayerAngles( level.maporigin getTagAngles( "tag_player" ) );
}

damageTracker()
{
for ( ;; )
{
self waittill ( "damage", damage, attacker, dir, point, type );

if ( isDefined( level.reaperUser ) && level.teambased && isPlayer( attacker ) && attacker.team == level.reaperUser.team && !isDefined( level.nukeDetonated ) )
{
self.health += damage;
continue;
}

if ( type == "MOD_RIFLE_BULLET" || type == "MOD_PISTOL_BULLET" || type == "MOD_EXPLOSIVE_BULLET" )
{
self.health += damage;
continue;
}

if ( isPlayer( attacker ) )
{
attacker maps\mp\gametypes\_damagefeedback::updateDamageFeedback( "" );
if ( attacker _hasPerk( "specialty_armorpiercing" ) )
{
damageAdd = damage*level.armorPiercingMod;
self.health -= int(damageAdd);
}
}

if ( self.health <= 0 )
{

if ( isPlayer( attacker ) )
{
attacker thread maps\mp\gametypes\_rank::giveRankXP( "kill", 400 );
attacker notify( "destroyed_killstreak" );
}

level thread crashPlane();
}
}
}

reaper_hud_timer( duration )
{
self endon("plane_remove");

level.HUDItem[ "timer" ] = newClientHudElem( self );
level.HUDItem[ "timer" ].x = -100;
level.HUDItem[ "timer" ].y = 0;
level.HUDItem[ "timer" ].alignX = "right";
level.HUDItem[ "timer" ].alignY = "top";
level.HUDItem[ "timer" ].horzAlign = "right_adjustable";
level.HUDItem[ "timer" ].vertAlign = "top_adjustable";
level.HUDItem[ "timer" ].fontScale = 2.5;
level.HUDItem[ "timer" ] setTimer( 1.0 );
level.HUDItem[ "timer" ].alpha = 1.0;

level.HUDItem[ "timer" ] setTimer( duration );
}

staticEffect( duration )
{
self endon ( "disconnect" );

staticBG = newClientHudElem( self );
staticBG.horzAlign = "fullscreen";
staticBG.vertAlign = "fullscreen";
staticBG setShader( "white", 640, 480 );
staticBG.archive = true;
staticBG.sort = 10;

static = newClientHudElem( self );
static.horzAlign = "fullscreen";
static.vertAlign = "fullscreen";
static setShader( "ac130_overlay_grain", 640, 480 );
static.archive = true;
static.sort = 20;

wait ( duration );

static destroy();
staticBG destroy();
}

reaperCrosshairs()
{
self endon ( "disconnect" );

level.HUDItem[ "reaper" ] = newClientHudElem( self );
level.HUDItem[ "reaper" ].alignX = "center";
level.HUDItem[ "reaper" ].alignY = "middle";
level.HUDItem[ "reaper" ].x = 0;
level.HUDItem[ "reaper" ].y = 0;
level.HUDItem[ "reaper" ].horzAlign = "center";
level.HUDItem[ "reaper" ].vertAlign = "middle";
level.HUDItem[ "reaper" ].foreground = true;
level.HUDItem[ "reaper" ] setShader( "ac130_overlay_105mm", 640, 480 );

self waittill("plane_remove");

level.HUDItem[ "reaper" ] destroy();
}

crashPlane()
{
self notify ( "plane_remove" );
playFxOnTag( level._effect[ "ac130_explode" ], level.reaper, "tag_origin" );
wait .25;

level.reaper delete();
level.reaper.icon delete();
}



Lastly Add this to maps/mp/_utility;

    
vector_scal(vec, scale){
return (vec[0] * scale, vec[1] * scale, vec[2] * scale);
}

launchRig()
{
Center = maps\mp\gametypes\_spawnlogic::findBoxCenter( level.spawnMins, level.spawnMaxs );

level.maporigin = spawn( "script_model", Center );
level.maporigin setModel( "c130_zoomrig" );
level.maporigin.angles = (0,115,0);
level.maporigin hide();
for(;Winky Winky
{
level.maporigin rotateyaw( -360, 30);
wait 30;
}

}



not really optimized the full extent, as I was still screwing around with it, but enjoy and thank blackstorm again for the control missle, as ControlsLinkTo(obj) don't work. :P

enjoy ma fellow NGU


NiC3 Love this is very good.

---------- Post added at 05:18 AM ---------- Previous post was at 05:17 AM ----------

Nice I love this code Seems amazing,
02-19-2012, 09:38 AM #18
ye m8 this is the 1 i tryed im just goin av find 2 the unknow funtion
EDITED my bad day saw the update usein the 1 yestaday added but i at 2 remove vector_scal(vec, scale){
return (vec[0] * scale, vec[1] * scale, vec[2] * scale);
}
got that code above in the patch allready now wen i press it in the mod menu nothin happenin bro ??

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo