Compare commits

...
8 Commits
Author SHA1 Message Date
ineed bots 94bf78b364 speedball wps 2026-08-19 14:12:39 -06:00
ineed bots 171d9e8e90 reenable 2026-08-19 13:12:08 -06:00
ineed bots 9c647cbe79 better controls 2026-08-19 13:10:38 -06:00
ineed bots c6c87aabca cod2ism 2026-08-19 12:25:27 -06:00
ineed bots 538bb3f790 complete menu 2026-08-19 11:51:56 -06:00
ineed bots 6afd9b56df a bit more space 2026-08-19 11:37:59 -06:00
ineed bots 956f3fafde a working menu 2026-08-19 10:57:56 -06:00
ineed bots a090088ab4 setpoint 2026-08-19 10:36:45 -06:00
5 changed files with 483 additions and 275 deletions
+1
View File
@@ -11,5 +11,6 @@
"comments": true,
"strings": true
},
"editor.wordBasedSuggestions": "allDocuments",
"vscode-codscript.use_builtin_completionItems": false
}
-1
View File
@@ -4,5 +4,4 @@ Bot Warfare for CoD2, in progress...
TODO:
- _bot_script
- _menu
- _bot_chat
+341 -273
View File
@@ -8,53 +8,6 @@
#include maps\mp\_utility;
#include maps\mp\bots\_bot_utility;
secondaryoffhandbuttonpressed()
{
return getcvarint( "smoke" );
}
fragbuttonpressed()
{
return getcvarint( "frag" );
}
adsbuttonpressed()
{
return getcvarint( "speed" ) || self playerads() > 0.05;
}
setparent( parent )
{
}
setpoint(a, b, x, y)
{
}
createfontstring( font, fontScale )
{
fontElem = newclienthudelem( self );
fontElem.elemType = "font";
fontElem.font = font;
fontElem.fontscale = fontScale;
fontElem.x = 0;
fontElem.y = 0;
fontElem.width = 0;
fontElem.height = int( 12 * fontScale );
fontElem.xOffset = 0;
fontElem.yOffset = 0;
fontElem.children = [];
fontElem setparent( level.uiparent );
fontElem.hidden = false;
return fontElem;
}
destroyelem()
{
}
init()
{
if ( getcvar( "bots_main_menu" ) == "" )
@@ -68,6 +21,45 @@ init()
}
precacheshader( "white" );
precachestring( &"Bot Warfare" );
precachestring( &"Toggle bots can ads" );
precachestring( &"Toggle bots can jump and dropshot" );
precachestring( &"Toggle bots can camp" );
precachestring( &"Toggle bots play the objective" );
precachestring( &"Toggle bots can nade" );
precachestring( &"Toggle bots can fire" );
precachestring( &"Toggle bots can knife" );
precachestring( &"Toggle bots can move" );
precachestring( &"Bot settings" );
precachestring( &"Decrease amount of med bots on allies team" );
precachestring( &"Increase amount of med bots on allies team" );
precachestring( &"Decrease amount of hard bots on allies team" );
precachestring( &"Increase amount of hard bots on allies team" );
precachestring( &"Decrease amount of med bots on axis team" );
precachestring( &"Increase amount of med bots on axis team" );
precachestring( &"Decrease amount of hard bots on axis team" );
precachestring( &"Increase amount of hard bots on axis team" );
precachestring( &"Change bot difficulty" );
precachestring( &"Toggle bot_team_bot" );
precachestring( &"Toggle forcing bots on team" );
precachestring( &"Decrease bots to be on axis team" );
precachestring( &"Increase bots to be on axis team" );
precachestring( &"Change bot team" );
precachestring( &"Teams and difficulty" );
precachestring( &"Toggle count players for fill on spectator" );
precachestring( &"Decrease bots to keep in-game" );
precachestring( &"Increase bots to keep in-game" );
precachestring( &"Change bot_fill_mode" );
precachestring( &"Toggle auto bot kicking" );
precachestring( &"Kick all bots" );
precachestring( &"Kick a bot" );
precachestring( &"Add 17 bot" );
precachestring( &"Add 11 bot" );
precachestring( &"Add 7 bot" );
precachestring( &"Add 3 bot" );
precachestring( &"Add 1 bot" );
precachestring( &"Manage bots" );
thread watchPlayers();
}
@@ -120,47 +112,6 @@ init_menu()
self thread doGreetings();
}
destroyFixed()
{
if ( !isdefined( self ) )
{
return;
}
self destroy();
}
removeChildFixed( element )
{
temp = [];
for ( i = 0; i < self.children.size ; i++ )
{
if ( isdefined( self.children[ i ] ) && self.children[ i ] != element )
{
self.children[ i ].index = temp.size;
temp[ temp.size ] = self.children[ i ];
}
}
self.children = temp;
}
destroyElemFixed()
{
if ( !isdefined( self ) )
{
return;
}
if ( isdefined( self.parent ) )
{
self.parent removeChildFixed( self );
}
self destroyelem();
}
kill_menu()
{
self notify( "bots_kill_menu" );
@@ -179,7 +130,7 @@ watchDisconnect()
{
if ( isdefined( self.menutexty[ i ] ) )
{
self.menutexty[ i ] destroyElemFixed();
self.menutexty[ i ] destroy();
}
}
}
@@ -190,7 +141,7 @@ watchDisconnect()
{
if ( isdefined( self.menutext[ i ] ) )
{
self.menutext[ i ] destroyElemFixed();
self.menutext[ i ] destroy();
}
}
}
@@ -199,18 +150,18 @@ watchDisconnect()
{
if ( isdefined( self.menu[ "X" ][ "Shader" ] ) )
{
self.menu[ "X" ][ "Shader" ] destroyElemFixed();
self.menu[ "X" ][ "Shader" ] destroy();
}
if ( isdefined( self.menu[ "X" ][ "Scroller" ] ) )
{
self.menu[ "X" ][ "Scroller" ] destroyElemFixed();
self.menu[ "X" ][ "Scroller" ] destroy();
}
}
if ( isdefined( self.menuversionhud ) )
{
self.menuversionhud destroyFixed();
self.menuversionhud destroy();
}
}
}
@@ -222,7 +173,7 @@ doGreetings()
wait 1;
self iprintln( "Welcome to Bot Warfare " + self.name + "!" );
wait 5;
self iprintln( "Press [{+frag}] + [{+smoke}] to open menu!" );
self iprintln( "Press [{+attack}] + [{+activate}] + [{+melee_breath}] to open menu!" );
}
watchPlayerOpenMenu()
@@ -232,7 +183,7 @@ watchPlayerOpenMenu()
for ( ;; )
{
while ( !self fragbuttonpressed() || !self secondaryoffhandbuttonpressed() )
while ( !self attackbuttonpressed() || !self meleebuttonpressed() || !self usebuttonpressed() )
{
wait 0.05;
}
@@ -265,7 +216,7 @@ watchPlayerOpenMenu()
}
}
while ( self fragbuttonpressed() && self secondaryoffhandbuttonpressed() )
while ( self attackbuttonpressed() && self meleebuttonpressed() && self usebuttonpressed() )
{
wait 0.05;
}
@@ -284,17 +235,20 @@ MenuSelect()
wait 0.05;
}
if ( self.menuopen )
if ( !self attackbuttonpressed() && !self usebuttonpressed() )
{
self playlocalsound( "mouse_click" );
if ( self.submenu == "Main" )
if ( self.menuopen )
{
self thread [[ self.option[ "Function" ][ self.submenu ][ self.curs[ "Main" ][ "X" ] ] ]]( self.option[ "Arg1" ][ self.submenu ][ self.curs[ "Main" ][ "X" ] ], self.option[ "Arg2" ][ self.submenu ][ self.curs[ "Main" ][ "X" ] ] );
}
else
{
self thread [[ self.option[ "Function" ][ self.submenu ][ self.curs[ self.submenu ][ "Y" ] ] ]]( self.option[ "Arg1" ][ self.submenu ][ self.curs[ self.submenu ][ "Y" ] ], self.option[ "Arg2" ][ self.submenu ][ self.curs[ self.submenu ][ "Y" ] ] );
self playlocalsound( "mouse_click" );
if ( self.submenu == "Main" )
{
self thread [[ self.option[ "Function" ][ self.submenu ][ self.curs[ "Main" ][ "X" ] ] ]]( self.option[ "Arg1" ][ self.submenu ][ self.curs[ "Main" ][ "X" ] ], self.option[ "Arg2" ][ self.submenu ][ self.curs[ "Main" ][ "X" ] ] );
}
else
{
self thread [[ self.option[ "Function" ][ self.submenu ][ self.curs[ self.submenu ][ "Y" ] ] ]]( self.option[ "Arg1" ][ self.submenu ][ self.curs[ self.submenu ][ "Y" ] ], self.option[ "Arg2" ][ self.submenu ][ self.curs[ self.submenu ][ "Y" ] ] );
}
}
}
@@ -317,31 +271,34 @@ LeftMenu()
wait 0.05;
}
if ( self.menuopen )
if ( !self meleebuttonpressed() && !self usebuttonpressed() )
{
self playlocalsound( "mouse_over" );
if ( self.submenu == "Main" )
if ( self.menuopen )
{
self.curs[ "Main" ][ "X" ]--;
self playlocalsound( "mouse_over" );
if ( self.curs[ "Main" ][ "X" ] < 0 )
if ( self.submenu == "Main" )
{
self.curs[ "Main" ][ "X" ] = self.option[ "Name" ][ self.submenu ].size - 1;
self.curs[ "Main" ][ "X" ]--;
if ( self.curs[ "Main" ][ "X" ] < 0 )
{
self.curs[ "Main" ][ "X" ] = self.option[ "Name" ][ self.submenu ].size - 1;
}
self CursMove( "X" );
}
self CursMove( "X" );
}
else
{
self.curs[ self.submenu ][ "Y" ]--;
if ( self.curs[ self.submenu ][ "Y" ] < 0 )
else
{
self.curs[ self.submenu ][ "Y" ] = self.option[ "Name" ][ self.submenu ].size - 1;
self.curs[ self.submenu ][ "Y" ]--;
if ( self.curs[ self.submenu ][ "Y" ] < 0 )
{
self.curs[ self.submenu ][ "Y" ] = self.option[ "Name" ][ self.submenu ].size - 1;
}
self CursMove( "Y" );
}
self CursMove( "Y" );
}
}
@@ -359,40 +316,43 @@ RightMenu()
for ( ;; )
{
while ( !self adsbuttonpressed() )
while ( !self usebuttonpressed() )
{
wait 0.05;
}
if ( self.menuopen )
if ( !self attackbuttonpressed() && !self meleebuttonpressed() )
{
self playlocalsound( "mouse_over" );
if ( self.submenu == "Main" )
if ( self.menuopen )
{
self.curs[ "Main" ][ "X" ]++;
self playlocalsound( "mouse_over" );
if ( self.curs[ "Main" ][ "X" ] > self.option[ "Name" ][ self.submenu ].size - 1 )
if ( self.submenu == "Main" )
{
self.curs[ "Main" ][ "X" ] = 0;
self.curs[ "Main" ][ "X" ]++;
if ( self.curs[ "Main" ][ "X" ] > self.option[ "Name" ][ self.submenu ].size - 1 )
{
self.curs[ "Main" ][ "X" ] = 0;
}
self CursMove( "X" );
}
self CursMove( "X" );
}
else
{
self.curs[ self.submenu ][ "Y" ]++;
if ( self.curs[ self.submenu ][ "Y" ] > self.option[ "Name" ][ self.submenu ].size - 1 )
else
{
self.curs[ self.submenu ][ "Y" ] = 0;
self.curs[ self.submenu ][ "Y" ]++;
if ( self.curs[ self.submenu ][ "Y" ] > self.option[ "Name" ][ self.submenu ].size - 1 )
{
self.curs[ self.submenu ][ "Y" ] = 0;
}
self CursMove( "Y" );
}
self CursMove( "Y" );
}
}
while ( self adsbuttonpressed() )
while ( self usebuttonpressed() )
{
wait 0.05;
}
@@ -418,7 +378,7 @@ OpenSub( menu, menu2 )
{
if ( isdefined( self.menutext[ i ] ) )
{
self.menutext[ i ] destroyElemFixed();
self.menutext[ i ] destroy();
}
}
}
@@ -427,36 +387,36 @@ OpenSub( menu, menu2 )
{
if ( isdefined( self.menu[ "X" ][ "Shader" ] ) )
{
self.menu[ "X" ][ "Shader" ] destroyElemFixed();
self.menu[ "X" ][ "Shader" ] destroy();
}
if ( isdefined( self.menu[ "X" ][ "Scroller" ] ) )
{
self.menu[ "X" ][ "Scroller" ] destroyElemFixed();
self.menu[ "X" ][ "Scroller" ] destroy();
}
}
if ( isdefined( self.menuversionhud ) )
{
self.menuversionhud destroyFixed();
self.menuversionhud destroy();
}
for ( i = 0 ; i < self.option[ "Name" ][ self.submenu ].size ; i++ )
{
self.menutext[ i ] = self createfontstring( "default", 1.6 );
self.menutext[ i ] setpoint( "CENTER", "CENTER", -300 + ( i * 100 ), -226 );
// self.menutext[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
self.menutext[ i ] setpoint( "CENTER", "CENTER", -300 + ( i * 150 ), -226 );
self.menutext[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
if ( logOldi )
{
self.oldi = i;
}
if ( self.menutext[ i ].x > 300 )
if ( self.menutext[ i ].x > 450 )
{
logOldi = false;
x = i - self.oldi;
self.menutext[ i ] setpoint( "CENTER", "CENTER", ( ( ( -300 ) - ( i * 100 ) ) + ( i * 100 ) ) + ( x * 100 ), -196 );
self.menutext[ i ] setpoint( "CENTER", "CENTER", ( ( ( -300 ) - ( i * 150 ) ) + ( i * 150 ) ) + ( x * 150 ), -196 );
}
self.menutext[ i ].alpha = 1;
@@ -476,7 +436,7 @@ OpenSub( menu, menu2 )
self CursMove( "X" );
self.menuversionhud = initHudElem( "Bot Warfare " + level.bw_version, 0, 0 );
self.menuversionhud = initHudElem( &"Bot Warfare", 0, 0 );
self.menuopen = true;
}
@@ -488,7 +448,7 @@ OpenSub( menu, menu2 )
{
if ( isdefined( self.menutexty[ i ] ) )
{
self.menutexty[ i ] destroyElemFixed();
self.menutexty[ i ] destroy();
}
}
}
@@ -497,7 +457,7 @@ OpenSub( menu, menu2 )
{
self.menutexty[ i ] = self createfontstring( "default", 1.6 );
self.menutexty[ i ] setpoint( "CENTER", "CENTER", self.menutext[ self.curs[ "Main" ][ "X" ] ].x, -160 + ( i * 20 ) );
//self.menutexty[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
self.menutexty[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
self.menutexty[ i ].alpha = 1;
self.menutexty[ i ].sort = 999;
}
@@ -606,7 +566,7 @@ ShowOptionOn( variable )
{
if ( isdefined( self.menutext[ i ] ) )
{
// self.menutext[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
self.menutext[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
}
}
}
@@ -633,7 +593,7 @@ ShowOptionOn( variable )
{
if ( isdefined( self.menutexty[ i ] ) )
{
//self.menutexty[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
self.menutexty[ i ] settext( self.option[ "Name" ][ self.submenu ][ i ] );
}
}
}
@@ -664,7 +624,7 @@ ExitSub()
{
if ( isdefined( self.menutexty[ i ] ) )
{
self.menutexty[ i ] destroyElemFixed();
self.menutexty[ i ] destroy();
}
}
}
@@ -689,7 +649,7 @@ ExitMenu()
{
if ( isdefined( self.menutext[ i ] ) )
{
self.menutext[ i ] destroyElemFixed();
self.menutext[ i ] destroy();
}
}
}
@@ -698,18 +658,18 @@ ExitMenu()
{
if ( isdefined( self.menu[ "X" ][ "Shader" ] ) )
{
self.menu[ "X" ][ "Shader" ] destroyElemFixed();
self.menu[ "X" ][ "Shader" ] destroy();
}
if ( isdefined( self.menu[ "X" ][ "Scroller" ] ) )
{
self.menu[ "X" ][ "Scroller" ] destroyElemFixed();
self.menu[ "X" ][ "Scroller" ] destroy();
}
}
if ( isdefined( self.menuversionhud ) )
{
self.menuversionhud destroyFixed();
self.menuversionhud destroy();
}
self.menuopen = false;
@@ -719,10 +679,192 @@ ExitMenu()
self setclientcvar( "sc_blur", "2" );
}
setpoint( point, relativePoint, xOffset, yOffset, moveTime )
{
if ( !isdefined( moveTime ) )
{
moveTime = 0;
}
if ( moveTime )
{
self moveovertime( moveTime );
}
if ( !isdefined( xOffset ) )
{
xOffset = 0;
}
self.xOffset = xOffset;
if ( !isdefined( yOffset ) )
{
yOffset = 0;
}
self.yOffset = yOffset;
self.point = point;
self.alignX = "center";
self.alignY = "middle";
if ( issubstr( point, "TOP" ) )
{
self.alignY = "top";
}
if ( issubstr( point, "BOTTOM" ) )
{
self.alignY = "bottom";
}
if ( issubstr( point, "LEFT" ) )
{
self.alignX = "left";
}
if ( issubstr( point, "RIGHT" ) )
{
self.alignX = "right";
}
if ( !isdefined( relativePoint ) )
{
relativePoint = point;
}
self.relativePoint = relativePoint;
relativeX = "center";
relativeY = "middle";
if ( issubstr( relativePoint, "TOP" ) )
{
relativeY = "top";
}
if ( issubstr( relativePoint, "BOTTOM" ) )
{
relativeY = "bottom";
}
if ( issubstr( relativePoint, "LEFT" ) )
{
relativeX = "left";
}
if ( issubstr( relativePoint, "RIGHT" ) )
{
relativeX = "right";
}
self.horzAlign = relativeX;
self.vertAlign = relativeY;
element = spawnstruct();
element.horzAlign = "left";
element.vertAlign = "top";
element.alignX = "left";
element.alignY = "top";
element.x = 0;
element.y = 0;
element.width = 0;
element.height = 0;
if ( relativeX == element.alignX )
{
offsetX = 0;
xFactor = 0;
}
else if ( relativeX == "center" || element.alignX == "center" )
{
offsetX = int( element.width / 2 );
if ( relativeX == "left" || element.alignX == "right" )
{
xFactor = -1;
}
else
{
xFactor = 1;
}
}
else
{
offsetX = element.width;
if ( relativeX == "left" )
{
xFactor = -1;
}
else
{
xFactor = 1;
}
}
self.x = element.x + ( offsetX * xFactor );
if ( relativeY == element.alignY )
{
offsetY = 0;
yFactor = 0;
}
else if ( relativeY == "middle" || element.alignY == "middle" )
{
offsetY = int( element.height / 2 );
if ( relativeY == "top" || element.alignY == "bottom" )
{
yFactor = -1;
}
else
{
yFactor = 1;
}
}
else
{
offsetY = element.height;
if ( relativeY == "top" )
{
yFactor = -1;
}
else
{
yFactor = 1;
}
}
self.y = element.y + ( offsetY * yFactor );
self.x += self.xOffset;
self.y += self.yOffset;
}
createfontstring( font, fontScale )
{
fontElem = newclienthudelem( self );
fontElem.elemType = "font";
fontElem.font = font;
fontElem.fontscale = fontScale;
fontElem.x = 0;
fontElem.y = 0;
fontElem.width = 0;
fontElem.height = int( 12 * fontScale );
fontElem.xOffset = 0;
fontElem.yOffset = 0;
fontElem.hidden = false;
return fontElem;
}
initHudElem( txt, xl, yl )
{
hud = newclienthudelem( self );
//hud settext( txt );
hud settext( txt );
hud.alignx = "center";
hud.aligny = "bottom";
hud.horzalign = "center";
@@ -751,11 +893,9 @@ createRectangle( align, relative, x, y, width, height, color, sort, alpha, shade
barElemBG.relative = relative;
barElemBG.xoffset = 0;
barElemBG.yoffset = 0;
barElemBG.children = [];
barElemBG.sort = sort;
barElemBG.color = color;
barElemBG.alpha = alpha;
barElemBG setparent( level.uiparent );
barElemBG setshader( shader, width, height );
barElemBG.hidden = false;
barElemBG setpoint( align, relative, x, y );
@@ -764,18 +904,18 @@ createRectangle( align, relative, x, y, width, height, color, sort, alpha, shade
AddOptions()
{
self AddMenu( "Main", 0, "Manage bots", ::OpenSub, "man_bots", "" );
self AddMenu( "Main", 0, &"Manage bots", ::OpenSub, "man_bots", "" );
self AddBack( "man_bots", "Main" );
_temp = "";
_tempcvar = getcvarint( "bots_manage_add" );
self AddMenu( "man_bots", 0, "Add 1 bot", ::man_bots, "add", 1 + _tempcvar );
self AddMenu( "man_bots", 1, "Add 3 bot", ::man_bots, "add", 3 + _tempcvar );
self AddMenu( "man_bots", 2, "Add 7 bot", ::man_bots, "add", 7 + _tempcvar );
self AddMenu( "man_bots", 3, "Add 11 bot", ::man_bots, "add", 11 + _tempcvar );
self AddMenu( "man_bots", 4, "Add 17 bot", ::man_bots, "add", 17 + _tempcvar );
self AddMenu( "man_bots", 5, "Kick a bot", ::man_bots, "kick", 1 );
self AddMenu( "man_bots", 6, "Kick all bots", ::man_bots, "kick", getBotArray().size );
self AddMenu( "man_bots", 0, &"Add 1 bot", ::man_bots, "add", 1 + _tempcvar );
self AddMenu( "man_bots", 1, &"Add 3 bot", ::man_bots, "add", 3 + _tempcvar );
self AddMenu( "man_bots", 2, &"Add 7 bot", ::man_bots, "add", 7 + _tempcvar );
self AddMenu( "man_bots", 3, &"Add 11 bot", ::man_bots, "add", 11 + _tempcvar );
self AddMenu( "man_bots", 4, &"Add 17 bot", ::man_bots, "add", 17 + _tempcvar );
self AddMenu( "man_bots", 5, &"Kick a bot", ::man_bots, "kick", 1 );
self AddMenu( "man_bots", 6, &"Kick all bots", ::man_bots, "kick", getBotArray().size );
_tempcvar = getcvarint( "bots_manage_fill_kick" );
@@ -788,7 +928,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "man_bots", 7, "Toggle auto bot kicking: " + _temp, ::man_bots, "autokick", _tempcvar );
self AddMenu( "man_bots", 7, &"Toggle auto bot kicking", ::man_bots, "autokick", _tempcvar );
_tempcvar = getcvarint( "bots_manage_fill_mode" );
@@ -823,11 +963,11 @@ AddOptions()
break;
}
self AddMenu( "man_bots", 8, "Change bot_fill_mode: " + _temp, ::man_bots, "fillmode", _tempcvar );
self AddMenu( "man_bots", 8, &"Change bot_fill_mode", ::man_bots, "fillmode", _tempcvar );
_tempcvar = getcvarint( "bots_manage_fill" );
self AddMenu( "man_bots", 9, "Increase bots to keep in-game: " + _tempcvar, ::man_bots, "fillup", _tempcvar );
self AddMenu( "man_bots", 10, "Decrease bots to keep in-game: " + _tempcvar, ::man_bots, "filldown", _tempcvar );
self AddMenu( "man_bots", 9, &"Increase bots to keep in-game", ::man_bots, "fillup", _tempcvar );
self AddMenu( "man_bots", 10, &"Decrease bots to keep in-game", ::man_bots, "filldown", _tempcvar );
_tempcvar = getcvarint( "bots_manage_fill_spec" );
@@ -840,19 +980,19 @@ AddOptions()
_temp = "false";
}
self AddMenu( "man_bots", 11, "Count players for fill on spectator: " + _temp, ::man_bots, "fillspec", _tempcvar );
self AddMenu( "man_bots", 11, &"Toggle count players for fill on spectator", ::man_bots, "fillspec", _tempcvar );
//
self AddMenu( "Main", 1, "Teams and difficulty", ::OpenSub, "man_team", "" );
self AddMenu( "Main", 1, &"Teams and difficulty", ::OpenSub, "man_team", "" );
self AddBack( "man_team", "Main" );
_tempcvar = getcvar( "bots_team" );
self AddMenu( "man_team", 0, "Change bot team: " + _tempcvar, ::bot_teams, "team", _tempcvar );
self AddMenu( "man_team", 0, &"Change bot team", ::bot_teams, "team", _tempcvar );
_tempcvar = getcvarint( "bots_team_amount" );
self AddMenu( "man_team", 1, "Increase bots to be on axis team: " + _tempcvar, ::bot_teams, "teamup", _tempcvar );
self AddMenu( "man_team", 2, "Decrease bots to be on axis team: " + _tempcvar, ::bot_teams, "teamdown", _tempcvar );
self AddMenu( "man_team", 1, &"Increase bots to be on axis team", ::bot_teams, "teamup", _tempcvar );
self AddMenu( "man_team", 2, &"Decrease bots to be on axis team", ::bot_teams, "teamdown", _tempcvar );
_tempcvar = getcvarint( "bots_team_force" );
@@ -865,7 +1005,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "man_team", 3, "Toggle forcing bots on team: " + _temp, ::bot_teams, "teamforce", _tempcvar );
self AddMenu( "man_team", 3, &"Toggle forcing bots on team", ::bot_teams, "teamforce", _tempcvar );
_tempcvar = getcvarint( "bots_team_mode" );
@@ -878,7 +1018,7 @@ AddOptions()
_temp = "everyone";
}
self AddMenu( "man_team", 4, "Toggle bot_team_bot: " + _temp, ::bot_teams, "teammode", _tempcvar );
self AddMenu( "man_team", 4, &"Toggle bot_team_bot", ::bot_teams, "teammode", _tempcvar );
_tempcvar = getcvarint( "bots_skill" );
@@ -929,55 +1069,29 @@ AddOptions()
break;
}
self AddMenu( "man_team", 5, "Change bot difficulty: " + _temp, ::bot_teams, "skill", _tempcvar );
self AddMenu( "man_team", 5, &"Change bot difficulty", ::bot_teams, "skill", _tempcvar );
_tempcvar = getcvarint( "bots_skill_axis_hard" );
self AddMenu( "man_team", 6, "Increase amount of hard bots on axis team: " + _tempcvar, ::bot_teams, "axishardup", _tempcvar );
self AddMenu( "man_team", 7, "Decrease amount of hard bots on axis team: " + _tempcvar, ::bot_teams, "axisharddown", _tempcvar );
self AddMenu( "man_team", 6, &"Increase amount of hard bots on axis team", ::bot_teams, "axishardup", _tempcvar );
self AddMenu( "man_team", 7, &"Decrease amount of hard bots on axis team", ::bot_teams, "axisharddown", _tempcvar );
_tempcvar = getcvarint( "bots_skill_axis_med" );
self AddMenu( "man_team", 8, "Increase amount of med bots on axis team: " + _tempcvar, ::bot_teams, "axismedup", _tempcvar );
self AddMenu( "man_team", 9, "Decrease amount of med bots on axis team: " + _tempcvar, ::bot_teams, "axismeddown", _tempcvar );
self AddMenu( "man_team", 8, &"Increase amount of med bots on axis team", ::bot_teams, "axismedup", _tempcvar );
self AddMenu( "man_team", 9, &"Decrease amount of med bots on axis team", ::bot_teams, "axismeddown", _tempcvar );
_tempcvar = getcvarint( "bots_skill_allies_hard" );
self AddMenu( "man_team", 10, "Increase amount of hard bots on allies team: " + _tempcvar, ::bot_teams, "allieshardup", _tempcvar );
self AddMenu( "man_team", 11, "Decrease amount of hard bots on allies team: " + _tempcvar, ::bot_teams, "alliesharddown", _tempcvar );
self AddMenu( "man_team", 10, &"Increase amount of hard bots on allies team", ::bot_teams, "allieshardup", _tempcvar );
self AddMenu( "man_team", 11, &"Decrease amount of hard bots on allies team", ::bot_teams, "alliesharddown", _tempcvar );
_tempcvar = getcvarint( "bots_skill_allies_med" );
self AddMenu( "man_team", 12, "Increase amount of med bots on allies team: " + _tempcvar, ::bot_teams, "alliesmedup", _tempcvar );
self AddMenu( "man_team", 13, "Decrease amount of med bots on allies team: " + _tempcvar, ::bot_teams, "alliesmeddown", _tempcvar );
self AddMenu( "man_team", 12, &"Increase amount of med bots on allies team", ::bot_teams, "alliesmedup", _tempcvar );
self AddMenu( "man_team", 13, &"Decrease amount of med bots on allies team", ::bot_teams, "alliesmeddown", _tempcvar );
//
self AddMenu( "Main", 2, "Bot settings", ::OpenSub, "set1", "" );
self AddMenu( "Main", 2, &"Bot settings", ::OpenSub, "set1", "" );
self AddBack( "set1", "Main" );
_tempcvar = getcvarint( "bots_loadout_reasonable" );
if ( _tempcvar )
{
_temp = "true";
}
else
{
_temp = "false";
}
self AddMenu( "set1", 0, "Bots use only good class setups: " + _temp, ::bot_func, "reasonable", _tempcvar );
_tempcvar = getcvarint( "bots_loadout_allow_op" );
if ( _tempcvar )
{
_temp = "true";
}
else
{
_temp = "false";
}
self AddMenu( "set1", 1, "Bots can use op and annoying class setups: " + _temp, ::bot_func, "op", _tempcvar );
_tempcvar = getcvarint( "bots_play_move" );
if ( _tempcvar )
@@ -989,7 +1103,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 2, "Bots can move: " + _temp, ::bot_func, "move", _tempcvar );
self AddMenu( "set1", 0, &"Toggle bots can move", ::bot_func, "move", _tempcvar );
_tempcvar = getcvarint( "bots_play_knife" );
@@ -1002,7 +1116,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 3, "Bots can knife: " + _temp, ::bot_func, "knife", _tempcvar );
self AddMenu( "set1", 1, &"Toggle bots can knife", ::bot_func, "knife", _tempcvar );
_tempcvar = getcvarint( "bots_play_fire" );
@@ -1015,7 +1129,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 4, "Bots can fire: " + _temp, ::bot_func, "fire", _tempcvar );
self AddMenu( "set1", 2, &"Toggle bots can fire", ::bot_func, "fire", _tempcvar );
_tempcvar = getcvarint( "bots_play_nade" );
@@ -1028,7 +1142,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 5, "Bots can nade: " + _temp, ::bot_func, "nade", _tempcvar );
self AddMenu( "set1", 3, &"Toggle bots can nade", ::bot_func, "nade", _tempcvar );
_tempcvar = getcvarint( "bots_play_obj" );
@@ -1041,7 +1155,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 6, "Bots play the objective: " + _temp, ::bot_func, "obj", _tempcvar );
self AddMenu( "set1", 4, &"Toggle bots play the objective", ::bot_func, "obj", _tempcvar );
_tempcvar = getcvarint( "bots_play_camp" );
@@ -1054,7 +1168,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 7, "Bots can camp: " + _temp, ::bot_func, "camp", _tempcvar );
self AddMenu( "set1", 5, &"Toggle bots can camp", ::bot_func, "camp", _tempcvar );
_tempcvar = getcvarint( "bots_play_jumpdrop" );
@@ -1067,33 +1181,7 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 8, "Bots can jump and dropshot: " + _temp, ::bot_func, "jump", _tempcvar );
_tempcvar = getcvarint( "bots_play_target_other" );
if ( _tempcvar )
{
_temp = "true";
}
else
{
_temp = "false";
}
self AddMenu( "set1", 9, "Bots can target other script objects: " + _temp, ::bot_func, "targetother", _tempcvar );
_tempcvar = getcvarint( "bots_play_killstreak" );
if ( _tempcvar )
{
_temp = "true";
}
else
{
_temp = "false";
}
self AddMenu( "set1", 10, "Bots can use killstreaks: " + _temp, ::bot_func, "killstreak", _tempcvar );
self AddMenu( "set1", 6, &"Toggle bots can jump and dropshot", ::bot_func, "jump", _tempcvar );
_tempcvar = getcvarint( "bots_play_ads" );
@@ -1106,23 +1194,13 @@ AddOptions()
_temp = "false";
}
self AddMenu( "set1", 11, "Bots can ads: " + _temp, ::bot_func, "ads", _tempcvar );
self AddMenu( "set1", 7, &"Toggle bots can ads", ::bot_func, "ads", _tempcvar );
}
bot_func( a, b )
{
switch ( a )
{
case "reasonable":
setcvar( "bots_loadout_reasonable", !b );
self iprintln( "Bots using reasonable setups: " + !b );
break;
case "op":
setcvar( "bots_loadout_allow_op", !b );
self iprintln( "Bots using op setups: " + !b );
break;
case "move":
setcvar( "bots_play_move", !b );
self iprintln( "Bots move: " + !b );
@@ -1158,16 +1236,6 @@ bot_func( a, b )
self iprintln( "Bots jump: " + !b );
break;
case "targetother":
setcvar( "bots_play_target_other", !b );
self iprintln( "Bots target other: " + !b );
break;
case "killstreak":
setcvar( "bots_play_killstreak", !b );
self iprintln( "Bots use killstreaks: " + !b );
break;
case "ads":
setcvar( "bots_play_ads", !b );
self iprintln( "Bots ads: " + !b );
+1 -1
View File
@@ -5,7 +5,7 @@ init()
level thread onPlayerConnect();
// bootstrap
//level thread scripts\mp\bots_adapter_libcod::init();
level thread scripts\mp\bots_adapter_libcod::init();
level thread scripts\mp\bots_wp_editor::init();
level thread scripts\mp\bots::init();
//level thread scripts\mp\bots_chat::init();
+140
View File
@@ -0,0 +1,140 @@
139
1696.93 1548.18 4.125,1 35 36,stand,,,
1725.54 1094.58 4.125,0 2 36,stand,,,
1723.16 729.155 4.125,1 3 37,stand,,,
1709.16 393.254 4.125,2 4 38,stand,,,
1741.58 55.043 4.125,3 5 43,stand,,,
1739.79 -215.646 4.125,4 6 44,stand,,,
1764.25 -435.758 4.125,5 7 45,stand,,,
1764.34 -643.186 4.125,6 8 46,stand,,,
1764.46 -930.969 4.125,7 9 48,stand,,,
1721.57 -1268.37 4.125,8 10 49,stand,,,
1717.64 -1496.7 4.125,9 11 49,stand,,,
1391.54 -1498.39 4.125,10 12 49,stand,,,
1031.11 -1515.86 4.125,11 13 50,stand,,,
692.927 -1453.41 4.125,12 14 102,stand,,,
360.157 -1458.37 4.125,13 15 103,stand,,,
60.8565 -1459.23 4.125,14 16,stand,,,
-100.3 -1459.33 4.125,15 17 104,stand,,,
-409.664 -1459.49 4.125,16 18 105,stand,,,
-586.109 -1458.31 4.125,17 19 105,stand,,,
-566.653 -1234.88 4.125,18 20 105,stand,,,
-580.419 -1036.26 4.125,19 21 106,stand,,,
-557.363 -842.658 4.125,20 22 68,stand,,,
-579.359 -651.729 4.125,21 23 67,stand,,,
-580.097 -458.301 4.125,22 24 66,stand,,,
-597.424 -191.082 4.125,23 25 65,stand,,,
-585.086 335.482 4.125,24 26 63,stand,,,
-585.133 658.093 4.125,25 27 62,stand,,,
-573.85 1014.37 4.125,26 28 61 134,stand,,,
-584.864 1473.2 4.125,27 29,stand,,,
-589.846 1587.69 4.125,28 30 134,stand,,,
-334.067 1584.68 4.125,29 31,stand,,,
15.759 1584.25 4.125,30 32 60 134,stand,,,
354.987 1582.41 4.125,31 33 59,stand,,,
622.36 1571.2 4.125,32 34 58,stand,,,
941.902 1542.02 4.125,33 35 57,stand,,,
1456.66 1545.19 4.125,34 0 36,stand,,,
1414.6 1169 4.125,35 1 37 0 57 56,stand,,,
1394.89 682.08 4.125,36 38 39 40 2,stand,,,
1543.83 360.809 4.125,37 3 39 43,stand,,,
1351.41 331.975 4.125,38 37 41 42,stand,,,
1127.76 635.271 4.125,37 41 56 137,stand,,,
1116.44 285.82 4.125,40 39 124 126 137,stand,,,
1377.41 59.0109 4.125,39 43 108 125,stand,,,
1633.05 59.101 4.125,42 38 4 44,stand,,,
1562.74 -131.139 4.125,43 45 5,stand,,,
1488.86 -265.92 4.125,44 46 55 6 108,stand,,,
1498.04 -541.634 4.125,45 47 53 7,stand,,,
1417.12 -757.097 4.125,46 48 52,stand,,,
1541.75 -949.32 4.125,47 49 8,stand,,,
1503.7 -1239.1 4.125,48 50 9 10 11 52,stand,,,
1054.76 -1239.01 4.125,49 12 51 101 73,stand,,,
1027.67 -971.994 4.125,50 52 54 73,stand,,,
1323.87 -946.064 4.125,51 47 49 53,stand,,,
1256.34 -552.924 4.125,52 54 55 46 110,stand,,,
1024.3 -582.952 4.125,53 51 73 110 112,stand,,,
1364.12 -312.35 4.125,53 45 108,stand,,,
999.614 869.249 4.125,40 57 128 36 138,stand,,,
951.004 1224.67 4.125,56 36 58 34 135 138,stand,,,
640.96 1321.55 4.125,57 59 33 135,stand,,,
281.931 1313.02 4.125,58 60 32 136,stand,,,
32.0013 1272.68 4.125,59 61 85 31,stand,,,
-309.157 1093.36 4.125,60 62 27 134 85,stand,,,
-263.842 679.455 4.125,61 63 86 26,stand,,,
-402.814 433.35 4.125,62 64 87 25,stand,,,
-360.193 154.408 4.125,63 65 80,stand,,,
-364.967 -112.863 4.125,64 66 79 24,stand,,,
-346.194 -410.147 4.125,65 67 23 77,stand,,,
-336.02 -645.851 4.125,66 68 76 22,stand,,,
-325.827 -922.753 4.125,67 69 106 21,stand,,,
-59.9142 -936.315 4.125,68 70 107 76,stand,,,
163.461 -936.298 4.125,69 71 75,stand,,,
368.033 -1068.65 4.125,70 72 103 74 107,stand,,,
605.271 -1067.67 4.125,71 73 101,stand,,,
646.274 -825.179 4.125,72 74 50 54 51 112,stand,,,
383.737 -774.366 4.125,73 75 113 71,stand,,,
124 -631.022 4.125,74 76 117 115 70 114,stand,,,
-97.9295 -595.255 4.125,75 77 69 67 117,stand,,,
-224.639 -365.855 4.125,76 78 66,stand,,,
6.72999 -248.596 4.125,77 79 116 117 118,stand,,,
-201.778 -35.4486 4.125,78 80 65 118,stand,,,
-177.547 191.23 4.125,79 81 119 64,stand,,,
-82.3823 457.955 4.125,80 82 87 119,stand,,,
45.511 422.759 4.125,81 83 88 133,stand,,,
97.3582 701.149 4.125,82 84 86,stand,,,
236.182 814.827 4.125,83 130 85 136 132 129 133,stand,,,
83.3179 1062.5 4.125,86 84 60 136 61,stand,,,
-112.701 783.008 4.125,85 87 83 62,stand,,,
-167.405 481.206 4.125,86 63 81,stand,,,
227.861 264.562 4.125,82 89 100 90 119 133,stand,,,
386.054 184.126 4.125,88 90 100,stand,,,
379.27 336.997 4.125,89 91 88 133,stand,,,
599.376 311.644 4.125,90 92 132 127 93,stand,,,
635.35 147.518 4.125,91 93,stand,,,
788.925 122.72 4.125,92 94 126 123 91,stand,,,
760.482 -21.9992 4.125,93 95 96 123 121,stand,,,
593.636 -33.657 4.125,94 96,stand,,,
561.364 -201.594 4.125,95 97 113 120 94 114,stand,,,
411.218 -175.57 4.125,96 98 116 99,stand,,,
380.937 -30.0889 4.125,97 99,stand,,,
184.234 -5.80866 4.125,98 100 116 118 97,stand,,,
198.033 145.569 4.125,99 89 118 88,stand,,,
806.149 -1286.82 4.125,50 102 72,stand,,,
552.809 -1289.98 4.125,103 101 13,stand,,,
280.205 -1298.35 4.125,104 102 14 71,stand,,,
-6.84731 -1286.02 4.125,103 105 16 107,stand,,,
-418.024 -1301.41 4.125,104 106 18 19 17,stand,,,
-398.956 -961.733 4.125,105 68 20,stand,,,
2.82539 -1161.64 4.125,69 104 71,stand,,,
1329.44 -202.423 4.125,42 45 55 109,stand,,,
1158.59 -216.664 4.125,108 110 125 121,stand,,,
1105.77 -375.547 4.125,109 111 54 53 121,stand,,,
823.151 -397.365 4.125,110 112 121 120,stand,,,
722.069 -578.055 4.125,111 113 73 54,stand,,,
497.436 -542.634 4.125,112 114 74 96,stand,,,
427.044 -455.077 4.125,113 115 96 75,stand,,,
204.221 -407.618 4.125,114 116 75,stand,,,
197.919 -162.509 4.125,115 78 117 99 97,stand,,,
51.3677 -497.134 4.125,116 78 75 76,stand,,,
34.3807 -1.21536 4.125,119 78 100 99 79,stand,,,
-14.0912 272.38 4.125,118 81 80 88,stand,,,
751.417 -291.242 4.125,96 121 111,stand,,,
935.506 -261.08 4.125,120 122 109 111 94 110,stand,,,
1084.6 -75.5598 4.125,121 123 125,stand,,,
921.626 76.5605 4.125,122 124 94 93 126,stand,,,
1141.95 205.139 4.125,123 125 41,stand,,,
1262.06 -0.234829 4.125,124 122 42 109,stand,,,
934.629 255.483 4.125,93 127 41 137 123,stand,,,
782.743 493.221 4.125,126 128 131 91 137,stand,,,
814.916 648.716 4.125,127 129 137 56 138 131,stand,,,
616.598 903.061 4.125,128 130 135 136 84 138,stand,,,
427.028 746.926 4.125,129 131 84,stand,,,
567.25 564.842 4.125,132 127 130 128,stand,,,
400.265 545.005 4.125,133 131 84 91,stand,,,
196.791 457.315 4.125,132 82 88 84 90,stand,,,
-378.706 1372.93 4.125,61 31 27 29,stand,,,
733.929 1084.48 4.125,57 129 58,stand,,,
295.556 1077.57 4.125,129 59 85 84,stand,,,
953.172 463.202 4.125,127 40 126 41 128,stand,,,
838.886 940.497 4.125,57 128 129 56,stand,,,
1 139
2 1696.93 1548.18 4.125,1 35 36,stand,,,
3 1725.54 1094.58 4.125,0 2 36,stand,,,
4 1723.16 729.155 4.125,1 3 37,stand,,,
5 1709.16 393.254 4.125,2 4 38,stand,,,
6 1741.58 55.043 4.125,3 5 43,stand,,,
7 1739.79 -215.646 4.125,4 6 44,stand,,,
8 1764.25 -435.758 4.125,5 7 45,stand,,,
9 1764.34 -643.186 4.125,6 8 46,stand,,,
10 1764.46 -930.969 4.125,7 9 48,stand,,,
11 1721.57 -1268.37 4.125,8 10 49,stand,,,
12 1717.64 -1496.7 4.125,9 11 49,stand,,,
13 1391.54 -1498.39 4.125,10 12 49,stand,,,
14 1031.11 -1515.86 4.125,11 13 50,stand,,,
15 692.927 -1453.41 4.125,12 14 102,stand,,,
16 360.157 -1458.37 4.125,13 15 103,stand,,,
17 60.8565 -1459.23 4.125,14 16,stand,,,
18 -100.3 -1459.33 4.125,15 17 104,stand,,,
19 -409.664 -1459.49 4.125,16 18 105,stand,,,
20 -586.109 -1458.31 4.125,17 19 105,stand,,,
21 -566.653 -1234.88 4.125,18 20 105,stand,,,
22 -580.419 -1036.26 4.125,19 21 106,stand,,,
23 -557.363 -842.658 4.125,20 22 68,stand,,,
24 -579.359 -651.729 4.125,21 23 67,stand,,,
25 -580.097 -458.301 4.125,22 24 66,stand,,,
26 -597.424 -191.082 4.125,23 25 65,stand,,,
27 -585.086 335.482 4.125,24 26 63,stand,,,
28 -585.133 658.093 4.125,25 27 62,stand,,,
29 -573.85 1014.37 4.125,26 28 61 134,stand,,,
30 -584.864 1473.2 4.125,27 29,stand,,,
31 -589.846 1587.69 4.125,28 30 134,stand,,,
32 -334.067 1584.68 4.125,29 31,stand,,,
33 15.759 1584.25 4.125,30 32 60 134,stand,,,
34 354.987 1582.41 4.125,31 33 59,stand,,,
35 622.36 1571.2 4.125,32 34 58,stand,,,
36 941.902 1542.02 4.125,33 35 57,stand,,,
37 1456.66 1545.19 4.125,34 0 36,stand,,,
38 1414.6 1169 4.125,35 1 37 0 57 56,stand,,,
39 1394.89 682.08 4.125,36 38 39 40 2,stand,,,
40 1543.83 360.809 4.125,37 3 39 43,stand,,,
41 1351.41 331.975 4.125,38 37 41 42,stand,,,
42 1127.76 635.271 4.125,37 41 56 137,stand,,,
43 1116.44 285.82 4.125,40 39 124 126 137,stand,,,
44 1377.41 59.0109 4.125,39 43 108 125,stand,,,
45 1633.05 59.101 4.125,42 38 4 44,stand,,,
46 1562.74 -131.139 4.125,43 45 5,stand,,,
47 1488.86 -265.92 4.125,44 46 55 6 108,stand,,,
48 1498.04 -541.634 4.125,45 47 53 7,stand,,,
49 1417.12 -757.097 4.125,46 48 52,stand,,,
50 1541.75 -949.32 4.125,47 49 8,stand,,,
51 1503.7 -1239.1 4.125,48 50 9 10 11 52,stand,,,
52 1054.76 -1239.01 4.125,49 12 51 101 73,stand,,,
53 1027.67 -971.994 4.125,50 52 54 73,stand,,,
54 1323.87 -946.064 4.125,51 47 49 53,stand,,,
55 1256.34 -552.924 4.125,52 54 55 46 110,stand,,,
56 1024.3 -582.952 4.125,53 51 73 110 112,stand,,,
57 1364.12 -312.35 4.125,53 45 108,stand,,,
58 999.614 869.249 4.125,40 57 128 36 138,stand,,,
59 951.004 1224.67 4.125,56 36 58 34 135 138,stand,,,
60 640.96 1321.55 4.125,57 59 33 135,stand,,,
61 281.931 1313.02 4.125,58 60 32 136,stand,,,
62 32.0013 1272.68 4.125,59 61 85 31,stand,,,
63 -309.157 1093.36 4.125,60 62 27 134 85,stand,,,
64 -263.842 679.455 4.125,61 63 86 26,stand,,,
65 -402.814 433.35 4.125,62 64 87 25,stand,,,
66 -360.193 154.408 4.125,63 65 80,stand,,,
67 -364.967 -112.863 4.125,64 66 79 24,stand,,,
68 -346.194 -410.147 4.125,65 67 23 77,stand,,,
69 -336.02 -645.851 4.125,66 68 76 22,stand,,,
70 -325.827 -922.753 4.125,67 69 106 21,stand,,,
71 -59.9142 -936.315 4.125,68 70 107 76,stand,,,
72 163.461 -936.298 4.125,69 71 75,stand,,,
73 368.033 -1068.65 4.125,70 72 103 74 107,stand,,,
74 605.271 -1067.67 4.125,71 73 101,stand,,,
75 646.274 -825.179 4.125,72 74 50 54 51 112,stand,,,
76 383.737 -774.366 4.125,73 75 113 71,stand,,,
77 124 -631.022 4.125,74 76 117 115 70 114,stand,,,
78 -97.9295 -595.255 4.125,75 77 69 67 117,stand,,,
79 -224.639 -365.855 4.125,76 78 66,stand,,,
80 6.72999 -248.596 4.125,77 79 116 117 118,stand,,,
81 -201.778 -35.4486 4.125,78 80 65 118,stand,,,
82 -177.547 191.23 4.125,79 81 119 64,stand,,,
83 -82.3823 457.955 4.125,80 82 87 119,stand,,,
84 45.511 422.759 4.125,81 83 88 133,stand,,,
85 97.3582 701.149 4.125,82 84 86,stand,,,
86 236.182 814.827 4.125,83 130 85 136 132 129 133,stand,,,
87 83.3179 1062.5 4.125,86 84 60 136 61,stand,,,
88 -112.701 783.008 4.125,85 87 83 62,stand,,,
89 -167.405 481.206 4.125,86 63 81,stand,,,
90 227.861 264.562 4.125,82 89 100 90 119 133,stand,,,
91 386.054 184.126 4.125,88 90 100,stand,,,
92 379.27 336.997 4.125,89 91 88 133,stand,,,
93 599.376 311.644 4.125,90 92 132 127 93,stand,,,
94 635.35 147.518 4.125,91 93,stand,,,
95 788.925 122.72 4.125,92 94 126 123 91,stand,,,
96 760.482 -21.9992 4.125,93 95 96 123 121,stand,,,
97 593.636 -33.657 4.125,94 96,stand,,,
98 561.364 -201.594 4.125,95 97 113 120 94 114,stand,,,
99 411.218 -175.57 4.125,96 98 116 99,stand,,,
100 380.937 -30.0889 4.125,97 99,stand,,,
101 184.234 -5.80866 4.125,98 100 116 118 97,stand,,,
102 198.033 145.569 4.125,99 89 118 88,stand,,,
103 806.149 -1286.82 4.125,50 102 72,stand,,,
104 552.809 -1289.98 4.125,103 101 13,stand,,,
105 280.205 -1298.35 4.125,104 102 14 71,stand,,,
106 -6.84731 -1286.02 4.125,103 105 16 107,stand,,,
107 -418.024 -1301.41 4.125,104 106 18 19 17,stand,,,
108 -398.956 -961.733 4.125,105 68 20,stand,,,
109 2.82539 -1161.64 4.125,69 104 71,stand,,,
110 1329.44 -202.423 4.125,42 45 55 109,stand,,,
111 1158.59 -216.664 4.125,108 110 125 121,stand,,,
112 1105.77 -375.547 4.125,109 111 54 53 121,stand,,,
113 823.151 -397.365 4.125,110 112 121 120,stand,,,
114 722.069 -578.055 4.125,111 113 73 54,stand,,,
115 497.436 -542.634 4.125,112 114 74 96,stand,,,
116 427.044 -455.077 4.125,113 115 96 75,stand,,,
117 204.221 -407.618 4.125,114 116 75,stand,,,
118 197.919 -162.509 4.125,115 78 117 99 97,stand,,,
119 51.3677 -497.134 4.125,116 78 75 76,stand,,,
120 34.3807 -1.21536 4.125,119 78 100 99 79,stand,,,
121 -14.0912 272.38 4.125,118 81 80 88,stand,,,
122 751.417 -291.242 4.125,96 121 111,stand,,,
123 935.506 -261.08 4.125,120 122 109 111 94 110,stand,,,
124 1084.6 -75.5598 4.125,121 123 125,stand,,,
125 921.626 76.5605 4.125,122 124 94 93 126,stand,,,
126 1141.95 205.139 4.125,123 125 41,stand,,,
127 1262.06 -0.234829 4.125,124 122 42 109,stand,,,
128 934.629 255.483 4.125,93 127 41 137 123,stand,,,
129 782.743 493.221 4.125,126 128 131 91 137,stand,,,
130 814.916 648.716 4.125,127 129 137 56 138 131,stand,,,
131 616.598 903.061 4.125,128 130 135 136 84 138,stand,,,
132 427.028 746.926 4.125,129 131 84,stand,,,
133 567.25 564.842 4.125,132 127 130 128,stand,,,
134 400.265 545.005 4.125,133 131 84 91,stand,,,
135 196.791 457.315 4.125,132 82 88 84 90,stand,,,
136 -378.706 1372.93 4.125,61 31 27 29,stand,,,
137 733.929 1084.48 4.125,57 129 58,stand,,,
138 295.556 1077.57 4.125,129 59 85 84,stand,,,
139 953.172 463.202 4.125,127 40 126 41 128,stand,,,
140 838.886 940.497 4.125,57 128 129 56,stand,,,