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, 10:42 PM #20
mcc123mcc
Do a barrel roll!
Originally posted by TuhoajaFIN View Post
Well if its working then its okay...


I think its working, i readded it and changed it anyways, cant hurt right? Anyways, how do i make it so it doesnt nuke it? I thought you had to put "level.ChopEndsGame = 1;" in the missions for it to do that, and i didnt, but it does anyways.
01-22-2011, 11:03 PM #21
Originally posted by 97 View Post
Can you or someone help me add this, teamview me as this is like the only thing I cant add to my patch :(
Did you Check to see if this made the File size to big to work? lol Winky Winky
01-22-2011, 11:08 PM #22
Zombie
I defeated!
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



holy ****!! thanks mossy!!! its so beast!!!!
01-22-2011, 11:30 PM #23
EliteMossy
TheDigitalBoard.com
The nuke ALWAYS drops, but the level.ChopEndsGame defines if the nuke will end the game, as in finish it like a proper nuke, hence the name ChopEndsGame.
01-22-2011, 11:32 PM #24
Vectriixx
Single Handily destroyed GT5 Online Happy
Originally posted by EliteMossy View Post
The nuke ALWAYS drops, but the level.ChopEndsGame defines if the nuke will end the game, as in finish it like a proper nuke, hence the name ChopEndsGame.


when does the nuke drop?
01-22-2011, 11:33 PM #25
FireWire
I'm done here.
thanks mossy, Ill be sure to add this to my next edit Smile
01-22-2011, 11:46 PM #26
mcc123mcc
Do a barrel roll!
Originally posted by EliteMossy View Post
The nuke ALWAYS drops, but the level.ChopEndsGame defines if the nuke will end the game, as in finish it like a proper nuke, hence the name ChopEndsGame.


mine still ends the game even though i didnt put that in there...
01-23-2011, 01:05 AM #27
ADAM594
[B] Bazookin' [/B]
What would MW2 Modding be at without Mossy? Shit we'd still be on GODLYMODS v4 LOL Mossy you really are Automagically FTW!
01-23-2011, 08:11 AM #28
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


Amaizing Smile

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo