level.Entities = [];
level.activeZiplines = 0;
level.activeObjectiveIndex = 0;
level.supplyDropModel = "t6_wpn_supply_drop_ally";
level.supplyDropModelAxis = "t6_wpn_supply_drop_axis";
level.supplyDropModelTrap = "t6_wpn_supply_drop_trap";
level.teleportFlagStartModel = "mp_flag_green";
level.teleportFlagEndModel = "mp_flag_red";
level.teleportFlagBothModel = "mp_flag_neutral";
level.amountOfEntities = 0;
level.deletetext = false;
PrecacheModel("t6_wpn_supply_drop_ally");
PrecacheModel("t6_wpn_supply_drop_axis");
PrecacheModel("t6_wpn_supply_drop_trap");
PrecacheModel("mp_flag_green");
PrecacheModel("mp_flag_red");
PrecacheModel("mp_flag_neutral");
(to make sure I'm not missing any levels)
CreateFlag(enter, exit, hiddenFlags, bothWays)
{
if (bothWays)
{
if (!hiddenFlags)
{
entryFlag1 = spawnEntity("script_model", level.teleportFlagBothModel, enter, (0, 0, 0));
entryFlag2 = spawnEntity("script_model", level.teleportFlagBothModel, exit, (0, 0, 0));
spawnObjective(enter, "waypoint_recon_artillery_strike");
spawnObjective(exit, "waypoint_recon_artillery_strike");
entryFlag1.flagIsHidden = false;
}
else
{
entryFlag1 = spawn("script_model", enter);
entryFlag2 = spawn("script_model", exit);
entryFlag1.flagIsHidden = true;
}
level thread Teleport_Flag_Think(entryFlag1, entryFlag2, true);
}
else
{
if (!hiddenFlags)
{
entryFlag = spawnEntity("script_model", level.teleportFlagStartModel, enter, (0, 0, 0));
exitFlag = spawnEntity("script_model", level.teleportFlagEndModel, exit, (0, 0, 0));
spawnObjective(enter, "waypoint_recon_artillery_strike");
entryFlag.flagIsHidden = false;
}
else
{
entryFlag = spawn("script_model", enter);
exitFlag = spawn("script_model", exit);
entryFlag.flagIsHidden = true;
}
level thread Teleport_Flag_Think(entryFlag, exitFlag, false);
}
}
Teleport_Flag_Think(Flag1, Flag2, bothWays)
{
level endon("game_ended");
for(;
{
foreach(player in level.players)
{
if (bothWays)
{
if(Distance(player.origin, Flag1.origin) < 25)
{
player SetOrigin(Flag2.origin + VectorScale(AnglesToForward((0, player.angles[1], 0)), 30));
if (Flag1.flagIsHidden)
player iPrintln("^7You Found A ^5Hidden Teleport Flag^7!");
}
if(Distance(player.origin, Flag2.origin) < 25)
{
player SetOrigin(Flag1.origin + VectorScale(AnglesToForward((0, player.angles[1], 0)), 30));
if (Flag1.flagIsHidden)
player iPrintln("^7You Found A ^5Hidden Teleport Flag^7!");
}
}
else
{
if(Distance(player.origin, Flag1.origin) < 25)
{
player SetOrigin(Flag2.origin + VectorScale(AnglesToForward((0, player.angles[1], 0)), 30));
if (Flag1.flagIsHidden)
player iPrintln("^7You Found A ^5Hidden Teleport Flag^7!");
}
}
}
wait 0.001;
}
}
CreateZipline(start, end, time, bothWays)
{
TempAngles = VectorToAngles(end - start);
Angles = (0, TempAngles[1], 0);
if (bothWays)
{
ziplineStart = spawnEntity("script_model", level.supplyDropModel, start, Angles);
ziplineEnd = spawnEntity("script_model", level.supplyDropModel, end, Angles);
spawnObjective(start, "compass_supply_drop_green");
spawnObjective(end, "compass_supply_drop_green");
}
else
{
ziplineStart = spawnEntity("script_model", level.supplyDropModelAxis, start, Angles);
ziplineEnd = spawnEntity("script_model", "", end, Angles);
spawnObjective(start, "compass_supply_drop_red");
}
level thread Zipline_Think(ziplineStart, ziplineEnd, time, bothWays);
}
Zipline_Hint_Think(localZiplineNumber)
{
level endon("game_ended");
self endon("disconnect");
self.ZiplineHintThinkActive[localZiplineNumber] = true;
for(;
{
if (!isDefined(self.ziplineStringCreated[localZiplineNumber]))
{
self.ziplineHintString[localZiplineNumber] = self drawText("Press [{+usereload}] To Use Zipline", "objective", 1.5, 0, -50, (1, 1, 1), 1, (0, 0, 0), 0, 8, false);
self.ziplineHintString[localZiplineNumber].alignX = "center";
self.ziplineHintString[localZiplineNumber].alignY = "bottom";
self.ziplineHintString[localZiplineNumber].horzAlign = "center";
self.ziplineHintString[localZiplineNumber].vertAlign = "bottom";
self.usingZipline = false;
self.ziplineStringCreated[localZiplineNumber] = true;
self.ziplineHintString[localZiplineNumber].alpha = 0;
}
if (self.nearZipline[localZiplineNumber] && !self.usingZipline && isAlive(self))
self.ziplineHintString[localZiplineNumber].alpha = 1;
if (!self.nearZipline[localZiplineNumber] && isAlive(self))
self.ziplineHintString[localZiplineNumber].alpha = 0;
wait 0.01;
}
}
Zipline_Think(ziplineStart, ziplineEnd, time, bothWays)
{
level endon("game_ended");
localZiplineNumber = level.activeZiplines;
level.activeZiplines++;
for(;
{
foreach(player in level.players)
{
if (!isDefined(player.ZiplineHintThinkActive[localZiplineNumber]))
player thread Zipline_Hint_Think(localZiplineNumber);
if (!player.usingZipline && isAlive(player))
{
if (bothWays)
{
if(Distance(player.origin, ziplineStart.origin) < 60)
{
player.nearZipline[localZiplineNumber] = true;
if (player UseButtonPressed())
player thread Zipline_Player_Think(player, localZiplineNumber, ziplineStart.origin, ziplineEnd.origin, time);
}
else if(Distance(player.origin, ziplineEnd.origin) < 60)
{
player.nearZipline[localZiplineNumber] = true;
if (player UseButtonPressed())
player thread Zipline_Player_Think(player, localZiplineNumber, ziplineEnd.origin, ziplineStart.origin, time);
}
else
player.nearZipline[localZiplineNumber] = false;
}
if (!bothWays)
{
if(Distance(player.origin, ziplineStart.origin) < 60)
{
player.nearZipline[localZiplineNumber] = true;
if (player UseButtonPressed())
player thread Zipline_Player_Think(player, localZiplineNumber, ziplineStart.origin, ziplineEnd.origin, time);
}
else
player.nearZipline[localZiplineNumber] = false;
}
}
}
wait 0.01;
}
}
Zipline_Player_Think(player, ziplineNumber, start, end, time)
{
level endon("game_ended");
self endon("disconnect");
player.usingZipline = true;
ZiplineMover = spawn("script_model", start);
player PlayerLinkTo(ZiplineMover);
player.ziplineHintString[ziplineNumber].alpha = 0;
ZiplineMover MoveTo(end, time, 0.5, 0.5);
wait time;
player DetachAll();
ZiplineMover delete();
player.usingZipline = false;
}
Aftermath()
{
level thread removeSkyBarrier();
CreateFlag((-613.835, -810.275, -188.909), (-206.147, -2246.28, -115.125), true, false);
CreateGrid((-1268.53, 2213.93, 210.48
, (-1044.81, 2416.4, 203.365), false); //floor
CreateZipline((-380.935, 221.69, 36.4805), (-1254.03, 2220.72, 220.935), 2, true);
}
Copyright © 2026, NextGenUpdate.
All Rights Reserved.