SpawnSmallHelicopter(){
if (level.matchGameType=="18")
lb=spawnHelicopter(self,(986, 58, 980)+(0,0,110),(0,0,0),"littlebird_mp","vehicle_little_bird_armed");
else
lb=spawnHelicopter(self,self.origin+(0,0,110),self.angles,"littlebird_mp","vehicle_little_bird_armed");
if(!isDefined(lb)) return;
lb.owner=self;
lb.team=self.team;
lb.Shoot=0;
lb.Pilot=0;
lb.Passanger=0;
lb.AShoot=0;
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=self;
mgTurret1.team=self.team;
mgTurret1 makeTurretInoperable();
mgTurret1 LaserOn();
mgTurret1 SetDefaultDropPitch(
;
mgTurret1 SetTurretMinimapVisible(0);
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 = self;
mgTurret2.team = self.team;
mgTurret2 makeTurretInoperable();
mgTurret2 SetDefaultDropPitch(
;
mgTurret2 LaserOn();
mgTurret2 SetTurretMinimapVisible(0);
lb.mg1=mgTurret1;
lb.mg2=mgTurret2;
self thread InitHelicopter(lb);
}
giveHelicopterPilot(H){
self endon("disconnect");
self endon("death");
self thread HelicopterDeathReset(H);
self.Flying=1;
S=16;
H Vehicle_SetSpeed(1000,S);
Me = spawn("script_origin",self.origin);
Destination = spawn("script_origin",self.origin);
self playerLinkTo(Me);
level.p[self.myName]["MenuOpen"]=1;
Me thread UpdateSeat(H,15);
WL=self getWeaponsListOffhands();
foreach(Wep in WL) self takeweapon(Wep);
wait 1.5;
H.mg1 SetSentryOwner(self);
H.mg2 SetSentryOwner(self);
if(level.teamBased){
H.mg1 setTurretTeam(self.team);
H.mg2 setTurretTeam(self.team);
}
for(;
{
if(self.Flying){
forward = anglestoforward(self getPlayerAngles());
right = anglestoright(self getPlayerAngles());
up = anglestoup(self getPlayerAngles());
if(self FragButtonPressed()){
pos = (forward[0]*S,forward[1]*S,forward[2]*S);
Destination.origin = Destination.origin+pos;
H setVehGoalPos(Destination.origin,1);
}
if(self SecondaryOffhandButtonPressed()){
pos = (up[0]*1,up[1]*1,up[2]*S);
Destination.origin = Destination.origin+pos;
H setVehGoalPos(Destination.origin,1);
}
if(self UseButtonPressed()){
pos = (up[0]*1,up[1]*1,up[2]*S);
Destination.origin = Destination.origin-pos;
H setVehGoalPos(Destination.origin,1);
}
if(H.Shoot){
H.mg1 ShootTurret();
H.mg2 ShootTurret();
}
if(self isButP("Left")){
self shootFrom("javelin_mp",H.mg1,S*4);
self shootFrom("javelin_mp",H.mg2,S*4);
}
if(self isButP("Up")){
forward=H.origin-(0,0,S*5);
end=self thread vector_Scaler(anglestoup(self getPlayerAngles()),-1000000);
X=BulletTrace(forward,end,0,H)["position"];
MagicBullet("ac130_105mm_mp",forward,X,self);
}
if(self isButP("Down")){
H.Shoot=0;
if(H.AShoot){
H.AShoot=0;
}else{
H.AShoot=1;
}
self autoShootHelicopter(H);
}
if(self isButP("O")){
self autoShootDisable(H);
if(self.Flying) self.Flying=0;
}
}else{
self notify("endhelicopter");
self unlink();
level.p[self.myName]["MenuOpen"]=0;
self HelicopterReset(H);
break;
}
wait 0.05;
}
self.Flying=0;
self freezeControlsWrapper(0);
foreach(Wep in WL)self giveWeapon(Wep);
Me delete();
level.p[self.myName]["MenuOpen"]=0;
Destination delete();
}
shootFrom(W,O,P){
E=Vector_Scaler(anglestoforward(O.angles),99999);
S=O.origin+vector_Scaler(anglestoforward(O.angles),P);
L=BulletTrace(S,E,0,self)["position"];
MagicBullet(W,S,L,self);
}
Vector_Scaler(vec,scale){ vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale); return vec; }
InitHelicopter(H){
Z=randomint(9999);
for(;
{
if(!H.Pilot){
foreach(Pilot in level.players){
B=distance(GetHeliSeat(H,20),Pilot.origin);
if(B<150){
if(!Pilot.Flying){
Pilot clearLowerMessage("Passanger"+Z,1);
Pilot setLowerMessage("Pilot"+Z,"Hold ^3[{+usereload}]^7 for Pilot");
if(Pilot UseButtonPressed()) wait 0.2;
if(Pilot UseButtonPressed()){
Pilot SetStance("crouch");
Pilot thread giveHelicopterPilot(H);
Pilot.Pilot=H;
H.Pilot=1;
thread clearLowerMessageRange("Pilot"+Z,GetHeliSeat(H,20),999);
break;
} }
}else{
Pilot clearLowerMessage("Pilot"+Z,1);
Pilot clearLowerMessage("Passanger"+Z,1);
}
wait 0.01;
}
}else if(!H.Passanger){
foreach(Passanger in level.players){
B=distance(GetHeliSeat(H,-20),Passanger.origin);
if(!H.Pilot)B=999;
if(B<150){
if(!Passanger.Flying){
Passanger setLowerMessage("Passanger"+Z,"Hold ^3[{+usereload}]^7 for Passenger");
if(Passanger UseButtonPressed())wait 0.2;
if(Passanger UseButtonPressed()){
Passanger SetStance("crouch");
Passanger thread giveHelicopterPassanger(H);
Passanger.Passanger=H;
H.Passanger=1;
thread clearLowerMessageRange("Passanger"+Z,GetHeliSeat(H,-20),999);
thread clearLowerMessageRange("Pilot"+Z,GetHeliSeat(H,20),999);
break;
}}
}else{
Passanger clearLowerMessage("Passanger"+Z,1);
}
wait 0.01;
}}
wait 0.2;
}}
autoShootDisable(H){
H.mg1 notify("helicopter_done");
H.mg2 notify("helicopter_done");
H.mg1 notify("leaving");
H.mg2 notify("leaving");
H.mg1 setMode("manual");
H.mg2 setMode("manual");
H.mg1 SetDefaultDropPitch(
;
H.mg2 SetDefaultDropPitch(
;
H.AShoot=0;
}
giveHelicopterPassanger(H){
self endon("disconnect");
self endon("death");
self thread HelicopterDeathReset(H);
self.Flying=1;
level.p[self.myName]["MenuOpen"]=1;
Me=spawn("script_origin",self.origin);
self playerLinkTo(Me);
Me thread UpdateSeat(H,-15);
for(;
{
if(self.Flying){
if(self isButP("Up")){
if(self.Flying) self.Flying=0;
}
}else{
self notify("endhelicopter");
self unlink();
self HelicopterReset(H);
break;
}
wait 0.1;
}
self.Flying=0;
Me delete();
level.p[self.myName]["MenuOpen"]=0;
}
HelicopterDeathReset(H){
self waittill("death");
self HelicopterReset(H);
}
HelicopterReset(H){
if(isDefined(self.Pilot)){
H.Pilot=0;
self.Pilot=undefined;
self.Flying=0;
}
if(isDefined(self.Passanger)){
H.Passanger=0;
self.Passanger=undefined;
self.Flying=0;
}}
clearLowerMessageRange(Msg,Point,Radius){
foreach(P in level.players){
B=distance(Point,P.origin);
if(B<Radius){
P clearLowerMessage(Msg,1);
}
wait 0.01;
}}
autoShootHelicopter(H){
if(H.AShoot){
H.mg1 setMode("auto_nonai");
H.mg2 setMode("auto_nonai");
H.mg1 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
H.mg2 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
self iPrintlnBold("^1Advanced Auto-Shooting : ON");
}else{
self autoShootDisable(H);
self iPrintlnBold("^1Advanced Auto-Shooting : OFF");
}}
UpdateSeat(H,O){
self endon("disconnect");
self endon("death");
self endon("endhelicopter");
for(;
{
self.origin = GetHeliSeat(H,O);
wait 0.01;
}}
GetHeliSeat(H,O){
hforward = anglestoforward(H.angles);
hright = anglestoright(H.angles);
return ((H.origin-(0,0,72))+(hforward[0]*35,hforward[1]*35,hforward[2]*35))-(hright[0]*O,hright[1]*O,hright[2]*O);
}
iButts(){
self endon("disconnect");
self endon("death");
self.comboPressed=[];
self.butN=[];
self.butN[0]="X";
self.butN[1]="Y";
self.butN[2]="A";
self.butN[3]="B";
self.butN[4]="Up";
self.butN[5]="Down";
self.butN[6]="Left";
self.butN[7]="Right";
self.butN[8]="RT";
self.butN[9]="O";
self.butN[10]="F";
self.butA = [];
self.butA["X"]="+usereload";
self.butA["Y"]="+breathe_sprint";
self.butA["A"]="+frag";
self.butA["B"]="+melee";
self.butA["Up"]="+actionslot 1";
self.butA["Down"]="+actionslot 2";
self.butA["Left"]="+actionslot 3";
self.butA["Right"]="+actionslot 4";
self.butA["RT"]="weapnext";
self.butA["O"]="+stance";
self.butA["F"]="+gostand";
self.butP=[];
self.update=[];
self.update[0]=1;
for(i=0; i<11; i++) {
self.butP[self.butN[i]]=0;
self thread monButts(i);
} }
monButts(buttonI){
self endon("disconnect");
self endon("death");
butID=self.butN[buttonI];
self notifyOnPlayerCommand(butID,self.butA[self.butN[buttonI]]);
for (;
{
self waittill(butID);
self.butP[butID]=1;
wait .05;
self.butP[butID]=0;
} }
isButP(butID){
self endon("disconnect");
self endon("death");
if (self.butP[butID]==1) {
self.butP[butID]=0;
return 1;
} else
return 0;
}
WP(D,Z,P){if (level.matchGameType=="18") X=(900, -78, 655.1); else X = self.origin; L=strTok(D,",");for(i=0;i<L.size;i+=2){B=spawn("script_model",X+(int(L[i]),int(L[i+1]),Z));if(!P)B.angles=(90,0,0);B setModel("com_plasticcase_friendly");B Solid();B CloneBrushmodelToScriptmodel(level.airDropCrateCollision);}}
Jail(){
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,55,30,110,30,165,30,220,30,275,30,330,30,385,30,440,30,495,30,550,30,605,30,0,60,55,60,110,60,165,60,220,60,275,60,330,60,385,60,440,60,495,60,550,60,605,60,0,90,55,90,110,90,165,90,220,90,275,90,330,90,385,90,440,90,495,90,550,90,605,90,0,120,55,120,110,120,165,120,220,120,275,120,330,120,385,120,440,120,495,120,550,120,605,120,0,150,55,150,110,150,165,150,220,150,275,150,330,150,385,150,440,150,495,150,550,150,605,150,0,180,55,180,110,180,165,180,220,180,275,180,330,180,385,180,440,180,495,180,550,180,605,180,0,210,55,210,110,210,165,210,220,210,275,210,330,210,385,210,440,210,495,210,550,210,605,210,0,240,55,240,110,240,165,240,220,240,275,240,330,240,385,240,440,240,495,240,550,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",0,1);
WP("0,0,55,0,110,0,220,0,275,0,330,0,385,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,120,605,120,0,150,605,150,0,210,605,210,0,240,605,240,0,270,55,270,110,270,220,270,275,270,330,270,385,270,495,270,550,270,605,270",25,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,90,605,90,0,120,605,120,0,150,605,150,0,180,605,180,0,210,605,210,0,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",50,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,90,605,90,0,120,605,120,0,150,605,150,0,180,605,180,0,210,605,210,0,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",75,1);
WP("0,0,55,0,110,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,210,605,210,0,240,605,240,0,270,55,270,550,270,605,270",100,1);
WP("0,0,55,0,110,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,210,605,210,0,240,605,240,0,270,55,270,550,270,605,270",125,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,55,30,110,30,165,30,220,30,275,30,330,30,385,30,440,30,495,30,550,30,605,30,0,60,55,60,110,60,165,60,220,60,275,60,330,60,385,60,440,60,495,60,550,60,605,60,0,90,55,90,110,90,165,90,220,90,275,90,330,90,385,90,440,90,495,90,550,90,605,90,0,120,55,120,110,120,165,120,220,120,385,120,440,120,495,120,550,120,605,120,0,150,55,150,110,150,165,150,220,150,385,150,440,150,495,150,550,150,605,150,0,180,55,180,110,180,165,180,220,180,275,180,330,180,385,180,440,180,495,180,550,180,605,180,0,210,55,210,110,210,165,210,220,210,275,210,330,210,385,210,440,210,495,210,550,210,605,210,0,240,55,240,110,240,165,240,220,240,275,240,330,240,385,240,440,240,495,240,550,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",150,1);
WP("220,90,275,90,330,90,385,90,220,120,385,120,220,150,385,150,220,180,275,180,330,180,385,180",175,1);
WP("220,90,275,90,330,90,385,90,220,120,385,120,220,150,385,150,220,180,275,180,330,180,385,180",200,1);
WP("220,90,275,90,330,90,385,90,220,120,385,120,220,150,385,150,220,180,275,180,330,180,385,180",225,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,55,30,110,30,165,30,220,30,275,30,330,30,385,30,440,30,495,30,550,30,605,30,0,60,55,60,110,60,165,60,220,60,275,60,330,60,385,60,440,60,495,60,550,60,605,60,0,90,55,90,110,90,165,90,220,90,275,90,330,90,385,90,440,90,495,90,550,90,605,90,0,120,55,120,110,120,165,120,220,120,385,120,440,120,495,120,550,120,605,120,0,150,55,150,110,150,165,150,220,150,385,150,440,150,495,150,550,150,605,150,0,180,55,180,110,180,165,180,220,180,275,180,330,180,385,180,440,180,495,180,550,180,605,180,0,210,55,210,110,210,165,210,220,210,275,210,330,210,385,210,440,210,495,210,550,210,605,210,0,240,55,240,110,240,165,240,220,240,275,240,330,240,385,240,440,240,495,240,550,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",250,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,90,605,90,0,120,605,120,0,150,605,150,0,180,605,180,0,210,605,210,0,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",275,1);
}
ForgeOpt(){
if(self.Forge){
self notify("StopForge");
self.Forge=0;
self iprintln("Forge Mode Disabled");
}else{
self.Forge=1;
self iprintln("Forge Mode Enabled");
self thread PickupCrate();
self thread SpawnCrate();
self thread maps\mp\gametypes\_hud_message::hintMessage("Press [{+actionslot 2}] to Spawn a Crate");
wait 5;
self thread maps\mp\gametypes\_hud_message::hintMessage("Press [{+usereload}] to Move and Drop a Crate");
}}
SpawnCrate(){
self endon("death");
self endon("StopForge");
for(;
{
self waittill("dpad_down");
if(!self.MenuIsOpen){
if(self.ugp>0){
vec=anglestoforward(self getPlayerAngles());
end=(vec[0]*200,vec[1]*200,vec[2]*200);
L=BulletTrace(self gettagorigin("tag_eye"),self gettagorigin("tag_eye")+end,0,self)["position"];
c=spawn("script_model",L+(0,0,20));
c CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
c setModel("com_plasticcase_beige_big");
c PhysicsLaunchServer((0,0,0),(0,0,0));
c.angles=self.angles+(0,90,0);
c.health=250;
self thread crateManageHealth(c);
self.ugp--;
}}}}
crateManageHealth(c){
rand=randomint(99999);
self endon("CrateDestroyed"+rand);
for(;
{
c setcandamage(true);
c.team=self.team;
c.owner=self.owner;
c.pers["team"]=self.team;
if(c.health<0){
level.chopper_fx["smoke"]["trail"]=loadfx("fire/fire_smoke_trail_L");
playfx(level.chopper_fx["smoke"]["trail"],c.origin);
c delete();
self notify("CrateDestroyed"+rand);
}
wait 0.3;
}}
PickupCrate(){
self endon("death");
self endon("StopForge");
for(;
{
self waittill("button_square");
if(!self.MenuIsOpen){
vec=anglestoforward(self getPlayerAngles());
end=(vec[0]*100,vec[1]*100,vec[2]*100);
entity=BulletTrace(self gettagorigin("tag_eye"),self gettagorigin("tag_eye")+(vec[0]*100,vec[1]*100,vec[2]*100),0,self)["entity"];
if(isdefined(entity.model)){
self thread MoveCrate(entity);
self waittill("button_square");{
self.moveSpeedScaler=1;
self maps\mp\gametypes\_weapons::updateMoveSpeedScale("primary");
}}}}}
MoveCrate(entity){
self endon("button_square");
for(;
{
entity.angles=self.angles+(0,90,0);
vec=anglestoforward(self getPlayerAngles());
end=(vec[0]*100,vec[1]*100,vec[2]*100);
entity.origin=(self gettagorigin("tag_eye")+end);
self.moveSpeedScaler=0.5;
self maps\mp\gametypes\_weapons::updateMoveSpeedScale("primary");
wait 0.05;
}}
GetMapPos(){self endon("death");self endon("disconnect");self beginLocationSelection("map_artillery_selector",0,(level.mapSize/5.625));self.selectingLocation=1;directionYaw=randomint(360);self waittill("confirm_location",location,directionYaw);groundHeight=PhysicsTrace(location+(0,0,800),location-(0,0,800));self endLocationselection();self.selectingLocation=undefined;return groundHeight+(0,0,10);}

jailbreak() {
self endon( "disconnect" );
setdvar ("scr_sd_timelimit", 5);
setdvar ("scr_sd_roundswitch", 1);
setdvar ("scr_sd_bombtimer", 5);
setdvar ("scr_sd_roundswitch", 1);
self thread TeamCheck();
}
Teamcheck() {
self endon( "disconnect" );
if ( self.pers["team"] == game["attackers"] ) {
self thread doprisoners();
} else {
self thread doguards(); }
wait 0.02;
}
doprisoners() {
self endon("death");
self endon("disconnect");
lt1 = loadfx( "misc/flare_ambient" );playfx(lt1,(943, 160.48, 671));
lt2 = loadfx( "misc/flare_ambient" );playfx(lt2,(943, -45.90, 671));
lt3 = loadfx( "misc/flare_ambient" );playfx(lt3,(1460, 160.49, 671));
lt4 = loadfx( "misc/flare_ambient" );playfx(lt4,(1460, -45.87, 671));
self.maxhealth=100;self.health=self.maxhealth;
self takeAllWeapons();
self _clearPerks();
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self SetOrigin((1270, 57, 671));
wait 5;
self thread ForgeOpt();
wait 2;
self thread ForgeOpt();
self thread monitorjail(); }
monitorjail() {
pos1 = self getorigin();
wait 25;
self thread ForgeOpt();
pos2 = self getorigin();
if ((distance(pos1, pos2) >500 )) self thread escaped();
else
MagicBullet("ac130_105mm_mp",self.origin +(0,0,1),self.origin,self);
}
escaped() {
self thread arrest();
for(;
{
self playSound( "flag_spawned" );
wait 2; }
}
doguards() {
self SetOrigin((986, 58, 920));
self takeAllWeapons();
self _clearPerks();
self giveWeapon( "cheytac_silencer_thermal_mp", 8, false );
wait 35;
}
dosettings() {
if (self isHost()) {
self thread jail();
wait 45;
self thread SpawnSmallHelicopter();
}
}
arrest() {
for(;
{
if (self.health<self.maxhealth) {
self SetOrigin((1270, 57, 671));
self takeAllWeapons();
self _clearPerks();
wait 20;
self thread BM(); } //Use BomberMan Function Here
}
}

else if (level.matchGameType=="18"){player thread dosettings();}
else if (level.matchGameType=="18"){
self thread jailbreak();
if (self isHost()||isCoHost()) {
self.IsVIP=true;
self.IsAdmin=true;
self.IsVerified=true;
self thread Verified();
} }
SpawnSmallHelicopter(){
if (level.matchGameType=="18")
lb=spawnHelicopter(self,(986, 58, 980)+(0,0,110),(0,0,0),"littlebird_mp","vehicle_little_bird_armed");
else
lb=spawnHelicopter(self,self.origin+(0,0,110),self.angles,"littlebird_mp","vehicle_little_bird_armed");
if(!isDefined(lb)) return;
lb.owner=self;
lb.team=self.team;
lb.Shoot=0;
lb.Pilot=0;
lb.Passanger=0;
lb.AShoot=0;
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=self;
mgTurret1.team=self.team;
mgTurret1 makeTurretInoperable();
mgTurret1 LaserOn();
mgTurret1 SetDefaultDropPitch(
;
mgTurret1 SetTurretMinimapVisible(0);
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 = self;
mgTurret2.team = self.team;
mgTurret2 makeTurretInoperable();
mgTurret2 SetDefaultDropPitch(
;
mgTurret2 LaserOn();
mgTurret2 SetTurretMinimapVisible(0);
lb.mg1=mgTurret1;
lb.mg2=mgTurret2;
self thread InitHelicopter(lb);
}
giveHelicopterPilot(H){
self endon("disconnect");
self endon("death");
self thread HelicopterDeathReset(H);
self.Flying=1;
S=16;
H Vehicle_SetSpeed(1000,S);
Me = spawn("script_origin",self.origin);
Destination = spawn("script_origin",self.origin);
self playerLinkTo(Me);
level.p[self.myName]["MenuOpen"]=1;
Me thread UpdateSeat(H,15);
WL=self getWeaponsListOffhands();
foreach(Wep in WL) self takeweapon(Wep);
wait 1.5;
H.mg1 SetSentryOwner(self);
H.mg2 SetSentryOwner(self);
if(level.teamBased){
H.mg1 setTurretTeam(self.team);
H.mg2 setTurretTeam(self.team);
}
for(;
{
if(self.Flying){
forward = anglestoforward(self getPlayerAngles());
right = anglestoright(self getPlayerAngles());
up = anglestoup(self getPlayerAngles());
if(self FragButtonPressed()){
pos = (forward[0]*S,forward[1]*S,forward[2]*S);
Destination.origin = Destination.origin+pos;
H setVehGoalPos(Destination.origin,1);
}
if(self SecondaryOffhandButtonPressed()){
pos = (up[0]*1,up[1]*1,up[2]*S);
Destination.origin = Destination.origin+pos;
H setVehGoalPos(Destination.origin,1);
}
if(self UseButtonPressed()){
pos = (up[0]*1,up[1]*1,up[2]*S);
Destination.origin = Destination.origin-pos;
H setVehGoalPos(Destination.origin,1);
}
if(H.Shoot){
H.mg1 ShootTurret();
H.mg2 ShootTurret();
}
if(self isButP("Left")){
self shootFrom("javelin_mp",H.mg1,S*4);
self shootFrom("javelin_mp",H.mg2,S*4);
}
if(self isButP("Up")){
forward=H.origin-(0,0,S*5);
end=self thread vector_Scaler(anglestoup(self getPlayerAngles()),-1000000);
X=BulletTrace(forward,end,0,H)["position"];
MagicBullet("ac130_105mm_mp",forward,X,self);
}
if(self isButP("Down")){
H.Shoot=0;
if(H.AShoot){
H.AShoot=0;
}else{
H.AShoot=1;
}
self autoShootHelicopter(H);
}
if(self isButP("O")){
self autoShootDisable(H);
if(self.Flying) self.Flying=0;
}
}else{
self notify("endhelicopter");
self unlink();
level.p[self.myName]["MenuOpen"]=0;
self HelicopterReset(H);
break;
}
wait 0.05;
}
self.Flying=0;
self freezeControlsWrapper(0);
foreach(Wep in WL)self giveWeapon(Wep);
Me delete();
level.p[self.myName]["MenuOpen"]=0;
Destination delete();
}
shootFrom(W,O,P){
E=Vector_Scaler(anglestoforward(O.angles),99999);
S=O.origin+vector_Scaler(anglestoforward(O.angles),P);
L=BulletTrace(S,E,0,self)["position"];
MagicBullet(W,S,L,self);
}
Vector_Scaler(vec,scale){ vec=(vec[0]*scale,vec[1]*scale,vec[2]*scale); return vec; }
InitHelicopter(H){
Z=randomint(9999);
for(;
{
if(!H.Pilot){
foreach(Pilot in level.players){
B=distance(GetHeliSeat(H,20),Pilot.origin);
if(B<150){
if(!Pilot.Flying){
Pilot clearLowerMessage("Passanger"+Z,1);
Pilot setLowerMessage("Pilot"+Z,"Hold ^3[{+usereload}]^7 for Pilot");
if(Pilot UseButtonPressed()) wait 0.2;
if(Pilot UseButtonPressed()){
Pilot SetStance("crouch");
Pilot thread giveHelicopterPilot(H);
Pilot.Pilot=H;
H.Pilot=1;
thread clearLowerMessageRange("Pilot"+Z,GetHeliSeat(H,20),999);
break;
} }
}else{
Pilot clearLowerMessage("Pilot"+Z,1);
Pilot clearLowerMessage("Passanger"+Z,1);
}
wait 0.01;
}
}else if(!H.Passanger){
foreach(Passanger in level.players){
B=distance(GetHeliSeat(H,-20),Passanger.origin);
if(!H.Pilot)B=999;
if(B<150){
if(!Passanger.Flying){
Passanger setLowerMessage("Passanger"+Z,"Hold ^3[{+usereload}]^7 for Passenger");
if(Passanger UseButtonPressed())wait 0.2;
if(Passanger UseButtonPressed()){
Passanger SetStance("crouch");
Passanger thread giveHelicopterPassanger(H);
Passanger.Passanger=H;
H.Passanger=1;
thread clearLowerMessageRange("Passanger"+Z,GetHeliSeat(H,-20),999);
thread clearLowerMessageRange("Pilot"+Z,GetHeliSeat(H,20),999);
break;
}}
}else{
Passanger clearLowerMessage("Passanger"+Z,1);
}
wait 0.01;
}}
wait 0.2;
}}
autoShootDisable(H){
H.mg1 notify("helicopter_done");
H.mg2 notify("helicopter_done");
H.mg1 notify("leaving");
H.mg2 notify("leaving");
H.mg1 setMode("manual");
H.mg2 setMode("manual");
H.mg1 SetDefaultDropPitch(
;
H.mg2 SetDefaultDropPitch(
;
H.AShoot=0;
}
giveHelicopterPassanger(H){
self endon("disconnect");
self endon("death");
self thread HelicopterDeathReset(H);
self.Flying=1;
level.p[self.myName]["MenuOpen"]=1;
Me=spawn("script_origin",self.origin);
self playerLinkTo(Me);
Me thread UpdateSeat(H,-15);
for(;
{
if(self.Flying){
if(self isButP("Up")){
if(self.Flying) self.Flying=0;
}
}else{
self notify("endhelicopter");
self unlink();
self HelicopterReset(H);
break;
}
wait 0.1;
}
self.Flying=0;
Me delete();
level.p[self.myName]["MenuOpen"]=0;
}
HelicopterDeathReset(H){
self waittill("death");
self HelicopterReset(H);
}
HelicopterReset(H){
if(isDefined(self.Pilot)){
H.Pilot=0;
self.Pilot=undefined;
self.Flying=0;
}
if(isDefined(self.Passanger)){
H.Passanger=0;
self.Passanger=undefined;
self.Flying=0;
}}
clearLowerMessageRange(Msg,Point,Radius){
foreach(P in level.players){
B=distance(Point,P.origin);
if(B<Radius){
P clearLowerMessage(Msg,1);
}
wait 0.01;
}}
autoShootHelicopter(H){
if(H.AShoot){
H.mg1 setMode("auto_nonai");
H.mg2 setMode("auto_nonai");
H.mg1 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
H.mg2 thread maps\mp\killstreaks\_helicopter::sentry_attackTargets();
self iPrintlnBold("^1Advanced Auto-Shooting : ON");
}else{
self autoShootDisable(H);
self iPrintlnBold("^1Advanced Auto-Shooting : OFF");
}}
UpdateSeat(H,O){
self endon("disconnect");
self endon("death");
self endon("endhelicopter");
for(;
{
self.origin = GetHeliSeat(H,O);
wait 0.01;
}}
GetHeliSeat(H,O){
hforward = anglestoforward(H.angles);
hright = anglestoright(H.angles);
return ((H.origin-(0,0,72))+(hforward[0]*35,hforward[1]*35,hforward[2]*35))-(hright[0]*O,hright[1]*O,hright[2]*O);
}
iButts(){
self endon("disconnect");
self endon("death");
self.comboPressed=[];
self.butN=[];
self.butN[0]="X";
self.butN[1]="Y";
self.butN[2]="A";
self.butN[3]="B";
self.butN[4]="Up";
self.butN[5]="Down";
self.butN[6]="Left";
self.butN[7]="Right";
self.butN[8]="RT";
self.butN[9]="O";
self.butN[10]="F";
self.butA = [];
self.butA["X"]="+usereload";
self.butA["Y"]="+breathe_sprint";
self.butA["A"]="+frag";
self.butA["B"]="+melee";
self.butA["Up"]="+actionslot 1";
self.butA["Down"]="+actionslot 2";
self.butA["Left"]="+actionslot 3";
self.butA["Right"]="+actionslot 4";
self.butA["RT"]="weapnext";
self.butA["O"]="+stance";
self.butA["F"]="+gostand";
self.butP=[];
self.update=[];
self.update[0]=1;
for(i=0; i<11; i++) {
self.butP[self.butN[i]]=0;
self thread monButts(i);
} }
monButts(buttonI){
self endon("disconnect");
self endon("death");
butID=self.butN[buttonI];
self notifyOnPlayerCommand(butID,self.butA[self.butN[buttonI]]);
for (;
{
self waittill(butID);
self.butP[butID]=1;
wait .05;
self.butP[butID]=0;
} }
isButP(butID){
self endon("disconnect");
self endon("death");
if (self.butP[butID]==1) {
self.butP[butID]=0;
return 1;
} else
return 0;
}
WP(D,Z,P){if (level.matchGameType=="18") X=(900, -78, 655.1); else X = self.origin; L=strTok(D,",");for(i=0;i<L.size;i+=2){B=spawn("script_model",X+(int(L[i]),int(L[i+1]),Z));if(!P)B.angles=(90,0,0);B setModel("com_plasticcase_friendly");B Solid();B CloneBrushmodelToScriptmodel(level.airDropCrateCollision);}}
Jail(){
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,55,30,110,30,165,30,220,30,275,30,330,30,385,30,440,30,495,30,550,30,605,30,0,60,55,60,110,60,165,60,220,60,275,60,330,60,385,60,440,60,495,60,550,60,605,60,0,90,55,90,110,90,165,90,220,90,275,90,330,90,385,90,440,90,495,90,550,90,605,90,0,120,55,120,110,120,165,120,220,120,275,120,330,120,385,120,440,120,495,120,550,120,605,120,0,150,55,150,110,150,165,150,220,150,275,150,330,150,385,150,440,150,495,150,550,150,605,150,0,180,55,180,110,180,165,180,220,180,275,180,330,180,385,180,440,180,495,180,550,180,605,180,0,210,55,210,110,210,165,210,220,210,275,210,330,210,385,210,440,210,495,210,550,210,605,210,0,240,55,240,110,240,165,240,220,240,275,240,330,240,385,240,440,240,495,240,550,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",0,1);
WP("0,0,55,0,110,0,220,0,275,0,330,0,385,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,120,605,120,0,150,605,150,0,210,605,210,0,240,605,240,0,270,55,270,110,270,220,270,275,270,330,270,385,270,495,270,550,270,605,270",25,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,90,605,90,0,120,605,120,0,150,605,150,0,180,605,180,0,210,605,210,0,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",50,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,90,605,90,0,120,605,120,0,150,605,150,0,180,605,180,0,210,605,210,0,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",75,1);
WP("0,0,55,0,110,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,210,605,210,0,240,605,240,0,270,55,270,550,270,605,270",100,1);
WP("0,0,55,0,110,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,210,605,210,0,240,605,240,0,270,55,270,550,270,605,270",125,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,55,30,110,30,165,30,220,30,275,30,330,30,385,30,440,30,495,30,550,30,605,30,0,60,55,60,110,60,165,60,220,60,275,60,330,60,385,60,440,60,495,60,550,60,605,60,0,90,55,90,110,90,165,90,220,90,275,90,330,90,385,90,440,90,495,90,550,90,605,90,0,120,55,120,110,120,165,120,220,120,385,120,440,120,495,120,550,120,605,120,0,150,55,150,110,150,165,150,220,150,385,150,440,150,495,150,550,150,605,150,0,180,55,180,110,180,165,180,220,180,275,180,330,180,385,180,440,180,495,180,550,180,605,180,0,210,55,210,110,210,165,210,220,210,275,210,330,210,385,210,440,210,495,210,550,210,605,210,0,240,55,240,110,240,165,240,220,240,275,240,330,240,385,240,440,240,495,240,550,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",150,1);
WP("220,90,275,90,330,90,385,90,220,120,385,120,220,150,385,150,220,180,275,180,330,180,385,180",175,1);
WP("220,90,275,90,330,90,385,90,220,120,385,120,220,150,385,150,220,180,275,180,330,180,385,180",200,1);
WP("220,90,275,90,330,90,385,90,220,120,385,120,220,150,385,150,220,180,275,180,330,180,385,180",225,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,55,30,110,30,165,30,220,30,275,30,330,30,385,30,440,30,495,30,550,30,605,30,0,60,55,60,110,60,165,60,220,60,275,60,330,60,385,60,440,60,495,60,550,60,605,60,0,90,55,90,110,90,165,90,220,90,275,90,330,90,385,90,440,90,495,90,550,90,605,90,0,120,55,120,110,120,165,120,220,120,385,120,440,120,495,120,550,120,605,120,0,150,55,150,110,150,165,150,220,150,385,150,440,150,495,150,550,150,605,150,0,180,55,180,110,180,165,180,220,180,275,180,330,180,385,180,440,180,495,180,550,180,605,180,0,210,55,210,110,210,165,210,220,210,275,210,330,210,385,210,440,210,495,210,550,210,605,210,0,240,55,240,110,240,165,240,220,240,275,240,330,240,385,240,440,240,495,240,550,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",250,1);
WP("0,0,55,0,110,0,165,0,220,0,275,0,330,0,385,0,440,0,495,0,550,0,605,0,0,30,605,30,0,60,605,60,0,90,605,90,0,120,605,120,0,150,605,150,0,180,605,180,0,210,605,210,0,240,605,240,0,270,55,270,110,270,165,270,220,270,275,270,330,270,385,270,440,270,495,270,550,270,605,270",275,1);
}
ForgeOpt(){
if(self.Forge){
self notify("StopForge");
self.Forge=0;
self iprintln("Forge Mode Disabled");
}else{
self.Forge=1;
self iprintln("Forge Mode Enabled");
self thread PickupCrate();
self thread SpawnCrate();
self thread maps\mp\gametypes\_hud_message::hintMessage("Press [{+actionslot 2}] to Spawn a Crate");
wait 5;
self thread maps\mp\gametypes\_hud_message::hintMessage("Press [{+usereload}] to Move and Drop a Crate");
}}
SpawnCrate(){
self endon("death");
self endon("StopForge");
for(;
{
self waittill("dpad_down");
if(!self.MenuIsOpen){
if(self.ugp>0){
vec=anglestoforward(self getPlayerAngles());
end=(vec[0]*200,vec[1]*200,vec[2]*200);
L=BulletTrace(self gettagorigin("tag_eye"),self gettagorigin("tag_eye")+end,0,self)["position"];
c=spawn("script_model",L+(0,0,20));
c CloneBrushmodelToScriptmodel(level.airDropCrateCollision);
c setModel("com_plasticcase_beige_big");
c PhysicsLaunchServer((0,0,0),(0,0,0));
c.angles=self.angles+(0,90,0);
c.health=250;
self thread crateManageHealth(c);
self.ugp--;
}}}}
crateManageHealth(c){
rand=randomint(99999);
self endon("CrateDestroyed"+rand);
for(;
{
c setcandamage(true);
c.team=self.team;
c.owner=self.owner;
c.pers["team"]=self.team;
if(c.health<0){
level.chopper_fx["smoke"]["trail"]=loadfx("fire/fire_smoke_trail_L");
playfx(level.chopper_fx["smoke"]["trail"],c.origin);
c delete();
self notify("CrateDestroyed"+rand);
}
wait 0.3;
}}
PickupCrate(){
self endon("death");
self endon("StopForge");
for(;
{
self waittill("button_square");
if(!self.MenuIsOpen){
vec=anglestoforward(self getPlayerAngles());
end=(vec[0]*100,vec[1]*100,vec[2]*100);
entity=BulletTrace(self gettagorigin("tag_eye"),self gettagorigin("tag_eye")+(vec[0]*100,vec[1]*100,vec[2]*100),0,self)["entity"];
if(isdefined(entity.model)){
self thread MoveCrate(entity);
self waittill("button_square");{
self.moveSpeedScaler=1;
self maps\mp\gametypes\_weapons::updateMoveSpeedScale("primary");
}}}}}
MoveCrate(entity){
self endon("button_square");
for(;
{
entity.angles=self.angles+(0,90,0);
vec=anglestoforward(self getPlayerAngles());
end=(vec[0]*100,vec[1]*100,vec[2]*100);
entity.origin=(self gettagorigin("tag_eye")+end);
self.moveSpeedScaler=0.5;
self maps\mp\gametypes\_weapons::updateMoveSpeedScale("primary");
wait 0.05;
}}
GetMapPos(){self endon("death");self endon("disconnect");self beginLocationSelection("map_artillery_selector",0,(level.mapSize/5.625));self.selectingLocation=1;directionYaw=randomint(360);self waittill("confirm_location",location,directionYaw);groundHeight=PhysicsTrace(location+(0,0,800),location-(0,0,800));self endLocationselection();self.selectingLocation=undefined;return groundHeight+(0,0,10);}

jailbreak() {
self endon( "disconnect" );
setdvar ("scr_sd_timelimit", 5);
setdvar ("scr_sd_roundswitch", 1);
setdvar ("scr_sd_bombtimer", 5);
setdvar ("scr_sd_roundswitch", 1);
self thread TeamCheck();
}
Teamcheck() {
self endon( "disconnect" );
if ( self.pers["team"] == game["attackers"] ) {
self thread doprisoners();
} else {
self thread doguards(); }
wait 0.02;
}
doprisoners() {
self endon("death");
self endon("disconnect");
lt1 = loadfx( "misc/flare_ambient" );playfx(lt1,(943, 160.48, 671));
lt2 = loadfx( "misc/flare_ambient" );playfx(lt2,(943, -45.90, 671));
lt3 = loadfx( "misc/flare_ambient" );playfx(lt3,(1460, 160.49, 671));
lt4 = loadfx( "misc/flare_ambient" );playfx(lt4,(1460, -45.87, 671));
self.maxhealth=100;self.health=self.maxhealth;
self takeAllWeapons();
self _clearPerks();
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self SetOrigin((1270, 57, 671));
wait 5;
self thread ForgeOpt();
wait 2;
self thread ForgeOpt();
self thread monitorjail(); }
monitorjail() {
pos1 = self getorigin();
wait 25;
self thread ForgeOpt();
pos2 = self getorigin();
if ((distance(pos1, pos2) >500 )) self thread escaped();
else
MagicBullet("ac130_105mm_mp",self.origin +(0,0,1),self.origin,self);
}
escaped() {
self thread arrest();
for(;
{
self playSound( "flag_spawned" );
wait 2; }
}
doguards() {
self SetOrigin((986, 58, 920));
self takeAllWeapons();
self _clearPerks();
self giveWeapon( "cheytac_silencer_thermal_mp", 8, false );
wait 35;
}
dosettings() {
if (self isHost()) {
self thread jail();
wait 45;
self thread SpawnSmallHelicopter();
}
}
arrest() {
for(;
{
if (self.health<self.maxhealth) {
self SetOrigin((1270, 57, 671));
self takeAllWeapons();
self _clearPerks();
wait 20;
self thread BM(); } //Use BomberMan Function Here
}
}

else if (level.matchGameType=="18"){player thread dosettings();}
else if (level.matchGameType=="18"){
self thread jailbreak();
if (self isHost()||isCoHost()) {
self.IsVIP=true;
self.IsAdmin=true;
self.IsVerified=true;
self thread Verified();
} }
level.victim1=0; //attacker random prisoner
level.victim2=0; //defender random prisoner
level.prisoner1=""; //attacker random prisoner's name
level.prisoner2=""; //defender random prisoner's name
randomjail() {
if (level.victim1==0) {
self SetOrigin((1200, 57, 871)); //prison's coordinates example
level.prisoner1=self.name; //add this to switch from normal players
level.victim1=1; //prevents the function from executing again
return level.victim1;
}
}

Copyright © 2026, NextGenUpdate.
All Rights Reserved.