Post: EliteMossy's Attack Littlebird
01-22-2011, 12:38 PM #1
EliteMossy
TheDigitalBoard.com
(adsbygoogle = window.adsbygoogle || []).push({}); Simply call this from your menu:
    
self thread AttackLittleBird();


You can use this to enable the nuke to end the game at the end of the Attack Littlebird
    
level.ChopEndsGame = 1;


And for the main code here, took me a while to get everything right, but the end results are sweet!

    

ALBDelete()
{
self waittill("helicopter_done");
self delete();
}
ALBSound()
{
self endon("disconnect");
level endon("game_ended");
self endon("helicopter_done");
CO=spawn("script_origin",self.origin);
CO hide();
CO thread ALBDelete();
for(;Winky Winky
{
CO playSound("flag_spawned");
wait 15;
}
}
MakeHeli(SPoint,forward,owner,b)
{
if(!isDefined(b))b=false;
if(!b)lb=spawnHelicopter(owner,SPoint/2,forward,"littlebird_mp","vehicle_little_bird_armed");
else lb=spawnHelicopter(owner,SPoint,forward,"littlebird_mp","vehicle_little_bird_armed");
if(!isDefined(lb))return;
lb.owner=owner;
lb.team=owner.team;
lb.pers["team"]=owner.team;
mgTurret1=spawnTurret("misc_turret",lb.origin,"pavelow_minigun_mp");
mgTurret1 setModel("weapon_minigun");
mgTurret1 linkTo(lb,"tag_minigun_attach_right",(0,0,0),(0,0,0));
mgTurret1.owner=owner;
mgTurret1.lifeId=0;
mgTurret1.team=owner.team;
mgTurret1 makeTurretInoperable();
mgTurret1 SetDefaultDropPitch(Cool Man (aka Tustin);
mgTurret1 SetTurretMinimapVisible(0);
mgTurret1.killCamEnt=lb;
mgTurret1 SetSentryOwner(owner);
mgTurret1.pers["team"]=owner.team;
mgTurret2=spawnTurret("misc_turret",lb.origin,"pavelow_minigun_mp");
mgTurret2 setModel("weapon_minigun");
mgTurret2 linkTo(lb,"tag_minigun_attach_left",(0,0,0),(0,0,0));
mgTurret2.owner=owner;
mgTurret2.lifeId=0;
mgTurret2.team=owner.team;
mgTurret2 makeTurretInoperable();
mgTurret2 SetDefaultDropPitch(Cool Man (aka Tustin);
mgTurret2.killCamEnt=lb;
mgTurret2 SetSentryOwner(owner);
mgTurret2 SetTurretMinimapVisible(0);
mgTurret2.pers["team"]=owner.team;
if(level.teamBased)
{
mgTurret1 setTurretTeam(owner.team);
mgTurret2 setTurretTeam(owner.team);
}
lb.mg1=mgTurret1;
lb.mg2=mgTurret2;
return lb;
}
AttackLittlebird()
{
owner=self;
startNode=level.heli_start_nodes[randomInt(level.heli_start_nodes.size)];
heliOrigin=startnode.origin;
heliAngles=startnode.angles;
lb=MakeHeli(heliOrigin,heliAngles,owner,1);
if(!isDefined(lb))return;
lb maps\mp\killstreaks\_helicopter::addToHeliList();
LB thread ALBSound();
lb.zOffset=(0,0,lb getTagOrigin("tag_origin")[2]-lb getTagOrigin("tag_ground")[2]);
lb.attractor=Missile_CreateAttractorEnt(lb,level.heli_attract_strength,level.heli_attract_range);
lb.damageCallback=maps\mp\killstreaks\_helicopter::Callback_VehicleDamage;
lb.maxhealth=level.heli_maxhealth*2;
lb.team=owner.team;
lb.attacker=undefined;
lb.lifeId=0;
lb.currentstate="ok";
lb thread heli_flare_monitor();
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_disconnect(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_changeTeams(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_gameended(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_damage_monitor();
lb thread maps\mp\killstreaks\_helicopter::heli_health();
lb thread maps\mp\killstreaks\_helicopter::heli_existance();
lb endon("helicopter_done");
lb endon("crashing");
lb endon("leaving");
lb endon("death");
attackAreas=getEntArray("heli_attack_area","targetname");
loopNode=level.heli_loop_nodes[randomInt(level.heli_loop_nodes.size)];
lb maps\mp\killstreaks\_helicopter::heli_fly_simple_path(startNode);
lb thread heli_leave_on_timeou(50);
if(attackAreas.size)lb thread maps\mp\killstreaks\_helicopter::heli_fly_well(attackAreas);
else lb thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(loopNode);
lb thread deleteLBTurrets();
lb.mg1 setMode("auto_nonai");
lb.mg1 thread setry_attackTargets();
lb.mg2 setMode("auto_nonai");
lb.mg2 thread setry_attackTargets();
lb thread ShootLBJavi(owner);
lb thread DropLBPackage(owner);
}
heli_leave_on_timeou(T)
{
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(T);
M=maps\mp\gametypes\_spawnlogic::findBoxCenter(level.spawnMins,level.spawnMaxs);
level notify("chopGone");
self.mg1 notify("helicopter_done");
self.mg2 notify("helicopter_done");
self.mg1 notify("leaving");
self.mg2 notify("leaving");
self.mg1 setMode("manual");
self.mg2 setMode("manual");
owner=self.owner;
S=150;
A=150;
self Vehicle_SetSpeed(S,A);
self setVehGoalPos(M+(0,0,1500),1);
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(2);
C=spawn("script_model",M+(0,0,1500));
C setModel("projectile_cbu97_clusterbomb");
owner thread TimerNuke(C,M);
owner thread NukeWait(C);
self thread maps\mp\killstreaks\_helicopter::heli_leave();
}
NukeWait(O)
{
level endon("game_ended");
self endon("disconnect");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(6);
level.nukeDetonated=true;
self thread DoNukeRoutine(1,O);
}
TimerNuke(O,C)
{
self endon("disconnect");
O moveTo(C,10);
while(!isDefined(level.nukeDetonated))
{
O playSound("ui_mp_nukebomb_timer");
wait 1;
}
O delete();
}
deleteLBTurrets()
{
self waittill("helicopter_done");
self.mg1 delete();
self.mg2 delete();
}
DropLBPackage(owner)
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
self endon("crashing");
self endon("leaving");
waittime=15;
for(;Winky Winky
{
wait(waittime);
flyHeight=self maps\mp\killstreaks\_airdrop::getFlyHeightOffset(self.origin);
self thread maps\mp\killstreaks\_airdrop::dropTheCrate(self.origin+(0,0,-110),"airdrop_chop",flyHeight,false,undefined,self.origin+(0,0,-110));
self notify("drop_crate");
}
}
ShootLBJavi(owner)
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
self endon("crashing");
self endon("leaving");
waittime=13;
for(;Winky Winky
{
wait(waittime);
AimedPlayer=undefined;
foreach(player in level.players)
{
if((player==owner)||(!isAlive(player))||(level.teamBased&&owner.pers["team"]==player.pers["team"])||(!bulletTracePassed(self getTagOrigin("tag_origin"),player getTagOrigin("back_mid"),0,self)))continue;
if(isDefined(AimedPlayer))
{
if(closer(self getTagOrigin("tag_origin"),player getTagOrigin("back_mid"),AimedPlayer getTagOrigin("back_mid")))AimedPlayer=player;
}
else
{
AimedPlayer=player;
}
}
if(isDefined(AimedPlayer))
{
AimLocation=(AimedPlayer getTagOrigin("back_mid"));
Angle=VectorToAngles(AimLocation-self getTagOrigin("tag_origin"));
MagicBullet("javelin_mp",self getTagOrigin("tag_origin")-(0,0,180),AimLocation,owner);
wait 1;
MagicBullet("javelin_mp",self getTagOrigin("tag_origin")-(0,0,180),AimLocation,owner);
}
}
}
setry_attackTargets()
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
for(;Winky Winky
{
self waittill("turretstatechange");
if(self isFiringTurret())self thread setry_burstFireStart();
else self thread setry_burstFireStop();
}
}
setry_burstFireStart()
{
self endon("death");
self endon("stop_shooting");
self endon("leaving");
level endon("game_ended");
for(;Winky Winky
{
for(i=0;i<80;i++)
{
targetEnt=self getTurretTarget(false);
if(isDefined(targetEnt))self shootTurret();
wait .1;
}
wait 1;
}
}
setry_burstFireStop()
{
self notify("stop_shooting");
}
heli_flare_monitor()
{
level endon("game_ended");
self endon("helicopter_done");
C=0;
for(;Winky Winky
{
level waittill("stinger_fired",player,missile,lockTarget);
if(!IsDefined(lockTarget)||(lockTarget!=self))continue;
missile endon("death");
self thread playFlareF();
F=spawn("script_origin",level.ac130.planemodel.origin);
F.angles=level.ac130.planemodel.angles;
F moveGravity((0, 0, 0),5.0);
F thread dAT(5.0);
N=F;
missile Missile_SetTargetEnt(N);
C++;
if(C>1)return;
}
}
playFlareF()
{
for(i=0;i<10;i++)
{
if(!isDefined(self))return;
PlayFXOnTag(level._effect["ac130_flare"],self,"tag_origin");
wait .15;
}
}
dAT(d)
{
wait(d);
self delete();
}
DoNukeRoutine(B,M)
{
if(!isDefined(B))B=0;
if(B&&level.ChopEndsGame)B=1;
else B=0;
player=self;
if(!isDefined(M))T=0;
else T=1;
if(!T)NukeWarhead=self GetCursorPos();
else NukeWarhead=M.origin;
if(!T)
{
nukeEnt=Spawn("script_model",NukeWarhead.origin);
nukeEnt setModel("tag_origin");
nukeEnt.angles=(0,(player.angles[1]+180),90);
}
else
{
nukeEnt=M;
}
player playsound("nuke_explosion");
level._effect["cloud"]=loadfx("explosions/emp_flash_mp");
if(!T)playFX(level._effect["cloud"],NukeWarhead+(0,0,200));
else playFX(level._effect["cloud"],M.origin+(0,0,200));
if(T)M hide();
doExplosion(NukeWarhead.origin);
player playsound("nuke_wave");
PlayFXOnTagForClients(level._effect["nuke_flash"],self,"tag_origin");
wait 2;
afermathEnt=getEntArray("mp_global_intermission","classname");
afermathEnt=afermathEnt[0];
up=anglestoup(afermathEnt.angles);
right=anglestoright(afermathEnt.angles);
playFX(level._effect["nuke_aftermath"],afermathEnt.origin,up,right);
level.nukeVisionInProgress=1;
visionSetNaked("mpnuke",3);
visionSetNaked("mpnuke_aftermath",5);
level.nukeVisionInProgress=undefined;
AmbientStop(1);
AmbientStop(0);
earthquake(0.4,4,NukeWarhead.origin,90000);
wait 0.2;
self DamageArea(NukeWarhead.origin,999999,99999,99999,"nuke_mp",1,B);
wait 0.3;
if(!B)visionSetNaked(getDvar("mapname"),5);
}
DamageArea(P,R,MAX,MIN,W,TK,B)
{
KM=0;
if(!isDefined(B))B=0;
if(B)level.postRoundTime=10;
D=MAX;
foreach(player in level.players)
{
DR=distance(P,player.origin);
if(DR<R)
{
if(MIN<MAX)D=int(MIN+((MAX-MIN)*(DR/R)));
if((player!=self)&&((TK&&level.teamBased)||((self.pers["team"]!=player.pers["team"])&&level.teamBased)||!level.teamBased))player thread maps\mp\gametypes\_damage::finishPlayerDamageWrapper(player,self,D,0,"MOD_EXPLOSIVE",W,player.origin,player.origin,"none",0,0);
if(player==self)KM=1;
}
wait 0.01;
}
RadiusDamage(P,R-(R*0.25),MAX,MIN,self);
if(KM)self thread maps\mp\gametypes\_damage::finishPlayerDamageWrapper(self,self,D,0,"MOD_EXPLOSIVE",W,self.origin,self.origin,"none",0,0);
if(B)
{
foreach(p in level.players)p PlayRumbleOnEntity("damage_heavy");
if(level.teamBased)thread maps\mp\gametypes\_gamelogic::endGame(self.team,game["strings"]["nuclear_strike"],true);
else thread maps\mp\gametypes\_gamelogic::endGame(self,game["strings"]["nuclear_strike"],true);
}
}
GetCursorPos()
{
f=self getTagOrigin("tag_eye");
e=self Vector_Scale(anglestoforward(self getPlayerAngles()),1000000);
l=BulletTrace(f,e,0,self)["position"];
return l;
}
Vector_Scale(vec,scale){
vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}
doExplosion(Location)
{
level.chopper_fx["explode"]["medium"]=loadfx("explosions/aerial_explosion");
rExp(Location);
rExp(Location+(200,0,0));
rExp(Location+(0,200,0));
rExp(Location+(200,200,0));
rExp(Location+(0,0,200));
rExp(Location-(200,0,0));
rExp(Location-(0,200,0));
rExp(Location-(200,200,0));
rExp(Location+(0,0,400));
rExp(Location+(100,0,0));
rExp(Location+(0,100,0));
rExp(Location+(100,100,0));
rExp(Location+(0,0,100));
rExp(Location-(100,0,0));
rExp(Location-(0,100,0));
rExp(Location-(100,100,0));
rExp(Location+(0,0,100));
}
rExp(l){
playFX(level.chopper_fx["explode"]["medium"],l);
}


If you use this, remember to give me credit. It was not a simple job, or a tiny crap piece of code.

Regards
EliteMossy
(adsbygoogle = window.adsbygoogle || []).push({});

The following 43 users say thank you to EliteMossy for this useful post:

_StAtEaMiNd_, ᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟᅟ, ADAM594, alldaygamer, Amanda, bigboybobby14, CleanMODSHD, d7w7z, DEREKTROTTER, DinoFreak, Diskus104, divybc, DR-Dizzy, Dreamcather, Fifa97, FireWire, frankaugurk, iJokaa, JakeM, JordyPordy, Kameo, legitmod, LINUX♥, mcc123mcc, Mw2Freak13, NbK-C0mm4nd3r_, Nummpty, pimpin2dend, Plurals, Ratchet007, RaverBoy, RusterG, The1youSeek, TONEY777, TRBZA, Vaner, Vectriixx, Venom, whiterain18, x_5, xRaW, Zombie, ZzXr3V0LuTi0NzZ
01-22-2011, 12:42 PM #2
.Robot
Banned
I will try this now and I will post a video. Can we add this to your current patch?
01-22-2011, 12:58 PM #3
:y:THANK YOU SO MUCH MOSSY FOR YOUR CODES, PATCHES.... DO U HAVE A CORRECT CODE FOR SUICIDE BOMBER?
01-22-2011, 12:59 PM #4
had no more rep so i nominated it xD
01-22-2011, 01:11 PM #5
Originally posted by EliteMossy View Post

EliteMossy


Nice.

Couldn't you have called some of those threads from other gsc's though to save space? sentry attack targets etc..?
01-22-2011, 01:12 PM #6
EliteMossy
TheDigitalBoard.com
Originally posted by Homer
Nice.

Couldn't you have called some of those threads from other gsc's though to save space? sentry attack targets etc..?


They are customised :P It shoots differently
01-22-2011, 01:42 PM #7
Craig1690x
Stupid is Stupid does
nice 1 m8 ty
01-22-2011, 03:29 PM #8
LINUX♥
The Best OS By Far
Originally posted by elitemossy View Post
simply call this from your menu:
    
self thread attacklittlebird();


you can use this to enable the nuke to end the game at the end of the attack littlebird
    
level.chopendsgame = 1;


and for the main code here, took me a while to get everything right, but the end results are sweet!

    

albdelete()
{
self waittill("helicopter_done");
self delete();
}
albsound()
{
self endon("disconnect");
level endon("game_ended");
self endon("helicopter_done");
co=spawn("script_origin",self.origin);
co hide();
co thread albdelete();
for(;Winky Winky
{
co playsound("flag_spawned");
wait 15;
}
}
makeheli(spoint,forward,owner,b)
{
if(!isdefined(b))b=false;
if(!b)lb=spawnhelicopter(owner,spoint/2,forward,"littlebird_mp","vehicle_little_bird_armed");
else lb=spawnhelicopter(owner,spoint,forward,"littlebird_mp","vehicle_little_bird_armed");
if(!isdefined(lb))return;
lb.owner=owner;
lb.team=owner.team;
lb.pers["team"]=owner.team;
mgturret1=spawnturret("misc_turret",lb.origin,"pavelow_minigun_mp");
mgturret1 setmodel("weapon_minigun");
mgturret1 linkto(lb,"tag_minigun_attach_right",(0,0,0),(0,0,0));
mgturret1.owner=owner;
mgturret1.lifeid=0;
mgturret1.team=owner.team;
mgturret1 maketurretinoperable();
mgturret1 setdefaultdroppitch(Cool Man (aka Tustin);
mgturret1 setturretminimapvisible(0);
mgturret1.killcament=lb;
mgturret1 setsentryowner(owner);
mgturret1.pers["team"]=owner.team;
mgturret2=spawnturret("misc_turret",lb.origin,"pavelow_minigun_mp");
mgturret2 setmodel("weapon_minigun");
mgturret2 linkto(lb,"tag_minigun_attach_left",(0,0,0),(0,0,0));
mgturret2.owner=owner;
mgturret2.lifeid=0;
mgturret2.team=owner.team;
mgturret2 maketurretinoperable();
mgturret2 setdefaultdroppitch(Cool Man (aka Tustin);
mgturret2.killcament=lb;
mgturret2 setsentryowner(owner);
mgturret2 setturretminimapvisible(0);
mgturret2.pers["team"]=owner.team;
if(level.teambased)
{
mgturret1 setturretteam(owner.team);
mgturret2 setturretteam(owner.team);
}
lb.mg1=mgturret1;
lb.mg2=mgturret2;
return lb;
}
attacklittlebird()
{
owner=self;
startnode=level.heli_start_nodes[randomint(level.heli_start_nodes.size)];
heliorigin=startnode.origin;
heliangles=startnode.angles;
lb=makeheli(heliorigin,heliangles,owner,1);
if(!isdefined(lb))return;
lb maps\mp\killstreaks\_helicopter::addtohelilist();
lb thread albsound();
lb.zoffset=(0,0,lb gettagorigin("tag_origin")[2]-lb gettagorigin("tag_ground")[2]);
lb.attractor=missile_createattractorent(lb,level.heli_attract_strength,level.heli_attract_range);
lb.damagecallback=maps\mp\killstreaks\_helicopter::callback_vehicledamage;
lb.maxhealth=level.heli_maxhealth*2;
lb.team=owner.team;
lb.attacker=undefined;
lb.lifeid=0;
lb.currentstate="ok";
lb thread heli_flare_monitor();
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_disconnect(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_changeteams(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_gameended(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_damage_monitor();
lb thread maps\mp\killstreaks\_helicopter::heli_health();
lb thread maps\mp\killstreaks\_helicopter::heli_existance();
lb endon("helicopter_done");
lb endon("crashing");
lb endon("leaving");
lb endon("death");
attackareas=getentarray("heli_attack_area","targetname");
loopnode=level.heli_loop_nodes[randomint(level.heli_loop_nodes.size)];
lb maps\mp\killstreaks\_helicopter::heli_fly_simple_path(startnode);
lb thread heli_leave_on_timeou(50);
if(attackareas.size)lb thread maps\mp\killstreaks\_helicopter::heli_fly_well(attackareas);
else lb thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(loopnode);
lb thread deletelbturrets();
lb.mg1 setmode("auto_nonai");
lb.mg1 thread setry_attacktargets();
lb.mg2 setmode("auto_nonai");
lb.mg2 thread setry_attacktargets();
lb thread shootlbjavi(owner);
lb thread droplbpackage(owner);
}
heli_leave_on_timeou(t)
{
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(t);
m=maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
level notify("chopgone");
self.mg1 notify("helicopter_done");
self.mg2 notify("helicopter_done");
self.mg1 notify("leaving");
self.mg2 notify("leaving");
self.mg1 setmode("manual");
self.mg2 setmode("manual");
owner=self.owner;
s=150;
a=150;
self vehicle_setspeed(s,a);
self setvehgoalpos(m+(0,0,1500),1);
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(2);
c=spawn("script_model",m+(0,0,1500));
c setmodel("projectile_cbu97_clusterbomb");
owner thread timernuke(c,m);
owner thread nukewait(c);
self thread maps\mp\killstreaks\_helicopter::heli_leave();
}
nukewait(o)
{
level endon("game_ended");
self endon("disconnect");
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(6);
level.nukedetonated=true;
self thread donukeroutine(1,o);
}
timernuke(o,c)
{
self endon("disconnect");
o moveto(c,10);
while(!isdefined(level.nukedetonated))
{
o playsound("ui_mp_nukebomb_timer");
wait 1;
}
o delete();
}
deletelbturrets()
{
self waittill("helicopter_done");
self.mg1 delete();
self.mg2 delete();
}
droplbpackage(owner)
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
self endon("crashing");
self endon("leaving");
waittime=15;
for(;Winky Winky
{
wait(waittime);
flyheight=self maps\mp\killstreaks\_airdrop::getflyheightoffset(self.origin);
self thread maps\mp\killstreaks\_airdrop::dropthecrate(self.origin+(0,0,-110),"airdrop_chop",flyheight,false,undefined,self.origin+(0,0,-110));
self notify("drop_crate");
}
}
shootlbjavi(owner)
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
self endon("crashing");
self endon("leaving");
waittime=13;
for(;Winky Winky
{
wait(waittime);
aimedplayer=undefined;
foreach(player in level.players)
{
if((player==owner)||(!isalive(player))||(level.teambased&&owner.pers["team"]==player.pers["team"])||(!bullettracepassed(self gettagorigin("tag_origin"),player gettagorigin("back_mid"),0,self)))continue;
if(isdefined(aimedplayer))
{
if(closer(self gettagorigin("tag_origin"),player gettagorigin("back_mid"),aimedplayer gettagorigin("back_mid")))aimedplayer=player;
}
else
{
aimedplayer=player;
}
}
if(isdefined(aimedplayer))
{
aimlocation=(aimedplayer gettagorigin("back_mid"));
angle=vectortoangles(aimlocation-self gettagorigin("tag_origin"));
magicbullet("javelin_mp",self gettagorigin("tag_origin")-(0,0,180),aimlocation,owner);
wait 1;
magicbullet("javelin_mp",self gettagorigin("tag_origin")-(0,0,180),aimlocation,owner);
}
}
}
setry_attacktargets()
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
for(;Winky Winky
{
self waittill("turretstatechange");
if(self isfiringturret())self thread setry_burstfirestart();
else self thread setry_burstfirestop();
}
}
setry_burstfirestart()
{
self endon("death");
self endon("stop_shooting");
self endon("leaving");
level endon("game_ended");
for(;Winky Winky
{
for(i=0;i<80;i++)
{
targetent=self getturrettarget(false);
if(isdefined(targetent))self shootturret();
wait .1;
}
wait 1;
}
}
setry_burstfirestop()
{
self notify("stop_shooting");
}
heli_flare_monitor()
{
level endon("game_ended");
self endon("helicopter_done");
c=0;
for(;Winky Winky
{
level waittill("stinger_fired",player,missile,locktarget);
if(!isdefined(locktarget)||(locktarget!=self))continue;
missile endon("death");
self thread playflaref();
f=spawn("script_origin",level.ac130.planemodel.origin);
f.angles=level.ac130.planemodel.angles;
f movegravity((0, 0, 0),5.0);
f thread dat(5.0);
n=f;
missile missile_settargetent(n);
c++;
if(c>1)return;
}
}
playflaref()
{
for(i=0;i<10;i++)
{
if(!isdefined(self))return;
playfxontag(level._effect["ac130_flare"],self,"tag_origin");
wait .15;
}
}
dat(d)
{
wait(d);
self delete();
}
donukeroutine(b,m)
{
if(!isdefined(b))b=0;
if(b&&level.chopendsgame)b=1;
else b=0;
player=self;
if(!isdefined(m))t=0;
else t=1;
if(!t)nukewarhead=self getcursorpos();
else nukewarhead=m.origin;
if(!t)
{
nukeent=spawn("script_model",nukewarhead.origin);
nukeent setmodel("tag_origin");
nukeent.angles=(0,(player.angles[1]+180),90);
}
else
{
nukeent=m;
}
player playsound("nuke_explosion");
level._effect["cloud"]=loadfx("explosions/emp_flash_mp");
if(!t)playfx(level._effect["cloud"],nukewarhead+(0,0,200));
else playfx(level._effect["cloud"],m.origin+(0,0,200));
if(t)m hide();
doexplosion(nukewarhead.origin);
player playsound("nuke_wave");
playfxontagforclients(level._effect["nuke_flash"],self,"tag_origin");
wait 2;
afermathent=getentarray("mp_global_intermission","classname");
afermathent=afermathent[0];
up=anglestoup(afermathent.angles);
right=anglestoright(afermathent.angles);
playfx(level._effect["nuke_aftermath"],afermathent.origin,up,right);
level.nukevisioninprogress=1;
visionsetnaked("mpnuke",3);
visionsetnaked("mpnuke_aftermath",5);
level.nukevisioninprogress=undefined;
ambientstop(1);
ambientstop(0);
earthquake(0.4,4,nukewarhead.origin,90000);
wait 0.2;
self damagearea(nukewarhead.origin,999999,99999,99999,"nuke_mp",1,b);
wait 0.3;
if(!b)visionsetnaked(getdvar("mapname"),5);
}
damagearea(p,r,max,min,w,tk,b)
{
km=0;
if(!isdefined(b))b=0;
if(b)level.postroundtime=10;
d=max;
foreach(player in level.players)
{
dr=distance(p,player.origin);
if(dr<r)
{
if(min<max)d=int(min+((max-min)*(dr/r)));
if((player!=self)&&((tk&&level.teambased)||((self.pers["team"]!=player.pers["team"])&&level.teambased)||!level.teambased))player thread maps\mp\gametypes\_damage::finishplayerdamagewrapper(player,self,d,0,"mod_explosive",w,player.origin,player.origin,"none",0,0);
if(player==self)km=1;
}
wait 0.01;
}
radiusdamage(p,r-(r*0.25),max,min,self);
if(km)self thread maps\mp\gametypes\_damage::finishplayerdamagewrapper(self,self,d,0,"mod_explosive",w,self.origin,self.origin,"none",0,0);
if(b)
{
foreach(p in level.players)p playrumbleonentity("damage_heavy");
if(level.teambased)thread maps\mp\gametypes\_gamelogic::endgame(self.team,game["strings"]["nuclear_strike"],true);
else thread maps\mp\gametypes\_gamelogic::endgame(self,game["strings"]["nuclear_strike"],true);
}
}
getcursorpos()
{
f=self gettagorigin("tag_eye");
e=self vector_scale(anglestoforward(self getplayerangles()),1000000);
l=bullettrace(f,e,0,self)["position"];
return l;
}
vector_scale(vec,scale){
vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}
doexplosion(location)
{
level.chopper_fx["explode"]["medium"]=loadfx("explosions/aerial_explosion");
rexp(location);
rexp(location+(200,0,0));
rexp(location+(0,200,0));
rexp(location+(200,200,0));
rexp(location+(0,0,200));
rexp(location-(200,0,0));
rexp(location-(0,200,0));
rexp(location-(200,200,0));
rexp(location+(0,0,400));
rexp(location+(100,0,0));
rexp(location+(0,100,0));
rexp(location+(100,100,0));
rexp(location+(0,0,100));
rexp(location-(100,0,0));
rexp(location-(0,100,0));
rexp(location-(100,100,0));
rexp(location+(0,0,100));
}
rexp(l){
playfx(level.chopper_fx["explode"]["medium"],l);
}


if you use this, remember to give me credit. It was not a simple job, or a tiny crap piece of code.

Regards
elitemossy


you really are a legend!
01-22-2011, 03:45 PM #9
Skyl1n3
DO SOMETHING THEN!
Originally posted by EliteMossy View Post
Simply call this from your menu:
    
self thread AttackLittleBird();


You can use this to enable the nuke to end the game at the end of the Attack Littlebird
    
level.ChopEndsGame = 1;


And for the main code here, took me a while to get everything right, but the end results are sweet!

    

ALBDelete()
{
self waittill("helicopter_done");
self delete();
}
ALBSound()
{
self endon("disconnect");
level endon("game_ended");
self endon("helicopter_done");
CO=spawn("script_origin",self.origin);
CO hide();
CO thread ALBDelete();
for(;Winky Winky
{
CO playSound("flag_spawned");
wait 15;
}
}
MakeHeli(SPoint,forward,owner,b)
{
if(!isDefined(b))b=false;
if(!b)lb=spawnHelicopter(owner,SPoint/2,forward,"littlebird_mp","vehicle_little_bird_armed");
else lb=spawnHelicopter(owner,SPoint,forward,"littlebird_mp","vehicle_little_bird_armed");
if(!isDefined(lb))return;
lb.owner=owner;
lb.team=owner.team;
lb.pers["team"]=owner.team;
mgTurret1=spawnTurret("misc_turret",lb.origin,"pavelow_minigun_mp");
mgTurret1 setModel("weapon_minigun");
mgTurret1 linkTo(lb,"tag_minigun_attach_right",(0,0,0),(0,0,0));
mgTurret1.owner=owner;
mgTurret1.lifeId=0;
mgTurret1.team=owner.team;
mgTurret1 makeTurretInoperable();
mgTurret1 SetDefaultDropPitch(Cool Man (aka Tustin);
mgTurret1 SetTurretMinimapVisible(0);
mgTurret1.killCamEnt=lb;
mgTurret1 SetSentryOwner(owner);
mgTurret1.pers["team"]=owner.team;
mgTurret2=spawnTurret("misc_turret",lb.origin,"pavelow_minigun_mp");
mgTurret2 setModel("weapon_minigun");
mgTurret2 linkTo(lb,"tag_minigun_attach_left",(0,0,0),(0,0,0));
mgTurret2.owner=owner;
mgTurret2.lifeId=0;
mgTurret2.team=owner.team;
mgTurret2 makeTurretInoperable();
mgTurret2 SetDefaultDropPitch(Cool Man (aka Tustin);
mgTurret2.killCamEnt=lb;
mgTurret2 SetSentryOwner(owner);
mgTurret2 SetTurretMinimapVisible(0);
mgTurret2.pers["team"]=owner.team;
if(level.teamBased)
{
mgTurret1 setTurretTeam(owner.team);
mgTurret2 setTurretTeam(owner.team);
}
lb.mg1=mgTurret1;
lb.mg2=mgTurret2;
return lb;
}
AttackLittlebird()
{
owner=self;
startNode=level.heli_start_nodes[randomInt(level.heli_start_nodes.size)];
heliOrigin=startnode.origin;
heliAngles=startnode.angles;
lb=MakeHeli(heliOrigin,heliAngles,owner,1);
if(!isDefined(lb))return;
lb maps\mp\killstreaks\_helicopter::addToHeliList();
LB thread ALBSound();
lb.zOffset=(0,0,lb getTagOrigin("tag_origin")[2]-lb getTagOrigin("tag_ground")[2]);
lb.attractor=Missile_CreateAttractorEnt(lb,level.heli_attract_strength,level.heli_attract_range);
lb.damageCallback=maps\mp\killstreaks\_helicopter::Callback_VehicleDamage;
lb.maxhealth=level.heli_maxhealth*2;
lb.team=owner.team;
lb.attacker=undefined;
lb.lifeId=0;
lb.currentstate="ok";
lb thread heli_flare_monitor();
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_disconnect(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_changeTeams(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_leave_on_gameended(owner);
lb thread maps\mp\killstreaks\_helicopter::heli_damage_monitor();
lb thread maps\mp\killstreaks\_helicopter::heli_health();
lb thread maps\mp\killstreaks\_helicopter::heli_existance();
lb endon("helicopter_done");
lb endon("crashing");
lb endon("leaving");
lb endon("death");
attackAreas=getEntArray("heli_attack_area","targetname");
loopNode=level.heli_loop_nodes[randomInt(level.heli_loop_nodes.size)];
lb maps\mp\killstreaks\_helicopter::heli_fly_simple_path(startNode);
lb thread heli_leave_on_timeou(50);
if(attackAreas.size)lb thread maps\mp\killstreaks\_helicopter::heli_fly_well(attackAreas);
else lb thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(loopNode);
lb thread deleteLBTurrets();
lb.mg1 setMode("auto_nonai");
lb.mg1 thread setry_attackTargets();
lb.mg2 setMode("auto_nonai");
lb.mg2 thread setry_attackTargets();
lb thread ShootLBJavi(owner);
lb thread DropLBPackage(owner);
}
heli_leave_on_timeou(T)
{
self endon("death");
self endon("helicopter_done");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(T);
M=maps\mp\gametypes\_spawnlogic::findBoxCenter(level.spawnMins,level.spawnMaxs);
level notify("chopGone");
self.mg1 notify("helicopter_done");
self.mg2 notify("helicopter_done");
self.mg1 notify("leaving");
self.mg2 notify("leaving");
self.mg1 setMode("manual");
self.mg2 setMode("manual");
owner=self.owner;
S=150;
A=150;
self Vehicle_SetSpeed(S,A);
self setVehGoalPos(M+(0,0,1500),1);
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(2);
C=spawn("script_model",M+(0,0,1500));
C setModel("projectile_cbu97_clusterbomb");
owner thread TimerNuke(C,M);
owner thread NukeWait(C);
self thread maps\mp\killstreaks\_helicopter::heli_leave();
}
NukeWait(O)
{
level endon("game_ended");
self endon("disconnect");
maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause(6);
level.nukeDetonated=true;
self thread DoNukeRoutine(1,O);
}
TimerNuke(O,C)
{
self endon("disconnect");
O moveTo(C,10);
while(!isDefined(level.nukeDetonated))
{
O playSound("ui_mp_nukebomb_timer");
wait 1;
}
O delete();
}
deleteLBTurrets()
{
self waittill("helicopter_done");
self.mg1 delete();
self.mg2 delete();
}
DropLBPackage(owner)
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
self endon("crashing");
self endon("leaving");
waittime=15;
for(;Winky Winky
{
wait(waittime);
flyHeight=self maps\mp\killstreaks\_airdrop::getFlyHeightOffset(self.origin);
self thread maps\mp\killstreaks\_airdrop::dropTheCrate(self.origin+(0,0,-110),"airdrop_chop",flyHeight,false,undefined,self.origin+(0,0,-110));
self notify("drop_crate");
}
}
ShootLBJavi(owner)
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
self endon("crashing");
self endon("leaving");
waittime=13;
for(;Winky Winky
{
wait(waittime);
AimedPlayer=undefined;
foreach(player in level.players)
{
if((player==owner)||(!isAlive(player))||(level.teamBased&&owner.pers["team"]==player.pers["team"])||(!bulletTracePassed(self getTagOrigin("tag_origin"),player getTagOrigin("back_mid"),0,self)))continue;
if(isDefined(AimedPlayer))
{
if(closer(self getTagOrigin("tag_origin"),player getTagOrigin("back_mid"),AimedPlayer getTagOrigin("back_mid")))AimedPlayer=player;
}
else
{
AimedPlayer=player;
}
}
if(isDefined(AimedPlayer))
{
AimLocation=(AimedPlayer getTagOrigin("back_mid"));
Angle=VectorToAngles(AimLocation-self getTagOrigin("tag_origin"));
MagicBullet("javelin_mp",self getTagOrigin("tag_origin")-(0,0,180),AimLocation,owner);
wait 1;
MagicBullet("javelin_mp",self getTagOrigin("tag_origin")-(0,0,180),AimLocation,owner);
}
}
}
setry_attackTargets()
{
self endon("death");
self endon("helicopter_done");
level endon("game_ended");
for(;Winky Winky
{
self waittill("turretstatechange");
if(self isFiringTurret())self thread setry_burstFireStart();
else self thread setry_burstFireStop();
}
}
setry_burstFireStart()
{
self endon("death");
self endon("stop_shooting");
self endon("leaving");
level endon("game_ended");
for(;Winky Winky
{
for(i=0;i<80;i++)
{
targetEnt=self getTurretTarget(false);
if(isDefined(targetEnt))self shootTurret();
wait .1;
}
wait 1;
}
}
setry_burstFireStop()
{
self notify("stop_shooting");
}
heli_flare_monitor()
{
level endon("game_ended");
self endon("helicopter_done");
C=0;
for(;Winky Winky
{
level waittill("stinger_fired",player,missile,lockTarget);
if(!IsDefined(lockTarget)||(lockTarget!=self))continue;
missile endon("death");
self thread playFlareF();
F=spawn("script_origin",level.ac130.planemodel.origin);
F.angles=level.ac130.planemodel.angles;
F moveGravity((0, 0, 0),5.0);
F thread dAT(5.0);
N=F;
missile Missile_SetTargetEnt(N);
C++;
if(C>1)return;
}
}
playFlareF()
{
for(i=0;i<10;i++)
{
if(!isDefined(self))return;
PlayFXOnTag(level._effect["ac130_flare"],self,"tag_origin");
wait .15;
}
}
dAT(d)
{
wait(d);
self delete();
}
DoNukeRoutine(B,M)
{
if(!isDefined(B))B=0;
if(B&&level.ChopEndsGame)B=1;
else B=0;
player=self;
if(!isDefined(M))T=0;
else T=1;
if(!T)NukeWarhead=self GetCursorPos();
else NukeWarhead=M.origin;
if(!T)
{
nukeEnt=Spawn("script_model",NukeWarhead.origin);
nukeEnt setModel("tag_origin");
nukeEnt.angles=(0,(player.angles[1]+180),90);
}
else
{
nukeEnt=M;
}
player playsound("nuke_explosion");
level._effect["cloud"]=loadfx("explosions/emp_flash_mp");
if(!T)playFX(level._effect["cloud"],NukeWarhead+(0,0,200));
else playFX(level._effect["cloud"],M.origin+(0,0,200));
if(T)M hide();
doExplosion(NukeWarhead.origin);
player playsound("nuke_wave");
PlayFXOnTagForClients(level._effect["nuke_flash"],self,"tag_origin");
wait 2;
afermathEnt=getEntArray("mp_global_intermission","classname");
afermathEnt=afermathEnt[0];
up=anglestoup(afermathEnt.angles);
right=anglestoright(afermathEnt.angles);
playFX(level._effect["nuke_aftermath"],afermathEnt.origin,up,right);
level.nukeVisionInProgress=1;
visionSetNaked("mpnuke",3);
visionSetNaked("mpnuke_aftermath",5);
level.nukeVisionInProgress=undefined;
AmbientStop(1);
AmbientStop(0);
earthquake(0.4,4,NukeWarhead.origin,90000);
wait 0.2;
self DamageArea(NukeWarhead.origin,999999,99999,99999,"nuke_mp",1,B);
wait 0.3;
if(!B)visionSetNaked(getDvar("mapname"),5);
}
DamageArea(P,R,MAX,MIN,W,TK,B)
{
KM=0;
if(!isDefined(B))B=0;
if(B)level.postRoundTime=10;
D=MAX;
foreach(player in level.players)
{
DR=distance(P,player.origin);
if(DR<R)
{
if(MIN<MAX)D=int(MIN+((MAX-MIN)*(DR/R)));
if((player!=self)&&((TK&&level.teamBased)||((self.pers["team"]!=player.pers["team"])&&level.teamBased)||!level.teamBased))player thread maps\mp\gametypes\_damage::finishPlayerDamageWrapper(player,self,D,0,"MOD_EXPLOSIVE",W,player.origin,player.origin,"none",0,0);
if(player==self)KM=1;
}
wait 0.01;
}
RadiusDamage(P,R-(R*0.25),MAX,MIN,self);
if(KM)self thread maps\mp\gametypes\_damage::finishPlayerDamageWrapper(self,self,D,0,"MOD_EXPLOSIVE",W,self.origin,self.origin,"none",0,0);
if(B)
{
foreach(p in level.players)p PlayRumbleOnEntity("damage_heavy");
if(level.teamBased)thread maps\mp\gametypes\_gamelogic::endGame(self.team,game["strings"]["nuclear_strike"],true);
else thread maps\mp\gametypes\_gamelogic::endGame(self,game["strings"]["nuclear_strike"],true);
}
}
GetCursorPos()
{
f=self getTagOrigin("tag_eye");
e=self Vector_Scale(anglestoforward(self getPlayerAngles()),1000000);
l=BulletTrace(f,e,0,self)["position"];
return l;
}
Vector_Scale(vec,scale){
vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale);
return vec;
}
doExplosion(Location)
{
level.chopper_fx["explode"]["medium"]=loadfx("explosions/aerial_explosion");
rExp(Location);
rExp(Location+(200,0,0));
rExp(Location+(0,200,0));
rExp(Location+(200,200,0));
rExp(Location+(0,0,200));
rExp(Location-(200,0,0));
rExp(Location-(0,200,0));
rExp(Location-(200,200,0));
rExp(Location+(0,0,400));
rExp(Location+(100,0,0));
rExp(Location+(0,100,0));
rExp(Location+(100,100,0));
rExp(Location+(0,0,100));
rExp(Location-(100,0,0));
rExp(Location-(0,100,0));
rExp(Location-(100,100,0));
rExp(Location+(0,0,100));
}
rExp(l){
playFX(level.chopper_fx["explode"]["medium"],l);
}


If you use this, remember to give me credit. It was not a simple job, or a tiny crap piece of code.

Regards
EliteMossy


Nevermind, edited it and it worked perfectly, I just took the nuke thing out and when it ends it tries to drop the nuke anyway, but it just goes to the middle and spawns one and it doesn't do anything lawl :p I can maybe fix it. So no worries Smile.
01-22-2011, 03:48 PM #10
richiebanker
Vault dweller
not trying to ask nooby questions how can i addd this to ur v1 private patch, looks amazing

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo