hacking but working

This commit is contained in:
ineedbots 2021-05-08 20:21:17 -06:00
parent 6b3e3bea70
commit c7003a93c1
9 changed files with 2772 additions and 153 deletions

View File

@ -1,7 +1,7 @@
/*
_bot
Author: INeedGames
Date: 09/26/2020
Date: 05/07/2021
The entry point and manager of the bots.
*/
@ -123,39 +123,11 @@ init()
level.bots = [];
level.bots_fullautoguns = [];
level.bots_fullautoguns["aa12"] = true;
level.bots_fullautoguns["ak47"] = true;
level.bots_fullautoguns["aug"] = true;
level.bots_fullautoguns["fn2000"] = true;
level.bots_fullautoguns["glock"] = true;
level.bots_fullautoguns["kriss"] = true;
level.bots_fullautoguns["m4"] = true;
level.bots_fullautoguns["m240"] = true;
level.bots_fullautoguns["masada"] = true;
level.bots_fullautoguns["mg4"] = true;
level.bots_fullautoguns["mp5k"] = true;
level.bots_fullautoguns["p90"] = true;
level.bots_fullautoguns["pp2000"] = true;
level.bots_fullautoguns["rpd"] = true;
level.bots_fullautoguns["sa80"] = true;
level.bots_fullautoguns["scar"] = true;
level.bots_fullautoguns["tavor"] = true;
level.bots_fullautoguns["tmp"] = true;
level.bots_fullautoguns["ump45"] = true;
level.bots_fullautoguns["uzi"] = true;
level.bots_fullautoguns["ac130"] = true;
level.bots_fullautoguns["heli"] = true;
level.bots_fullautoguns["ak47classic"] = true;
level.bots_fullautoguns["ak74u"] = true;
level.bots_fullautoguns["peacekeeper"] = true;
level thread fixGamemodes();
level thread onPlayerConnect();
level thread addNotifyOnAirdrops();
level thread watchScrabler();
level thread handleBots();
@ -359,50 +331,6 @@ onPlayerConnect()
}
}
/*
Watches players with scrambler perk
*/
watchScrabler()
{
for (;;)
{
wait 1;
for ( i = level.players.size - 1; i >= 0; i-- )
{
player = level.players[i];
player.bot_isScrambled = false;
}
for ( i = level.players.size - 1; i >= 0; i-- )
{
player = level.players[i];
if (!player _HasPerk("specialty_localjammer") || !isReallyAlive(player))
continue;
if (player isEMPed())
continue;
for ( h = level.players.size - 1; h >= 0; h-- )
{
player2 = level.players[h];
if (player2 == player)
continue;
if(level.teamBased && player2.team == player.team)
continue;
if (DistanceSquared(player2.origin, player.origin) > 256*256)
continue;
player2.bot_isScrambled = true;
}
}
}
}
/*
When a bot disconnects.
*/
@ -463,14 +391,14 @@ added()
*/
add_bot()
{
bot = addtestclient();
setDvar("addBots", 1);
if (isdefined(bot))
/*if (isdefined(bot))
{
bot.pers["isBot"] = true;
bot.pers["isBotWarfare"] = true;
bot thread added();
}
}*/
}
/*
@ -793,7 +721,7 @@ addBots()
{
tempBot = random(getBotArray());
if (isDefined(tempBot))
kick( tempBot getEntityNumber(), "EXE_PLAYERKICKED" );
setDvar("removeBot", tempBot getEntityNumber());
}
}
}

View File

@ -883,6 +883,9 @@ load_waypoints()
{
switch(mapname)
{
case "mp_dome":
level.waypoints = maps\mp\bots\waypoints\dome::Dome();
break;
default:
//maps\mp\bots\waypoints\_custom_map::main(mapname);
break;
@ -946,6 +949,8 @@ getMapName(mapname)
{
switch(mapname)
{
case "mp_dome":
return "Dome";
default:
return mapname;
}
@ -958,6 +963,11 @@ getGoodMapAmount()
{
switch(getdvar("mapname"))
{
case "mp_dome":
if (level.teambased)
return 8;
else
return 5;
default:
return 2;
}

851
maps/mp/bots/_hud_util.gsc Normal file
View File

@ -0,0 +1,851 @@
// IW5 PC GSC
// Decompiled by https://github.com/xensik/gsc-tool
setParent( var_0 )
{
if ( isdefined( self.parent ) && self.parent == var_0 )
return;
if ( isdefined( self.parent ) )
self.parent removeChild( self );
self.parent = var_0;
self.parent addChild( self );
if ( isdefined( self.point ) )
setPoint( self.point, self.relativePoint, self.xOffset, self.yOffset );
else
setPoint( "TOPLEFT" );
}
getParent()
{
return self.parent;
}
addChild( var_0 )
{
var_0.index = self.children.size;
self.children[self.children.size] = var_0;
}
removeChild( var_0 )
{
var_0.parent = undefined;
if ( self.children[self.children.size - 1] != var_0 )
{
self.children[var_0.index] = self.children[self.children.size - 1];
self.children[var_0.index].index = var_0.index;
}
self.children[self.children.size - 1] = undefined;
var_0.index = undefined;
}
setPoint( var_0, var_1, var_2, var_3, var_4 )
{
if ( !isdefined( var_4 ) )
var_4 = 0;
var_5 = getParent();
if ( var_4 )
self moveovertime( var_4 );
if ( !isdefined( var_2 ) )
var_2 = 0;
self.xOffset = var_2;
if ( !isdefined( var_3 ) )
var_3 = 0;
self.yOffset = var_3;
self.point = var_0;
self.alignx = "center";
self.aligny = "middle";
if ( issubstr( var_0, "TOP" ) )
self.aligny = "top";
if ( issubstr( var_0, "BOTTOM" ) )
self.aligny = "bottom";
if ( issubstr( var_0, "LEFT" ) )
self.alignx = "left";
if ( issubstr( var_0, "RIGHT" ) )
self.alignx = "right";
if ( !isdefined( var_1 ) )
var_1 = var_0;
self.relativePoint = var_1;
var_6 = "center_adjustable";
var_7 = "middle";
if ( issubstr( var_1, "TOP" ) )
var_7 = "top_adjustable";
if ( issubstr( var_1, "BOTTOM" ) )
var_7 = "bottom_adjustable";
if ( issubstr( var_1, "LEFT" ) )
var_6 = "left_adjustable";
if ( issubstr( var_1, "RIGHT" ) )
var_6 = "right_adjustable";
if ( var_5 == level.uiParent )
{
self.horzalign = var_6;
self.vertalign = var_7;
}
else
{
self.horzalign = var_5.horzalign;
self.vertalign = var_5.vertalign;
}
if ( maps\mp\_utility::strip_suffix( var_6, "_adjustable" ) == var_5.alignx )
{
var_8 = 0;
var_9 = 0;
}
else if ( var_6 == "center" || var_5.alignx == "center" )
{
var_8 = int( var_5.width / 2 );
if ( var_6 == "left_adjustable" || var_5.alignx == "right" )
var_9 = -1;
else
var_9 = 1;
}
else
{
var_8 = var_5.width;
if ( var_6 == "left_adjustable" )
var_9 = -1;
else
var_9 = 1;
}
self.x = var_5.x + var_8 * var_9;
if ( maps\mp\_utility::strip_suffix( var_7, "_adjustable" ) == var_5.aligny )
{
var_10 = 0;
var_11 = 0;
}
else if ( var_7 == "middle" || var_5.aligny == "middle" )
{
var_10 = int( var_5.height / 2 );
if ( var_7 == "top_adjustable" || var_5.aligny == "bottom" )
var_11 = -1;
else
var_11 = 1;
}
else
{
var_10 = var_5.height;
if ( var_7 == "top_adjustable" )
var_11 = -1;
else
var_11 = 1;
}
self.y = var_5.y + var_10 * var_11;
self.x = self.x + self.xOffset;
self.y = self.y + self.yOffset;
switch ( self.elemType )
{
case "bar":
setPointBar( var_0, var_1, var_2, var_3 );
break;
}
updateChildren();
}
setPointBar( var_0, var_1, var_2, var_3 )
{
self.bar.horzalign = self.horzalign;
self.bar.vertalign = self.vertalign;
self.bar.alignx = "left";
self.bar.aligny = self.aligny;
self.bar.y = self.y;
if ( self.alignx == "left" )
self.bar.x = self.x;
else if ( self.alignx == "right" )
self.bar.x = self.x - self.width;
else
self.bar.x = self.x - int( self.width / 2 );
if ( self.aligny == "top" )
self.bar.y = self.y;
else if ( self.aligny == "bottom" )
self.bar.y = self.y;
updateBar( self.bar.frac );
}
updateBar( var_0, var_1 )
{
if ( self.elemType == "bar" )
updateBarScale( var_0, var_1 );
}
updateBarScale( var_0, var_1 )
{
var_2 = int( self.width * var_0 + 0.5 );
if ( !var_2 )
var_2 = 1;
self.bar.frac = var_0;
self.bar setshader( self.bar.shader, var_2, self.height );
if ( isdefined( var_1 ) && var_2 < self.width )
{
if ( var_1 > 0 )
self.bar scaleovertime( 1 - var_0 / var_1, self.width, self.height );
else if ( var_1 < 0 )
self.bar scaleovertime( var_0 / -1 * var_1, 1, self.height );
}
self.bar.rateOfChange = var_1;
self.bar.lastUpdateTime = gettime();
}
createFontString( var_0, var_1 )
{
var_2 = newclienthudelem( self );
var_2.elemType = "font";
var_2.font = var_0;
var_2.fontScale = var_1;
var_2.baseFontScale = var_1;
var_2.x = 0;
var_2.y = 0;
var_2.width = 0;
var_2.height = int( level.fontHeight * var_1 );
var_2.xOffset = 0;
var_2.yOffset = 0;
var_2.children = [];
var_2 setParent( level.uiParent );
var_2.hidden = 0;
return var_2;
}
createServerFontString( var_0, var_1, var_2 )
{
if ( isdefined( var_2 ) )
var_3 = newteamhudelem( var_2 );
else
var_3 = newhudelem();
var_3.elemType = "font";
var_3.font = var_0;
var_3.fontScale = var_1;
var_3.baseFontScale = var_1;
var_3.x = 0;
var_3.y = 0;
var_3.width = 0;
var_3.height = int( level.fontHeight * var_1 );
var_3.xOffset = 0;
var_3.yOffset = 0;
var_3.children = [];
var_3 setParent( level.uiParent );
var_3.hidden = 0;
return var_3;
}
createServerTimer( var_0, var_1, var_2 )
{
if ( isdefined( var_2 ) )
var_3 = newteamhudelem( var_2 );
else
var_3 = newhudelem();
var_3.elemType = "timer";
var_3.font = var_0;
var_3.fontScale = var_1;
var_3.baseFontScale = var_1;
var_3.x = 0;
var_3.y = 0;
var_3.width = 0;
var_3.height = int( level.fontHeight * var_1 );
var_3.xOffset = 0;
var_3.yOffset = 0;
var_3.children = [];
var_3 setParent( level.uiParent );
var_3.hidden = 0;
return var_3;
}
createTimer( var_0, var_1 )
{
var_2 = newclienthudelem( self );
var_2.elemType = "timer";
var_2.font = var_0;
var_2.fontScale = var_1;
var_2.baseFontScale = var_1;
var_2.x = 0;
var_2.y = 0;
var_2.width = 0;
var_2.height = int( level.fontHeight * var_1 );
var_2.xOffset = 0;
var_2.yOffset = 0;
var_2.children = [];
var_2 setParent( level.uiParent );
var_2.hidden = 0;
return var_2;
}
createIcon( var_0, var_1, var_2 )
{
var_3 = newclienthudelem( self );
var_3.elemType = "icon";
var_3.x = 0;
var_3.y = 0;
var_3.width = var_1;
var_3.height = var_2;
var_3.baseWidth = var_3.width;
var_3.baseHeight = var_3.height;
var_3.xOffset = 0;
var_3.yOffset = 0;
var_3.children = [];
var_3 setParent( level.uiParent );
var_3.hidden = 0;
if ( isdefined( var_0 ) )
{
var_3 setshader( var_0, var_1, var_2 );
var_3.shader = var_0;
}
return var_3;
}
createServerIcon( var_0, var_1, var_2, var_3 )
{
if ( isdefined( var_3 ) )
var_4 = newteamhudelem( var_3 );
else
var_4 = newhudelem();
var_4.elemType = "icon";
var_4.x = 0;
var_4.y = 0;
var_4.width = var_1;
var_4.height = var_2;
var_4.baseWidth = var_4.width;
var_4.baseHeight = var_4.height;
var_4.xOffset = 0;
var_4.yOffset = 0;
var_4.children = [];
var_4 setParent( level.uiParent );
var_4.hidden = 0;
if ( isdefined( var_0 ) )
{
var_4 setshader( var_0, var_1, var_2 );
var_4.shader = var_0;
}
return var_4;
}
createServerBar( var_0, var_1, var_2, var_3, var_4, var_5 )
{
if ( isdefined( var_4 ) )
var_6 = newteamhudelem( var_4 );
else
var_6 = newhudelem();
var_6.x = 0;
var_6.y = 0;
var_6.frac = 0;
var_6.color = var_0;
var_6.sort = -2;
var_6.shader = "progress_bar_fill";
var_6 setshader( "progress_bar_fill", var_1, var_2 );
var_6.hidden = 0;
if ( isdefined( var_3 ) )
var_6.flashFrac = var_3;
if ( isdefined( var_4 ) )
var_7 = newteamhudelem( var_4 );
else
var_7 = newhudelem();
var_7.elemType = "bar";
var_7.x = 0;
var_7.y = 0;
var_7.width = var_1;
var_7.height = var_2;
var_7.xOffset = 0;
var_7.yOffset = 0;
var_7.bar = var_6;
var_7.children = [];
var_7.sort = -3;
var_7.color = ( 0, 0, 0 );
var_7.alpha = 0.5;
var_7 setParent( level.uiParent );
var_7 setshader( "progress_bar_bg", var_1, var_2 );
var_7.hidden = 0;
return var_7;
}
createBar( var_0, var_1, var_2, var_3 )
{
var_4 = newclienthudelem( self );
var_4.x = 0;
var_4.y = 0;
var_4.frac = 0;
var_4.color = var_0;
var_4.sort = -2;
var_4.shader = "progress_bar_fill";
var_4 setshader( "progress_bar_fill", var_1, var_2 );
var_4.hidden = 0;
if ( isdefined( var_3 ) )
var_4.flashFrac = var_3;
var_5 = newclienthudelem( self );
var_5.elemType = "bar";
var_5.width = var_1;
var_5.height = var_2;
var_5.xOffset = 0;
var_5.yOffset = 0;
var_5.bar = var_4;
var_5.children = [];
var_5.sort = -3;
var_5.color = ( 0, 0, 0 );
var_5.alpha = 0.5;
var_5 setParent( level.uiParent );
var_5 setshader( "progress_bar_bg", var_1 + 4, var_2 + 4 );
var_5.hidden = 0;
return var_5;
}
getCurrentFraction()
{
var_0 = self.bar.frac;
if ( isdefined( self.bar.rateOfChange ) )
{
var_0 = var_0 + gettime() - self.bar.lastUpdateTime * self.bar.rateOfChange;
if ( var_0 > 1 )
var_0 = 1;
if ( var_0 < 0 )
var_0 = 0;
}
return var_0;
}
createPrimaryProgressBar( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( self issplitscreenplayer() )
var_1 = var_1 + 20;
var_2 = createBar( ( 1, 1, 1 ), level.primaryProgressBarWidth, level.primaryProgressBarHeight );
var_2 setPoint( "CENTER", undefined, level.primaryProgressBarX + var_0, level.primaryProgressBarY + var_1 );
return var_2;
}
createPrimaryProgressBarText( var_0, var_1 )
{
if ( !isdefined( var_0 ) )
var_0 = 0;
if ( !isdefined( var_1 ) )
var_1 = 0;
if ( self issplitscreenplayer() )
var_1 = var_1 + 20;
var_2 = createFontString( "hudbig", level.primaryProgressBarFontSize );
var_2 setPoint( "CENTER", undefined, level.primaryProgressBarTextX + var_0, level.primaryProgressBarTextY + var_1 );
var_2.sort = -1;
return var_2;
}
createTeamProgressBar( var_0 )
{
var_1 = createServerBar( ( 1, 0, 0 ), level.teamProgressBarWidth, level.teamProgressBarHeight, undefined, var_0 );
var_1 setPoint( "TOP", undefined, 0, level.teamProgressBarY );
return var_1;
}
createTeamProgressBarText( var_0 )
{
var_1 = createServerFontString( "default", level.teamProgressBarFontSize, var_0 );
var_1 setPoint( "TOP", undefined, 0, level.teamProgressBarTextY );
return var_1;
}
setFlashFrac( var_0 )
{
self.bar.flashFrac = var_0;
}
hideElem()
{
if ( self.hidden )
return;
self.hidden = 1;
if ( self.alpha != 0 )
self.alpha = 0;
if ( self.elemType == "bar" || self.elemType == "bar_shader" )
{
self.bar.hidden = 1;
if ( self.bar.alpha != 0 )
self.bar.alpha = 0;
}
}
showElem()
{
if ( !self.hidden )
return;
self.hidden = 0;
if ( self.elemType == "bar" || self.elemType == "bar_shader" )
{
if ( self.alpha != 0.5 )
self.alpha = 0.5;
self.bar.hidden = 0;
if ( self.bar.alpha != 1 )
self.bar.alpha = 1;
}
else if ( self.alpha != 1 )
self.alpha = 1;
}
flashThread()
{
self endon( "death" );
if ( !self.hidden )
self.alpha = 1;
for (;;)
{
if ( self.frac >= self.flashFrac )
{
if ( !self.hidden )
{
self fadeovertime( 0.3 );
self.alpha = 0.2;
wait 0.35;
self fadeovertime( 0.3 );
self.alpha = 1;
}
wait 0.7;
continue;
}
if ( !self.hidden && self.alpha != 1 )
self.alpha = 1;
wait 0.05;
}
}
destroyElem()
{
var_0 = [];
for ( var_1 = 0; var_1 < self.children.size; var_1++ )
{
if ( isdefined( self.children[var_1] ) )
var_0[var_0.size] = self.children[var_1];
}
for ( var_1 = 0; var_1 < var_0.size; var_1++ )
var_0[var_1] setParent( getParent() );
if ( self.elemType == "bar" || self.elemType == "bar_shader" )
self.bar destroy();
self destroy();
}
setIconShader( var_0 )
{
self setshader( var_0, self.width, self.height );
self.shader = var_0;
}
getIconShader( var_0 )
{
return self.shader;
}
setIconSize( var_0, var_1 )
{
self setshader( self.shader, var_0, var_1 );
}
setWidth( var_0 )
{
self.width = var_0;
}
setHeight( var_0 )
{
self.height = var_0;
}
setSize( var_0, var_1 )
{
self.width = var_0;
self.height = var_1;
}
updateChildren()
{
for ( var_0 = 0; var_0 < self.children.size; var_0++ )
{
var_1 = self.children[var_0];
var_1 setPoint( var_1.point, var_1.relativePoint, var_1.xOffset, var_1.yOffset );
}
}
transitionReset()
{
self.x = self.xOffset;
self.y = self.yOffset;
if ( self.elemType == "font" )
{
self.fontScale = self.baseFontScale;
self.label = &"";
}
else if ( self.elemType == "icon" )
self setshader( self.shader, self.width, self.height );
self.alpha = 0;
}
transitionZoomIn( var_0 )
{
switch ( self.elemType )
{
case "font":
case "timer":
self.fontScale = 6.3;
self changefontscaleovertime( var_0 );
self.fontScale = self.baseFontScale;
break;
case "icon":
self setshader( self.shader, self.width * 6, self.height * 6 );
self scaleovertime( var_0, self.width, self.height );
break;
}
}
transitionPulseFXIn( var_0, var_1 )
{
var_2 = int( var_0 ) * 1000;
var_3 = int( var_1 ) * 1000;
switch ( self.elemType )
{
case "font":
case "timer":
self setpulsefx( var_2 + 250, var_3 + var_2, var_2 + 250 );
break;
default:
break;
}
}
transitionSlideIn( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = "left";
switch ( var_1 )
{
case "left":
self.x = self.x + 1000;
break;
case "right":
self.x = self.x - 1000;
break;
case "up":
self.y = self.y - 1000;
break;
case "down":
self.y = self.y + 1000;
break;
}
self moveovertime( var_0 );
self.x = self.xOffset;
self.y = self.yOffset;
}
transitionSlideOut( var_0, var_1 )
{
if ( !isdefined( var_1 ) )
var_1 = "left";
var_2 = self.xOffset;
var_3 = self.yOffset;
switch ( var_1 )
{
case "left":
var_2 = var_2 + 1000;
break;
case "right":
var_2 = var_2 - 1000;
break;
case "up":
var_3 = var_3 - 1000;
break;
case "down":
var_3 = var_3 + 1000;
break;
}
self.alpha = 1;
self moveovertime( var_0 );
self.x = var_2;
self.y = var_3;
}
transitionZoomOut( var_0 )
{
switch ( self.elemType )
{
case "font":
case "timer":
self changefontscaleovertime( var_0 );
self.fontScale = 6.3;
case "icon":
self scaleovertime( var_0, self.width * 6, self.height * 6 );
break;
}
}
transitionFadeIn( var_0 )
{
self fadeovertime( var_0 );
if ( isdefined( self.maxAlpha ) )
self.alpha = self.maxAlpha;
else
self.alpha = 1;
}
transitionFadeOut( var_0 )
{
self fadeovertime( 0.15 );
self.alpha = 0;
}
getWeeklyRef( var_0 )
{
for ( var_1 = 0; var_1 < 3; var_1++ )
{
var_2 = self getplayerdata( "weeklyChallengeId", var_1 );
var_3 = tablelookupbyrow( "mp/weeklyChallengesTable.csv", var_2, 0 );
if ( var_3 == var_0 )
return "ch_weekly_" + var_1;
}
return "";
}
getDailyRef( var_0 )
{
for ( var_1 = 0; var_1 < 3; var_1++ )
{
var_2 = self getplayerdata( "dailyChallengeId", var_1 );
var_3 = tablelookupbyrow( "mp/dailyChallengesTable.csv", var_2, 0 );
if ( var_3 == var_0 )
return "ch_daily_" + var_1;
}
return "";
}
ch_getProgress( var_0 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self getplayerdata( "challengeProgress", var_0 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self getplayerdata( "challengeProgress", getDailyRef( var_0 ) );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self getplayerdata( "challengeProgress", getWeeklyRef( var_0 ) );
}
ch_getState( var_0 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self getplayerdata( "challengeState", var_0 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self getplayerdata( "challengeState", getDailyRef( var_0 ) );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self getplayerdata( "challengeState", getWeeklyRef( var_0 ) );
}
ch_setProgress( var_0, var_1 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self setplayerdata( "challengeProgress", var_0, var_1 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self setplayerdata( "challengeProgress", getDailyRef( var_0 ), var_1 );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self setplayerdata( "challengeProgress", getWeeklyRef( var_0 ), var_1 );
}
ch_setState( var_0, var_1 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return self setplayerdata( "challengeState", var_0, var_1 );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return self setplayerdata( "challengeState", getDailyRef( var_0 ), var_1 );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return self setplayerdata( "challengeState", getWeeklyRef( var_0 ), var_1 );
}
ch_getTarget( var_0, var_1 )
{
if ( level.challengeInfo[var_0]["type"] == 0 )
return int( tablelookup( "mp/allChallengesTable.csv", 0, var_0, 6 + var_1 - 1 * 2 ) );
else if ( level.challengeInfo[var_0]["type"] == 1 )
return int( tablelookup( "mp/dailyChallengesTable.csv", 0, var_0, 6 + var_1 - 1 * 2 ) );
else if ( level.challengeInfo[var_0]["type"] == 2 )
return int( tablelookup( "mp/weeklyChallengesTable.csv", 0, var_0, 6 + var_1 - 1 * 2 ) );
}

919
maps/mp/bots/_wp_editor.gsc Normal file
View File

@ -0,0 +1,919 @@
/*
_wp_editor
Author: INeedGames
Date: 05/08/2021
The ingame waypoint editor.
*/
#include common_scripts\utility;
#include maps\mp\_utility;
#include maps\mp\bots\_hud_util; // COMPILER needs the original in its list of includes!
#include maps\mp\bots\_bot_utility;
init()
{
if(getDvar("bots_main_debug") == "")
setDvar("bots_main_debug", 0);
if(!getDVarint("bots_main_debug"))
return;
/*if(!getDVarint("developer"))
{
setdvar("developer_script", 1);
setdvar("developer", 1);
setdvar("sv_mapRotation", "map "+getDvar("mapname"));
exitLevel(false);
}*/
setDvar("bots_main", 0);
setdvar("bots_main_menu", 0);
setdvar("bots_manage_fill_mode", 0);
setdvar("bots_manage_fill", 0);
setdvar("bots_manage_add", 0);
setdvar("bots_manage_fill_kick", 1);
setDvar("bots_manage_fill_spec", 1);
if (getDvar("bots_main_debug_distance") == "")
setDvar("bots_main_debug_distance", 512.0);
if (getDvar("bots_main_debug_cone") == "")
setDvar("bots_main_debug_cone", 0.65);
if (getDvar("bots_main_debug_minDist") == "")
setDvar("bots_main_debug_minDist", 32.0);
if (getDvar("bots_main_debug_drawThrough") == "")
setDvar("bots_main_debug_drawThrough", false);
if (getDvar("bots_main_debug_updateRate") == "")
setDvar("bots_main_debug_updateRate", 500);
if (getDvar("bots_main_debug_dashAmount") == "")
setDvar("bots_main_debug_dashAmount", 35.0);
setDvar("player_sustainAmmo", 1);
level.waypoints = [];
level.waypointCount = 0;
level waittill( "connected", player);
player thread onPlayerSpawned();
}
onPlayerSpawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
self thread startDev();
}
}
StartDev()
{
self endon("disconnect");
self endon("death");
level.wpToLink = -1;
level.autoLink = false;
self.nearest = -1;
self takeAllWeapons();
self giveWeapon("iw5_m16_mp_gl");//to knife windows
self giveWeapon("javelin_mp");//to mark jav spots
self SetOffhandPrimaryClass( "other" );
self giveWeapon("semtex_mp");
self _clearperks();
self.specialty = [];
/*self maps\mp\perks\_perks::givePerk("specialty_fastmantle");
self maps\mp\perks\_perks::givePerk("specialty_falldamage");
self maps\mp\perks\_perks::givePerk("specialty_marathon");
self maps\mp\perks\_perks::givePerk("specialty_lightweight");*/
self freezecontrols(false);
self thread watchAddWaypointCommand();
self thread watchDeleteAllWaypointsCommand();
self thread watchDeleteWaypointCommand();
self thread watchLinkWaypointCommand();
self thread watchLoadWaypointsCommand();
self thread watchSaveWaypointsCommand();
self thread watchUnlinkWaypointCommand();
self thread watchAutoLinkCommand();
self thread updateWaypointsStats();
self thread watchAstarCommand();
self thread sayExtras();
//self LoadWaypoints(); // actionslot 2 not working?
level.waypoints = maps\mp\bots\waypoints\dome::Dome();
level.waypointCount = level.waypoints.size;
}
sayExtras()
{
self endon("disconnect");
self endon("death");
self iprintln("Before adding waypoints, holding buttons:");
wait 4;
self iprintln("ADS - climb");
self iprintln("Use + Attack - tube");
self iprintln("Attack - grenade");
self iprintln("Use - claymore");
wait 4;
self iprintln("Else the waypoint will be your stance.");
self iprintln("Making a crouch waypoint with only one link...");
self iprintln("Makes a camping waypoint.");
}
watchAstarCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("astar", "+gostand");
for (;;)
{
self waittill("astar");
if (1)
continue;
self iprintln("Start AStar");
self.astar = undefined;
astar = spawnStruct();
astar.start = self.origin;
self waittill("astar");
self iprintln("End AStar");
astar.goal = self.origin;
astar.nodes = AStarSearch(astar.start, astar.goal, undefined, true);
self iprintln("AStar size: " + astar.nodes.size);
self.astar = astar;
}
}
drawWaypoint(i)
{
if (!isDefined(level.drawn_wps))
level.drawn_wps = [];
newdeathicon = newHudElem();
newdeathicon.x = level.waypoints[i].origin[0];
newdeathicon.y = level.waypoints[i].origin[1];
newdeathicon.z = level.waypoints[i].origin[2] + 50;
newdeathicon.alpha = .61;
newdeathicon.archived = true;
newdeathicon setShader("headicon_dead", 5, 5);
newdeathicon setwaypoint( true, false );
level.drawn_wps[level.drawn_wps.size] = newdeathicon;
}
clearWaypoints()
{
if (!isDefined(level.drawn_wps))
return;
for (i = 0; i < level.drawn_wps.size; i++)
{
level.drawn_wps[i] destroy();
}
level.drawn_wps = [];
}
clearWpLinks()
{
if (!isDefined(level.drawn_links))
return;
for (i = 0; i < level.waypointCount; i++)
{
level.waypoints[i].drawn_links = [];
}
for (i = 0; i < level.drawn_links.size; i++)
{
level.drawn_links[i] delete();
}
level.drawn_links = [];
}
showWpLink(i, h)
{
if (!isDefined(level.drawn_links))
level.drawn_links = [];
if (!isDefined(level.waypoints[i].drawn_links))
level.waypoints[i].drawn_links = [];
if (!isDefined(level.waypoints[h].drawn_links))
level.waypoints[h].drawn_links = [];
if (isDefined(level.waypoints[h].drawn_links["" + i]) || isDefined(level.waypoints[i].drawn_links["" + h]))
return;
level.waypoints[h].drawn_links["" + i] = true;
level.waypoints[i].drawn_links["" + h] = true;
start = level.waypoints[i].origin + (0, 0, 45);
end = level.waypoints[h].origin + (0, 0, 45);
diff = end-start;
dir = VectorToAngles(diff);
dist = distance(start, end);
dash_count = int(dist / getDvarFloat("bots_main_debug_dashAmount"));
for (j = 0; j < dash_count; j++)
{
dash = spawn( "script_model", start + ((diff * j)/dash_count));
dash setModel("weapon_parabolic_knife");
dash.angles = dir;
level.drawn_links[level.drawn_links.size] = dash;
}
dash = spawn( "script_model", end);
dash setModel("weapon_parabolic_knife");
//dash.angles = dir; // COMPILER
level.drawn_links[level.drawn_links.size] = dash;
}
updateWaypointsStats()
{
self endon("disconnect");
self endon("death");
self initHudElem("TotalWps:",102,5);
totalWpsHud = self initHudElem("",180,5);
self initHudElem("NearestWP:",102,15);
nearestWP = self initHudElem("",180,15);
self initHudElem("Childs:",102,25);
children = self initHudElem("",160,25);
self initHudElem("Type:",102,35);
type = self initHudElem("",160,35);
self initHudElem("ToLink:",102,45);
wpToLink = self initHudElem("",160,45);
infotext = self initHudElem2();
self initHudElem3();
self initHudElem4();
intTimer = 0;
for(time=0;;time+=0.05)
{
wait 0.05;
intTimer += 50;
totalWpsHud setText(level.waypointCount);
closest = -1;
myEye = self getEye();
myAngles = self GetPlayerAngles();
timeToUpdate = ((intTimer % getDvarInt("bots_main_debug_updateRate")) == 0);
if (timeToUpdate)
{
clearWaypoints();
clearWpLinks();
}
for(i = 0; i < level.waypointCount; i++)
{
if(closest == -1 || closer(self.origin, level.waypoints[i].origin, level.waypoints[closest].origin))
closest = i;
wpOrg = level.waypoints[i].origin + (0, 0, 25);
if(distance(level.waypoints[i].origin, self.origin) < getDvarFloat("bots_main_debug_distance") && (bulletTracePassed(myEye, wpOrg, false, self) || getDVarint("bots_main_debug_drawThrough")))
{
if (timeToUpdate)
{
if(getConeDot(wpOrg, myEye, myAngles) > getDvarFloat("bots_main_debug_cone"))
{
drawWaypoint(i);
for(h = 0; h < level.waypoints[i].childCount; h++)
showWpLink(i, level.waypoints[i].children[h]);
}
}
/*for(h = 0; h < level.waypoints[i].childCount; h++)
line(wpOrg, level.waypoints[level.waypoints[i].children[h]].origin + (0, 0, 25), (1,0,1));
if(getConeDot(wpOrg, myEye, myAngles) > getDvarFloat("bots_main_debug_cone"))
print3d(wpOrg, i, (1,0,0), 2);
if (isDefined(level.waypoints[i].angles) && level.waypoints[i].type != "stand")
line(wpOrg, wpOrg + AnglesToForward(level.waypoints[i].angles) * 64, (1,1,1));
if (isDefined(level.waypoints[i].jav_point))
line(wpOrg, level.waypoints[i].jav_point, (0,0,0));*/
}
}
self.nearest = closest;
nearestWP setText(self.nearest);
children setText(buildChildCountString(self.nearest));
type setText(buildTypeString(self.nearest));
wpToLink setText(level.wpToLink);
infotext.x = infotext.x - 2;
if(infotext.x <= -800)
infotext.x = 800;
if (time > 2 && self UseButtonPressed())
{
time = 0;
self iPrintLnBold(self.nearest + " children: " + buildChildString(self.nearest));
}
if (isDefined(self.astar))
{
print3d(self.astar.start + (0, 0, 35), "start", (0,0,1), 2);
print3d(self.astar.goal + (0, 0, 35), "goal", (0,0,1), 2);
prev = self.astar.start + (0, 0, 35);
for (i = self.astar.nodes.size - 1; i >= 0; i--)
{
node = self.astar.nodes[i];
line(prev, level.waypoints[node].origin + (0, 0, 35), (0,1,1));
prev = level.waypoints[node].origin + (0, 0, 35);
}
line(prev, self.astar.goal + (0, 0, 35), (0,1,1));
}
}
}
watchLoadWaypointsCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+actionslot 2}]", "+actionslot 2");
for( ;; )
{
self waittill("[{+actionslot 2}]");
self LoadWaypoints();
}
}
watchAddWaypointCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+smoke}]", "+smoke");
for( ;; )
{
self waittill("[{+smoke}]");
self AddWaypoint();
}
}
watchAutoLinkCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+frag}]", "+frag");
for( ;; )
{
self waittill("[{+frag}]");
if(level.autoLink)
{
self iPrintlnBold("Auto link disabled");
level.autoLink = false;
level.wpToLink = -1;
}
else
{
self iPrintlnBold("Auto link enabled");
level.autoLink = true;
level.wpToLink = self.nearest;
}
}
}
watchLinkWaypointCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+melee_zoom}]", "+melee_zoom");
for( ;; )
{
self waittill("[{+melee_zoom}]");
self LinkWaypoint(self.nearest);
}
}
watchUnlinkWaypointCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+reload}]", "+reload");
for( ;; )
{
self waittill("[{+reload}]");
self UnLinkWaypoint(self.nearest);
}
}
watchDeleteWaypointCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+actionslot 3}]", "+actionslot 3");
for( ;; )
{
self waittill("[{+actionslot 3}]");
self DeleteWaypoint(self.nearest);
}
}
watchDeleteAllWaypointsCommand()
{
self endon("disconnect");
self endon("death");
self notifyOnPlayerCommand("[{+actionslot 4}]", "+actionslot 4");
for( ;; )
{
self waittill("[{+actionslot 4}]");
self DeleteAllWaypoints();
}
}
watchSaveWaypointsCommand()
{
self endon("death");
self endon("disconnect");
self notifyOnPlayerCommand("[{+actionslot 1}]", "+actionslot 1");
for(;;)
{
self waittill("[{+actionslot 1}]");
self checkForWarnings();
wait 1;
logprint("***********ABiliTy's WPDump**************\n\n");
logprint("\n\n\n\n");
mpnm=getMapName(getdvar("mapname"));
logprint("\n\n"+mpnm+"()\n{\n/*");
logprint("*/waypoints = [];\n/*");
for(i = 0; i < level.waypointCount; i++)
{
logprint("*/waypoints["+i+"] = spawnstruct();\n/*");
logprint("*/waypoints["+i+"].origin = "+level.waypoints[i].origin+";\n/*");
logprint("*/waypoints["+i+"].type = \""+level.waypoints[i].type+"\";\n/*");
logprint("*/waypoints["+i+"].childCount = "+level.waypoints[i].childCount+";\n/*");
for(c = 0; c < level.waypoints[i].childCount; c++)
{
logprint("*/waypoints["+i+"].children["+c+"] = "+level.waypoints[i].children[c]+";\n/*");
}
if(isDefined(level.waypoints[i].angles) && (level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || (level.waypoints[i].type == "crouch" && level.waypoints[i].childCount == 1) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade"))
logprint("*/waypoints["+i+"].angles = "+level.waypoints[i].angles+";\n/*");
if (isDefined(level.waypoints[i].jav_point) && level.waypoints[i].type == "javelin")
logprint("*/waypoints["+i+"].jav_point = "+level.waypoints[i].jav_point+";\n/*");
}
logprint("*/return waypoints;\n}\n\n\n\n");
filename = "waypoints/" + getdvar("mapname") + "_wp.csv";
PrintLn("********* Start Bot Warfare WPDump *********");
PrintLn(level.waypointCount);
//fileWrite(filename, level.waypointCount+"\n", "write");
for(i = 0; i < level.waypointCount; i++)
{
str = "";
wp = level.waypoints[i];
str += wp.origin[0] + " " + wp.origin[1] + " " + wp.origin[2] + ",";
for(h = 0; h < wp.childCount; h++)
{
str += wp.children[h];
if (h < wp.childCount - 1)
str += " ";
}
str += "," + wp.type + ",";
if (isDefined(wp.angles))
str += wp.angles[0] + " " + wp.angles[1] + " " + wp.angles[2] + ",";
else
str += ",";
if (isDefined(wp.jav_point))
str += wp.jav_point[0] + " " + wp.jav_point[1] + " " + wp.jav_point[2] + ",";
else
str += ",";
PrintLn(str);
//fileWrite(filename, str+"\n", "append");
}
PrintLn("\n\n\n\n\n\n");
self iprintln("Saved!!! to " + filename);
}
}
LoadWaypoints()
{
self DeleteAllWaypoints();
self iPrintlnBold("Loading WPS...");
load_waypoints();
wait 1;
self checkForWarnings();
}
checkForWarnings()
{
if(level.waypointCount <= 0)
self iprintln("WARNING: waypointCount is "+level.waypointCount);
if(level.waypointCount != level.waypoints.size)
self iprintln("WARNING: waypointCount is not "+level.waypoints.size);
for(i = 0; i < level.waypointCount; i++)
{
if(!isDefined(level.waypoints[i]))
{
self iprintln("WARNING: waypoint "+i+" is undefined");
continue;
}
if(level.waypoints[i].childCount <= 0)
self iprintln("WARNING: waypoint "+i+" childCount is "+level.waypoints[i].childCount);
else
{
if (!isDefined(level.waypoints[i].children) || !isDefined(level.waypoints[i].children.size))
{
self iprintln("WARNING: waypoint "+i+" children is not defined");
}
else
{
if(level.waypoints[i].childCount != level.waypoints[i].children.size)
self iprintln("WARNING: waypoint "+i+" childCount is not "+level.waypoints[i].children.size);
for (h = 0; h < level.waypoints[i].childCount; h++)
{
child = level.waypoints[i].children[h];
if(!isDefined(level.waypoints[child]))
self iprintln("WARNING: waypoint "+i+" child "+child+" is undefined");
else if(child == i)
self iprintln("WARNING: waypoint "+i+" child "+child+" is itself");
}
}
}
if(!isDefined(level.waypoints[i].type))
{
self iprintln("WARNING: waypoint "+i+" type is undefined");
continue;
}
if (level.waypoints[i].type == "javelin" && !isDefined(level.waypoints[i].jav_point))
self iprintln("WARNING: waypoint "+i+" jav_point is undefined");
if(!isDefined(level.waypoints[i].angles) && (level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || (level.waypoints[i].type == "crouch" && level.waypoints[i].childCount == 1) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade"))
self iprintln("WARNING: waypoint "+i+" angles is undefined");
}
}
UnLinkWaypoint(nwp)
{
if(nwp == -1 || distance(self.origin, level.waypoints[nwp].origin) > getDvarFloat("bots_main_debug_minDist"))
{
self iprintln("Waypoint Unlink Cancelled "+level.wpToLink);
level.wpToLink = -1;
return;
}
if(level.wpToLink == -1 || nwp == level.wpToLink)
{
level.wpToLink = nwp;
self iprintln("Waypoint Unlink Started "+nwp);
return;
}
level.waypoints[nwp].children = array_remove(level.waypoints[nwp].children, level.wpToLink);
level.waypoints[level.wpToLink].children = array_remove(level.waypoints[level.wpToLink].children, nwp);
level.waypoints[nwp].childCount = level.waypoints[nwp].children.size;
level.waypoints[level.wpToLink].childCount = level.waypoints[level.wpToLink].children.size;
self iprintln("Waypoint " + nwp + " Broken to " + level.wpToLink);
level.wpToLink = -1;
}
LinkWaypoint(nwp)
{
level.temp_vars = [];
level.temp_vars[0] = nwp;
level.temp_vars[1] = true;
if(level.temp_vars[0] == -1 || distance(self.origin, level.waypoints[level.temp_vars[0]].origin) > getDvarFloat("bots_main_debug_minDist"))
{
self iprintln("Waypoint Link Cancelled "+level.wpToLink);
level.wpToLink = -1;
return;
}
if(level.wpToLink == -1 || level.temp_vars[0] == level.wpToLink)
{
level.wpToLink = level.temp_vars[0];
self iprintln("Waypoint Link Started "+level.temp_vars[0]);
return;
}
for (i = 0; i < level.waypoints[level.wpToLink].childCount; i++)
{
child = level.waypoints[level.wpToLink].children[i];
if(child == level.temp_vars[0])
{
level.temp_vars[1] = false;
break;
}
}
if(level.temp_vars[1])
{
for (i = 0; i < level.waypoints[level.temp_vars[0]].childCount; i++)
{
child = level.waypoints[level.temp_vars[0]].children[i];
if(child == level.wpToLink)
{
level.temp_vars[1] = false;
break;
}
}
}
// COMPILER BUG ATM!! nwp getting over written, using level.temp_vars for now
if (!level.temp_vars[1] )
{
self iprintln("Waypoint Link Cancelled "+level.temp_vars[0]+" and "+level.wpToLink+" already linked.");
level.wpToLink = -1;
return;
}
level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].childcount] = level.temp_vars[0];
level.waypoints[level.wpToLink].childcount++;
level.waypoints[level.temp_vars[0]].children[level.waypoints[level.temp_vars[0]].childcount] = level.wpToLink;
level.waypoints[level.temp_vars[0]].childcount++;
self iprintln("Waypoint " + level.temp_vars[0] + " Linked to " + level.wpToLink);
level.wpToLink = -1;
}
DeleteWaypoint(nwp)
{
if(nwp == -1 || distance(self.origin, level.waypoints[nwp].origin) > getDvarFloat("bots_main_debug_minDist"))
{
self iprintln("No close enough waypoint to delete.");
return;
}
level.wpToLink = -1;
for (i = 0; i < level.waypoints[nwp].childCount; i++)
{
child = level.waypoints[nwp].children[i];
level.waypoints[child].children = array_remove(level.waypoints[child].children, nwp);
level.waypoints[child].childCount = level.waypoints[child].children.size;
}
for(i = 0; i < level.waypointCount; i++)
{
for(h = 0; h < level.waypoints[i].childCount; h++)
{
if(level.waypoints[i].children[h] > nwp)
level.waypoints[i].children[h]--;
}
}
for ( entry = 0; entry < level.waypointCount; entry++ )
{
if ( entry == nwp )
{
while ( entry < level.waypointCount-1 )
{
level.waypoints[entry] = level.waypoints[entry+1];
entry++;
}
level.waypoints[entry] = undefined;
break;
}
}
level.waypointCount--;
self iprintln("DelWp "+nwp);
}
AddWaypoint()
{
level.waypoints[level.waypointCount] = spawnstruct();
pos = self getOrigin();
level.waypoints[level.waypointCount].origin = pos;
if (isDefined(self.javelinTargetPoint))
level.waypoints[level.waypointCount].type = "javelin";
else if(self AdsButtonPressed())
level.waypoints[level.waypointCount].type = "climb";
else if(self AttackButtonPressed() && self UseButtonPressed())
level.waypoints[level.waypointCount].type = "tube";
else if(self AttackButtonPressed())
level.waypoints[level.waypointCount].type = "grenade";
else if(self UseButtonPressed())
level.waypoints[level.waypointCount].type = "claymore";
else
level.waypoints[level.waypointCount].type = self getStance();
level.waypoints[level.waypointCount].angles = self getPlayerAngles();
level.waypoints[level.waypointCount].children = [];
level.waypoints[level.waypointCount].childCount = 0;
if (level.waypoints[level.waypointCount].type == "javelin")
{
level.waypoints[level.waypointCount].jav_point = self.javelinTargetPoint;
}
self iprintln(level.waypoints[level.waypointCount].type + " Waypoint "+ level.waypointCount +" Added at "+pos);
if(level.autoLink)
{
if(level.wpToLink == -1)
level.wpToLink = level.waypointCount - 1;
level.waypointCount++;
self LinkWaypoint(level.waypointCount - 1);
}
else
{
level.waypointCount++;
}
}
DeleteAllWaypoints()
{
level.waypoints = [];
level.waypointCount = 0;
self iprintln("DelAllWps");
}
buildChildCountString ( wp )
{
if ( wp == -1 )
return "";
wpstr = level.waypoints[wp].childCount + "";
return wpstr;
}
buildChildString( wp )
{
if ( wp == -1 )
return "";
wpstr = "";
for(i = 0; i < level.waypoints[wp].childCount; i++)
{
if(i != 0)
wpstr = wpstr + "," + level.waypoints[wp].children[i];
else
wpstr= wpstr + level.waypoints[wp].children[i];
}
return wpstr;
}
buildTypeString( wp )
{
if ( wp == -1 )
return "";
return level.waypoints[wp].type;
}
destroyOnDeath(hud)
{
hud endon("death");
self waittill_either("death","disconnect");
hud notify("death");
hud destroy();
hud = undefined;
}
initHudElem(txt, xl, yl)
{
hud = NewClientHudElem( self );
hud setText(txt);
hud.alignX = "left";
hud.alignY = "top";
hud.horzAlign = "left";
hud.vertAlign = "top";
hud.x = xl;
hud.y = yl;
hud.foreground = true;
hud.fontScale = 1;
hud.font = "objective";
hud.alpha = 1;
hud.glow = 0;
hud.glowColor = ( 0, 0, 0 );
hud.glowAlpha = 1;
hud.color = ( 1.0, 1.0, 1.0 );
self thread destroyOnDeath( hud );
return hud;
}
initHudElem2()
{
infotext = NewHudElem();
infotext setText("^1Welcome to the MW3 Waypoint Editor for Bot Warfare!"); // not working??
infotext.alignX = "center";
infotext.alignY = "bottom";
infotext.horzAlign = "center";
infotext.vertAlign = "bottom";
infotext.x = -800;
infotext.y = 25;
infotext.foreground = true;
infotext.fontScale = 1.35;
infotext.font = "objective";
infotext.alpha = 1;
infotext.glow = 0;
infotext.glowColor = ( 0, 0, 0 );
infotext.glowAlpha = 1;
infotext.color = ( 1.0, 1.0, 1.0 );
self thread destroyOnDeath( infotext );
return infotext;
}
initHudElem3()
{
bar = level createServerBar((0.5, 0.5, 0.5), 1000, 25);
bar.alignX = "center";
bar.alignY = "bottom";
bar.horzAlign = "center";
bar.vertAlign = "bottom";
bar.y = 30;
bar.foreground = true;
self thread destroyOnDeath( bar );
return bar;
}
initHudElem4()
{
OptionsBG = NewClientHudElem( self );
OptionsBG.x = 100;
OptionsBG.y = 2;
OptionsBG.alignX = "left";
OptionsBG.alignY = "top";
OptionsBG.horzAlign = "left";
OptionsBG.vertAlign = "top";
OptionsBG setshader("black", 200, 60);
OptionsBG.alpha = 0.4;
self thread destroyOnDeath( OptionsBG );
return OptionsBG;
}

View File

@ -0,0 +1,985 @@
Dome()
{
/* 0:48 */waypoints = [];
/* 0:48 */waypoints[0] = spawnstruct();
/* 0:48 */waypoints[0].origin = (-140.626, 2103.48, -290.875);
/* 0:48 */waypoints[0].type = "stand";
/* 0:48 */waypoints[0].childCount = 2;
/* 0:48 */waypoints[0].children[0] = 1;
/* 0:48 */waypoints[0].children[1] = 45;
/* 0:48 */waypoints[1] = spawnstruct();
/* 0:48 */waypoints[1].origin = (141.937, 2091.96, -290.875);
/* 0:48 */waypoints[1].type = "stand";
/* 0:48 */waypoints[1].childCount = 3;
/* 0:48 */waypoints[1].children[0] = 0;
/* 0:48 */waypoints[1].children[1] = 2;
/* 0:48 */waypoints[1].children[2] = 47;
/* 0:48 */waypoints[2] = spawnstruct();
/* 0:48 */waypoints[2].origin = (451.907, 2066.25, -254.875);
/* 0:48 */waypoints[2].type = "stand";
/* 0:48 */waypoints[2].childCount = 4;
/* 0:48 */waypoints[2].children[0] = 1;
/* 0:48 */waypoints[2].children[1] = 3;
/* 0:48 */waypoints[2].children[2] = 77;
/* 0:48 */waypoints[2].children[3] = 74;
/* 0:48 */waypoints[3] = spawnstruct();
/* 0:48 */waypoints[3].origin = (430.25, 1747.91, -254.875);
/* 0:48 */waypoints[3].type = "stand";
/* 0:48 */waypoints[3].childCount = 3;
/* 0:48 */waypoints[3].children[0] = 2;
/* 0:48 */waypoints[3].children[1] = 4;
/* 0:48 */waypoints[3].children[2] = 79;
/* 0:48 */waypoints[4] = spawnstruct();
/* 0:48 */waypoints[4].origin = (636.671, 1713.11, -247.381);
/* 0:48 */waypoints[4].type = "stand";
/* 0:48 */waypoints[4].childCount = 3;
/* 0:48 */waypoints[4].children[0] = 3;
/* 0:48 */waypoints[4].children[1] = 5;
/* 0:48 */waypoints[4].children[2] = 74;
/* 0:48 */waypoints[5] = spawnstruct();
/* 0:48 */waypoints[5].origin = (1115.07, 1698.27, -254.875);
/* 0:48 */waypoints[5].type = "stand";
/* 0:48 */waypoints[5].childCount = 3;
/* 0:48 */waypoints[5].children[0] = 4;
/* 0:48 */waypoints[5].children[1] = 6;
/* 0:48 */waypoints[5].children[2] = 71;
/* 0:48 */waypoints[6] = spawnstruct();
/* 0:48 */waypoints[6].origin = (1333.3, 1679.45, -254.875);
/* 0:48 */waypoints[6].type = "stand";
/* 0:48 */waypoints[6].childCount = 3;
/* 0:48 */waypoints[6].children[0] = 5;
/* 0:48 */waypoints[6].children[1] = 7;
/* 0:48 */waypoints[6].children[2] = 64;
/* 0:48 */waypoints[7] = spawnstruct();
/* 0:48 */waypoints[7].origin = (1319.74, 1407.28, -254.875);
/* 0:48 */waypoints[7].type = "stand";
/* 0:48 */waypoints[7].childCount = 3;
/* 0:48 */waypoints[7].children[0] = 6;
/* 0:48 */waypoints[7].children[1] = 8;
/* 0:48 */waypoints[7].children[2] = 63;
/* 0:48 */waypoints[8] = spawnstruct();
/* 0:48 */waypoints[8].origin = (1307.68, 1285.36, -254.875);
/* 0:48 */waypoints[8].type = "stand";
/* 0:48 */waypoints[8].childCount = 2;
/* 0:48 */waypoints[8].children[0] = 7;
/* 0:48 */waypoints[8].children[1] = 9;
/* 0:48 */waypoints[9] = spawnstruct();
/* 0:48 */waypoints[9].origin = (1557.19, 1283.13, -254.875);
/* 0:48 */waypoints[9].type = "stand";
/* 0:48 */waypoints[9].childCount = 4;
/* 0:48 */waypoints[9].children[0] = 8;
/* 0:48 */waypoints[9].children[1] = 10;
/* 0:48 */waypoints[9].children[2] = 62;
/* 0:48 */waypoints[9].children[3] = 78;
/* 0:48 */waypoints[10] = spawnstruct();
/* 0:48 */waypoints[10].origin = (1588.16, 1082.51, -254.875);
/* 0:48 */waypoints[10].type = "stand";
/* 0:48 */waypoints[10].childCount = 3;
/* 0:48 */waypoints[10].children[0] = 9;
/* 0:48 */waypoints[10].children[1] = 11;
/* 0:48 */waypoints[10].children[2] = 61;
/* 0:48 */waypoints[11] = spawnstruct();
/* 0:48 */waypoints[11].origin = (1533.04, 589.068, -318.312);
/* 0:48 */waypoints[11].type = "stand";
/* 0:48 */waypoints[11].childCount = 2;
/* 0:48 */waypoints[11].children[0] = 10;
/* 0:48 */waypoints[11].children[1] = 12;
/* 0:48 */waypoints[12] = spawnstruct();
/* 0:48 */waypoints[12].origin = (1390.95, 607.894, -324.887);
/* 0:48 */waypoints[12].type = "stand";
/* 0:48 */waypoints[12].childCount = 4;
/* 0:48 */waypoints[12].children[0] = 11;
/* 0:48 */waypoints[12].children[1] = 13;
/* 0:48 */waypoints[12].children[2] = 57;
/* 0:48 */waypoints[12].children[3] = 56;
/* 0:48 */waypoints[13] = spawnstruct();
/* 0:48 */waypoints[13].origin = (1331.41, 286.146, -377.336);
/* 0:48 */waypoints[13].type = "stand";
/* 0:48 */waypoints[13].childCount = 3;
/* 0:48 */waypoints[13].children[0] = 12;
/* 0:48 */waypoints[13].children[1] = 14;
/* 0:48 */waypoints[13].children[2] = 81;
/* 0:48 */waypoints[14] = spawnstruct();
/* 0:48 */waypoints[14].origin = (1297.26, 38.176, -394.269);
/* 0:48 */waypoints[14].type = "stand";
/* 0:48 */waypoints[14].childCount = 4;
/* 0:48 */waypoints[14].children[0] = 13;
/* 0:48 */waypoints[14].children[1] = 15;
/* 0:48 */waypoints[14].children[2] = 89;
/* 0:48 */waypoints[14].children[3] = 92;
/* 0:48 */waypoints[15] = spawnstruct();
/* 0:48 */waypoints[15].origin = (1361.5, -124.966, -387.006);
/* 0:48 */waypoints[15].type = "stand";
/* 0:48 */waypoints[15].childCount = 3;
/* 0:48 */waypoints[15].children[0] = 14;
/* 0:48 */waypoints[15].children[1] = 16;
/* 0:48 */waypoints[15].children[2] = 92;
/* 0:48 */waypoints[16] = spawnstruct();
/* 0:48 */waypoints[16].origin = (1349.18, -431.243, -379.903);
/* 0:48 */waypoints[16].type = "stand";
/* 0:48 */waypoints[16].childCount = 2;
/* 0:48 */waypoints[16].children[0] = 15;
/* 0:48 */waypoints[16].children[1] = 17;
/* 0:48 */waypoints[17] = spawnstruct();
/* 0:48 */waypoints[17].origin = (1040.8, -499.492, -384.345);
/* 0:48 */waypoints[17].type = "stand";
/* 0:48 */waypoints[17].childCount = 4;
/* 0:48 */waypoints[17].children[0] = 16;
/* 0:48 */waypoints[17].children[1] = 18;
/* 0:48 */waypoints[17].children[2] = 91;
/* 0:48 */waypoints[17].children[3] = 93;
/* 0:48 */waypoints[18] = spawnstruct();
/* 0:48 */waypoints[18].origin = (725.226, -547.766, -391.437);
/* 0:48 */waypoints[18].type = "stand";
/* 0:48 */waypoints[18].childCount = 4;
/* 0:48 */waypoints[18].children[0] = 17;
/* 0:48 */waypoints[18].children[1] = 19;
/* 0:48 */waypoints[18].children[2] = 93;
/* 0:48 */waypoints[18].children[3] = 128;
/* 0:48 */waypoints[19] = spawnstruct();
/* 0:48 */waypoints[19].origin = (550.345, -653.288, -382.519);
/* 0:48 */waypoints[19].type = "stand";
/* 0:48 */waypoints[19].childCount = 2;
/* 0:48 */waypoints[19].children[0] = 18;
/* 0:48 */waypoints[19].children[1] = 20;
/* 0:48 */waypoints[20] = spawnstruct();
/* 0:48 */waypoints[20].origin = (431.707, -414.067, -393.9);
/* 0:48 */waypoints[20].type = "stand";
/* 0:48 */waypoints[20].childCount = 3;
/* 0:48 */waypoints[20].children[0] = 19;
/* 0:48 */waypoints[20].children[1] = 21;
/* 0:48 */waypoints[20].children[2] = 128;
/* 0:48 */waypoints[21] = spawnstruct();
/* 0:48 */waypoints[21].origin = (474.186, -181.671, -390.375);
/* 0:48 */waypoints[21].type = "stand";
/* 0:48 */waypoints[21].childCount = 4;
/* 0:48 */waypoints[21].children[0] = 20;
/* 0:48 */waypoints[21].children[1] = 22;
/* 0:48 */waypoints[21].children[2] = 94;
/* 0:48 */waypoints[21].children[3] = 95;
/* 0:48 */waypoints[22] = spawnstruct();
/* 0:48 */waypoints[22].origin = (315.047, -105.259, -390.375);
/* 0:48 */waypoints[22].type = "stand";
/* 0:48 */waypoints[22].childCount = 3;
/* 0:48 */waypoints[22].children[0] = 21;
/* 0:48 */waypoints[22].children[1] = 23;
/* 0:48 */waypoints[22].children[2] = 96;
/* 0:48 */waypoints[23] = spawnstruct();
/* 0:48 */waypoints[23].origin = (35.6547, -281.57, -390.375);
/* 0:48 */waypoints[23].type = "stand";
/* 0:48 */waypoints[23].childCount = 2;
/* 0:48 */waypoints[23].children[0] = 22;
/* 0:48 */waypoints[23].children[1] = 24;
/* 0:48 */waypoints[24] = spawnstruct();
/* 0:48 */waypoints[24].origin = (-142.765, 23.3263, -390.375);
/* 0:48 */waypoints[24].type = "stand";
/* 0:48 */waypoints[24].childCount = 3;
/* 0:48 */waypoints[24].children[0] = 23;
/* 0:48 */waypoints[24].children[1] = 25;
/* 0:48 */waypoints[24].children[2] = 96;
/* 0:48 */waypoints[25] = spawnstruct();
/* 0:48 */waypoints[25].origin = (-250.261, 216.223, -402.466);
/* 0:48 */waypoints[25].type = "stand";
/* 0:48 */waypoints[25].childCount = 6;
/* 0:48 */waypoints[25].children[0] = 24;
/* 0:48 */waypoints[25].children[1] = 26;
/* 0:48 */waypoints[25].children[2] = 113;
/* 0:48 */waypoints[25].children[3] = 118;
/* 0:48 */waypoints[25].children[4] = 127;
/* 0:48 */waypoints[25].children[5] = 116;
/* 0:48 */waypoints[26] = spawnstruct();
/* 0:48 */waypoints[26].origin = (-400.662, 138.364, -404.402);
/* 0:48 */waypoints[26].type = "stand";
/* 0:48 */waypoints[26].childCount = 4;
/* 0:48 */waypoints[26].children[0] = 25;
/* 0:48 */waypoints[26].children[1] = 27;
/* 0:48 */waypoints[26].children[2] = 116;
/* 0:48 */waypoints[26].children[3] = 117;
/* 0:48 */waypoints[27] = spawnstruct();
/* 0:48 */waypoints[27].origin = (-308.795, -18.5752, -394.814);
/* 0:48 */waypoints[27].type = "stand";
/* 0:48 */waypoints[27].childCount = 2;
/* 0:48 */waypoints[27].children[0] = 26;
/* 0:48 */waypoints[27].children[1] = 28;
/* 0:48 */waypoints[28] = spawnstruct();
/* 0:48 */waypoints[28].origin = (-401.572, -58.4085, -401.87);
/* 0:48 */waypoints[28].type = "stand";
/* 0:48 */waypoints[28].childCount = 3;
/* 0:48 */waypoints[28].children[0] = 27;
/* 0:48 */waypoints[28].children[1] = 29;
/* 0:48 */waypoints[28].children[2] = 97;
/* 0:48 */waypoints[29] = spawnstruct();
/* 0:48 */waypoints[29].origin = (-719.427, -171.456, -409.2);
/* 0:48 */waypoints[29].type = "stand";
/* 0:48 */waypoints[29].childCount = 3;
/* 0:48 */waypoints[29].children[0] = 28;
/* 0:48 */waypoints[29].children[1] = 30;
/* 0:48 */waypoints[29].children[2] = 117;
/* 0:48 */waypoints[30] = spawnstruct();
/* 0:48 */waypoints[30].origin = (-837.206, -67.7813, -405.806);
/* 0:48 */waypoints[30].type = "stand";
/* 0:48 */waypoints[30].childCount = 3;
/* 0:48 */waypoints[30].children[0] = 29;
/* 0:48 */waypoints[30].children[1] = 31;
/* 0:48 */waypoints[30].children[2] = 117;
/* 0:48 */waypoints[31] = spawnstruct();
/* 0:48 */waypoints[31].origin = (-925.286, 121.522, -416.663);
/* 0:48 */waypoints[31].type = "stand";
/* 0:48 */waypoints[31].childCount = 3;
/* 0:48 */waypoints[31].children[0] = 30;
/* 0:48 */waypoints[31].children[1] = 32;
/* 0:48 */waypoints[31].children[2] = 33;
/* 0:48 */waypoints[32] = spawnstruct();
/* 0:48 */waypoints[32].origin = (-761.614, 254.802, -414.962);
/* 0:48 */waypoints[32].type = "stand";
/* 0:48 */waypoints[32].childCount = 4;
/* 0:48 */waypoints[32].children[0] = 31;
/* 0:48 */waypoints[32].children[1] = 33;
/* 0:48 */waypoints[32].children[2] = 116;
/* 0:48 */waypoints[32].children[3] = 117;
/* 0:48 */waypoints[33] = spawnstruct();
/* 0:48 */waypoints[33].origin = (-847.034, 449.476, -451.875);
/* 0:48 */waypoints[33].type = "stand";
/* 0:48 */waypoints[33].childCount = 4;
/* 0:48 */waypoints[33].children[0] = 32;
/* 0:48 */waypoints[33].children[1] = 34;
/* 0:48 */waypoints[33].children[2] = 31;
/* 0:48 */waypoints[33].children[3] = 116;
/* 0:48 */waypoints[34] = spawnstruct();
/* 0:48 */waypoints[34].origin = (-969.523, 664.428, -451.875);
/* 0:48 */waypoints[34].type = "stand";
/* 0:48 */waypoints[34].childCount = 2;
/* 0:48 */waypoints[34].children[0] = 33;
/* 0:48 */waypoints[34].children[1] = 35;
/* 0:48 */waypoints[35] = spawnstruct();
/* 0:48 */waypoints[35].origin = (-1111.27, 873.424, -451.875);
/* 0:48 */waypoints[35].type = "stand";
/* 0:48 */waypoints[35].childCount = 4;
/* 0:48 */waypoints[35].children[0] = 34;
/* 0:48 */waypoints[35].children[1] = 36;
/* 0:48 */waypoints[35].children[2] = 124;
/* 0:48 */waypoints[35].children[3] = 125;
/* 0:48 */waypoints[36] = spawnstruct();
/* 0:48 */waypoints[36].origin = (-1287.73, 801.399, -451.875);
/* 0:48 */waypoints[36].type = "stand";
/* 0:48 */waypoints[36].childCount = 2;
/* 0:48 */waypoints[36].children[0] = 35;
/* 0:48 */waypoints[36].children[1] = 37;
/* 0:48 */waypoints[37] = spawnstruct();
/* 0:48 */waypoints[37].origin = (-1417.17, 1073.99, -423.891);
/* 0:48 */waypoints[37].type = "stand";
/* 0:48 */waypoints[37].childCount = 2;
/* 0:48 */waypoints[37].children[0] = 36;
/* 0:48 */waypoints[37].children[1] = 38;
/* 0:48 */waypoints[38] = spawnstruct();
/* 0:48 */waypoints[38].origin = (-1521.36, 1354.2, -427.875);
/* 0:48 */waypoints[38].type = "stand";
/* 0:48 */waypoints[38].childCount = 2;
/* 0:48 */waypoints[38].children[0] = 37;
/* 0:48 */waypoints[38].children[1] = 39;
/* 0:48 */waypoints[39] = spawnstruct();
/* 0:48 */waypoints[39].origin = (-1327.86, 1433.06, -451.875);
/* 0:48 */waypoints[39].type = "stand";
/* 0:48 */waypoints[39].childCount = 3;
/* 0:48 */waypoints[39].children[0] = 38;
/* 0:48 */waypoints[39].children[1] = 40;
/* 0:48 */waypoints[39].children[2] = 125;
/* 0:48 */waypoints[40] = spawnstruct();
/* 0:48 */waypoints[40].origin = (-1173.54, 1511.18, -427.875);
/* 0:48 */waypoints[40].type = "stand";
/* 0:48 */waypoints[40].childCount = 3;
/* 0:48 */waypoints[40].children[0] = 39;
/* 0:48 */waypoints[40].children[1] = 41;
/* 0:48 */waypoints[40].children[2] = 126;
/* 0:48 */waypoints[41] = spawnstruct();
/* 0:48 */waypoints[41].origin = (-911.663, 1631.31, -355.875);
/* 0:48 */waypoints[41].type = "stand";
/* 0:48 */waypoints[41].childCount = 2;
/* 0:48 */waypoints[41].children[0] = 40;
/* 0:48 */waypoints[41].children[1] = 42;
/* 0:48 */waypoints[42] = spawnstruct();
/* 0:48 */waypoints[42].origin = (-691.944, 1653.04, -347.875);
/* 0:48 */waypoints[42].type = "stand";
/* 0:48 */waypoints[42].childCount = 2;
/* 0:48 */waypoints[42].children[0] = 41;
/* 0:48 */waypoints[42].children[1] = 43;
/* 0:48 */waypoints[43] = spawnstruct();
/* 0:48 */waypoints[43].origin = (-526.375, 1682.81, -283.875);
/* 0:48 */waypoints[43].type = "stand";
/* 0:48 */waypoints[43].childCount = 2;
/* 0:48 */waypoints[43].children[0] = 42;
/* 0:48 */waypoints[43].children[1] = 44;
/* 0:48 */waypoints[44] = spawnstruct();
/* 0:48 */waypoints[44].origin = (-382.993, 1695.68, -286.993);
/* 0:48 */waypoints[44].type = "stand";
/* 0:48 */waypoints[44].childCount = 5;
/* 0:48 */waypoints[44].children[0] = 43;
/* 0:48 */waypoints[44].children[1] = 45;
/* 0:48 */waypoints[44].children[2] = 46;
/* 0:48 */waypoints[44].children[3] = 119;
/* 0:48 */waypoints[44].children[4] = 120;
/* 0:48 */waypoints[45] = spawnstruct();
/* 0:48 */waypoints[45].origin = (-168.297, 1825.4, -290.875);
/* 0:48 */waypoints[45].type = "stand";
/* 0:48 */waypoints[45].childCount = 3;
/* 0:48 */waypoints[45].children[0] = 44;
/* 0:48 */waypoints[45].children[1] = 0;
/* 0:48 */waypoints[45].children[2] = 46;
/* 0:48 */waypoints[46] = spawnstruct();
/* 0:48 */waypoints[46].origin = (-89.693, 1677.63, -290.875);
/* 0:48 */waypoints[46].type = "stand";
/* 0:48 */waypoints[46].childCount = 5;
/* 0:48 */waypoints[46].children[0] = 45;
/* 0:48 */waypoints[46].children[1] = 47;
/* 0:48 */waypoints[46].children[2] = 44;
/* 0:48 */waypoints[46].children[3] = 48;
/* 0:48 */waypoints[46].children[4] = 120;
/* 0:48 */waypoints[47] = spawnstruct();
/* 0:48 */waypoints[47].origin = (114.637, 1707.08, -290.875);
/* 0:48 */waypoints[47].type = "stand";
/* 0:48 */waypoints[47].childCount = 2;
/* 0:48 */waypoints[47].children[0] = 46;
/* 0:48 */waypoints[47].children[1] = 1;
/* 0:48 */waypoints[48] = spawnstruct();
/* 0:48 */waypoints[48].origin = (-101.491, 1476.55, -290.875);
/* 0:48 */waypoints[48].type = "stand";
/* 0:48 */waypoints[48].childCount = 3;
/* 0:48 */waypoints[48].children[0] = 46;
/* 0:48 */waypoints[48].children[1] = 120;
/* 0:48 */waypoints[48].children[2] = 135;
/* 0:48 */waypoints[49] = spawnstruct();
/* 0:48 */waypoints[49].origin = (107.344, 1440.72, -290.875);
/* 0:48 */waypoints[49].type = "stand";
/* 0:48 */waypoints[49].childCount = 2;
/* 0:48 */waypoints[49].children[0] = 50;
/* 0:48 */waypoints[49].children[1] = 135;
/* 0:48 */waypoints[50] = spawnstruct();
/* 0:48 */waypoints[50].origin = (39.3621, 1200.41, -294.064);
/* 0:48 */waypoints[50].type = "stand";
/* 0:48 */waypoints[50].childCount = 6;
/* 0:48 */waypoints[50].children[0] = 49;
/* 0:48 */waypoints[50].children[1] = 51;
/* 0:48 */waypoints[50].children[2] = 52;
/* 0:48 */waypoints[50].children[3] = 109;
/* 0:48 */waypoints[50].children[4] = 110;
/* 0:48 */waypoints[50].children[5] = 135;
/* 0:48 */waypoints[51] = spawnstruct();
/* 0:48 */waypoints[51].origin = (258.337, 952.614, -312.547);
/* 0:48 */waypoints[51].type = "stand";
/* 0:48 */waypoints[51].childCount = 3;
/* 0:48 */waypoints[51].children[0] = 50;
/* 0:48 */waypoints[51].children[1] = 52;
/* 0:48 */waypoints[51].children[2] = 110;
/* 0:48 */waypoints[52] = spawnstruct();
/* 0:48 */waypoints[52].origin = (280.264, 1158.05, -310.61);
/* 0:48 */waypoints[52].type = "stand";
/* 0:48 */waypoints[52].childCount = 5;
/* 0:48 */waypoints[52].children[0] = 51;
/* 0:48 */waypoints[52].children[1] = 53;
/* 0:48 */waypoints[52].children[2] = 50;
/* 0:48 */waypoints[52].children[3] = 136;
/* 0:48 */waypoints[52].children[4] = 109;
/* 0:48 */waypoints[53] = spawnstruct();
/* 0:48 */waypoints[53].origin = (526.268, 1166.44, -310.556);
/* 0:48 */waypoints[53].type = "stand";
/* 0:48 */waypoints[53].childCount = 3;
/* 0:48 */waypoints[53].children[0] = 52;
/* 0:48 */waypoints[53].children[1] = 54;
/* 0:48 */waypoints[53].children[2] = 108;
/* 0:48 */waypoints[54] = spawnstruct();
/* 0:48 */waypoints[54].origin = (994.21, 1145.78, -262.875);
/* 0:48 */waypoints[54].type = "stand";
/* 0:48 */waypoints[54].childCount = 2;
/* 0:48 */waypoints[54].children[0] = 53;
/* 0:48 */waypoints[54].children[1] = 55;
/* 0:48 */waypoints[55] = spawnstruct();
/* 0:48 */waypoints[55].origin = (949.323, 933.281, -321.75);
/* 0:48 */waypoints[55].type = "stand";
/* 0:48 */waypoints[55].childCount = 3;
/* 0:48 */waypoints[55].children[0] = 54;
/* 0:48 */waypoints[55].children[1] = 56;
/* 0:48 */waypoints[55].children[2] = 108;
/* 0:48 */waypoints[56] = spawnstruct();
/* 0:48 */waypoints[56].origin = (1010.72, 809.411, -328.52);
/* 0:48 */waypoints[56].type = "stand";
/* 0:48 */waypoints[56].childCount = 4;
/* 0:48 */waypoints[56].children[0] = 55;
/* 0:48 */waypoints[56].children[1] = 57;
/* 0:48 */waypoints[56].children[2] = 12;
/* 0:48 */waypoints[56].children[3] = 81;
/* 0:48 */waypoints[57] = spawnstruct();
/* 0:48 */waypoints[57].origin = (1308.6, 753.461, -321.163);
/* 0:48 */waypoints[57].type = "stand";
/* 0:48 */waypoints[57].childCount = 3;
/* 0:48 */waypoints[57].children[0] = 56;
/* 0:48 */waypoints[57].children[1] = 12;
/* 0:48 */waypoints[57].children[2] = 58;
/* 0:48 */waypoints[58] = spawnstruct();
/* 0:48 */waypoints[58].origin = (1356.77, 997.187, -313.694);
/* 0:48 */waypoints[58].type = "stand";
/* 0:48 */waypoints[58].childCount = 2;
/* 0:48 */waypoints[58].children[0] = 57;
/* 0:48 */waypoints[58].children[1] = 59;
/* 0:48 */waypoints[59] = spawnstruct();
/* 0:48 */waypoints[59].origin = (1366.64, 1045.85, -311.667);
/* 0:48 */waypoints[59].type = "climb";
/* 0:48 */waypoints[59].childCount = 2;
/* 0:48 */waypoints[59].children[0] = 58;
/* 0:48 */waypoints[59].children[1] = 60;
/* 0:48 */waypoints[59].angles = (0.284424, 82.8207, 0);
/* 0:48 */waypoints[60] = spawnstruct();
/* 0:48 */waypoints[60].origin = (1371.74, 1061.79, -254.875);
/* 0:48 */waypoints[60].type = "climb";
/* 0:48 */waypoints[60].childCount = 2;
/* 0:48 */waypoints[60].children[0] = 59;
/* 0:48 */waypoints[60].children[1] = 61;
/* 0:48 */waypoints[60].angles = (5.55786, 82.6065, 0);
/* 0:48 */waypoints[61] = spawnstruct();
/* 0:48 */waypoints[61].origin = (1377.94, 1096, -254.875);
/* 0:48 */waypoints[61].type = "stand";
/* 0:48 */waypoints[61].childCount = 2;
/* 0:48 */waypoints[61].children[0] = 60;
/* 0:48 */waypoints[61].children[1] = 10;
/* 0:48 */waypoints[62] = spawnstruct();
/* 0:48 */waypoints[62].origin = (1714.13, 1296.49, -254.875);
/* 0:48 */waypoints[62].type = "stand";
/* 0:48 */waypoints[62].childCount = 1;
/* 0:48 */waypoints[62].children[0] = 9;
/* 0:48 */waypoints[63] = spawnstruct();
/* 0:48 */waypoints[63].origin = (1202.76, 1421.01, -254.875);
/* 0:48 */waypoints[63].type = "stand";
/* 0:48 */waypoints[63].childCount = 1;
/* 0:48 */waypoints[63].children[0] = 7;
/* 0:48 */waypoints[64] = spawnstruct();
/* 0:48 */waypoints[64].origin = (1355.06, 1907.43, -254.875);
/* 0:48 */waypoints[64].type = "stand";
/* 0:48 */waypoints[64].childCount = 2;
/* 0:48 */waypoints[64].children[0] = 6;
/* 0:48 */waypoints[64].children[1] = 65;
/* 0:48 */waypoints[65] = spawnstruct();
/* 0:48 */waypoints[65].origin = (1393.57, 2328.93, -254.875);
/* 0:48 */waypoints[65].type = "stand";
/* 0:48 */waypoints[65].childCount = 2;
/* 0:48 */waypoints[65].children[0] = 64;
/* 0:48 */waypoints[65].children[1] = 66;
/* 0:48 */waypoints[66] = spawnstruct();
/* 0:48 */waypoints[66].origin = (1170.13, 2381.39, -254.875);
/* 0:48 */waypoints[66].type = "stand";
/* 0:48 */waypoints[66].childCount = 3;
/* 0:48 */waypoints[66].children[0] = 65;
/* 0:48 */waypoints[66].children[1] = 67;
/* 0:48 */waypoints[66].children[2] = 72;
/* 0:48 */waypoints[67] = spawnstruct();
/* 0:48 */waypoints[67].origin = (1014.51, 2377.43, -254.875);
/* 0:48 */waypoints[67].type = "stand";
/* 0:48 */waypoints[67].childCount = 3;
/* 0:48 */waypoints[67].children[0] = 66;
/* 0:48 */waypoints[67].children[1] = 73;
/* 0:48 */waypoints[67].children[2] = 75;
/* 0:48 */waypoints[68] = spawnstruct();
/* 0:48 */waypoints[68].origin = (979.227, 2084.34, -254.875);
/* 0:48 */waypoints[68].type = "stand";
/* 0:48 */waypoints[68].childCount = 2;
/* 0:48 */waypoints[68].children[0] = 69;
/* 0:48 */waypoints[68].children[1] = 73;
/* 0:48 */waypoints[69] = spawnstruct();
/* 0:48 */waypoints[69].origin = (902.656, 2024.9, -254.875);
/* 0:48 */waypoints[69].type = "stand";
/* 0:48 */waypoints[69].childCount = 3;
/* 0:48 */waypoints[69].children[0] = 68;
/* 0:48 */waypoints[69].children[1] = 70;
/* 0:48 */waypoints[69].children[2] = 74;
/* 0:48 */waypoints[70] = spawnstruct();
/* 0:48 */waypoints[70].origin = (996.304, 1906.7, -254.875);
/* 0:48 */waypoints[70].type = "stand";
/* 0:48 */waypoints[70].childCount = 2;
/* 0:48 */waypoints[70].children[0] = 69;
/* 0:48 */waypoints[70].children[1] = 71;
/* 0:48 */waypoints[71] = spawnstruct();
/* 0:48 */waypoints[71].origin = (1139.33, 1889.9, -254.875);
/* 0:48 */waypoints[71].type = "stand";
/* 0:48 */waypoints[71].childCount = 3;
/* 0:48 */waypoints[71].children[0] = 70;
/* 0:48 */waypoints[71].children[1] = 72;
/* 0:48 */waypoints[71].children[2] = 5;
/* 0:48 */waypoints[72] = spawnstruct();
/* 0:48 */waypoints[72].origin = (1163.52, 2236.09, -254.875);
/* 0:48 */waypoints[72].type = "stand";
/* 0:48 */waypoints[72].childCount = 3;
/* 0:48 */waypoints[72].children[0] = 71;
/* 0:48 */waypoints[72].children[1] = 66;
/* 0:48 */waypoints[72].children[2] = 73;
/* 0:48 */waypoints[73] = spawnstruct();
/* 0:48 */waypoints[73].origin = (994.506, 2264.26, -254.875);
/* 0:48 */waypoints[73].type = "stand";
/* 0:48 */waypoints[73].childCount = 3;
/* 0:48 */waypoints[73].children[0] = 68;
/* 0:48 */waypoints[73].children[1] = 67;
/* 0:48 */waypoints[73].children[2] = 72;
/* 0:48 */waypoints[74] = spawnstruct();
/* 0:48 */waypoints[74].origin = (682.072, 2050.36, -251.554);
/* 0:48 */waypoints[74].type = "stand";
/* 0:48 */waypoints[74].childCount = 4;
/* 0:48 */waypoints[74].children[0] = 69;
/* 0:48 */waypoints[74].children[1] = 75;
/* 0:48 */waypoints[74].children[2] = 2;
/* 0:48 */waypoints[74].children[3] = 4;
/* 0:48 */waypoints[75] = spawnstruct();
/* 0:48 */waypoints[75].origin = (701.443, 2361.35, -254.875);
/* 0:48 */waypoints[75].type = "stand";
/* 0:48 */waypoints[75].childCount = 3;
/* 0:48 */waypoints[75].children[0] = 74;
/* 0:48 */waypoints[75].children[1] = 67;
/* 0:48 */waypoints[75].children[2] = 76;
/* 0:48 */waypoints[76] = spawnstruct();
/* 0:48 */waypoints[76].origin = (515.645, 2387.23, -254.875);
/* 0:48 */waypoints[76].type = "stand";
/* 0:48 */waypoints[76].childCount = 3;
/* 0:48 */waypoints[76].children[0] = 75;
/* 0:48 */waypoints[76].children[1] = 77;
/* 0:48 */waypoints[76].children[2] = 80;
/* 0:48 */waypoints[77] = spawnstruct();
/* 0:48 */waypoints[77].origin = (473.813, 2258.23, -254.875);
/* 0:48 */waypoints[77].type = "stand";
/* 0:48 */waypoints[77].childCount = 2;
/* 0:48 */waypoints[77].children[0] = 76;
/* 0:48 */waypoints[77].children[1] = 2;
/* 0:48 */waypoints[78] = spawnstruct();
/* 0:48 */waypoints[78].origin = (1525.34, 1407.82, -254.875);
/* 0:48 */waypoints[78].type = "stand";
/* 0:48 */waypoints[78].childCount = 1;
/* 0:48 */waypoints[78].children[0] = 9;
/* 0:48 */waypoints[79] = spawnstruct();
/* 0:48 */waypoints[79].origin = (451.671, 1655.78, -254.875);
/* 0:48 */waypoints[79].type = "stand";
/* 0:48 */waypoints[79].childCount = 1;
/* 0:48 */waypoints[79].children[0] = 3;
/* 0:48 */waypoints[80] = spawnstruct();
/* 0:48 */waypoints[80].origin = (490.071, 2487.04, -254.875);
/* 0:48 */waypoints[80].type = "stand";
/* 0:48 */waypoints[80].childCount = 1;
/* 0:48 */waypoints[80].children[0] = 76;
/* 0:48 */waypoints[81] = spawnstruct();
/* 0:48 */waypoints[81].origin = (913.091, 370.703, -387.799);
/* 0:48 */waypoints[81].type = "stand";
/* 0:48 */waypoints[81].childCount = 4;
/* 0:48 */waypoints[81].children[0] = 56;
/* 0:48 */waypoints[81].children[1] = 13;
/* 0:48 */waypoints[81].children[2] = 82;
/* 0:48 */waypoints[81].children[3] = 89;
/* 0:48 */waypoints[82] = spawnstruct();
/* 0:48 */waypoints[82].origin = (797.453, 371.782, -392.174);
/* 0:48 */waypoints[82].type = "stand";
/* 0:48 */waypoints[82].childCount = 4;
/* 0:48 */waypoints[82].children[0] = 81;
/* 0:48 */waypoints[82].children[1] = 83;
/* 0:48 */waypoints[82].children[2] = 85;
/* 0:48 */waypoints[82].children[3] = 88;
/* 0:48 */waypoints[83] = spawnstruct();
/* 0:48 */waypoints[83].origin = (856.362, 694.132, -375.049);
/* 0:48 */waypoints[83].type = "stand";
/* 0:48 */waypoints[83].childCount = 2;
/* 0:48 */waypoints[83].children[0] = 82;
/* 0:48 */waypoints[83].children[1] = 84;
/* 0:48 */waypoints[84] = spawnstruct();
/* 0:48 */waypoints[84].origin = (538.862, 742.707, -380.796);
/* 0:48 */waypoints[84].type = "stand";
/* 0:48 */waypoints[84].childCount = 2;
/* 0:48 */waypoints[84].children[0] = 83;
/* 0:48 */waypoints[84].children[1] = 85;
/* 0:48 */waypoints[85] = spawnstruct();
/* 0:48 */waypoints[85].origin = (500.164, 476.458, -387.518);
/* 0:48 */waypoints[85].type = "stand";
/* 0:48 */waypoints[85].childCount = 3;
/* 0:48 */waypoints[85].children[0] = 84;
/* 0:48 */waypoints[85].children[1] = 82;
/* 0:48 */waypoints[85].children[2] = 86;
/* 0:48 */waypoints[86] = spawnstruct();
/* 0:48 */waypoints[86].origin = (407.621, 398.096, -383.07);
/* 0:48 */waypoints[86].type = "stand";
/* 0:48 */waypoints[86].childCount = 2;
/* 0:48 */waypoints[86].children[0] = 85;
/* 0:48 */waypoints[86].children[1] = 87;
/* 0:48 */waypoints[87] = spawnstruct();
/* 0:48 */waypoints[87].origin = (508.517, 178.557, -396.049);
/* 0:48 */waypoints[87].type = "stand";
/* 0:48 */waypoints[87].childCount = 3;
/* 0:48 */waypoints[87].children[0] = 86;
/* 0:48 */waypoints[87].children[1] = 88;
/* 0:48 */waypoints[87].children[2] = 95;
/* 0:48 */waypoints[88] = spawnstruct();
/* 0:48 */waypoints[88].origin = (643.868, 200.858, -400.038);
/* 0:48 */waypoints[88].type = "stand";
/* 0:48 */waypoints[88].childCount = 4;
/* 0:48 */waypoints[88].children[0] = 87;
/* 0:48 */waypoints[88].children[1] = 82;
/* 0:48 */waypoints[88].children[2] = 89;
/* 0:48 */waypoints[88].children[3] = 90;
/* 0:48 */waypoints[89] = spawnstruct();
/* 0:48 */waypoints[89].origin = (894.341, 137.528, -402.816);
/* 0:48 */waypoints[89].type = "stand";
/* 0:48 */waypoints[89].childCount = 5;
/* 0:48 */waypoints[89].children[0] = 88;
/* 0:48 */waypoints[89].children[1] = 81;
/* 0:48 */waypoints[89].children[2] = 14;
/* 0:48 */waypoints[89].children[3] = 90;
/* 0:48 */waypoints[89].children[4] = 92;
/* 0:48 */waypoints[90] = spawnstruct();
/* 0:48 */waypoints[90].origin = (741.433, 80.7025, -400.823);
/* 0:48 */waypoints[90].type = "stand";
/* 0:48 */waypoints[90].childCount = 5;
/* 0:48 */waypoints[90].children[0] = 89;
/* 0:48 */waypoints[90].children[1] = 91;
/* 0:48 */waypoints[90].children[2] = 88;
/* 0:48 */waypoints[90].children[3] = 95;
/* 0:48 */waypoints[90].children[4] = 129;
/* 0:48 */waypoints[91] = spawnstruct();
/* 0:48 */waypoints[91].origin = (994.47, -194.488, -402.978);
/* 0:48 */waypoints[91].type = "stand";
/* 0:48 */waypoints[91].childCount = 4;
/* 0:48 */waypoints[91].children[0] = 90;
/* 0:48 */waypoints[91].children[1] = 92;
/* 0:48 */waypoints[91].children[2] = 17;
/* 0:48 */waypoints[91].children[3] = 93;
/* 0:48 */waypoints[92] = spawnstruct();
/* 0:48 */waypoints[92].origin = (1117.71, -99.9487, -401.085);
/* 0:48 */waypoints[92].type = "stand";
/* 0:48 */waypoints[92].childCount = 4;
/* 0:48 */waypoints[92].children[0] = 91;
/* 0:48 */waypoints[92].children[1] = 14;
/* 0:48 */waypoints[92].children[2] = 89;
/* 0:48 */waypoints[92].children[3] = 15;
/* 0:48 */waypoints[93] = spawnstruct();
/* 0:48 */waypoints[93].origin = (863.089, -314.854, -397.504);
/* 0:48 */waypoints[93].type = "stand";
/* 0:48 */waypoints[93].childCount = 6;
/* 0:48 */waypoints[93].children[0] = 91;
/* 0:48 */waypoints[93].children[1] = 94;
/* 0:48 */waypoints[93].children[2] = 18;
/* 0:48 */waypoints[93].children[3] = 17;
/* 0:48 */waypoints[93].children[4] = 128;
/* 0:48 */waypoints[93].children[5] = 129;
/* 0:48 */waypoints[94] = spawnstruct();
/* 0:48 */waypoints[94].origin = (587.945, -193.994, -394.219);
/* 0:48 */waypoints[94].type = "stand";
/* 0:48 */waypoints[94].childCount = 4;
/* 0:48 */waypoints[94].children[0] = 93;
/* 0:48 */waypoints[94].children[1] = 21;
/* 0:48 */waypoints[94].children[2] = 95;
/* 0:48 */waypoints[94].children[3] = 128;
/* 0:48 */waypoints[95] = spawnstruct();
/* 0:48 */waypoints[95].origin = (496.864, 30.3787, -395.699);
/* 0:48 */waypoints[95].type = "stand";
/* 0:48 */waypoints[95].childCount = 6;
/* 0:48 */waypoints[95].children[0] = 94;
/* 0:48 */waypoints[95].children[1] = 87;
/* 0:48 */waypoints[95].children[2] = 90;
/* 0:48 */waypoints[95].children[3] = 21;
/* 0:48 */waypoints[95].children[4] = 107;
/* 0:48 */waypoints[95].children[5] = 129;
/* 0:48 */waypoints[96] = spawnstruct();
/* 0:48 */waypoints[96].origin = (167.797, 177.289, -390.375);
/* 0:48 */waypoints[96].type = "stand";
/* 0:48 */waypoints[96].childCount = 2;
/* 0:48 */waypoints[96].children[0] = 22;
/* 0:48 */waypoints[96].children[1] = 24;
/* 0:48 */waypoints[97] = spawnstruct();
/* 0:48 */waypoints[97].origin = (-383.358, -92.625, -401.699);
/* 0:48 */waypoints[97].type = "climb";
/* 0:48 */waypoints[97].childCount = 2;
/* 0:48 */waypoints[97].children[0] = 28;
/* 0:48 */waypoints[97].children[1] = 98;
/* 0:48 */waypoints[97].angles = (1.11511, -65.4066, 0);
/* 0:48 */waypoints[98] = spawnstruct();
/* 0:48 */waypoints[98].origin = (-382.828, -93.9653, -179.875);
/* 0:48 */waypoints[98].type = "climb";
/* 0:48 */waypoints[98].childCount = 2;
/* 0:48 */waypoints[98].children[0] = 97;
/* 0:48 */waypoints[98].children[1] = 99;
/* 0:48 */waypoints[98].angles = (-6.50269, -63.3796, 0);
/* 0:48 */waypoints[99] = spawnstruct();
/* 0:48 */waypoints[99].origin = (-340.253, -163.489, -194.375);
/* 0:48 */waypoints[99].type = "stand";
/* 0:48 */waypoints[99].childCount = 2;
/* 0:48 */waypoints[99].children[0] = 98;
/* 0:48 */waypoints[99].children[1] = 100;
/* 0:48 */waypoints[100] = spawnstruct();
/* 0:48 */waypoints[100].origin = (-275.16, -140.512, -194.375);
/* 0:48 */waypoints[100].type = "stand";
/* 0:48 */waypoints[100].childCount = 2;
/* 0:48 */waypoints[100].children[0] = 99;
/* 0:48 */waypoints[100].children[1] = 101;
/* 0:48 */waypoints[101] = spawnstruct();
/* 0:48 */waypoints[101].origin = (-305.948, 98.6066, -194.375);
/* 0:48 */waypoints[101].type = "stand";
/* 0:48 */waypoints[101].childCount = 2;
/* 0:48 */waypoints[101].children[0] = 100;
/* 0:48 */waypoints[101].children[1] = 102;
/* 0:48 */waypoints[102] = spawnstruct();
/* 0:48 */waypoints[102].origin = (-122.798, 309.559, -194.375);
/* 0:48 */waypoints[102].type = "stand";
/* 0:48 */waypoints[102].childCount = 2;
/* 0:48 */waypoints[102].children[0] = 101;
/* 0:48 */waypoints[102].children[1] = 103;
/* 0:48 */waypoints[103] = spawnstruct();
/* 0:48 */waypoints[103].origin = (133.673, 380.693, -194.375);
/* 0:48 */waypoints[103].type = "stand";
/* 0:48 */waypoints[103].childCount = 2;
/* 0:48 */waypoints[103].children[0] = 102;
/* 0:48 */waypoints[103].children[1] = 104;
/* 0:48 */waypoints[104] = spawnstruct();
/* 0:48 */waypoints[104].origin = (325.663, 330.752, -194.375);
/* 0:48 */waypoints[104].type = "stand";
/* 0:48 */waypoints[104].childCount = 2;
/* 0:48 */waypoints[104].children[0] = 103;
/* 0:48 */waypoints[104].children[1] = 105;
/* 0:48 */waypoints[105] = spawnstruct();
/* 0:48 */waypoints[105].origin = (445.029, 167.173, -194.375);
/* 0:48 */waypoints[105].type = "stand";
/* 0:48 */waypoints[105].childCount = 2;
/* 0:48 */waypoints[105].children[0] = 104;
/* 0:48 */waypoints[105].children[1] = 106;
/* 0:48 */waypoints[106] = spawnstruct();
/* 0:48 */waypoints[106].origin = (468.042, 105.494, -179.875);
/* 0:48 */waypoints[106].type = "climb";
/* 0:48 */waypoints[106].childCount = 2;
/* 0:48 */waypoints[106].children[0] = 105;
/* 0:48 */waypoints[106].children[1] = 107;
/* 0:48 */waypoints[106].angles = (-1.026, 115.725, 0);
/* 0:48 */waypoints[107] = spawnstruct();
/* 0:48 */waypoints[107].origin = (471.229, 103.116, -395.515);
/* 0:48 */waypoints[107].type = "climb";
/* 0:48 */waypoints[107].childCount = 2;
/* 0:48 */waypoints[107].children[0] = 106;
/* 0:48 */waypoints[107].children[1] = 95;
/* 0:48 */waypoints[107].angles = (2.92908, 115.011, 0);
/* 0:48 */waypoints[108] = spawnstruct();
/* 0:48 */waypoints[108].origin = (642.994, 983.978, -317.816);
/* 0:48 */waypoints[108].type = "stand";
/* 0:48 */waypoints[108].childCount = 4;
/* 0:48 */waypoints[108].children[0] = 55;
/* 0:48 */waypoints[108].children[1] = 53;
/* 0:48 */waypoints[108].children[2] = 136;
/* 0:48 */waypoints[108].children[3] = 137;
/* 0:48 */waypoints[109] = spawnstruct();
/* 0:48 */waypoints[109].origin = (-243.877, 963.082, -283.192);
/* 0:48 */waypoints[109].type = "stand";
/* 0:48 */waypoints[109].childCount = 6;
/* 0:48 */waypoints[109].children[0] = 50;
/* 0:48 */waypoints[109].children[1] = 110;
/* 0:48 */waypoints[109].children[2] = 130;
/* 0:48 */waypoints[109].children[3] = 134;
/* 0:48 */waypoints[109].children[4] = 121;
/* 0:48 */waypoints[109].children[5] = 52;
/* 0:48 */waypoints[110] = spawnstruct();
/* 0:48 */waypoints[110].origin = (205.911, 883.668, -307.23);
/* 0:48 */waypoints[110].type = "stand";
/* 0:48 */waypoints[110].childCount = 4;
/* 0:48 */waypoints[110].children[0] = 109;
/* 0:48 */waypoints[110].children[1] = 51;
/* 0:48 */waypoints[110].children[2] = 111;
/* 0:48 */waypoints[110].children[3] = 50;
/* 0:48 */waypoints[111] = spawnstruct();
/* 0:48 */waypoints[111].origin = (-84.5282, 700.434, -344.46);
/* 0:48 */waypoints[111].type = "stand";
/* 0:48 */waypoints[111].childCount = 2;
/* 0:48 */waypoints[111].children[0] = 110;
/* 0:48 */waypoints[111].children[1] = 112;
/* 0:48 */waypoints[112] = spawnstruct();
/* 0:48 */waypoints[112].origin = (-115.248, 554.238, -371.893);
/* 0:48 */waypoints[112].type = "stand";
/* 0:48 */waypoints[112].childCount = 4;
/* 0:48 */waypoints[112].children[0] = 111;
/* 0:48 */waypoints[112].children[1] = 113;
/* 0:48 */waypoints[112].children[2] = 114;
/* 0:48 */waypoints[112].children[3] = 127;
/* 0:48 */waypoints[113] = spawnstruct();
/* 0:48 */waypoints[113].origin = (68.356, 381.081, -379.74);
/* 0:48 */waypoints[113].type = "stand";
/* 0:48 */waypoints[113].childCount = 2;
/* 0:48 */waypoints[113].children[0] = 112;
/* 0:48 */waypoints[113].children[1] = 25;
/* 0:48 */waypoints[114] = spawnstruct();
/* 0:48 */waypoints[114].origin = (-370.804, 550.571, -384.103);
/* 0:48 */waypoints[114].type = "stand";
/* 0:48 */waypoints[114].childCount = 3;
/* 0:48 */waypoints[114].children[0] = 112;
/* 0:48 */waypoints[114].children[1] = 115;
/* 0:48 */waypoints[114].children[2] = 118;
/* 0:48 */waypoints[115] = spawnstruct();
/* 0:48 */waypoints[115].origin = (-622.699, 491.826, -399.676);
/* 0:48 */waypoints[115].type = "stand";
/* 0:48 */waypoints[115].childCount = 2;
/* 0:48 */waypoints[115].children[0] = 114;
/* 0:48 */waypoints[115].children[1] = 116;
/* 0:48 */waypoints[116] = spawnstruct();
/* 0:48 */waypoints[116].origin = (-636.888, 301.869, -417.383);
/* 0:48 */waypoints[116].type = "stand";
/* 0:48 */waypoints[116].childCount = 6;
/* 0:48 */waypoints[116].children[0] = 115;
/* 0:48 */waypoints[116].children[1] = 32;
/* 0:48 */waypoints[116].children[2] = 26;
/* 0:48 */waypoints[116].children[3] = 118;
/* 0:48 */waypoints[116].children[4] = 25;
/* 0:48 */waypoints[116].children[5] = 33;
/* 0:48 */waypoints[117] = spawnstruct();
/* 0:48 */waypoints[117].origin = (-636.804, 44.4847, -413.49);
/* 0:48 */waypoints[117].type = "stand";
/* 0:48 */waypoints[117].childCount = 5;
/* 0:48 */waypoints[117].children[0] = 29;
/* 0:48 */waypoints[117].children[1] = 32;
/* 0:48 */waypoints[117].children[2] = 118;
/* 0:48 */waypoints[117].children[3] = 30;
/* 0:48 */waypoints[117].children[4] = 26;
/* 0:48 */waypoints[118] = spawnstruct();
/* 0:48 */waypoints[118].origin = (-404.56, 334.421, -403.183);
/* 0:48 */waypoints[118].type = "stand";
/* 0:48 */waypoints[118].childCount = 5;
/* 0:48 */waypoints[118].children[0] = 117;
/* 0:48 */waypoints[118].children[1] = 25;
/* 0:48 */waypoints[118].children[2] = 116;
/* 0:48 */waypoints[118].children[3] = 114;
/* 0:48 */waypoints[118].children[4] = 127;
/* 0:48 */waypoints[119] = spawnstruct();
/* 0:48 */waypoints[119].origin = (-423.306, 1480.43, -275.509);
/* 0:48 */waypoints[119].type = "stand";
/* 0:48 */waypoints[119].childCount = 5;
/* 0:48 */waypoints[119].children[0] = 44;
/* 0:48 */waypoints[119].children[1] = 120;
/* 0:48 */waypoints[119].children[2] = 121;
/* 0:48 */waypoints[119].children[3] = 122;
/* 0:48 */waypoints[119].children[4] = 123;
/* 0:48 */waypoints[120] = spawnstruct();
/* 0:48 */waypoints[120].origin = (-206.077, 1495.28, -290.875);
/* 0:48 */waypoints[120].type = "stand";
/* 0:48 */waypoints[120].childCount = 5;
/* 0:48 */waypoints[120].children[0] = 119;
/* 0:48 */waypoints[120].children[1] = 48;
/* 0:48 */waypoints[120].children[2] = 46;
/* 0:48 */waypoints[120].children[3] = 121;
/* 0:48 */waypoints[120].children[4] = 44;
/* 0:48 */waypoints[121] = spawnstruct();
/* 0:48 */waypoints[121].origin = (-434.805, 1124.8, -295.25);
/* 0:48 */waypoints[121].type = "stand";
/* 0:48 */waypoints[121].childCount = 6;
/* 0:48 */waypoints[121].children[0] = 120;
/* 0:48 */waypoints[121].children[1] = 119;
/* 0:48 */waypoints[121].children[2] = 109;
/* 0:48 */waypoints[121].children[3] = 134;
/* 0:48 */waypoints[121].children[4] = 123;
/* 0:48 */waypoints[121].children[5] = 133;
/* 0:48 */waypoints[122] = spawnstruct();
/* 0:48 */waypoints[122].origin = (-831.922, 1428.51, -258.958);
/* 0:48 */waypoints[122].type = "stand";
/* 0:48 */waypoints[122].childCount = 2;
/* 0:48 */waypoints[122].children[0] = 119;
/* 0:48 */waypoints[122].children[1] = 123;
/* 0:48 */waypoints[123] = spawnstruct();
/* 0:48 */waypoints[123].origin = (-739.076, 1099.4, -362.637);
/* 0:48 */waypoints[123].type = "stand";
/* 0:48 */waypoints[123].childCount = 6;
/* 0:48 */waypoints[123].children[0] = 122;
/* 0:48 */waypoints[123].children[1] = 124;
/* 0:48 */waypoints[123].children[2] = 133;
/* 0:48 */waypoints[123].children[3] = 121;
/* 0:48 */waypoints[123].children[4] = 119;
/* 0:48 */waypoints[123].children[5] = 134;
/* 0:48 */waypoints[124] = spawnstruct();
/* 0:48 */waypoints[124].origin = (-948.116, 1043.17, -423.777);
/* 0:48 */waypoints[124].type = "stand";
/* 0:48 */waypoints[124].childCount = 3;
/* 0:48 */waypoints[124].children[0] = 123;
/* 0:48 */waypoints[124].children[1] = 35;
/* 0:48 */waypoints[124].children[2] = 126;
/* 0:48 */waypoints[125] = spawnstruct();
/* 0:48 */waypoints[125].origin = (-1231.56, 1184.14, -435.875);
/* 0:48 */waypoints[125].type = "stand";
/* 0:48 */waypoints[125].childCount = 2;
/* 0:48 */waypoints[125].children[0] = 35;
/* 0:48 */waypoints[125].children[1] = 39;
/* 0:48 */waypoints[126] = spawnstruct();
/* 0:48 */waypoints[126].origin = (-1034.11, 1238.07, -427.875);
/* 0:48 */waypoints[126].type = "stand";
/* 0:48 */waypoints[126].childCount = 2;
/* 0:48 */waypoints[126].children[0] = 40;
/* 0:48 */waypoints[126].children[1] = 124;
/* 0:48 */waypoints[127] = spawnstruct();
/* 0:48 */waypoints[127].origin = (-155.102, 413.338, -393.544);
/* 0:48 */waypoints[127].type = "stand";
/* 0:48 */waypoints[127].childCount = 3;
/* 0:48 */waypoints[127].children[0] = 118;
/* 0:48 */waypoints[127].children[1] = 112;
/* 0:48 */waypoints[127].children[2] = 25;
/* 0:48 */waypoints[128] = spawnstruct();
/* 0:48 */waypoints[128].origin = (658.248, -367.854, -394.062);
/* 0:48 */waypoints[128].type = "stand";
/* 0:48 */waypoints[128].childCount = 4;
/* 0:48 */waypoints[128].children[0] = 20;
/* 0:48 */waypoints[128].children[1] = 94;
/* 0:48 */waypoints[128].children[2] = 18;
/* 0:48 */waypoints[128].children[3] = 93;
/* 0:48 */waypoints[129] = spawnstruct();
/* 0:48 */waypoints[129].origin = (663.152, -20.8519, -397.814);
/* 0:48 */waypoints[129].type = "stand";
/* 0:48 */waypoints[129].childCount = 3;
/* 0:48 */waypoints[129].children[0] = 93;
/* 0:48 */waypoints[129].children[1] = 90;
/* 0:48 */waypoints[129].children[2] = 95;
/* 0:48 */waypoints[130] = spawnstruct();
/* 0:48 */waypoints[130].origin = (-294.536, 678.959, -279.34);
/* 0:48 */waypoints[130].type = "stand";
/* 0:48 */waypoints[130].childCount = 2;
/* 0:48 */waypoints[130].children[0] = 109;
/* 0:48 */waypoints[130].children[1] = 131;
/* 0:48 */waypoints[131] = spawnstruct();
/* 0:48 */waypoints[131].origin = (-433.7, 636.783, -278.302);
/* 0:48 */waypoints[131].type = "stand";
/* 0:48 */waypoints[131].childCount = 3;
/* 0:48 */waypoints[131].children[0] = 130;
/* 0:48 */waypoints[131].children[1] = 132;
/* 0:48 */waypoints[131].children[2] = 134;
/* 0:48 */waypoints[132] = spawnstruct();
/* 0:48 */waypoints[132].origin = (-617.004, 606.418, -272.533);
/* 0:48 */waypoints[132].type = "stand";
/* 0:48 */waypoints[132].childCount = 2;
/* 0:48 */waypoints[132].children[0] = 131;
/* 0:48 */waypoints[132].children[1] = 133;
/* 0:48 */waypoints[133] = spawnstruct();
/* 0:48 */waypoints[133].origin = (-662.596, 900.245, -292.093);
/* 0:48 */waypoints[133].type = "stand";
/* 0:48 */waypoints[133].childCount = 4;
/* 0:48 */waypoints[133].children[0] = 132;
/* 0:48 */waypoints[133].children[1] = 123;
/* 0:48 */waypoints[133].children[2] = 134;
/* 0:48 */waypoints[133].children[3] = 121;
/* 0:48 */waypoints[134] = spawnstruct();
/* 0:48 */waypoints[134].origin = (-453.665, 953.718, -282.675);
/* 0:48 */waypoints[134].type = "stand";
/* 0:48 */waypoints[134].childCount = 5;
/* 0:48 */waypoints[134].children[0] = 133;
/* 0:48 */waypoints[134].children[1] = 109;
/* 0:48 */waypoints[134].children[2] = 121;
/* 0:48 */waypoints[134].children[3] = 131;
/* 0:48 */waypoints[134].children[4] = 123;
/* 0:48 */waypoints[135] = spawnstruct();
/* 0:48 */waypoints[135].origin = (-23.1219, 1462.42, -290.875);
/* 0:48 */waypoints[135].type = "stand";
/* 0:48 */waypoints[135].childCount = 3;
/* 0:48 */waypoints[135].children[0] = 50;
/* 0:48 */waypoints[135].children[1] = 48;
/* 0:48 */waypoints[135].children[2] = 49;
/* 0:48 */waypoints[136] = spawnstruct();
/* 0:48 */waypoints[136].origin = (444.563, 995.776, -317.715);
/* 0:48 */waypoints[136].type = "stand";
/* 0:48 */waypoints[136].childCount = 3;
/* 0:48 */waypoints[136].children[0] = 108;
/* 0:48 */waypoints[136].children[1] = 52;
/* 0:48 */waypoints[136].children[2] = 137;
/* 0:48 */waypoints[137] = spawnstruct();
/* 0:48 */waypoints[137].origin = (618.363, 856.493, -314.043);
/* 0:48 */waypoints[137].type = "stand";
/* 0:48 */waypoints[137].childCount = 2;
/* 0:48 */waypoints[137].children[0] = 108;
/* 0:48 */waypoints[137].children[1] = 136;
/* 0:48 */return waypoints;
}

View File

@ -5,7 +5,8 @@ init()
{
level thread onPlayerConnect();
level thread maps\mp\bots\_bot::init();
//level thread maps\mp\bots\_bot::init();
level thread maps\mp\bots\_wp_editor::init();
}
onPlayerConnect()

View File

@ -1,28 +0,0 @@
game:onplayerdamage(function(_self, inflictor, attacker, damage, dflags, mod, weapon, point, dir, hitloc)
if (game:isplayer(attacker) ~= 1 or _self.sessionteam == attacker.sessionteam or _self == attacker) then
return
end
local huddamage = game:newclienthudelem(attacker)
huddamage.alignx = "center"
huddamage.horzalign = "center"
huddamage.x = 10
huddamage.y = 235
huddamage.fontscale = 1.6
huddamage.font = "objective"
huddamage:setvalue(damage)
if (hitloc == "head") then
huddamage.color = vector:new(1, 1, 0.25)
end
huddamage:moveovertime(1)
huddamage:fadeovertime(1)
huddamage.alpha = 0
huddamage.x = math.random(25, 70)
huddamage.y = 235 + math.random(25, 70) * (math.random(0, 1) == 1 and -1 or 1)
game:ontimeout(function()
huddamage:destroy()
end, 1000)
end)

View File

@ -1,24 +0,0 @@
init()
{
level thread onConnect();
}
onConnect()
{
for (;;)
{
level waittill("connected", player);
player thread connected();
}
}
connected()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
}
}

View File

@ -1,23 +0,0 @@
level:onnotify("connected", function(player)
print("Player connected: " .. player.name)
local onframe = game:oninterval(function()
if game:isalive(player) == 0 or not player:getguid():find("^bot") then
return
end
game:setdvar("bot" .. player:getentitynumber() .. "_buttons", game:randomintrange(0, 16384))
game:setdvar("bot" .. player:getentitynumber() .. "_movement", game:randomintrange(-127, 127) .. " " .. game:randomintrange(-127, 127))
game:setdvar("bot" .. player:getentitynumber() .. "_ping", game:randomintrange(0, 999))
local weapons = player:getweaponslistall()
game:setdvar("bot" .. player:getentitynumber() .. "_weapon", weapons[1 + game:randomint(weapons.getkeys():size())])
player:setplayerangles(vector:new(game:randomfloatrange(-180, 180), game:randomfloatrange(-180, 180), 0))
end, 50)
player:onnotifyonce("disconnect", function()
onframe:clear()
end)
end)