//put on init
//precacheModel("prop_suitcase_bomb");
//precacheModel("veh_t6_drone_overwatch_light");
//level.activesky = 0;
//level.activesky1 = 0;
//call self skybasetoggle();
//[URL="https://pastebin.com/3c3VJFSB"]Skybase[/URL]
skybasetoggle()
{
if(!level.base)
{
self iprintlnbold("Aim At Position And Shoot To Spawn SkyBase");
self toggle();
level.base = true;
}
else
{
self toggledelete();
level.base = false;
}
}
toggle()
{
level endon("game_ended");
self endon("death");
self waittill("weapon_fired");
vec = anglestoforward(self getPlayerAngles());
center = BulletTrace( self gettagorigin("tag_eye"), self gettagorigin("tag_eye")+(vec[0] * 200000, vec[1] * 200000, vec[2] * 200000), 0, self)[ "position" ];
level.center = spawn("script_origin", center);
level.lift = [];
h=0;
k=0;
origin = level.center.origin;
for(i=0;i<204;i++)
{
if(i<=50)
level.lift[k] = spawn("script_model", origin+(-42,42,h));
else if(i<=101 && i>50)
level.lift[k] = spawn("script_model", origin+(42,42,h-1402.5*2));
else if(i<=152 && i>101)
level.lift[k] = spawn("script_model", origin+(-42,-42,h-2805*2));
else if(i<=204 && i>152)
level.lift[k] = spawn("script_model", origin+(42,-42,h-8415));
level.lift[i].angles = (0,0,90);
h+=55;
k++;
}
level.center moveto(level.center.origin+(0,0,15), 0.05);
wait 0.05;
level.elevator = [];
level.elevator[0] = spawn("script_model", origin+(0,42,-15));
level.elevator[1] = spawn("script_model", origin+(0,-42,-15));
level.elevator[2] = spawn("script_model", origin+(42,0,-15));
level.elevator[2].angles = (0,90,0);
level.elevator[3] = spawn("script_model", origin+(-42,0,-15));
level.elevator[3].angles = (0,90,0);
level.elevator[4] = spawn("script_model", origin+(0,14,-15));
level.elevator[5] = spawn("script_model", origin+(0,-14,-15));
base = level.center.origin+(-110,182,2750);
level.elevatorcontrol = [];
level.elevatorcontrol[0] = spawn("script_model", origin+(0,-42,13.75));
level.elevatorcontrol[0] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[0] linkto(level.center);
level.elevatorcontrol[1] = spawn("script_model", origin+(0,-20,28.75));
level.elevatorcontrol[1] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[1].angles = (0,180,0);
level.elevatorcontrol[1] linkto(level.center);
//self.state == "up"
level.elevatorcontrol[2] = spawn("script_model", base+(-40,0,2);
level.elevatorcontrol[2] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[3] = spawn("script_model", base+(-40,0,42));
level.elevatorcontrol[3] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[3].angles = (0,90,0);
level.elevatorcontrol[4] = spawn("script_model", level.center.origin+(48,65,30));
level.elevatorcontrol[4] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[4].angles = (0,180,0);
level.elevatorcontrol[5] = spawn("script_model", base+(0,224,2);
level.elevatorcontrol[5] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[5].angles = (0,135,0);
level.elevatorcontrol[6] = spawn("script_model", base+(205,224,2);
level.elevatorcontrol[6] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[6].angles = (0,-135,0);
level.elevatorcontrol[7] = spawn("script_model", base+(100,252,2);
level.elevatorcontrol[7] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[7].angles = (0,90,0);
level.elevatorcontrol[8] = spawn("script_model", base+(0,224,42));
level.elevatorcontrol[8] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[8].angles = (0,405,0);
level.elevatorcontrol[8].type = "right";
level.elevatorcontrol[9] = spawn("script_model", base+(205,224,42));
level.elevatorcontrol[9] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[9].angles = (0,-405,0);
level.elevatorcontrol[9].type = "left";
level.elevatorcontrol[10] = spawn("script_model", base+(100,252,42));
level.elevatorcontrol[10] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[10].angles = (0,0,0);
level.elevatorcontrol[10].type = "forward";
level.elevatorcontrol[11] = spawn("script_model", base+(240,0,42));
level.elevatorcontrol[11] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[11].angles = (0,-90,0);
level.elevatorcontrol[11].type = "dock";
level.elevatorcontrol[12] = spawn("script_model", base+(240,0,2);
level.elevatorcontrol[12] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[13] = spawn("script_model", base+(240,98,2);
level.elevatorcontrol[13] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[13].angles = (0,0,0);
level.elevatorcontrol[14] = spawn("script_model", base+(240,98,42));
level.elevatorcontrol[14] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[14].angles = (0,-90,0);
level.elevatorcontrol[14].type = "up";
level.elevatorcontrol[15] = spawn("script_model", base+(-40,98,2);
level.elevatorcontrol[15] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[15].angles = (0,0,0);
level.elevatorcontrol[16] = spawn("script_model", base+(-40,98,42));
level.elevatorcontrol[16] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[16].type = "down";
level.elevatorcontrol[16].angles = (0,90,0);
level.elevatorcontrol[17] = spawn("script_model", origin+(-85,84,13.75));
level.elevatorcontrol[17] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[17].angles = (0,-45,0);
level.elevatorcontrol[18] = spawn("script_model", origin+(-85,84,28.75));
level.elevatorcontrol[18] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[18].angles = (0,-135,0);
level.elevatorcontrol[18].type = "forcedock";
level.elevatorcontrol[19] = spawn("script_model", base+(180,-45,2);
level.elevatorcontrol[19] setModel( "t6_wpn_supply_drop_ally" );
level.elevatorcontrol[19].angles = (0,90,0);
level.elevatorcontrol[20] = spawn("script_model", base+(180,-45,42));
level.elevatorcontrol[20] setModel( "prop_suitcase_bomb" );
level.elevatorcontrol[20].angles = (0,180,0);
level.elevatorcontrol[20].type = "destroy";
level.center2 = spawn("script_origin", level.center.origin);
level.center2 linkto(level.center);
level.elevatorPlatform = [];
level.elevatorPlatform[0] = spawn("script_model", origin+(0,-42,-15));
level.elevatorPlatform[1] = spawn("script_model", origin+(0,-14,-15));
level.elevatorPlatform[2] = spawn("script_model", origin+(0,14,-15));
level.elevatorPlatform[3] = spawn("script_model", origin+(0,42,-15));
level.elevatorBase = [];
j = 0;
w = 0;
for(x=0;x<4;x++)
{
for(i=0;i<6;i++)
{
level.elevatorBase[j] = spawn("script_model", base+(i*40,w,0));
j++;
}
w+= 70;
}
level.BaseCenter = spawn("script_origin", base+(110,126,0));
level.BaseCenterOrigAng = level.BaseCenter.angles;
level.BaseCenterOrigOrigin = level.BaseCenter.origin;
for(i=5;i<=level.elevatorcontrol.size;i++)
level.elevatorcontrol[i] linkto(level.BaseCenter);
level.elevatorcontrol[17] unlink();
level.elevatorcontrol[18] unlink();
level.elevatorcontrol[2] linkto(level.BaseCenter);
level.elevatorcontrol[3] linkto(level.BaseCenter);
foreach(elevatorbase in level.elevatorBase)
{
elevatorbase setModel( "t6_wpn_supply_drop_ally" );
elevatorbase linkto(level.BaseCenter);
}
foreach(platform in level.elevatorPlatform)
{
platform linkto(level.center2);
platform setModel( "t6_wpn_supply_drop_ally" );
}
foreach(elevator in level.elevator)
{
elevator setmodel("t6_wpn_supply_drop_ally");
elevator linkto(level.center);
}
foreach(lift in level.lift)
{
lift setmodel("t6_wpn_supply_drop_ally");
}
//thread computers();
level.elevatorcontrol[8] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[8] thread Sky_Think1();
level.elevatorcontrol[9] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[9] thread Sky_Think1();
level.elevatorcontrol[10] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[10] thread Sky_Think1();
level.elevatorcontrol[11] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[11] thread Sky_Think1();
level.elevatorcontrol[14] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[14] thread Sky_Think1();
level.elevatorcontrol[16] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[16] thread Sky_Think1();
level.elevatorcontrol[18] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[18] thread Sky_Think1();
level.elevatorcontrol[20] thread Sky_Player_Think1(level.activesky1);
level.elevatorcontrol[20] thread Sky_Think1();
level.elevatorcontrol[1] thread Sky_Player_Think(level.activesky);
level.elevatorcontrol[1] thread Sky_Think();
level.elevatorcontrol[3] thread Sky_Player_Think(level.activesky);
level.elevatorcontrol[3] thread Sky_Think();
level.elevatorcontrol[4] thread Sky_Player_Think(level.activesky);
level.elevatorcontrol[4] thread Sky_Think();
}
Sky_Think()
{
level endon("game_ended");
level.elevatorDirection = "up";
localskybaseNumber = level.activesky;
level.SkybaseInUse1[localskybaseNumber] = false;
level.activesky++;
for(;
{
self waittill ("triggeruse" , player);
if(distance(level.elevatorcontrol[1].origin, player.origin) <60)
place = "elevator";
else
place = "";
if(place == "elevator")
player PlayerLinkTo(level.center);
if(level.elevatorDirection == "up")// && moving)
{
level.SkybaseInUse1[localskybaseNumber] = ture;
level.elevatorDirection = "down";
level.center moveto(level.center.origin+(0,0,2750), 5, 3, 2);
//wait 3.1;
}
else
{
level.center2 unlink();
foreach(platform in level.elevatorPlatform)
platform linkto(level.center2);
level.center2 moveto(level.center2.origin-(0,112,0), 3);
wait 3.1;
level.center2 linkto(level.center);
level.center moveto(level.center.origin-(0,0,2750), 5, 3, 2);
level.elevatorDirection = "up";
}
wait 5.5;
if(place == "elevator")
player unlink();
if(level.elevatorDirection == "down")
{
level.center2 unlink();
foreach(platform in level.elevatorPlatform)
platform linkto(level.center2);
level.center2 moveto(level.center2.origin+(0,112,0), 3);
wait 3.5;
}
level.SkybaseInUse1[localskybaseNumber] = false;
}
}
Sky_Player_Think(localskybaseNumber)
{
level endon("game_ended");
self endon("disconnect");
level.elevatorDirection = "up";
for(;
{
foreach(player in level.players)
{
if (!isDefined(player.doorStringCreated[localskybaseNumber]))
{
player.skybaserHintString[localskybaseNumber] = player drawText(player.currentskybaseHint, "objective", 1.5, 0, -50, (1, 1, 1), 0, (0, 0, 0), 0, 8, false);
player.skybaserHintString[localskybaseNumber].alpha = 0;
player.skybaserHintString[localskybaseNumber].alignX = "center";
player.skybaserHintString[localskybaseNumber].alignY = "bottom";
player.skybaserHintString[localskybaseNumber].horzAlign = "center";
player.skybaserHintString[localskybaseNumber].vertAlign = "bottom";
player.doorStringCreated[localskybaseNumber] = true;
player.nearskyy[localskybaseNumber] = false;
}
if (player.nearskyy[localskybaseNumber] && !level.SkybaseInUse1[localskybaseNumber])
{
player.skybaserHintString[localskybaseNumber] setText(player.currentskybaseHint);
player.skybaserHintString[localskybaseNumber].alpha = 1;
}
else
player.skybaserHintString[localskybaseNumber].alpha = 0;
if(Distance(self.origin, player.origin) <= 50)
{
if(level.elevatorDirection == "up")
player.currentskybaseHint = "ControlElevator Press ^3[{+activate}]^7 to go up";
if(level.elevatorDirection == "down")
player.currentskybaseHint = "ControlElevator Press ^3[{+activate}]^7 to go down";
if(player UseButtonPressed() && isAlive(player))
{
self notify("triggeruse" , player);
wait 0.20;
}
player.nearskyy[localskybaseNumber] = true;
}
else
player.nearskyy[localskybaseNumber] = false;
}
wait 0.1;
}
}
Sky_Think1()
{
level endon("game_ended");
localskybaseNumber1 = level.activesky1;
level.SkybaseInUse[localskybaseNumber1] = false;
level.activesky1++;
for(;
{
self waittill ("triggeruse" , player);
if(self.type == "left" || self.type == "right")
{
while(player Usebuttonpressed())
{
if(self.type == "left")
{
player.SkybaseInUse[localskybaseNumber] = true;
player.fakelink = spawn("script_origin", player.origin);
player playerlinkto(player.fakelink);
player.fakelink linkto(self);
level.BaseCenter rotateyaw(-2, 0.05);
wait 0.05;
player unlink();
player.fakelink delete();
player.SkybaseInUse[localskybaseNumber] = false;
}
else
{
player.SkybaseInUse[localskybaseNumber] = true;
player.fakelink = spawn("script_origin", player.origin);
player playerlinkto(player.fakelink);
player.fakelink linkto(self);
level.BaseCenter rotateyaw(2, 0.05);
wait 0.05;
player unlink();
player.fakelink delete();
player.SkybaseInUse[localskybaseNumber] = false;
}
}
}
if(self.type == "forward")
{
while(player Usebuttonpressed())
{
player.SkybaseInUse[localskybaseNumber] = true;
player.fakelink = spawn("script_origin", player.origin);
player playerlinkto(player.fakelink);
player.fakelink linkto(self);
vec = anglestoright(level.BaseCenter.angles);
center = BulletTrace( level.BaseCenter.origin, level.BaseCenter.origin+(vec[0] * -100, vec[1] * -100, vec[2] * -100), 0, self)[ "position" ];
level.BaseCenter moveto(center, 0.05);
wait 0.05;
player unlink();
player.fakelink delete();
player.SkybaseInUse[localskybaseNumber] = false;
}
}
if(self.type == "dock" || self.type == "forcedock")
{
while(player Usebuttonpressed())
{
if(self.type == "dock")
{
player.SkybaseInUse[localskybaseNumber] = true;
player.fakelink = spawn("script_origin", player.origin);
player playerlinkto(player.fakelink);
player.fakelink linkto(self);
speed = distance(level.BaseCenter.origin, level.BaseCenterOrigOrigin)/1000;
level.BaseCenter moveto(level.BaseCenterOrigOrigin, speed, speed*0.8, speed*0.2);
level.BaseCenter rotateto(level.BaseCenterOrigAng, 3, 2, 1);
while(level.BaseCenter.origin != level.BaseCenterOrigOrigin)
wait 0.05;
wait 0.05;
player unlink();
player.fakelink delete();
player.SkybaseInUse[localskybaseNumber] = false;
}
if(player isHost() && self.type == "forcedock")
{
player.SkybaseInUse[localskybaseNumber] = true;
speed = distance(level.BaseCenter.origin, level.BaseCenterOrigOrigin)/1000;
level.BaseCenter moveto(level.BaseCenterOrigOrigin, speed, speed*0.8, speed*0.2);
level.BaseCenter rotateto(level.BaseCenterOrigAng, 3, 2, 1);
player.SkybaseInUse[localskybaseNumber] = false;
wait 0.05;
}
else if(self.type == "forcedock" && !player ishost())
player iprintlnbold("^1You must be host");
wait 0.05;
}
}
if(self.type == "up" || self.type == "down")
{
while(player Usebuttonpressed())
{
if(self.type == "up")
{
player.SkybaseInUse[localskybaseNumber] = true;
player.fakelink = spawn("script_origin", player.origin);
player playerlinkto(player.fakelink);
player.fakelink linkto(self);
level.BaseCenter moveto(level.BaseCenter.origin+(0,0,10), 0.05);
wait 0.05;
player unlink();
player.fakelink delete();
player.SkybaseInUse[localskybaseNumber] = false;
}
else
{
player.SkybaseInUse[localskybaseNumber] = true;
player.fakelink = spawn("script_origin", player.origin);
player playerlinkto(player.fakelink);
player.fakelink linkto(self);
level.BaseCenter moveto(level.BaseCenter.origin-(0,0,10), 0.05);
wait 0.05;
player unlink();
player.fakelink delete();
player.SkybaseInUse[localskybaseNumber] = false;
}
}
}
if(self.type == "destroy")
{
while(player Usebuttonpressed())
{
self endon("endNuke");
player.SkybaseInUse[localskybaseNumber] = true;
level.elevatorcontrol[2] setmodel("t6_wpn_supply_drop_axis");
level.elevatorcontrol[19] setmodel("t6_wpn_supply_drop_axis");
player clearLowerMessage("destroy");
plane = spawn("script_model", level.center.origin+(30000,0,5000));
plane setmodel("veh_t6_drone_overwatch_light");
plane.angles = (0,-180,0);
plane moveto(level.center.origin, 5); //-(0,0,200)
wait 5;
level._effect["emp_flash"] = loadfx("weapon/emp/fx_emp_explosion");
playfx(level._effect["emp_flash"], plane.origin);
self playsound("wpn_rocket_explode");
player playlocalsound( "nuke_explosion" );
player playlocalsound( "nuke_wave" );
plane hide();
player.SkybaseInUse[localskybaseNumber] = false;
for(i=0;i<=level.lift.size;i++)
{
level.lift[i] unlink();
level.lift[i] PhysicsLaunch( plane.origin, (i*-10,0,randomint(1000)) );
}
wait 4;
foreach(elevator in level.elevator)
{
elevator unlink();
elevator PhysicsLaunch( plane.origin, (i*-10,0,1000) );
}
foreach(platform in level.elevatorPlatform)
{
platform unlink();
platform PhysicsLaunch( plane.origin, (1000,1000,1000) );
}
level.elevatorcontrol[0] unlink();
level.elevatorcontrol[1] unlink();
level.elevatorcontrol[4] unlink();
level.elevatorcontrol[17] unlink();
level.elevatorcontrol[18] unlink();
level.elevatorcontrol[0] PhysicsLaunch( plane.origin, (1000,1000,1000) );
level.elevatorcontrol[1] PhysicsLaunch( plane.origin, (1000,1000,1000) );
level.elevatorcontrol[4] PhysicsLaunch( plane.origin, (1000,1000,1000) );
level.elevatorcontrol[17] PhysicsLaunch( plane.origin, (1000,1000,1000) );
level.elevatorcontrol[18] PhysicsLaunch( plane.origin, (1000,1000,1000) );
level notify("exploded");
plane delete();
self notify("endNuke");
}
}
}
}
Sky_Player_Think1(localskybaseNumber1)
{
level endon("game_ended");
self endon("disconnect");
for(;
{
foreach(player in level.players)
{
if (!isDefined(player.doorStringCreated1[localskybaseNumber1]))
{
player.skybaserHintString1[localskybaseNumber1] = player drawText(player.currentskybaseHint1, "objective", 1.5, 0, -50, (1, 1, 1), 0, (0, 0, 0), 0, 8, false);
player.skybaserHintString1[localskybaseNumber1].alpha = 0;
player.skybaserHintString1[localskybaseNumber1].alignX = "center";
player.skybaserHintString1[localskybaseNumber1].alignY = "bottom";
player.skybaserHintString1[localskybaseNumber1].horzAlign = "center";
player.skybaserHintString1[localskybaseNumber1].vertAlign = "bottom";
player.doorStringCreated1[localskybaseNumber1] = true;
player.nearsky[localskybaseNumber1] = false;
}
if (player.nearsky[localskybaseNumber1] && !level.SkybaseInUse[localskybaseNumber1])
{
player.skybaserHintString1[localskybaseNumber1] setText(player.currentskybaseHint1);
player.skybaserHintString1[localskybaseNumber1].alpha = 1;
}
else
player.skybaserHintString1[localskybaseNumber1].alpha = 0;
if(Distance(self.origin, player.origin) <= 50)
{
if(self.type == "left" || self.type == "right")
{
if(self.type == "right")
{
player.currentskybaseHint1 = "MoveLeft Hold ^3[{+activate}]^7 to go left";
player.nearsky[localskybaseNumber1] = true;
}
else
{
player.currentskybaseHint1 = "MoveRight Hold ^3[{+activate}]^7 to go right";
player.nearsky[localskybaseNumber1] = true;
}
}
if(self.type == "forward")
{
player.currentskybaseHint1 = "MoveForward Hold ^3[{+activate}]^7 to go forward";
player.nearsky[localskybaseNumber1] = true;
}
if(self.type == "dock" || self.type == "forcedock")
{
if(self.type == "dock")
{
player.currentskybaseHint1 = "Redock Press ^3[{+activate}]^7 to redock";
player.nearsky[localskybaseNumber1] = true;
}
else
{
player.currentskybaseHint1 = "forcedock Press ^3[{+activate}]^7 to force redock [Host Only]";
player.nearsky[localskybaseNumber1] = true;
}
}
if(self.type == "up" || self.type == "down")
{
if(self.type == "up")
{
player.currentskybaseHint1 = "Moveup Hold ^3[{+activate}]^7 to go up";
player.nearsky[localskybaseNumber1] = true;
}
else
{
player.currentskybaseHint1 = "Movedown Hold ^3[{+activate}]^7 to go down";
player.nearsky[localskybaseNumber1] = true;
}
}
if(self.type == "destroy")
{
self endon("endNuke");
player.currentskybaseHint1 = "destroy Press ^3[{+activate}]^7 to remove access";
player.nearsky[localskybaseNumber1] = true;
}
if(player UseButtonPressed() && isAlive(player))
{
self notify("triggeruse" , player);
wait 0.05;
}
player.nearsky[localskybaseNumber1] = true;
}
else
player.nearsky[localskybaseNumber1] = false;
}
wait 0.1;
}
}
toggledelete()
{
foreach(elevatorbase in level.elevatorBase)
{
elevatorbase delete();
}
foreach(platform in level.elevatorPlatform)
{
platform delete();
}
foreach(elevator in level.elevator)
{
elevator delete();
}
foreach(lift in level.lift)
{
lift delete();
}
foreach(elevatorcontrol in level.elevatorcontrol)
{
elevatorcontrol delete();
}
foreach(player in level.players)
{
for (i = 0; i < level.activesky; i++)
{
player.skybaserHintString[i] destroyElem();
player.skybaserHintString[i] destroy();
}
for (i = 0; i < level.activesky1; i++)
{
player.skybaserHintString1[i] destroyElem();
player.skybaserHintString1[i] destroy();
}
}
}
drawText(text, font, fontScale, x, y, color, alpha, glowColor, glowAlpha, sort, allclients)
{
if (!isDefined(allclients))
allclients = false;
if (!allclients)
hud = self createFontString(font, fontScale);
else
hud = level createServerFontString(font, fontScale);
hud setText(text);
hud.x = x;
hud.y = y;
hud.color = color;
hud.alpha = alpha;
hud.glowColor = glowColor;
hud.glowAlpha = glowAlpha;
hud.sort = sort;
hud.alpha = alpha;
return hud;
}
Copyright © 2024, NextGenUpdate.
All Rights Reserved.