wp editor

This commit is contained in:
ineed bots
2025-09-28 01:05:49 -06:00
parent c7188a9cfc
commit f53544610a
5 changed files with 871 additions and 11 deletions

View File

@@ -34,6 +34,10 @@ BotBuiltinPrintConsole( s )
{
[[ level.bot_builtins[ "printconsole" ] ]]( s );
}
else
{
println( s );
}
}
/*
@@ -1458,24 +1462,17 @@ readWpsFromFile( mapname )
for ( i = 1; i <= waypointCount; i++ )
{
argc = freadln( f );
line = "";
tokens = [];
for ( h = 0; h < argc; h++ )
{
line += fgetarg( f, h );
tokens[ h ] = fgetarg( f, h );
}
if ( h < argc - 1 )
if ( !isdefined( tokens ) || !tokens.size )
{
line += ",";
break;
}
}
if ( !isdefined( line ) || line == "" )
{
continue;
}
tokens = strtok( line, "," );
waypoint = parseTokensIntoWaypoint( tokens );

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

@@ -0,0 +1,731 @@
/*
_wp_editor
Author: INeedGames
Date: 09/12/2025
The ingame waypoint editor. Designed to be ran on the client (not the server)
*/
#include maps\mp\_utility;
#include maps\mp\bots\_bot_utility;
init()
{
if ( getcvar( "bots_main_debug" ) == "" )
{
setcvar( "bots_main_debug", 0 );
}
if ( !getcvarint( "bots_main_debug" ) )
{
return;
}
if ( !getcvarint( "developer" ) )
{
setcvar( "developer_script", 1 );
setcvar( "developer", 2 );
map( getcvar( "mapname" ) );
return;
}
setcvar( "bots_main", 0 );
setcvar( "bots_main_menu", 0 );
setcvar( "bots_manage_fill_mode", 0 );
setcvar( "bots_manage_fill", 0 );
setcvar( "bots_manage_add", 0 );
setcvar( "bots_manage_fill_kick", 1 );
setcvar( "bots_manage_fill_spec", 1 );
setcvar( "smoke", 0 );
setcvar( "frag", 0 );
setcvar( "speed", 0 );
if ( getcvar( "bots_main_debug_distance" ) == "" )
{
setcvar( "bots_main_debug_distance", 512.0 );
}
if ( getcvar( "bots_main_debug_cone" ) == "" )
{
setcvar( "bots_main_debug_cone", 0.65 );
}
if ( getcvar( "bots_main_debug_minDist" ) == "" )
{
setcvar( "bots_main_debug_minDist", 32.0 );
}
if ( getcvar( "bots_main_debug_drawThrough" ) == "" )
{
setcvar( "bots_main_debug_drawThrough", false );
}
if ( getcvar( "bots_main_debug_commandWait" ) == "" )
{
setcvar( "bots_main_debug_commandWait", 0.5 );
}
level.waypoints = [];
level.waypointcount = 0;
level waittill( "connected", player );
player thread onPlayerSpawned();
}
secondaryoffhandbuttonpressed()
{
return getcvarint( "smoke" );
}
fragbuttonpressed()
{
return getcvarint( "frag" );
}
adsbuttonpressed()
{
return getcvarint( "speed" ) || self playerads() > 0.05;
}
onPlayerSpawned()
{
self endon( "disconnect" );
for ( ;; )
{
self waittill( "spawned_player" );
self thread beginDebug();
}
}
beginDebug()
{
self endon( "disconnect" );
self endon( "death" );
level.wptolink = -1;
level.autolink = false;
self.closest = -1;
self.command = undefined;
self.bot_model_fix = true;
self freezecontrols( false );
self thread debug();
self thread addWaypoints();
self thread linkWaypoints();
self thread deleteWaypoints();
self thread watchSaveWaypointsCommand();
self thread sayExtras();
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
}
sayExtras()
{
self endon( "disconnect" );
self endon( "death" );
self iprintln( "Making a crouch waypoint with only one link..." );
self iprintln( "Makes a camping waypoint." );
}
debug()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
wait 0.05;
if ( isdefined( self.command ) )
{
continue;
}
closest = -1;
myEye = self gettagorigin( "j_head" );
myAngles = self getplayerangles();
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 ) < getcvarfloat( "bots_main_debug_distance" ) && ( bullettracepassed( myEye, wpOrg, false, self ) || getcvarint( "bots_main_debug_drawThrough" ) ) )
{
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; h-- )
{
line( wpOrg, level.waypoints[ level.waypoints[ i ].children[ h ] ].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) );
}
if ( getConeDot( wpOrg, myEye, myAngles ) > getcvarfloat( "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 + vector_scale( anglestoforward( level.waypoints[ i ].angles ), 64 ), ( 1, 1, 1 ) );
}
}
}
self.closest = closest;
if ( closest != -1 )
{
stringChildren = "";
for ( i = 0; i < level.waypoints[ closest ].children.size; i++ )
{
if ( i != 0 )
{
stringChildren = stringChildren + "," + level.waypoints[ closest ].children[ i ];
}
else
{
stringChildren = stringChildren + level.waypoints[ closest ].children[ i ];
}
}
print3d( level.waypoints[ closest ].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2 );
print3d( level.waypoints[ closest ].origin + ( 0, 0, 15 ), level.waypoints[ closest ].type, ( 0, 1, 0 ), 2 );
}
}
}
addWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self secondaryoffhandbuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
pos = self getorigin();
self.command = true;
self iprintln( "Adding a waypoint..." );
self iprintln( "ADS - climb; Attack + Use - tube" );
self iprintln( "Attack - grenade; Use - claymore" );
self iprintln( "Else(wait) - your stance" );
wait getcvarfloat( "bots_main_debug_commandWait" );
self addWaypoint( pos );
self.command = undefined;
while ( self secondaryoffhandbuttonpressed() )
{
wait 0.05;
}
}
}
linkWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self meleebuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
self.command = true;
self iprintln( "ADS - unlink; Else(wait) - Link" );
wait getcvarfloat( "bots_main_debug_commandWait" );
if ( !self adsbuttonpressed() )
{
self LinkWaypoint( self.closest );
}
else
{
self UnLinkWaypoint( self.closest );
}
self.command = undefined;
while ( self meleebuttonpressed() )
{
wait 0.05;
}
}
}
deleteWaypoints()
{
self endon( "disconnect" );
self endon( "death" );
for ( ;; )
{
while ( !self fragbuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
self.command = true;
self iprintln( "Attack - deleteAll; ADS - Load" );
self iprintln( "Else(wait) - delete" );
wait getcvarfloat( "bots_main_debug_commandWait" );
if ( self attackbuttonpressed() )
{
self deleteAllWaypoints();
}
else if ( self adsbuttonpressed() )
{
self LoadWaypoints();
}
else
{
self deleteWaypoint( self.closest );
}
self.command = undefined;
while ( self fragbuttonpressed() )
{
wait 0.05;
}
}
}
watchSaveWaypointsCommand()
{
self endon( "death" );
self endon( "disconnect" );
for ( ;; )
{
while ( !self usebuttonpressed() || !self attackbuttonpressed() || isdefined( self.command ) )
{
wait 0.05;
}
self.command = true;
self iprintln( "ADS - Autolink; Else(wait) - Save" );
wait getcvarfloat( "bots_main_debug_commandWait" );
if ( !self adsbuttonpressed() )
{
self checkForWarnings();
wait 1;
logprint( "***********ABiliTy's WPDump**************\n\n" );
logprint( "\n\n\n\n" );
mpnm = getMapName( getcvar( "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/*" );
for ( c = 0; c < level.waypoints[ i ].children.size; 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 ].children.size == 1 ) || level.waypoints[ i ].type == "climb" || level.waypoints[ i ].type == "grenade" ) )
{
logprint( "*/waypoints[ " + i + " ].angles = " + level.waypoints[ i ].angles + ";\n/*" );
}
}
logprint( "*/return waypoints;\n}\n\n\n\n" );
filename = "waypoints/" + getcvar( "mapname" ) + "_wp.csv";
println( "********* Start Bot Warfare WPDump *********" );
println( level.waypointcount );
// cod2 fprintln always ends the write with a comma...
//f = openfile( filename, "write" );
f = -1;
if ( f >= 0 )
{
fprintln( f, level.waypointcount + "\n" );
}
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.children.size; h++ )
{
str += wp.children[ h ];
if ( h < wp.children.size - 1 )
{
str += " ";
}
}
str += "," + wp.type + ",";
if ( isdefined( wp.angles ) )
{
str += wp.angles[ 0 ] + " " + wp.angles[ 1 ] + " " + wp.angles[ 2 ] + ",";
}
else
{
str += ",";
}
str += ",";
println( str );
if ( f >= 0 )
{
fprintln( f, str + "\n" );
}
}
if ( f >= 0 )
{
closefile( f );
}
println( "\n\n\n\n\n\n" );
self iprintln( "Saved!!! to " + filename );
}
else
{
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.closest;
}
}
self.command = undefined;
while ( self usebuttonpressed() && self attackbuttonpressed() )
{
wait 0.05;
}
}
}
LoadWaypoints()
{
self deleteAllWaypoints();
self iprintlnbold( "Loading WPS..." );
load_waypoints();
level.waypointcount = level.waypoints.size;
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 ].children.size <= 0 )
{
self iprintln( "WARNING: waypoint " + i + " childCount is " + level.waypoints[ i ].children.size );
}
else
{
if ( !isdefined( level.waypoints[ i ].children ) || !isdefined( level.waypoints[ i ].children.size ) )
{
self iprintln( "WARNING: waypoint " + i + " children is not defined" );
}
else
{
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; 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 ( !isdefined( level.waypoints[ i ].angles ) && ( level.waypoints[ i ].type == "claymore" || level.waypoints[ i ].type == "tube" || ( level.waypoints[ i ].type == "crouch" && level.waypoints[ i ].children.size == 1 ) || level.waypoints[ i ].type == "climb" || level.waypoints[ i ].type == "grenade" ) )
{
self iprintln( "WARNING: waypoint " + i + " angles is undefined" );
}
}
}
deleteAllWaypoints()
{
level.waypoints = [];
level.waypointcount = 0;
self iprintln( "DelAllWps" );
}
deleteWaypoint( nwp )
{
if ( nwp == -1 || distance( self.origin, level.waypoints[ nwp ].origin ) > getcvarfloat( "bots_main_debug_minDist" ) )
{
self iprintln( "No close enough waypoint to delete." );
return;
}
level.wptolink = -1;
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
{
child = level.waypoints[ nwp ].children[ i ];
level.waypoints[ child ].children = array_remove( level.waypoints[ child ].children, nwp );
}
for ( i = 0; i < level.waypointcount; i++ )
{
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; 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( pos )
{
level.waypoints[ level.waypointcount ] = spawnstruct();
level.waypoints[ level.waypointcount ].origin = pos;
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 = [];
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++;
}
}
UnLinkWaypoint( nwp )
{
if ( nwp == -1 || distance( self.origin, level.waypoints[ nwp ].origin ) > getcvarfloat( "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 );
self iprintln( "Waypoint " + nwp + " Broken to " + level.wptolink );
level.wptolink = -1;
}
LinkWaypoint( nwp )
{
if ( nwp == -1 || distance( self.origin, level.waypoints[ nwp ].origin ) > getcvarfloat( "bots_main_debug_minDist" ) )
{
self iprintln( "Waypoint Link Cancelled " + level.wptolink );
level.wptolink = -1;
return;
}
if ( level.wptolink == -1 || nwp == level.wptolink )
{
level.wptolink = nwp;
self iprintln( "Waypoint Link Started " + nwp );
return;
}
weGood = true;
for ( i = level.waypoints[ level.wptolink ].children.size - 1; i >= 0; i-- )
{
if ( level.waypoints[ level.wptolink ].children[ i ] == nwp )
{
weGood = false;
break;
}
}
if ( weGood )
{
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
{
if ( level.waypoints[ nwp ].children[ i ] == level.wptolink )
{
weGood = false;
break;
}
}
}
if ( !weGood )
{
self iprintln( "Waypoint Link Cancelled " + nwp + " and " + level.wptolink + " already linked." );
level.wptolink = -1;
return;
}
level.waypoints[ level.wptolink ].children[ level.waypoints[ level.wptolink ].children.size ] = nwp;
level.waypoints[ nwp ].children[ level.waypoints[ nwp ].children.size ] = level.wptolink;
self iprintln( "Waypoint " + nwp + " Linked to " + level.wptolink );
level.wptolink = -1;
}
destroyOnDeath( hud )
{
hud endon( "death" );
self waittill_either( "death", "disconnect" );
hud destroy();
}
textScroll( string )
{
self endon( "death" );
self endon( "disconnect" );
// thanks ActionScript
/*back = createbar( ( 0, 0, 0 ), 1000, 30 );
back setpoint( "CENTER", undefined, 0, 220 );
self thread destroyOnDeath( back );
text = createfontstring( "default", 1.5 );
text settext( string );
self thread destroyOnDeath( text );
for ( ;; )
{
text setpoint( "CENTER", undefined, 1200, 220 );
text setpoint( "CENTER", undefined, -1200, 220, 20 );
wait 20;
}*/
}

View File

@@ -6,6 +6,7 @@ init()
// bootstrap
level thread scripts\mp\bots_adapter_libcod::init();
level thread scripts\mp\bots_wp_editor::init();
level thread scripts\mp\bots::init();
}

View File

@@ -0,0 +1,127 @@
126
-590.571 1849.09 0.838144,1,stand,6.54785 -77.157 0,,
-628.197 1629.02 2.26838,0 2,stand,17.7759 106.782 0,,
-421.58 1590.32 2.34734,1 3 7 6,stand,15.1337 76.756 0,,
-380.92 1865.48 0.125,2 4,stand,20.3357 -3.79578 0,,
-157.317 1869.93 0.145806,3 5,stand,22.5604 -93.9056 0,,
-178.786 1757.99 0.125002,4 6 8,stand,20.1489 -102.167 0,,
-224.651 1615.39 0.488254,5 7 24 2,stand,21.4453 -99.9371 0,,
-235.809 1534.49 4.53232,6 2,stand,15.7874 151.76 0,,
82.9078 1749.78 -8.20018,5 9 24,stand,20.8905 0.862427 0,,
367.546 1749.78 3.14994,8 10 25,stand,17.0837 -2.40601 0,,
515.378 1631.69 0.125,9 11 26,stand,22.934 56.618 0,,
599.068 1784.85 0.125,10 12,stand,21.8188 9.47571 0,,
718.086 1785.44 -0.255782,11 13 64,stand,16.3422 -94.5538 0,,
688.432 1560.28 2.67747,12 14,stand,16.2488 -90.6592 0,,
686.743 1271.12 32.125,13 15 27,stand,16.1554 -90.7526 0,,
420.413 1233.17 32.125,14 16,stand,15.3204 178.583 0,,
102.836 1235.09 2.13169,15 17,stand,5.76233 173.754 0,,
-149.283 1253.16 0.745125,16 18 22,stand,19.4073 -178.077 0,,
-280.648 1248.4 36.1911,17 19,stand,25.7135 100.624 0,,
-299.174 1381.62 40.9798,18 20,stand,24.5105 172.271 0,,
-578.246 1382.06 44.9136,19 21,stand,25.0653 -96.5973 0,,
-596.25 1242.02 41.4588,20,stand,16.062 104.227 0,,
-131.326 1416.13 3.33408,17 23,stand,21.3519 19.8688 0,,
10.4335 1497.11 6.08899,22 24,stand,17.2705 160.005 0,,
3.18074 1607.48 -6.89213,23 6 25 8,stand,17.4573 154.061 0,,
204.731 1630.97 -0.220104,24 26 9,stand,22.5604 2.8894 0,,
432.278 1629.7 0.323285,25 10,stand,24.4171 -60.3094 0,,
1057.08 1241.89 32.125,14 28 65,stand,17.1771 -3.16956 0,,
1266.22 1265.83 32.125,27 29,stand,14.1174 -12.6343 0,,
1430.53 1181.56 32.125,28 30 65,stand,18.1989 -168.47 0,,
1677.77 1154.48 32.125,29 31,stand,18.1055 -2.61475 0,,
1898.47 1149.99 0.125,30 32 33,stand,18.0121 -6.60278 0,,
2180.07 1139.22 0.125,31,stand,10.9589 -143.97 0,,
1885.47 1514.4 0.125,31 34,stand,19.314 -95.4327 0,,
1329.12 1514.12 2.85579,33 35 64,stand,30.2618 -12.3541 0,,
1333.96 1698.83 0.244813,34 36 64 99,stand,25.1587 85.3638 0,,
1351.96 1920.87 -0.231463,35 37 63,stand,28.7787 -39.0839 0,,
1725.14 1911.38 4.94784,36 38,stand,16.8091 -0.85144 0,,
2040.93 1911.08 16.335,37 39,stand,18.2922 150.326 0,,
2004.43 2047.75 18.9263,38 40,stand,24.137 -96.6412 0,,
1610.29 2033.88 0.16182,39 41,stand,17.2705 12.7002 0,,
1603.94 2259.69 -1.94746,40 42 62,stand,25.2521 -5.3009 0,,
1890.26 2247.79 -1.43648,41 43,stand,16.4355 109.402 0,,
1868.76 2637.73 3.14823,44 42,stand,16.5289 93.0652 0,,
1850.24 2968.14 0.0132954,43 45,stand,21.5387 -173.293 0,,
1755.73 2962.55 0.252641,44 46 53,stand,25.2521 87.5006 0,,
1755.31 3174.61 21.8029,45 47 48,stand,18.6603 -53.0035 0,,
1861.79 3175.88 32.6631,46,stand,25.0653 -25.0708 0,,
1520.21 3166.28 30.6774,49 46,stand,13.7439 -178.094 0,,
1181.99 3152.9 32.6795,50 48 58,stand,17.0837 -176.331 0,,
832.793 3137.4 40.1253,49 51,stand,17.8253 -84.9243 0,,
838.43 2958.83 48.1785,52 50,stand,17.644 -90.5823 0,,
841.398 2688.23 44.5658,51,stand,22.0056 160.746 0,,
1311.48 2959.1 0.517998,45 54,stand,16.7157 -89.3573 0,,
1315.19 2554.97 0.81357,53 55,stand,17.0837 -91.214 0,,
1300.9 2491.1 2.54647,54 56 57,stand,40.2869 4.27917 0,,
1538.63 2489.83 12.2181,55,stand,16.062 -156.011 0,,
1162.46 2492.9 -0.0649382,55 58 59 62,stand,14.6722 93.2739 0,,
1149.8 2818.46 8.16622,57 49,stand,12.5354 87.8961 0,,
859.35 2568.7 2.83232,57 60,stand,15.6006 -139.675 0,,
702.953 2374.79 1.88195,59 61,stand,16.8091 -21.264 0,,
935.365 2237.46 -1.84044,60 62,stand,17.8253 2.95532 0,,
1199.83 2232.44 -4.69814,61 57 41 63,stand,19.0338 99.657 0,,
1152.61 1908.19 1.17062,62 36 64,stand,16.9904 0.725098 0,,
1112.04 1703.96 16.8523,63 35 12 34,stand,19.5007 -0.85144 0,,
1196 1069.44 32.125,27 29 66,stand,16.8091 -92.9059 0,,
1172.93 618.397 11.9747,65 67 107,stand,18.1989 153.298 0,,
834.839 610.779 9.75177,66 68,stand,18.6603 -153.902 0,,
662.302 567.655 7.6941,67 69,stand,19.7754 -31.9592 0,,
701.237 340.814 0.125001,68 70,stand,13.8373 -89.6814 0,,
718.311 88.4924 2.28071,69 71 82 84,stand,19.1272 -110.748 0,,
104.092 85.0792 -111.213,70 72 81,stand,2.60925 -6.71265 0,,
-153.141 81.8865 -110.594,71 73,stand,17.0837 -78.728 0,,
-141.984 -218.268 -119.033,72 74 81,stand,17.0837 -89.7748 0,,
43.1897 -434.086 -120.548,73 75,stand,15.9741 93.5101 0,,
353.412 -402.658 -118.912,74 76 81,stand,12.074 3.30688 0,,
776.127 -383.859 -68.2447,75 77,stand,11.0522 0.428467 0,,
1242.68 -383.226 2.7176,76 78 86 83,stand,22.1869 171.76 0,,
1257.4 -646.344 17.5631,77 79,stand,15.0458 83.4906 0,,
1003.18 -670.307 23.5316,78 80,stand,15.6006 176.385 0,,
651.006 -651.367 23.8961,79 125,stand,15.6006 179.632 0,,
238.093 -146.765 -111.178,71 75 73,stand,17.1771 130.803 0,,
704.395 -124.113 10.7536,70 83,stand,14.9524 0.153809 0,,
1204.22 -104.288 8.84174,82 84 77,stand,17.5507 126.271 0,,
1190.21 118.547 8.37926,83 70 85,stand,20.7971 -165.333 0,,
1442.71 -41.7574 8.53327,84 86,stand,21.5387 -83.573 0,,
1481 -386.371 -1.04932,85 77 87,stand,19.7754 167.108 0,,
1729.31 -359.93 11.2098,86 88 92,stand,17.0837 -92.1863 0,,
1719.86 -785.173 12.0328,87 89,stand,16.8091 -1.51611 0,,
2016.64 -788.394 12.1242,88 90,stand,18.0121 -28.1525 0,,
2232.12 -765.233 13.3972,89 91 117,stand,18.479 -66.0168 0,,
2203.88 -485.66 10.4454,90 92 100 113,stand,17.0837 -171.271 0,,
1979.53 -377.908 12.6095,91 87 93,stand,21.4453 170.634 0,,
1993.07 88.5781 -89.2714,92 94,stand,17.9187 89.5056 0,,
2035.69 542.832 -183.6,93 95 102,stand,19.314 76.6022 0,,
2167.26 815.766 -184.901,94 96,stand,12.7222 104.26 0,,
2106.56 1105.64 -183.698,95 97,stand,14.6722 87.4622 0,,
2092.55 1420.2 -183.731,96 98,stand,10.2173 97.8552 0,,
2036.12 1649.85 -183.461,97 99 118,stand,4.92737 179.061 0,,
1674.08 1718.53 -118.741,98 35,stand,2.3291 176.182 0,,
2161.41 -154.875 -18.7248,91 101,stand,28.3118 86.0669 0,,
2179.86 91.0802 -95.409,100 102 103,stand,16.1554 99.1516 0,,
2166.39 454.711 -181.676,101 94,stand,20.3357 90.6152 0,,
2388.4 99.5168 7.81654,101 104 112,stand,41.2152 178.984 0,,
2372.18 572.994 17.8926,103 105 108,stand,15.5072 -84.408 0,,
2045.11 586.832 11.9238,104 106,stand,11.7938 -179.72 0,,
1696.56 583.78 11.9194,105 107,stand,12.5354 -174.243 0,,
1424.33 564.566 11.7685,106 66,stand,11.7004 176.94 0,,
2589.69 445.536 23.5981,104 109 111,stand,17.7374 37.2491 0,,
2894.29 597.005 32.7013,108 110,stand,24.6973 -58.2385 0,,
2986.62 263.478 26.5739,109 111,stand,16.3422 109.006 0,,
2640.03 137.982 24.8613,110 112 108,stand,19.9622 -168.563 0,,
2447.61 99.4904 8.125,111 103 113,stand,12.1674 22.89 0,,
2438.6 -314.617 14.3645,112 114 117 91,stand,16.8091 -3.00476 0,,
2691.32 -338.284 15.8616,113 115,stand,21.1707 -97.1027 0,,
2659.87 -589.763 11.9619,114 116,stand,22.6538 -105.919 0,,
2616.43 -782.857 11.8677,115 117,stand,18.2922 86.0889 0,,
2454.88 -673.401 12.5757,116 90 113,stand,16.4355 177.127 0,,
1990.56 1822.11 -183.667,98 119,stand,15.683 0.0604248 0,,
2053.3 1822.15 -181.274,118 120,climb,0.0933838 0.153809 0,,
2103.53 1823.26 -116.773,119 121,climb,0.714111 1.08215 0,,
2174.31 1823.18 -52.0472,120,climb,13.7604 -1.71387 0,,
-45.7835 -519.639 64.125,123 124,stand,16.3586 -1.65344 0,,
-98.2583 -739.482 17.9988,122,stand,18.5834 74.35 0,,
221.846 -518.622 64.125,122 125,stand,9.58008 -0.532837 0,,
610.19 -523.562 64.125,124 80,stand,20.3467 -0.807495 0,,
1 126
2 -590.571 1849.09 0.838144,1,stand,6.54785 -77.157 0,,
3 -628.197 1629.02 2.26838,0 2,stand,17.7759 106.782 0,,
4 -421.58 1590.32 2.34734,1 3 7 6,stand,15.1337 76.756 0,,
5 -380.92 1865.48 0.125,2 4,stand,20.3357 -3.79578 0,,
6 -157.317 1869.93 0.145806,3 5,stand,22.5604 -93.9056 0,,
7 -178.786 1757.99 0.125002,4 6 8,stand,20.1489 -102.167 0,,
8 -224.651 1615.39 0.488254,5 7 24 2,stand,21.4453 -99.9371 0,,
9 -235.809 1534.49 4.53232,6 2,stand,15.7874 151.76 0,,
10 82.9078 1749.78 -8.20018,5 9 24,stand,20.8905 0.862427 0,,
11 367.546 1749.78 3.14994,8 10 25,stand,17.0837 -2.40601 0,,
12 515.378 1631.69 0.125,9 11 26,stand,22.934 56.618 0,,
13 599.068 1784.85 0.125,10 12,stand,21.8188 9.47571 0,,
14 718.086 1785.44 -0.255782,11 13 64,stand,16.3422 -94.5538 0,,
15 688.432 1560.28 2.67747,12 14,stand,16.2488 -90.6592 0,,
16 686.743 1271.12 32.125,13 15 27,stand,16.1554 -90.7526 0,,
17 420.413 1233.17 32.125,14 16,stand,15.3204 178.583 0,,
18 102.836 1235.09 2.13169,15 17,stand,5.76233 173.754 0,,
19 -149.283 1253.16 0.745125,16 18 22,stand,19.4073 -178.077 0,,
20 -280.648 1248.4 36.1911,17 19,stand,25.7135 100.624 0,,
21 -299.174 1381.62 40.9798,18 20,stand,24.5105 172.271 0,,
22 -578.246 1382.06 44.9136,19 21,stand,25.0653 -96.5973 0,,
23 -596.25 1242.02 41.4588,20,stand,16.062 104.227 0,,
24 -131.326 1416.13 3.33408,17 23,stand,21.3519 19.8688 0,,
25 10.4335 1497.11 6.08899,22 24,stand,17.2705 160.005 0,,
26 3.18074 1607.48 -6.89213,23 6 25 8,stand,17.4573 154.061 0,,
27 204.731 1630.97 -0.220104,24 26 9,stand,22.5604 2.8894 0,,
28 432.278 1629.7 0.323285,25 10,stand,24.4171 -60.3094 0,,
29 1057.08 1241.89 32.125,14 28 65,stand,17.1771 -3.16956 0,,
30 1266.22 1265.83 32.125,27 29,stand,14.1174 -12.6343 0,,
31 1430.53 1181.56 32.125,28 30 65,stand,18.1989 -168.47 0,,
32 1677.77 1154.48 32.125,29 31,stand,18.1055 -2.61475 0,,
33 1898.47 1149.99 0.125,30 32 33,stand,18.0121 -6.60278 0,,
34 2180.07 1139.22 0.125,31,stand,10.9589 -143.97 0,,
35 1885.47 1514.4 0.125,31 34,stand,19.314 -95.4327 0,,
36 1329.12 1514.12 2.85579,33 35 64,stand,30.2618 -12.3541 0,,
37 1333.96 1698.83 0.244813,34 36 64 99,stand,25.1587 85.3638 0,,
38 1351.96 1920.87 -0.231463,35 37 63,stand,28.7787 -39.0839 0,,
39 1725.14 1911.38 4.94784,36 38,stand,16.8091 -0.85144 0,,
40 2040.93 1911.08 16.335,37 39,stand,18.2922 150.326 0,,
41 2004.43 2047.75 18.9263,38 40,stand,24.137 -96.6412 0,,
42 1610.29 2033.88 0.16182,39 41,stand,17.2705 12.7002 0,,
43 1603.94 2259.69 -1.94746,40 42 62,stand,25.2521 -5.3009 0,,
44 1890.26 2247.79 -1.43648,41 43,stand,16.4355 109.402 0,,
45 1868.76 2637.73 3.14823,44 42,stand,16.5289 93.0652 0,,
46 1850.24 2968.14 0.0132954,43 45,stand,21.5387 -173.293 0,,
47 1755.73 2962.55 0.252641,44 46 53,stand,25.2521 87.5006 0,,
48 1755.31 3174.61 21.8029,45 47 48,stand,18.6603 -53.0035 0,,
49 1861.79 3175.88 32.6631,46,stand,25.0653 -25.0708 0,,
50 1520.21 3166.28 30.6774,49 46,stand,13.7439 -178.094 0,,
51 1181.99 3152.9 32.6795,50 48 58,stand,17.0837 -176.331 0,,
52 832.793 3137.4 40.1253,49 51,stand,17.8253 -84.9243 0,,
53 838.43 2958.83 48.1785,52 50,stand,17.644 -90.5823 0,,
54 841.398 2688.23 44.5658,51,stand,22.0056 160.746 0,,
55 1311.48 2959.1 0.517998,45 54,stand,16.7157 -89.3573 0,,
56 1315.19 2554.97 0.81357,53 55,stand,17.0837 -91.214 0,,
57 1300.9 2491.1 2.54647,54 56 57,stand,40.2869 4.27917 0,,
58 1538.63 2489.83 12.2181,55,stand,16.062 -156.011 0,,
59 1162.46 2492.9 -0.0649382,55 58 59 62,stand,14.6722 93.2739 0,,
60 1149.8 2818.46 8.16622,57 49,stand,12.5354 87.8961 0,,
61 859.35 2568.7 2.83232,57 60,stand,15.6006 -139.675 0,,
62 702.953 2374.79 1.88195,59 61,stand,16.8091 -21.264 0,,
63 935.365 2237.46 -1.84044,60 62,stand,17.8253 2.95532 0,,
64 1199.83 2232.44 -4.69814,61 57 41 63,stand,19.0338 99.657 0,,
65 1152.61 1908.19 1.17062,62 36 64,stand,16.9904 0.725098 0,,
66 1112.04 1703.96 16.8523,63 35 12 34,stand,19.5007 -0.85144 0,,
67 1196 1069.44 32.125,27 29 66,stand,16.8091 -92.9059 0,,
68 1172.93 618.397 11.9747,65 67 107,stand,18.1989 153.298 0,,
69 834.839 610.779 9.75177,66 68,stand,18.6603 -153.902 0,,
70 662.302 567.655 7.6941,67 69,stand,19.7754 -31.9592 0,,
71 701.237 340.814 0.125001,68 70,stand,13.8373 -89.6814 0,,
72 718.311 88.4924 2.28071,69 71 82 84,stand,19.1272 -110.748 0,,
73 104.092 85.0792 -111.213,70 72 81,stand,2.60925 -6.71265 0,,
74 -153.141 81.8865 -110.594,71 73,stand,17.0837 -78.728 0,,
75 -141.984 -218.268 -119.033,72 74 81,stand,17.0837 -89.7748 0,,
76 43.1897 -434.086 -120.548,73 75,stand,15.9741 93.5101 0,,
77 353.412 -402.658 -118.912,74 76 81,stand,12.074 3.30688 0,,
78 776.127 -383.859 -68.2447,75 77,stand,11.0522 0.428467 0,,
79 1242.68 -383.226 2.7176,76 78 86 83,stand,22.1869 171.76 0,,
80 1257.4 -646.344 17.5631,77 79,stand,15.0458 83.4906 0,,
81 1003.18 -670.307 23.5316,78 80,stand,15.6006 176.385 0,,
82 651.006 -651.367 23.8961,79 125,stand,15.6006 179.632 0,,
83 238.093 -146.765 -111.178,71 75 73,stand,17.1771 130.803 0,,
84 704.395 -124.113 10.7536,70 83,stand,14.9524 0.153809 0,,
85 1204.22 -104.288 8.84174,82 84 77,stand,17.5507 126.271 0,,
86 1190.21 118.547 8.37926,83 70 85,stand,20.7971 -165.333 0,,
87 1442.71 -41.7574 8.53327,84 86,stand,21.5387 -83.573 0,,
88 1481 -386.371 -1.04932,85 77 87,stand,19.7754 167.108 0,,
89 1729.31 -359.93 11.2098,86 88 92,stand,17.0837 -92.1863 0,,
90 1719.86 -785.173 12.0328,87 89,stand,16.8091 -1.51611 0,,
91 2016.64 -788.394 12.1242,88 90,stand,18.0121 -28.1525 0,,
92 2232.12 -765.233 13.3972,89 91 117,stand,18.479 -66.0168 0,,
93 2203.88 -485.66 10.4454,90 92 100 113,stand,17.0837 -171.271 0,,
94 1979.53 -377.908 12.6095,91 87 93,stand,21.4453 170.634 0,,
95 1993.07 88.5781 -89.2714,92 94,stand,17.9187 89.5056 0,,
96 2035.69 542.832 -183.6,93 95 102,stand,19.314 76.6022 0,,
97 2167.26 815.766 -184.901,94 96,stand,12.7222 104.26 0,,
98 2106.56 1105.64 -183.698,95 97,stand,14.6722 87.4622 0,,
99 2092.55 1420.2 -183.731,96 98,stand,10.2173 97.8552 0,,
100 2036.12 1649.85 -183.461,97 99 118,stand,4.92737 179.061 0,,
101 1674.08 1718.53 -118.741,98 35,stand,2.3291 176.182 0,,
102 2161.41 -154.875 -18.7248,91 101,stand,28.3118 86.0669 0,,
103 2179.86 91.0802 -95.409,100 102 103,stand,16.1554 99.1516 0,,
104 2166.39 454.711 -181.676,101 94,stand,20.3357 90.6152 0,,
105 2388.4 99.5168 7.81654,101 104 112,stand,41.2152 178.984 0,,
106 2372.18 572.994 17.8926,103 105 108,stand,15.5072 -84.408 0,,
107 2045.11 586.832 11.9238,104 106,stand,11.7938 -179.72 0,,
108 1696.56 583.78 11.9194,105 107,stand,12.5354 -174.243 0,,
109 1424.33 564.566 11.7685,106 66,stand,11.7004 176.94 0,,
110 2589.69 445.536 23.5981,104 109 111,stand,17.7374 37.2491 0,,
111 2894.29 597.005 32.7013,108 110,stand,24.6973 -58.2385 0,,
112 2986.62 263.478 26.5739,109 111,stand,16.3422 109.006 0,,
113 2640.03 137.982 24.8613,110 112 108,stand,19.9622 -168.563 0,,
114 2447.61 99.4904 8.125,111 103 113,stand,12.1674 22.89 0,,
115 2438.6 -314.617 14.3645,112 114 117 91,stand,16.8091 -3.00476 0,,
116 2691.32 -338.284 15.8616,113 115,stand,21.1707 -97.1027 0,,
117 2659.87 -589.763 11.9619,114 116,stand,22.6538 -105.919 0,,
118 2616.43 -782.857 11.8677,115 117,stand,18.2922 86.0889 0,,
119 2454.88 -673.401 12.5757,116 90 113,stand,16.4355 177.127 0,,
120 1990.56 1822.11 -183.667,98 119,stand,15.683 0.0604248 0,,
121 2053.3 1822.15 -181.274,118 120,climb,0.0933838 0.153809 0,,
122 2103.53 1823.26 -116.773,119 121,climb,0.714111 1.08215 0,,
123 2174.31 1823.18 -52.0472,120,climb,13.7604 -1.71387 0,,
124 -45.7835 -519.639 64.125,123 124,stand,16.3586 -1.65344 0,,
125 -98.2583 -739.482 17.9988,122,stand,18.5834 74.35 0,,
126 221.846 -518.622 64.125,122 125,stand,9.58008 -0.532837 0,,
127 610.19 -523.562 64.125,124 80,stand,20.3467 -0.807495 0,,

View File

@@ -0,0 +1,4 @@
init()
{
level thread maps\mp\bots\_wp_editor::init();
}