self thread reaper();
reaper()
{
if(!self.reaper)
{
self iPrintln("Press [{+frag}] To Exit Reaper");
self.reaper = true;
self.oldPos = self getOrigin();
thread reaperHud();
self.rLoc = getPosition();
self.maxhealth = 99999999999;
self.health = self.maxhealth;
thread reaperLink();
thread reaperWeapon();
self playLocalSound("item_nightvision_on");
}
}
reaperLink()
{
thread reaperDeath();
self.reap["veh"] = spawn("script_model",(self.rLoc[0]+(1150*cos(0)),self.rLoc[1]+(1150*sin(0)),self.rLoc[2]));
self.reap["veh"] setModel("vehicle_mi24p_hind_desert");
thread reaperMove();
self linkTo(self.reap["veh"],"tag_player",(0,100,-120),(0,0,0));
self hide();
thread reaperExit();
self disableWeapons();
}
reaperExit()
{
self endon("death");
self endon("disconnect");
while(self.reaper)
{
angles = self getPlayerAngles();
if(angles[0] <= 30)
self setPlayerAngles((30,angles[1],angles[2]));
if(self fragButtonPressed())
{
self playLocalSound("item_nightvision_off");
self unlink();
self setOrigin(self.oldPos);
for(k = 0; k < self.r.size; k++)
if(isDefined(self.r[k]))
self.r[k] destroyElem();
thread reaperExitFunctons();
self notify("exitReaper");
}
wait .05;
}
}
reaperDeath()
{
self endon("exitReaper");
self waittill_any("death","disconnect");
thread reaperExitFunctons();
}
reaperExitFunctons()
{
self.maxhealth = 100;
self.health = self.maxhealth;
self show();
self.reap["veh"] delete();
self.reaper = false;
self enableWeapons();
if(isDefined(self.reap["bullet"]))
self.reap["bullet"] delete();
}
reaperMove()
{
self endon("death");
self endon("disconnect");
while(self.reaper)
{
for(k = 0; k < 360; k+=.5)
{
if(!self.reaper)
break;
location = (self.rLoc[0]+(1150*cos(k)),self.rLoc[1]+(1150*sin(k)),self.rLoc[2]);
angles = vectorToAngles(location - self.reap["veh"].origin);
self.reap["veh"] moveTo(location,.1);
self.reap["veh"].angles = (angles[0],angles[1],angles[2]-40);
wait .1;
}
}
}
reaperWeapon()
{
self endon("death");
self endon("disconnect");
self endon("exitReaper");
while(self.reaper)
{
if(self attackButtonPressed())
{
self.reap["bullet"] = spawn("script_model",self getTagOrigin("tag_weapon_left"));
self.reap["bullet"] setModel("projectile_cbu97_clusterbomb");
self.reap["bullet"] playSound("weap_hind_missile_fire");
for(time = 0; time < 200; time++)
{
if(!self.reaper)
break;
vector = anglesToForward(self.reap["bullet"].angles);
forward = self.reap["bullet"].origin+(vector[0]*45,vector[1]*45,vector[2]*49);
collision = bulletTrace(self.reap["bullet"].origin,forward,false,self);
self.reap["bullet"].angles = (vectorToAngles((getCursorPos()-(0,0,130)) - self.reap["bullet"].origin));
self.reap["bullet"] moveTo(forward,.05);
playFxOnTag(level.chopper_fx["fire"]["trail"]["medium"],self.reap["bullet"],"tag_origin");
if(collision["surfacetype"] != "default" && collision["fraction"] < 1 && level.collisions)
{
expPos = self.reap["bullet"].origin;
for(k = 0; k < 360; k+=80)
playFx(level.chopper_fx["explode"]["large"],(expPos[0]+(150*cos(k)),expPos[1]+(150*sin(k)),expPos[2]+100));
earthquake(3,1.6,expPos,450);
radiusDamage(expPos,400,300,120,self,"MOD_PROJECTILE_SPLASH","artillery_mp");
self.reap["bullet"] playSound("cobra_helicopter_hit");
break;
}
wait .05;
}
self.reap["bullet"] delete();
wait 2;
}
wait .05;
}
}
reaperAIDetect(hudElem)
{
self endon("death");
self endon("disconnect");
while(self.reaper)
{
target["enemyTeam"] = false;
target["myTeam"] = false;
for(k = 0; k < level.players.size; k++)
{
if(isAlive(level.players[k]))
{
if(distance(getCursorPos(),level.players[k].origin) < 200)
if((level.teamBased && self.team != level.players[k].team) || (!level.teamBased && level.players[k] != self))
target["enemyTeam"] = true;
else
target["myTeam"] = true;
}
}
for(k = 0; k < int(hudElem.size/2); k++)
{
if(target["myTeam"] && target["enemyTeam"])
hudElem[k].color = (1,(188/255),(43/255));
else if(target["myTeam"] && !target["enemyTeam"])
hudElem[k].color = (0,.7,0);
else if(!target["myTeam"] && target["enemyTeam"])
hudElem[k].color = (.7,0,0);
}
wait .05;
for(k = 0; k < hudElem.size; k++)
hudElem[k].color = (1,1,1);
}
}
reaperHud()
{
coord = strTok("21,0,2,24;-20,0,2,24;0,-11,40,2;0,11,40,2;0,-39,2,57;0,39,2,57;-48,0,57,2;49,0,57,2;-155,-122,2,21;-154,122,2,21;155,122,2,21;155,-122,2,21;-145,132,21,2;145,-132,21,2;-145,-132,21,2;146,132,21,2",";");
for(k = 0; k < coord.size; k++)
{
tCoord = strTok(coord[k],",");
self.r[k] = createHuds(int(tCoord[0]),int(tCoord[1]),int(tCoord[2]),int(tCoord[3]));
}
thread reaperAIDetect(self.r);
}
getPosition()
{
location = (0,0,2000);
if(isMap("mp_bloc"))
location = (1100,-5836,2500);
else if(isMap("mp_crossfire"))
location = (4566,-3162,2300);
else if(isMap("mp_citystreets"))
location = (4384,-469,2100);
else if(isMap("mp_creek"))
location = (-1595,6528,2500);
else if(isMap("mp_bog"))
location = (3767,1332,2300);
else if(isMap("mp_overgrown"))
location = (267,-2799,2600);
else
location = (0,0,2300);
return location;
}
isMap(map)
{
if(map == getDvar("mapname"))
return true;
return false;
}
createHuds(x,y,width,height)
{
hud = newClientHudElem(self);
hud.width = width;
hud.height = height;
hud.align = "CENTER";
hud.relative = "MIDDLE";
hud.children = [];
hud.sort = 3;
hud.alpha = 1;
hud setParent(level.uiParent);
hud setShader("white",width,height);
hud.hidden = false;
hud setPoint("CENTER","",x,y);
hud thread destroyGunHuds(self);
return hud;
}
destroyGunHuds(player)
{
player waittill("death");
if(isDefined(self))
self destroyElem();
}
getCursorPos()
{
return bulletTrace(self getTagOrigin("tag_weapon_right"),vector_scale(anglesToForward(self getPlayerAngles()),1000000),false,self)["position"];
}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.