mirror of
https://github.com/JezuzLizard/t4sp_bot_warfare.git
synced 2025-04-19 21:22:54 +00:00
spacing
This commit is contained in:
parent
271ea76c3e
commit
9e2025e86a
@ -84,8 +84,8 @@ init()
|
|||||||
if ( getdvar( "bots_play_opendoors" ) == "" )
|
if ( getdvar( "bots_play_opendoors" ) == "" )
|
||||||
setdvar( "bots_play_opendoors", true );
|
setdvar( "bots_play_opendoors", true );
|
||||||
|
|
||||||
if ( !isdefined( game["botWarfare"] ) )
|
if ( !isdefined( game[ "botWarfare" ] ) )
|
||||||
game["botWarfare"] = true;
|
game[ "botWarfare" ] = true;
|
||||||
|
|
||||||
level.bots_minsprintdistance = 315;
|
level.bots_minsprintdistance = 315;
|
||||||
level.bots_minsprintdistance *= level.bots_minsprintdistance;
|
level.bots_minsprintdistance *= level.bots_minsprintdistance;
|
||||||
@ -106,17 +106,17 @@ init()
|
|||||||
level.bots = [];
|
level.bots = [];
|
||||||
|
|
||||||
level.bots_fullautoguns = [];
|
level.bots_fullautoguns = [];
|
||||||
level.bots_fullautoguns["thompson"] = true;
|
level.bots_fullautoguns[ "thompson" ] = true;
|
||||||
level.bots_fullautoguns["mp40"] = true;
|
level.bots_fullautoguns[ "mp40" ] = true;
|
||||||
level.bots_fullautoguns["type100smg"] = true;
|
level.bots_fullautoguns[ "type100smg" ] = true;
|
||||||
level.bots_fullautoguns["ppsh"] = true;
|
level.bots_fullautoguns[ "ppsh" ] = true;
|
||||||
level.bots_fullautoguns["stg44"] = true;
|
level.bots_fullautoguns[ "stg44" ] = true;
|
||||||
level.bots_fullautoguns["30cal"] = true;
|
level.bots_fullautoguns[ "30cal" ] = true;
|
||||||
level.bots_fullautoguns["mg42"] = true;
|
level.bots_fullautoguns[ "mg42" ] = true;
|
||||||
level.bots_fullautoguns["dp28"] = true;
|
level.bots_fullautoguns[ "dp28" ] = true;
|
||||||
level.bots_fullautoguns["bar"] = true;
|
level.bots_fullautoguns[ "bar" ] = true;
|
||||||
level.bots_fullautoguns["fg42"] = true;
|
level.bots_fullautoguns[ "fg42" ] = true;
|
||||||
level.bots_fullautoguns["type99lmg"] = true;
|
level.bots_fullautoguns[ "type99lmg" ] = true;
|
||||||
|
|
||||||
level thread onPlayerConnect();
|
level thread onPlayerConnect();
|
||||||
level thread handleBots();
|
level thread handleBots();
|
||||||
@ -144,7 +144,7 @@ handleBots()
|
|||||||
|
|
||||||
for ( i = 0; i < bots.size; i++ )
|
for ( i = 0; i < bots.size; i++ )
|
||||||
{
|
{
|
||||||
BotBuiltinCmdExec( "clientkick " + bots[i] getentitynumber() );
|
BotBuiltinCmdExec( "clientkick " + bots[ i ] getentitynumber() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon,
|
|||||||
self maps\bots\_bot_script::onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime );
|
self maps\bots\_bot_script::onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevcallbackplayerdamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime );
|
self [[ level.prevcallbackplayerdamage ]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, modelIndex, psOffsetTime );
|
||||||
}
|
}
|
||||||
|
|
||||||
onActorDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset )
|
onActorDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset )
|
||||||
@ -181,7 +181,7 @@ onActorDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon,
|
|||||||
iDamage += int( self.maxhealth * randomfloatrange( 0.25, 1.25 ) );
|
iDamage += int( self.maxhealth * randomfloatrange( 0.25, 1.25 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevcallbackactordamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset );
|
self [[ level.prevcallbackactordamage ]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, iModelIndex, iTimeOffset );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -257,10 +257,10 @@ connected()
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
if ( !isdefined( self.pers["bot_host"] ) )
|
if ( !isdefined( self.pers[ "bot_host" ] ) )
|
||||||
self thread doHostCheck();
|
self thread doHostCheck();
|
||||||
|
|
||||||
level.players[level.players.size] = self;
|
level.players[ level.players.size ] = self;
|
||||||
self thread onDisconnectAll();
|
self thread onDisconnectAll();
|
||||||
|
|
||||||
self thread onSpawnedAll();
|
self thread onSpawnedAll();
|
||||||
@ -268,22 +268,22 @@ connected()
|
|||||||
if ( !self is_bot() )
|
if ( !self is_bot() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isdefined( self.pers["isBot"] ) )
|
if ( !isdefined( self.pers[ "isBot" ] ) )
|
||||||
{
|
{
|
||||||
// fast restart...
|
// fast restart...
|
||||||
self.pers["isBot"] = true;
|
self.pers[ "isBot" ] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isdefined( self.pers["isBotWarfare"] ) )
|
if ( !isdefined( self.pers[ "isBotWarfare" ] ) )
|
||||||
{
|
{
|
||||||
self.pers["isBotWarfare"] = true;
|
self.pers[ "isBotWarfare" ] = true;
|
||||||
self thread added();
|
self thread added();
|
||||||
}
|
}
|
||||||
|
|
||||||
self thread maps\bots\_bot_internal::connected();
|
self thread maps\bots\_bot_internal::connected();
|
||||||
self thread maps\bots\_bot_script::connected();
|
self thread maps\bots\_bot_script::connected();
|
||||||
|
|
||||||
level.bots[level.bots.size] = self;
|
level.bots[ level.bots.size ] = self;
|
||||||
self thread onDisconnect();
|
self thread onDisconnect();
|
||||||
|
|
||||||
level notify( "bot_connected", self );
|
level notify( "bot_connected", self );
|
||||||
@ -356,8 +356,8 @@ add_bot()
|
|||||||
|
|
||||||
if ( isdefined( bot ) )
|
if ( isdefined( bot ) )
|
||||||
{
|
{
|
||||||
bot.pers["isBot"] = true;
|
bot.pers[ "isBot" ] = true;
|
||||||
bot.pers["isBotWarfare"] = true;
|
bot.pers[ "isBotWarfare" ] = true;
|
||||||
bot thread added();
|
bot thread added();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -380,9 +380,9 @@ diffBots_loop()
|
|||||||
|
|
||||||
for ( i = 0; i < playercount; i++ )
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( !isdefined( player.pers["team"] ) )
|
if ( !isdefined( player.pers[ "team" ] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !player is_bot() )
|
if ( !player is_bot() )
|
||||||
@ -391,15 +391,15 @@ diffBots_loop()
|
|||||||
if ( hard < var_hard )
|
if ( hard < var_hard )
|
||||||
{
|
{
|
||||||
hard++;
|
hard++;
|
||||||
player.pers["bots"]["skill"]["base"] = 7;
|
player.pers[ "bots" ][ "skill" ][ "base" ] = 7;
|
||||||
}
|
}
|
||||||
else if ( med < var_med )
|
else if ( med < var_med )
|
||||||
{
|
{
|
||||||
med++;
|
med++;
|
||||||
player.pers["bots"]["skill"]["base"] = 4;
|
player.pers[ "bots" ][ "skill" ][ "base" ] = 4;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
player.pers["bots"]["skill"]["base"] = 1;
|
player.pers[ "bots" ][ "skill" ][ "base" ] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( var_skill != 0 && var_skill != 9 )
|
else if ( var_skill != 0 && var_skill != 9 )
|
||||||
@ -408,12 +408,12 @@ diffBots_loop()
|
|||||||
|
|
||||||
for ( i = 0; i < playercount; i++ )
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( !player is_bot() )
|
if ( !player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
player.pers["bots"]["skill"]["base"] = var_skill;
|
player.pers[ "bots" ][ "skill" ][ "base" ] = var_skill;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -466,7 +466,7 @@ addBots_loop()
|
|||||||
|
|
||||||
for ( i = 0; i < playercount; i++ )
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( player is_bot() )
|
if ( player is_bot() )
|
||||||
bots++;
|
bots++;
|
||||||
|
@ -92,7 +92,7 @@ watch_for_unlink()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
firstwp = level.waypoints[self.closest];
|
firstwp = level.waypoints[ self.closest ];
|
||||||
|
|
||||||
self iprintln( "wp selected for unlink: " + firstwp BotBuiltinGetNodeNumber() );
|
self iprintln( "wp selected for unlink: " + firstwp BotBuiltinGetNodeNumber() );
|
||||||
|
|
||||||
@ -104,7 +104,7 @@ watch_for_unlink()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
self toggle_link( firstwp, level.waypoints[self.closest] );
|
self toggle_link( firstwp, level.waypoints[ self.closest ] );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ array_contains( arr, it )
|
|||||||
{
|
{
|
||||||
for ( i = 0; i < arr.size; i++ )
|
for ( i = 0; i < arr.size; i++ )
|
||||||
{
|
{
|
||||||
if ( arr[i] == it )
|
if ( arr[ i ] == it )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ toggle_link( firstwp, secondwp )
|
|||||||
|
|
||||||
for ( i = 0; i < links.size; i++ )
|
for ( i = 0; i < links.size; i++ )
|
||||||
{
|
{
|
||||||
if ( links[i] BotBuiltinGetNodeNumber() == secnum )
|
if ( links[ i ] BotBuiltinGetNodeNumber() == secnum )
|
||||||
{
|
{
|
||||||
linked = true;
|
linked = true;
|
||||||
break;
|
break;
|
||||||
@ -149,19 +149,19 @@ toggle_link( firstwp, secondwp )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isdefined( level.bot_ignore_links[key] ) && array_contains( level.bot_ignore_links[key], secnum ) )
|
if ( isdefined( level.bot_ignore_links[ key ] ) && array_contains( level.bot_ignore_links[ key ], secnum ) )
|
||||||
{
|
{
|
||||||
a = level.bot_ignore_links[key];
|
a = level.bot_ignore_links[ key ];
|
||||||
|
|
||||||
a = array_remove( a, secnum );
|
a = array_remove( a, secnum );
|
||||||
|
|
||||||
if ( a.size <= 0 )
|
if ( a.size <= 0 )
|
||||||
{
|
{
|
||||||
level.bot_ignore_links[key] = undefined;
|
level.bot_ignore_links[ key ] = undefined;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
level.bot_ignore_links[key] = a;
|
level.bot_ignore_links[ key ] = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
self iprintln( "removed unlink: " + key + " " + secnum );
|
self iprintln( "removed unlink: " + key + " " + secnum );
|
||||||
@ -169,15 +169,15 @@ toggle_link( firstwp, secondwp )
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !isdefined( level.bot_ignore_links[key] ) )
|
if ( !isdefined( level.bot_ignore_links[ key ] ) )
|
||||||
{
|
{
|
||||||
level.bot_ignore_links[key] = [];
|
level.bot_ignore_links[ key ] = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
a = level.bot_ignore_links[key];
|
a = level.bot_ignore_links[ key ];
|
||||||
a[a.size] = secnum;
|
a[ a.size ] = secnum;
|
||||||
|
|
||||||
level.bot_ignore_links[key] = a;
|
level.bot_ignore_links[ key ] = a;
|
||||||
|
|
||||||
self iprintln( "added unlink: " + key + " " + secnum );
|
self iprintln( "added unlink: " + key + " " + secnum );
|
||||||
BotBuiltinPrintConsole( "toggle_link: del: " + key + " " + secnum );
|
BotBuiltinPrintConsole( "toggle_link: del: " + key + " " + secnum );
|
||||||
@ -201,26 +201,26 @@ debug()
|
|||||||
|
|
||||||
for ( i = 0; i < level.waypointcount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
if ( closest == -1 || closer( self.origin, level.waypoints[i].origin, level.waypoints[closest].origin ) )
|
if ( closest == -1 || closer( self.origin, level.waypoints[ i ].origin, level.waypoints[ closest ].origin ) )
|
||||||
closest = i;
|
closest = i;
|
||||||
|
|
||||||
wpOrg = level.waypoints[i].origin + ( 0, 0, 25 );
|
wpOrg = level.waypoints[ i ].origin + ( 0, 0, 25 );
|
||||||
|
|
||||||
if ( distance( level.waypoints[i].origin, self.origin ) < getdvarfloat( "bots_main_debug_distance" ) && ( sighttracepassed( myEye, wpOrg, false, self ) || getdvarint( "bots_main_debug_drawThrough" ) ) && getConeDot( wpOrg, myEye, myAngles ) > getdvarfloat( "bots_main_debug_cone" ) )
|
if ( distance( level.waypoints[ i ].origin, self.origin ) < getdvarfloat( "bots_main_debug_distance" ) && ( sighttracepassed( myEye, wpOrg, false, self ) || getdvarint( "bots_main_debug_drawThrough" ) ) && getConeDot( wpOrg, myEye, myAngles ) > getdvarfloat( "bots_main_debug_cone" ) )
|
||||||
{
|
{
|
||||||
linked = level.waypoints[i] BotBuiltinGetLinkedNodes();
|
linked = level.waypoints[ i ] BotBuiltinGetLinkedNodes();
|
||||||
node_num_str = level.waypoints[i] BotBuiltinGetNodeNumber() + "";
|
node_num_str = level.waypoints[ i ] BotBuiltinGetNodeNumber() + "";
|
||||||
|
|
||||||
for ( h = linked.size - 1; h >= 0; h-- )
|
for ( h = linked.size - 1; h >= 0; h-- )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_ignore_links[node_num_str] ) )
|
if ( isdefined( level.bot_ignore_links[ node_num_str ] ) )
|
||||||
{
|
{
|
||||||
found = false;
|
found = false;
|
||||||
this_node_num = linked[h] BotBuiltinGetNodeNumber();
|
this_node_num = linked[ h ] BotBuiltinGetNodeNumber();
|
||||||
|
|
||||||
for ( j = 0; j < level.bot_ignore_links[node_num_str].size; j++ )
|
for ( j = 0; j < level.bot_ignore_links[ node_num_str ].size; j++ )
|
||||||
{
|
{
|
||||||
if ( level.bot_ignore_links[node_num_str][j] == this_node_num )
|
if ( level.bot_ignore_links[ node_num_str ][ j ] == this_node_num )
|
||||||
{
|
{
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
@ -231,20 +231,20 @@ debug()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
line( wpOrg, linked[h].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) );
|
line( wpOrg, linked[ h ].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
print3d( wpOrg, node_num_str, ( 1, 0, 0 ), 2 );
|
print3d( wpOrg, node_num_str, ( 1, 0, 0 ), 2 );
|
||||||
|
|
||||||
if ( isdefined( level.waypoints[i].animscript ) )
|
if ( isdefined( level.waypoints[ i ].animscript ) )
|
||||||
{
|
{
|
||||||
line( wpOrg, wpOrg + anglestoforward( level.waypoints[i].angles ) * 64, ( 1, 1, 1 ) );
|
line( wpOrg, wpOrg + anglestoforward( level.waypoints[ i ].angles ) * 64, ( 1, 1, 1 ) );
|
||||||
print3d( wpOrg + ( 0, 0, 15 ), level.waypoints[i].animscript, ( 1, 0, 0 ), 2 );
|
print3d( wpOrg + ( 0, 0, 15 ), level.waypoints[ i ].animscript, ( 1, 0, 0 ), 2 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( distance( self.origin, level.waypoints[closest].origin ) < 64 )
|
if ( distance( self.origin, level.waypoints[ closest ].origin ) < 64 )
|
||||||
self.closest = closest;
|
self.closest = closest;
|
||||||
else
|
else
|
||||||
self.closest = -1;
|
self.closest = -1;
|
||||||
|
@ -10,42 +10,42 @@ added()
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
self.pers["bots"] = [];
|
self.pers[ "bots" ] = [];
|
||||||
|
|
||||||
self.pers["bots"]["skill"] = [];
|
self.pers[ "bots" ][ "skill" ] = [];
|
||||||
self.pers["bots"]["skill"]["base"] = 7; // a base knownledge of the bot
|
self.pers[ "bots" ][ "skill" ][ "base" ] = 7; // a base knownledge of the bot
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.05; // how long it takes for a bot to aim to a location
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.05; // how long it takes for a bot to aim to a location
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 0; // the reaction time of the bot for inital targets
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 0; // the reaction time of the bot for inital targets
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 0; // reaction time for the bots of reoccuring targets
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 0; // reaction time for the bots of reoccuring targets
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500; // how long a bot ads's when they cant see the target
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 2500; // how long a bot ads's when they cant see the target
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 10000; // how long a bot will look at a target's last position
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 10000; // how long a bot will look at a target's last position
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 25000; // how long a bot will remember a target before forgetting about it when they cant see the target
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 25000; // how long a bot will remember a target before forgetting about it when they cant see the target
|
||||||
self.pers["bots"]["skill"]["fov"] = -1; // the fov of the bot, -1 being 360, 1 being 0
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = -1; // the fov of the bot, -1 being 360, 1 being 0
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 100000 * 2; // the longest distance a bot will target
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 100000 * 2; // the longest distance a bot will target
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 100000; // the start distance before bot's target abilitys diminish
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 100000; // the start distance before bot's target abilitys diminish
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0; // how long a bot waits after spawning before targeting, etc
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0; // how long a bot waits after spawning before targeting, etc
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 10000; // how far a bot has awareness
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 10000; // how far a bot has awareness
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.05; // how fast a bot shoots semiauto
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.05; // how fast a bot shoots semiauto
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 1; // how long a bot shoots after target dies/cant be seen
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 1; // how long a bot shoots after target dies/cant be seen
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 1; // how long a bot correct's their aim after targeting
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 1; // how long a bot correct's their aim after targeting
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 1; // how far a bot's incorrect aim is
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 1; // how far a bot's incorrect aim is
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 0.05; // how often a bot changes their bone target
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 0.05; // how often a bot changes their bone target
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_head"; // a list of comma seperated bones the bot will aim at
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_head"; // a list of comma seperated bones the bot will aim at
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5; // a factor of how much ads to reduce when adsing
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5; // a factor of how much ads to reduce when adsing
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5; // a factor of how much more aimspeed delay to add
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5; // a factor of how much more aimspeed delay to add
|
||||||
|
|
||||||
self.pers["bots"]["behavior"] = [];
|
self.pers[ "bots" ][ "behavior" ] = [];
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 50; // percentage of how often the bot strafes a target
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 50; // percentage of how often the bot strafes a target
|
||||||
self.pers["bots"]["behavior"]["nade"] = 50; // percentage of how often the bot will grenade
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 50; // percentage of how often the bot will grenade
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 50; // percentage of how often the bot will sprint
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 50; // percentage of how often the bot will sprint
|
||||||
self.pers["bots"]["behavior"]["camp"] = 50; // percentage of how often the bot will camp
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 50; // percentage of how often the bot will camp
|
||||||
self.pers["bots"]["behavior"]["follow"] = 50; // percentage of how often the bot will follow
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 50; // percentage of how often the bot will follow
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10; // percentage of how often the bot will crouch
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 10; // percentage of how often the bot will crouch
|
||||||
self.pers["bots"]["behavior"]["switch"] = 1; // percentage of how often the bot will switch weapons
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 1; // percentage of how often the bot will switch weapons
|
||||||
self.pers["bots"]["behavior"]["jump"] = 100; // percentage of how often the bot will jumpshot and dropshot
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 100; // percentage of how often the bot will jumpshot and dropshot
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["quickscope"] = false; // is a quickscoper
|
self.pers[ "bots" ][ "behavior" ][ "quickscope" ] = false; // is a quickscoper
|
||||||
self.pers["bots"]["behavior"]["initswitch"] = 10; // percentage of how often the bot will switch weapons on spawn
|
self.pers[ "bots" ][ "behavior" ][ "initswitch" ] = 10; // percentage of how often the bot will switch weapons on spawn
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -280,7 +280,7 @@ spawned()
|
|||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "zombified" );
|
self endon( "zombified" );
|
||||||
|
|
||||||
wait self.pers["bots"]["skill"]["spawn_time"];
|
wait self.pers[ "bots" ][ "skill" ][ "spawn_time" ];
|
||||||
|
|
||||||
self thread doBotMovement();
|
self thread doBotMovement();
|
||||||
self thread walk();
|
self thread walk();
|
||||||
@ -361,7 +361,7 @@ watchToLook()
|
|||||||
if ( self.bot.is_cur_sniper )
|
if ( self.bot.is_cur_sniper )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( randomint( 100 ) > self.pers["bots"]["behavior"]["jump"] )
|
if ( randomint( 100 ) > self.pers[ "bots" ][ "behavior" ][ "jump" ] )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !getdvarint( "bots_play_jumpdrop" ) )
|
if ( !getdvarint( "bots_play_jumpdrop" ) )
|
||||||
@ -370,7 +370,7 @@ watchToLook()
|
|||||||
if ( isdefined( self.bot.jump_time ) && gettime() - self.bot.jump_time <= 5000 )
|
if ( isdefined( self.bot.jump_time ) && gettime() - self.bot.jump_time <= 5000 )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( self.bot.target.rand <= self.pers["bots"]["behavior"]["strafe"] )
|
if ( self.bot.target.rand <= self.pers[ "bots" ][ "behavior" ][ "strafe" ] )
|
||||||
{
|
{
|
||||||
if ( self getstance() != "stand" )
|
if ( self getstance() != "stand" )
|
||||||
continue;
|
continue;
|
||||||
@ -405,12 +405,12 @@ stance_loop()
|
|||||||
toStance = "stand";
|
toStance = "stand";
|
||||||
|
|
||||||
if ( self.bot.next_wp != -1 )
|
if ( self.bot.next_wp != -1 )
|
||||||
toStance = level.waypoints[self.bot.next_wp].type;
|
toStance = level.waypoints[ self.bot.next_wp ].type;
|
||||||
|
|
||||||
if ( !isdefined( toStance ) )
|
if ( !isdefined( toStance ) )
|
||||||
toStance = "stand";
|
toStance = "stand";
|
||||||
|
|
||||||
if ( toStance == "stand" && randomint( 100 ) <= self.pers["bots"]["behavior"]["crouch"] )
|
if ( toStance == "stand" && randomint( 100 ) <= self.pers[ "bots" ][ "behavior" ][ "crouch" ] )
|
||||||
toStance = "crouch";
|
toStance = "crouch";
|
||||||
|
|
||||||
if ( toStance == "climb" )
|
if ( toStance == "climb" )
|
||||||
@ -433,7 +433,7 @@ stance_loop()
|
|||||||
|
|
||||||
curweap = self getcurrentweapon();
|
curweap = self getcurrentweapon();
|
||||||
time = gettime();
|
time = gettime();
|
||||||
chance = self.pers["bots"]["behavior"]["sprint"];
|
chance = self.pers[ "bots" ][ "behavior" ][ "sprint" ];
|
||||||
|
|
||||||
if ( time - self.lastspawntime < 5000 )
|
if ( time - self.lastspawntime < 5000 )
|
||||||
chance *= 2;
|
chance *= 2;
|
||||||
@ -611,41 +611,41 @@ doBotMovement_loop( data )
|
|||||||
|
|
||||||
if ( distancesquared( self.origin, move_To ) >= 49 )
|
if ( distancesquared( self.origin, move_To ) >= 49 )
|
||||||
{
|
{
|
||||||
cosa = cos( 0 - angles[1] );
|
cosa = cos( 0 - angles[ 1 ] );
|
||||||
sina = sin( 0 - angles[1] );
|
sina = sin( 0 - angles[ 1 ] );
|
||||||
|
|
||||||
// get the direction
|
// get the direction
|
||||||
dir = move_To - self.origin;
|
dir = move_To - self.origin;
|
||||||
|
|
||||||
// rotate our direction according to our angles
|
// rotate our direction according to our angles
|
||||||
dir = ( dir[0] * cosa - dir[1] * sina,
|
dir = ( dir[ 0 ] * cosa - dir[ 1 ] * sina,
|
||||||
dir[0] * sina + dir[1] * cosa,
|
dir[ 0 ] * sina + dir[ 1 ] * cosa,
|
||||||
0 );
|
0 );
|
||||||
|
|
||||||
// make the length 127
|
// make the length 127
|
||||||
dir = vectornormalize( dir ) * 127;
|
dir = vectornormalize( dir ) * 127;
|
||||||
|
|
||||||
// invert the second component as the engine requires this
|
// invert the second component as the engine requires this
|
||||||
dir = ( dir[0], 0 - dir[1], 0 );
|
dir = ( dir[ 0 ], 0 - dir[ 1 ], 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
startPos = self.origin + ( 0, 0, 50 );
|
startPos = self.origin + ( 0, 0, 50 );
|
||||||
startPosForward = startPos + anglestoforward( ( 0, angles[1], 0 ) ) * 25;
|
startPosForward = startPos + anglestoforward( ( 0, angles[ 1 ], 0 ) ) * 25;
|
||||||
bt = bullettrace( startPos, startPosForward, false, self );
|
bt = bullettrace( startPos, startPosForward, false, self );
|
||||||
|
|
||||||
if ( bt["fraction"] >= 1 )
|
if ( bt[ "fraction" ] >= 1 )
|
||||||
{
|
{
|
||||||
// check if need to jump
|
// check if need to jump
|
||||||
bt = bullettrace( startPosForward, startPosForward - ( 0, 0, 40 ), false, self );
|
bt = bullettrace( startPosForward, startPosForward - ( 0, 0, 40 ), false, self );
|
||||||
|
|
||||||
if ( bt["fraction"] < 1 && bt["normal"][2] > 0.9 && data.i > 1.5 )
|
if ( bt[ "fraction" ] < 1 && bt[ "normal" ][ 2 ] > 0.9 && data.i > 1.5 )
|
||||||
{
|
{
|
||||||
data.i = 0;
|
data.i = 0;
|
||||||
self thread jump();
|
self thread jump();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// check if need to knife glass
|
// check if need to knife glass
|
||||||
else if ( bt["surfacetype"] == "glass" )
|
else if ( bt[ "surfacetype" ] == "glass" )
|
||||||
{
|
{
|
||||||
if ( data.i > 1.5 )
|
if ( data.i > 1.5 )
|
||||||
{
|
{
|
||||||
@ -662,9 +662,9 @@ doBotMovement_loop( data )
|
|||||||
|
|
||||||
// move!
|
// move!
|
||||||
if ( ( self.bot.wantsprint && self.bot.issprinting ) || isdefined( self.bot.knifing_target ) )
|
if ( ( self.bot.wantsprint && self.bot.issprinting ) || isdefined( self.bot.knifing_target ) )
|
||||||
dir = ( 127, dir[1], 0 );
|
dir = ( 127, dir[ 1 ], 0 );
|
||||||
|
|
||||||
self BotBuiltinBotMovement( int( dir[0] ), int( dir[1] ) );
|
self BotBuiltinBotMovement( int( dir[ 0 ] ), int( dir[ 1 ] ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -711,15 +711,15 @@ bot_lookat( pos, time, vel, doAimPredict )
|
|||||||
myAngle = self getplayerangles();
|
myAngle = self getplayerangles();
|
||||||
angles = vectortoangles( ( pos - myEye ) - anglestoforward( myAngle ) );
|
angles = vectortoangles( ( pos - myEye ) - anglestoforward( myAngle ) );
|
||||||
|
|
||||||
X = angleclamp180( angles[0] - myAngle[0] );
|
X = angleclamp180( angles[ 0 ] - myAngle[ 0 ] );
|
||||||
X = X / steps;
|
X = X / steps;
|
||||||
|
|
||||||
Y = angleclamp180( angles[1] - myAngle[1] );
|
Y = angleclamp180( angles[ 1 ] - myAngle[ 1 ] );
|
||||||
Y = Y / steps;
|
Y = Y / steps;
|
||||||
|
|
||||||
for ( i = 0; i < steps; i++ )
|
for ( i = 0; i < steps; i++ )
|
||||||
{
|
{
|
||||||
myAngle = ( angleclamp180( myAngle[0] + X ), angleclamp180( myAngle[1] + Y ), 0 );
|
myAngle = ( angleclamp180( myAngle[ 0 ] + X ), angleclamp180( myAngle[ 1 ] + Y ), 0 );
|
||||||
self setplayerangles( myAngle );
|
self setplayerangles( myAngle );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
@ -790,14 +790,14 @@ target_loop()
|
|||||||
myEye = self geteye();
|
myEye = self geteye();
|
||||||
theTime = gettime();
|
theTime = gettime();
|
||||||
myAngles = self getplayerangles();
|
myAngles = self getplayerangles();
|
||||||
myFov = self.pers["bots"]["skill"]["fov"];
|
myFov = self.pers[ "bots" ][ "skill" ][ "fov" ];
|
||||||
bestTargets = [];
|
bestTargets = [];
|
||||||
bestTime = 2147483647;
|
bestTime = 2147483647;
|
||||||
rememberTime = self.pers["bots"]["skill"]["remember_time"];
|
rememberTime = self.pers[ "bots" ][ "skill" ][ "remember_time" ];
|
||||||
initReactTime = self.pers["bots"]["skill"]["init_react_time"];
|
initReactTime = self.pers[ "bots" ][ "skill" ][ "init_react_time" ];
|
||||||
hasTarget = isdefined( self.bot.target );
|
hasTarget = isdefined( self.bot.target );
|
||||||
adsAmount = self playerads();
|
adsAmount = self playerads();
|
||||||
adsFovFact = self.pers["bots"]["skill"]["ads_fov_multi"];
|
adsFovFact = self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ];
|
||||||
|
|
||||||
if ( hasTarget && !isdefined( self.bot.target.entity ) )
|
if ( hasTarget && !isdefined( self.bot.target.entity ) )
|
||||||
{
|
{
|
||||||
@ -827,7 +827,7 @@ target_loop()
|
|||||||
ent = self.bot.script_target;
|
ent = self.bot.script_target;
|
||||||
key = ent getentitynumber() + "";
|
key = ent getentitynumber() + "";
|
||||||
daDist = distancesquared( self.origin, ent.origin );
|
daDist = distancesquared( self.origin, ent.origin );
|
||||||
obj = self.bot.targets[key];
|
obj = self.bot.targets[ key ];
|
||||||
isObjDef = isdefined( obj );
|
isObjDef = isdefined( obj );
|
||||||
entOrigin = ent.origin;
|
entOrigin = ent.origin;
|
||||||
|
|
||||||
@ -841,7 +841,7 @@ target_loop()
|
|||||||
obj = self createTargetObj( ent, theTime );
|
obj = self createTargetObj( ent, theTime );
|
||||||
obj.offset = self.bot.script_target_offset;
|
obj.offset = self.bot.script_target_offset;
|
||||||
|
|
||||||
self.bot.targets[key] = obj;
|
self.bot.targets[ key ] = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
self targetObjUpdateTraced( obj, daDist, ent, theTime, true );
|
self targetObjUpdateTraced( obj, daDist, ent, theTime, true );
|
||||||
@ -855,17 +855,17 @@ target_loop()
|
|||||||
|
|
||||||
if ( obj.no_trace_time > rememberTime )
|
if ( obj.no_trace_time > rememberTime )
|
||||||
{
|
{
|
||||||
self.bot.targets[key] = undefined;
|
self.bot.targets[ key ] = undefined;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
enemy = enemies[i];
|
enemy = enemies[ i ];
|
||||||
|
|
||||||
key = enemy getentitynumber() + "";
|
key = enemy getentitynumber() + "";
|
||||||
obj = self.bot.targets[key];
|
obj = self.bot.targets[ key ];
|
||||||
daDist = distancesquared( self.origin, enemy.origin );
|
daDist = distancesquared( self.origin, enemy.origin );
|
||||||
isObjDef = isdefined( obj );
|
isObjDef = isdefined( obj );
|
||||||
|
|
||||||
@ -900,9 +900,9 @@ target_loop()
|
|||||||
sighttracepassed( myEye, targetAnkleLeft, false, enemy ) ||
|
sighttracepassed( myEye, targetAnkleLeft, false, enemy ) ||
|
||||||
sighttracepassed( myEye, targetAnkleRight, false, enemy ) )
|
sighttracepassed( myEye, targetAnkleRight, false, enemy ) )
|
||||||
|
|
||||||
&& ( ( traceHead["fraction"] >= 1.0 || traceHead["surfacetype"] == "glass" ) ||
|
&& ( ( traceHead[ "fraction" ] >= 1.0 || traceHead[ "surfacetype" ] == "glass" ) ||
|
||||||
( traceAnkleLeft["fraction"] >= 1.0 || traceAnkleLeft["surfacetype"] == "glass" ) ||
|
( traceAnkleLeft[ "fraction" ] >= 1.0 || traceAnkleLeft[ "surfacetype" ] == "glass" ) ||
|
||||||
( traceAnkleRight["fraction"] >= 1.0 || traceAnkleRight["surfacetype"] == "glass" ) )
|
( traceAnkleRight[ "fraction" ] >= 1.0 || traceAnkleRight[ "surfacetype" ] == "glass" ) )
|
||||||
|
|
||||||
&& ( getConeDot( enemy.origin, self.origin, myAngles ) >= myFov ||
|
&& ( getConeDot( enemy.origin, self.origin, myAngles ) >= myFov ||
|
||||||
( isObjDef && obj.trace_time ) )
|
( isObjDef && obj.trace_time ) )
|
||||||
@ -922,7 +922,7 @@ target_loop()
|
|||||||
{
|
{
|
||||||
obj = self createTargetObj( enemy, theTime );
|
obj = self createTargetObj( enemy, theTime );
|
||||||
|
|
||||||
self.bot.targets[key] = obj;
|
self.bot.targets[ key ] = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
self targetObjUpdateTraced( obj, daDist, enemy, theTime, false );
|
self targetObjUpdateTraced( obj, daDist, enemy, theTime, false );
|
||||||
@ -936,7 +936,7 @@ target_loop()
|
|||||||
|
|
||||||
if ( obj.no_trace_time > rememberTime )
|
if ( obj.no_trace_time > rememberTime )
|
||||||
{
|
{
|
||||||
self.bot.targets[key] = undefined;
|
self.bot.targets[ key ] = undefined;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -957,10 +957,10 @@ target_loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( timeDiff == bestTime )
|
if ( timeDiff == bestTime )
|
||||||
bestTargets[key] = obj;
|
bestTargets[ key ] = obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( hasTarget && isdefined( bestTargets[self.bot.target.entity getentitynumber() + ""] ) )
|
if ( hasTarget && isdefined( bestTargets[ self.bot.target.entity getentitynumber() + "" ] ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
closest = 2147483647;
|
closest = 2147483647;
|
||||||
@ -970,13 +970,13 @@ target_loop()
|
|||||||
|
|
||||||
for ( i = bestKeys.size - 1; i >= 0; i-- )
|
for ( i = bestKeys.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
theDist = bestTargets[bestKeys[i]].dist;
|
theDist = bestTargets[ bestKeys[ i ] ].dist;
|
||||||
|
|
||||||
if ( theDist > closest )
|
if ( theDist > closest )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
closest = theDist;
|
closest = theDist;
|
||||||
toBeTarget = bestTargets[bestKeys[i]];
|
toBeTarget = bestTargets[ bestKeys[ i ] ];
|
||||||
}
|
}
|
||||||
|
|
||||||
beforeTargetID = -1;
|
beforeTargetID = -1;
|
||||||
@ -1039,8 +1039,8 @@ updateBones()
|
|||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "zombified" );
|
self endon( "zombified" );
|
||||||
|
|
||||||
bones = strtok( self.pers["bots"]["skill"]["bones"], "," );
|
bones = strtok( self.pers[ "bots" ][ "skill" ][ "bones" ], "," );
|
||||||
waittime = self.pers["bots"]["skill"]["bone_update_interval"];
|
waittime = self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ];
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
@ -1083,7 +1083,7 @@ updateAimOffset( obj )
|
|||||||
{
|
{
|
||||||
if ( !isdefined( obj.aim_offset_base ) )
|
if ( !isdefined( obj.aim_offset_base ) )
|
||||||
{
|
{
|
||||||
diffAimAmount = self.pers["bots"]["skill"]["aim_offset_amount"];
|
diffAimAmount = self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ];
|
||||||
|
|
||||||
if ( diffAimAmount > 0 )
|
if ( diffAimAmount > 0 )
|
||||||
obj.aim_offset_base = ( randomfloatrange( 0 - diffAimAmount, diffAimAmount ),
|
obj.aim_offset_base = ( randomfloatrange( 0 - diffAimAmount, diffAimAmount ),
|
||||||
@ -1093,7 +1093,7 @@ updateAimOffset( obj )
|
|||||||
obj.aim_offset_base = ( 0, 0, 0 );
|
obj.aim_offset_base = ( 0, 0, 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
aimDiffTime = self.pers["bots"]["skill"]["aim_offset_time"] * 1000;
|
aimDiffTime = self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] * 1000;
|
||||||
objCreatedFor = obj.trace_time;
|
objCreatedFor = obj.trace_time;
|
||||||
|
|
||||||
if ( objCreatedFor >= aimDiffTime )
|
if ( objCreatedFor >= aimDiffTime )
|
||||||
@ -1109,11 +1109,11 @@ updateAimOffset( obj )
|
|||||||
*/
|
*/
|
||||||
targetObjUpdateTraced( obj, daDist, ent, theTime, isScriptObj )
|
targetObjUpdateTraced( obj, daDist, ent, theTime, isScriptObj )
|
||||||
{
|
{
|
||||||
distClose = self.pers["bots"]["skill"]["dist_start"];
|
distClose = self.pers[ "bots" ][ "skill" ][ "dist_start" ];
|
||||||
distClose *= self.bot.cur_weap_dist_multi;
|
distClose *= self.bot.cur_weap_dist_multi;
|
||||||
distClose *= distClose;
|
distClose *= distClose;
|
||||||
|
|
||||||
distMax = self.pers["bots"]["skill"]["dist_max"];
|
distMax = self.pers[ "bots" ][ "skill" ][ "dist_max" ];
|
||||||
distMax *= self.bot.cur_weap_dist_multi;
|
distMax *= self.bot.cur_weap_dist_multi;
|
||||||
distMax *= distMax;
|
distMax *= distMax;
|
||||||
|
|
||||||
@ -1160,7 +1160,7 @@ start_bot_after_target( who )
|
|||||||
self notify( "kill_after_target" );
|
self notify( "kill_after_target" );
|
||||||
self endon( "kill_after_target" );
|
self endon( "kill_after_target" );
|
||||||
|
|
||||||
wait self.pers["bots"]["skill"]["shoot_after_time"];
|
wait self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ];
|
||||||
|
|
||||||
self.bot.after_target = undefined;
|
self.bot.after_target = undefined;
|
||||||
}
|
}
|
||||||
@ -1179,13 +1179,13 @@ clear_bot_after_target()
|
|||||||
*/
|
*/
|
||||||
aim_loop()
|
aim_loop()
|
||||||
{
|
{
|
||||||
aimspeed = self.pers["bots"]["skill"]["aim_time"];
|
aimspeed = self.pers[ "bots" ][ "skill" ][ "aim_time" ];
|
||||||
|
|
||||||
eyePos = self geteye();
|
eyePos = self geteye();
|
||||||
curweap = self getcurrentweapon();
|
curweap = self getcurrentweapon();
|
||||||
angles = self getplayerangles();
|
angles = self getplayerangles();
|
||||||
adsAmount = self playerads();
|
adsAmount = self playerads();
|
||||||
adsAimSpeedFact = self.pers["bots"]["skill"]["ads_aimspeed_multi"];
|
adsAimSpeedFact = self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ];
|
||||||
|
|
||||||
// reduce aimspeed if ads'ing
|
// reduce aimspeed if ads'ing
|
||||||
if ( adsAmount > 0 )
|
if ( adsAmount > 0 )
|
||||||
@ -1196,7 +1196,7 @@ aim_loop()
|
|||||||
if ( isdefined( self.bot.target ) && isdefined( self.bot.target.entity ) && !( self.bot.prio_objective && isdefined( self.bot.script_aimpos ) ) )
|
if ( isdefined( self.bot.target ) && isdefined( self.bot.target.entity ) && !( self.bot.prio_objective && isdefined( self.bot.script_aimpos ) ) )
|
||||||
{
|
{
|
||||||
no_trace_time = self.bot.target.no_trace_time;
|
no_trace_time = self.bot.target.no_trace_time;
|
||||||
no_trace_look_time = self.pers["bots"]["skill"]["no_trace_look_time"];
|
no_trace_look_time = self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ];
|
||||||
|
|
||||||
if ( no_trace_time <= no_trace_look_time )
|
if ( no_trace_time <= no_trace_look_time )
|
||||||
{
|
{
|
||||||
@ -1218,8 +1218,8 @@ aim_loop()
|
|||||||
|
|
||||||
dist = self.bot.target.dist;
|
dist = self.bot.target.dist;
|
||||||
rand = self.bot.target.rand;
|
rand = self.bot.target.rand;
|
||||||
no_trace_ads_time = self.pers["bots"]["skill"]["no_trace_ads_time"];
|
no_trace_ads_time = self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ];
|
||||||
reaction_time = self.pers["bots"]["skill"]["reaction_time"];
|
reaction_time = self.pers[ "bots" ][ "skill" ][ "reaction_time" ];
|
||||||
nadeAimOffset = 0;
|
nadeAimOffset = 0;
|
||||||
|
|
||||||
bone = self.bot.target.bone;
|
bone = self.bot.target.bone;
|
||||||
@ -1248,7 +1248,7 @@ aim_loop()
|
|||||||
{
|
{
|
||||||
nade = self getValidGrenade();
|
nade = self getValidGrenade();
|
||||||
|
|
||||||
if ( isdefined( nade ) && rand <= self.pers["bots"]["behavior"]["nade"] && bullettracepassed( eyePos, eyePos + ( 0, 0, 75 ), false, self ) && bullettracepassed( last_pos, last_pos + ( 0, 0, 100 ), false, target ) && dist > level.bots_mingrenadedistance && dist < level.bots_maxgrenadedistance && getdvarint( "bots_play_nade" ) )
|
if ( isdefined( nade ) && rand <= self.pers[ "bots" ][ "behavior" ][ "nade" ] && bullettracepassed( eyePos, eyePos + ( 0, 0, 75 ), false, self ) && bullettracepassed( last_pos, last_pos + ( 0, 0, 100 ), false, target ) && dist > level.bots_mingrenadedistance && dist < level.bots_maxgrenadedistance && getdvarint( "bots_play_nade" ) )
|
||||||
{
|
{
|
||||||
time = 0.5;
|
time = 0.5;
|
||||||
|
|
||||||
@ -1269,7 +1269,7 @@ aim_loop()
|
|||||||
{
|
{
|
||||||
if ( self canFire( curweap ) && self isInRange( dist, curweap ) && self canAds( dist, curweap ) )
|
if ( self canFire( curweap ) && self isInRange( dist, curweap ) && self canAds( dist, curweap ) )
|
||||||
{
|
{
|
||||||
if ( !self.bot.is_cur_sniper || !self.pers["bots"]["behavior"]["quickscope"] )
|
if ( !self.bot.is_cur_sniper || !self.pers[ "bots" ][ "behavior" ][ "quickscope" ] )
|
||||||
self thread pressADS();
|
self thread pressADS();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1333,7 +1333,7 @@ aim_loop()
|
|||||||
|
|
||||||
if ( self.bot.is_cur_sniper )
|
if ( self.bot.is_cur_sniper )
|
||||||
{
|
{
|
||||||
if ( self.pers["bots"]["behavior"]["quickscope"] && self.bot.last_fire_time != -1 && gettime() - self.bot.last_fire_time < 1000 )
|
if ( self.pers[ "bots" ][ "behavior" ][ "quickscope" ] && self.bot.last_fire_time != -1 && gettime() - self.bot.last_fire_time < 1000 )
|
||||||
stopAdsOverride = true;
|
stopAdsOverride = true;
|
||||||
else
|
else
|
||||||
self notify( "kill_goal" );
|
self notify( "kill_goal" );
|
||||||
@ -1389,7 +1389,7 @@ aim_loop()
|
|||||||
|
|
||||||
if ( self.bot.is_cur_sniper )
|
if ( self.bot.is_cur_sniper )
|
||||||
{
|
{
|
||||||
if ( self.pers["bots"]["behavior"]["quickscope"] && self.bot.last_fire_time != -1 && gettime() - self.bot.last_fire_time < 1000 )
|
if ( self.pers[ "bots" ][ "behavior" ][ "quickscope" ] && self.bot.last_fire_time != -1 && gettime() - self.bot.last_fire_time < 1000 )
|
||||||
stopAdsOverride = true;
|
stopAdsOverride = true;
|
||||||
else
|
else
|
||||||
self notify( "kill_goal" );
|
self notify( "kill_goal" );
|
||||||
@ -1405,9 +1405,9 @@ aim_loop()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( self.bot.next_wp != -1 && isdefined( level.waypoints[self.bot.next_wp].angles ) && false )
|
if ( self.bot.next_wp != -1 && isdefined( level.waypoints[ self.bot.next_wp ].angles ) && false )
|
||||||
{
|
{
|
||||||
forwardPos = anglestoforward( level.waypoints[self.bot.next_wp].angles ) * 1024;
|
forwardPos = anglestoforward( level.waypoints[ self.bot.next_wp ].angles ) * 1024;
|
||||||
|
|
||||||
self thread bot_lookat( eyePos + forwardPos, aimspeed );
|
self thread bot_lookat( eyePos + forwardPos, aimspeed );
|
||||||
}
|
}
|
||||||
@ -1420,7 +1420,7 @@ aim_loop()
|
|||||||
lookat = undefined;
|
lookat = undefined;
|
||||||
|
|
||||||
if ( self.bot.second_next_wp != -1 && !self.bot.issprinting && !self.bot.climbing )
|
if ( self.bot.second_next_wp != -1 && !self.bot.issprinting && !self.bot.climbing )
|
||||||
lookat = level.waypoints[self.bot.second_next_wp].origin;
|
lookat = level.waypoints[ self.bot.second_next_wp ].origin;
|
||||||
else if ( isdefined( self.bot.towards_goal ) )
|
else if ( isdefined( self.bot.towards_goal ) )
|
||||||
lookat = self.bot.towards_goal;
|
lookat = self.bot.towards_goal;
|
||||||
|
|
||||||
@ -1493,7 +1493,7 @@ walk_loop()
|
|||||||
if ( self inLastStand() || self getstance() == "prone" || ( self.bot.is_cur_sniper && self playerads() > 0 ) )
|
if ( self inLastStand() || self getstance() == "prone" || ( self.bot.is_cur_sniper && self playerads() > 0 ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( self.bot.target.rand <= self.pers["bots"]["behavior"]["strafe"] )
|
if ( self.bot.target.rand <= self.pers[ "bots" ][ "behavior" ][ "strafe" ] )
|
||||||
self strafe( self.bot.target.entity );
|
self strafe( self.bot.target.entity );
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@ -1555,25 +1555,25 @@ doWalk( goal, dist, isScriptGoal )
|
|||||||
}
|
}
|
||||||
|
|
||||||
// skip waypoints we already completed to prevent rubber banding
|
// skip waypoints we already completed to prevent rubber banding
|
||||||
if ( current > 0 && self.bot.astar[current] == self.bot.last_next_wp && self.bot.astar[current - 1] == self.bot.last_second_next_wp )
|
if ( current > 0 && self.bot.astar[ current ] == self.bot.last_next_wp && self.bot.astar[ current - 1 ] == self.bot.last_second_next_wp )
|
||||||
current = self removeAStar();
|
current = self removeAStar();
|
||||||
|
|
||||||
if ( current >= 0 )
|
if ( current >= 0 )
|
||||||
{
|
{
|
||||||
// check if a waypoint is closer than the goal
|
// check if a waypoint is closer than the goal
|
||||||
if ( distancesquared( self.origin, level.waypoints[self.bot.astar[current]].origin ) < distancesquared( self.origin, goal ) || distancesquared( level.waypoints[self.bot.astar[current]].origin, playerphysicstrace( self.origin + ( 0, 0, 32 ), level.waypoints[self.bot.astar[current]].origin ) ) > 1.0 )
|
if ( distancesquared( self.origin, level.waypoints[ self.bot.astar[ current ] ].origin ) < distancesquared( self.origin, goal ) || distancesquared( level.waypoints[ self.bot.astar[ current ] ].origin, playerphysicstrace( self.origin + ( 0, 0, 32 ), level.waypoints[ self.bot.astar[ current ] ].origin ) ) > 1.0 )
|
||||||
{
|
{
|
||||||
while ( current >= 0 )
|
while ( current >= 0 )
|
||||||
{
|
{
|
||||||
self.bot.next_wp = self.bot.astar[current];
|
self.bot.next_wp = self.bot.astar[ current ];
|
||||||
self.bot.second_next_wp = -1;
|
self.bot.second_next_wp = -1;
|
||||||
|
|
||||||
if ( current > 0 )
|
if ( current > 0 )
|
||||||
self.bot.second_next_wp = self.bot.astar[current - 1];
|
self.bot.second_next_wp = self.bot.astar[ current - 1 ];
|
||||||
|
|
||||||
self notify( "new_static_waypoint" );
|
self notify( "new_static_waypoint" );
|
||||||
|
|
||||||
self movetowards( level.waypoints[self.bot.next_wp].origin );
|
self movetowards( level.waypoints[ self.bot.next_wp ].origin );
|
||||||
self.bot.last_next_wp = self.bot.next_wp;
|
self.bot.last_next_wp = self.bot.next_wp;
|
||||||
self.bot.last_second_next_wp = self.bot.second_next_wp;
|
self.bot.last_second_next_wp = self.bot.second_next_wp;
|
||||||
|
|
||||||
@ -1670,7 +1670,7 @@ movetowards( goal )
|
|||||||
if ( distancesquared( self.origin, lastOri ) < 32 * 32 )
|
if ( distancesquared( self.origin, lastOri ) < 32 * 32 )
|
||||||
{
|
{
|
||||||
// check if directly above or below
|
// check if directly above or below
|
||||||
if ( abs( goal[2] - self.origin[2] ) > 64 && getConeDot( goal + ( 1, 1, 0 ), self.origin + ( -1, -1, 0 ), vectortoangles( ( goal[0], goal[1], self.origin[2] ) - self.origin ) ) < 0.64 && distancesquared2D( self.origin, goal ) < 32 * 32 )
|
if ( abs( goal[ 2 ] - self.origin[ 2 ] ) > 64 && getConeDot( goal + ( 1, 1, 0 ), self.origin + ( -1, -1, 0 ), vectortoangles( ( goal[ 0 ], goal[ 1 ], self.origin[ 2 ] ) - self.origin ) ) < 0.64 && distancesquared2D( self.origin, goal ) < 32 * 32 )
|
||||||
{
|
{
|
||||||
stucks = 2;
|
stucks = 2;
|
||||||
}
|
}
|
||||||
@ -1707,8 +1707,8 @@ strafe( target )
|
|||||||
self thread killWalkOnEvents();
|
self thread killWalkOnEvents();
|
||||||
|
|
||||||
angles = vectortoangles( vectornormalize( target.origin - self.origin ) );
|
angles = vectortoangles( vectornormalize( target.origin - self.origin ) );
|
||||||
anglesLeft = ( 0, angles[1] + 90, 0 );
|
anglesLeft = ( 0, angles[ 1 ] + 90, 0 );
|
||||||
anglesRight = ( 0, angles[1] - 90, 0 );
|
anglesRight = ( 0, angles[ 1 ] - 90, 0 );
|
||||||
|
|
||||||
myOrg = self.origin + ( 0, 0, 16 );
|
myOrg = self.origin + ( 0, 0, 16 );
|
||||||
left = myOrg + anglestoforward( anglesLeft ) * 500;
|
left = myOrg + anglestoforward( anglesLeft ) * 500;
|
||||||
@ -1717,10 +1717,10 @@ strafe( target )
|
|||||||
traceLeft = bullettrace( myOrg, left, false, self );
|
traceLeft = bullettrace( myOrg, left, false, self );
|
||||||
traceRight = bullettrace( myOrg, right, false, self );
|
traceRight = bullettrace( myOrg, right, false, self );
|
||||||
|
|
||||||
strafe = traceLeft["position"];
|
strafe = traceLeft[ "position" ];
|
||||||
|
|
||||||
if ( traceRight["fraction"] > traceLeft["fraction"] )
|
if ( traceRight[ "fraction" ] > traceLeft[ "fraction" ] )
|
||||||
strafe = traceRight["position"];
|
strafe = traceRight[ "position" ];
|
||||||
|
|
||||||
self.bot.last_next_wp = -1;
|
self.bot.last_next_wp = -1;
|
||||||
self.bot.last_second_next_wp = -1;
|
self.bot.last_second_next_wp = -1;
|
||||||
@ -1749,17 +1749,17 @@ getRandomLargestStafe( dist )
|
|||||||
|
|
||||||
toptraces = [];
|
toptraces = [];
|
||||||
|
|
||||||
top = traces.data[0];
|
top = traces.data[ 0 ];
|
||||||
toptraces[toptraces.size] = top;
|
toptraces[ toptraces.size ] = top;
|
||||||
traces HeapRemove();
|
traces HeapRemove();
|
||||||
|
|
||||||
while ( traces.data.size && top["fraction"] - traces.data[0]["fraction"] < 0.1 )
|
while ( traces.data.size && top[ "fraction" ] - traces.data[ 0 ][ "fraction" ] < 0.1 )
|
||||||
{
|
{
|
||||||
toptraces[toptraces.size] = traces.data[0];
|
toptraces[ toptraces.size ] = traces.data[ 0 ];
|
||||||
traces HeapRemove();
|
traces HeapRemove();
|
||||||
}
|
}
|
||||||
|
|
||||||
return toptraces[randomint( toptraces.size )]["position"];
|
return toptraces[ randomint( toptraces.size ) ][ "position" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1800,7 +1800,7 @@ removeAStar()
|
|||||||
{
|
{
|
||||||
remove = self.bot.astar.size - 1;
|
remove = self.bot.astar.size - 1;
|
||||||
|
|
||||||
self.bot.astar[remove] = undefined;
|
self.bot.astar[ remove ] = undefined;
|
||||||
|
|
||||||
return self.bot.astar.size - 1;
|
return self.bot.astar.size - 1;
|
||||||
}
|
}
|
||||||
@ -1956,7 +1956,7 @@ doSemiTime()
|
|||||||
self endon( "bot_semi_time" );
|
self endon( "bot_semi_time" );
|
||||||
|
|
||||||
self.bot.semi_time = true;
|
self.bot.semi_time = true;
|
||||||
wait self.pers["bots"]["skill"]["semi_time"];
|
wait self.pers[ "bots" ][ "skill" ][ "semi_time" ];
|
||||||
self.bot.semi_time = false;
|
self.bot.semi_time = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2067,7 +2067,7 @@ do_knife_target( target )
|
|||||||
self.bot.knifing_target = target;
|
self.bot.knifing_target = target;
|
||||||
|
|
||||||
angles = vectortoangles( target.origin - self.origin );
|
angles = vectortoangles( target.origin - self.origin );
|
||||||
self BotBuiltinBotMeleeParams( angles[1], dist );
|
self BotBuiltinBotMeleeParams( angles[ 1 ], dist );
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
|
@ -74,223 +74,223 @@ difficulty()
|
|||||||
{
|
{
|
||||||
if ( getdvarint( "bots_skill" ) != 9 )
|
if ( getdvarint( "bots_skill" ) != 9 )
|
||||||
{
|
{
|
||||||
switch ( self.pers["bots"]["skill"]["base"] )
|
switch ( self.pers[ "bots" ][ "skill" ][ "base" ] )
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.6;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.6;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 500;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 500;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 600;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 600;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 750;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 750;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.7;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.7;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 2500;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 2500;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.75;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.75;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 0;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 0;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.9;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.9;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 1;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 1;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 1.5;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 1.5;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 4;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 4;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 2;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 2;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_ankle_le,j_ankle_ri";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_spineupper,j_ankle_le,j_ankle_ri";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 0;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 0;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 10;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 30;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 30;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 20;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 20;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 0;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.55;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.55;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 800;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 800;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 1250;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 1250;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.65;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.65;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 3000;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 3000;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.65;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.65;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 500;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 500;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.75;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.75;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.75;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 0.75;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 1;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 1;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 3;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 3;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 1.5;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 1.5;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_ankle_le,j_ankle_ri,j_head";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_spineupper,j_ankle_le,j_ankle_ri,j_head";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 10;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 15;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 15;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 45;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 45;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 15;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 15;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 10;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.4;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.4;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 750;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 750;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 500;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 500;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 2000;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 2000;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.6;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.6;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 4000;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 4000;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 2250;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 2250;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 750;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 750;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.65;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.65;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.65;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 0.65;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 0.75;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 0.75;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 2.5;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 2.5;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 1;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 1;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 20;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 20;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 20;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 20;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 50;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 50;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 25;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 25;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.3;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.3;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 600;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 600;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 400;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 400;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 3000;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 3000;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.55;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.55;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 5000;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 5000;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 3350;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 3350;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.35;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.35;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 1000;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 1000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 2;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 2;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 0.75;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 0.75;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head,j_head";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_spineupper,j_spineupper,j_ankle_le,j_ankle_ri,j_head,j_head";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 30;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 30;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 25;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 25;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 55;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 55;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 35;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 35;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.25;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.25;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 500;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 500;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 300;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 300;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 2000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 2000;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 4000;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 4000;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 7500;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 7500;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 5000;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 5000;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.25;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.25;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 1500;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 1500;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.4;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.4;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.35;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 0.35;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 0.35;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 0.35;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 1.5;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 1.5;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_head";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_spineupper,j_head";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 40;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 40;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 35;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 35;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 60;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 60;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 50;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 50;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.2;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.2;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 250;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 250;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 150;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 150;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 2000;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 3000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 3000;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 5000;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 5000;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.45;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.45;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 10000;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 10000;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 7500;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 7500;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.2;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.2;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 2000;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 2000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.25;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.25;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.25;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 0.25;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 0.25;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 0.25;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 1;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 1;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 0.25;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 0.25;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_spineupper,j_head,j_head";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_spineupper,j_head,j_head";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 50;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 50;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 45;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 45;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 65;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 65;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 10;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 10;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 75;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 75;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 7:
|
case 7:
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.1;
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.1;
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 100;
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 100;
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 50;
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 50;
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 2500;
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 4000;
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 4000;
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 7500;
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 7500;
|
||||||
self.pers["bots"]["skill"]["fov"] = 0.4;
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = 0.4;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = 15000;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 15000;
|
||||||
self.pers["bots"]["skill"]["dist_start"] = 10000;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 10000;
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.05;
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.05;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 3000;
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 3000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.1;
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.1;
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0;
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 0;
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = 0;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 0;
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 0;
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 0;
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = 0.05;
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 0.05;
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_head";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_head";
|
||||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5;
|
||||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5;
|
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 65;
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 65;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 65;
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 65;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 70;
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 70;
|
||||||
self.pers["bots"]["behavior"]["camp"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["follow"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["crouch"] = 5;
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 5;
|
||||||
self.pers["bots"]["behavior"]["switch"] = 2;
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 2;
|
||||||
self.pers["bots"]["behavior"]["jump"] = 90;
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 90;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -309,47 +309,47 @@ set_diff()
|
|||||||
switch ( rankVar )
|
switch ( rankVar )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self.pers["bots"]["skill"]["base"] = Round( random_normal_distribution( 3.5, 1.75, 1, 7 ) );
|
self.pers[ "bots" ][ "skill" ][ "base" ] = Round( random_normal_distribution( 3.5, 1.75, 1, 7 ) );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 8:
|
case 8:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 9:
|
case 9:
|
||||||
self.pers["bots"]["skill"]["base"] = randomintrange( 1, 7 );
|
self.pers[ "bots" ][ "skill" ][ "base" ] = randomintrange( 1, 7 );
|
||||||
self.pers["bots"]["skill"]["aim_time"] = 0.05 * randomintrange( 1, 20 );
|
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.05 * randomintrange( 1, 20 );
|
||||||
self.pers["bots"]["skill"]["init_react_time"] = 50 * randomint( 100 );
|
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 50 * randomint( 100 );
|
||||||
self.pers["bots"]["skill"]["reaction_time"] = 50 * randomint( 100 );
|
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 50 * randomint( 100 );
|
||||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 50 * randomint( 100 );
|
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 50 * randomint( 100 );
|
||||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 50 * randomint( 100 );
|
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 50 * randomint( 100 );
|
||||||
self.pers["bots"]["skill"]["remember_time"] = 50 * randomint( 100 );
|
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 50 * randomint( 100 );
|
||||||
self.pers["bots"]["skill"]["fov"] = randomfloatrange( -1, 1 );
|
self.pers[ "bots" ][ "skill" ][ "fov" ] = randomfloatrange( -1, 1 );
|
||||||
|
|
||||||
randomNum = randomintrange( 500, 25000 );
|
randomNum = randomintrange( 500, 25000 );
|
||||||
self.pers["bots"]["skill"]["dist_start"] = randomNum;
|
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = randomNum;
|
||||||
self.pers["bots"]["skill"]["dist_max"] = randomNum * 2;
|
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = randomNum * 2;
|
||||||
|
|
||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomint( 20 );
|
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0.05 * randomint( 20 );
|
||||||
self.pers["bots"]["skill"]["help_dist"] = randomintrange( 500, 25000 );
|
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = randomintrange( 500, 25000 );
|
||||||
self.pers["bots"]["skill"]["semi_time"] = randomfloatrange( 0.05, 1 );
|
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = randomfloatrange( 0.05, 1 );
|
||||||
self.pers["bots"]["skill"]["shoot_after_time"] = randomfloatrange( 0.05, 1 );
|
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = randomfloatrange( 0.05, 1 );
|
||||||
self.pers["bots"]["skill"]["aim_offset_time"] = randomfloatrange( 0.05, 1 );
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = randomfloatrange( 0.05, 1 );
|
||||||
self.pers["bots"]["skill"]["aim_offset_amount"] = randomfloatrange( 0.05, 1 );
|
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = randomfloatrange( 0.05, 1 );
|
||||||
self.pers["bots"]["skill"]["bone_update_interval"] = randomfloatrange( 0.05, 1 );
|
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = randomfloatrange( 0.05, 1 );
|
||||||
self.pers["bots"]["skill"]["bones"] = "j_head,j_spineupper,j_ankle_ri,j_ankle_le";
|
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_head,j_spineupper,j_ankle_ri,j_ankle_le";
|
||||||
|
|
||||||
self.pers["bots"]["behavior"]["strafe"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["nade"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "nade" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["sprint"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["camp"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "camp" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["follow"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "follow" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["crouch"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["switch"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "switch" ] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["jump"] = randomint( 100 );
|
self.pers[ "bots" ][ "behavior" ][ "jump" ] = randomint( 100 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
self.pers["bots"]["skill"]["base"] = rankVar;
|
self.pers[ "bots" ][ "skill" ][ "base" ] = rankVar;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -450,7 +450,7 @@ doReloadCancel_loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check difficulty
|
// check difficulty
|
||||||
if ( self.pers["bots"]["skill"]["base"] <= 3 )
|
if ( self.pers[ "bots" ][ "skill" ][ "base" ] <= 3 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// check if got another weapon
|
// check if got another weapon
|
||||||
@ -459,7 +459,7 @@ doReloadCancel_loop()
|
|||||||
|
|
||||||
while ( weaponslist.size )
|
while ( weaponslist.size )
|
||||||
{
|
{
|
||||||
weapon = weaponslist[randomint( weaponslist.size )];
|
weapon = weaponslist[ randomint( weaponslist.size ) ];
|
||||||
weaponslist = array_remove( weaponslist, weapon );
|
weaponslist = array_remove( weaponslist, weapon );
|
||||||
|
|
||||||
if ( !self isWeaponPrimary( weapon ) )
|
if ( !self isWeaponPrimary( weapon ) )
|
||||||
|
@ -25,9 +25,9 @@ wait_for_builtins()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinPrintConsole( s )
|
BotBuiltinPrintConsole( s )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["printconsole"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "printconsole" ] ) )
|
||||||
{
|
{
|
||||||
[[ level.bot_builtins["printconsole" ]]]( s );
|
[[ level.bot_builtins[ "printconsole" ] ]]( s );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -37,9 +37,9 @@ BotBuiltinPrintConsole( s )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinBotAction( action )
|
BotBuiltinBotAction( action )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["botaction"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botaction" ] ) )
|
||||||
{
|
{
|
||||||
self [[ level.bot_builtins["botaction" ]]]( action );
|
self [[ level.bot_builtins[ "botaction" ] ]]( action );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,9 +49,9 @@ BotBuiltinBotAction( action )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinBotStop()
|
BotBuiltinBotStop()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["botstop"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botstop" ] ) )
|
||||||
{
|
{
|
||||||
self [[ level.bot_builtins["botstop" ]]]();
|
self [[ level.bot_builtins[ "botstop" ] ]]();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,9 +61,9 @@ BotBuiltinBotStop()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinBotMovement( left, forward )
|
BotBuiltinBotMovement( left, forward )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["botmovement"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botmovement" ] ) )
|
||||||
{
|
{
|
||||||
self [[ level.bot_builtins["botmovement" ]]]( left, forward );
|
self [[ level.bot_builtins[ "botmovement" ] ]]( left, forward );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -72,9 +72,9 @@ BotBuiltinBotMovement( left, forward )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinBotMeleeParams( yaw, dist )
|
BotBuiltinBotMeleeParams( yaw, dist )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["botmeleeparams"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "botmeleeparams" ] ) )
|
||||||
{
|
{
|
||||||
self [[ level.bot_builtins["botmeleeparams" ]]]( yaw, dist );
|
self [[ level.bot_builtins[ "botmeleeparams" ] ]]( yaw, dist );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,9 +84,9 @@ BotBuiltinBotMeleeParams( yaw, dist )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinIsBot()
|
BotBuiltinIsBot()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["isbot"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "isbot" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["isbot" ]]]();
|
return self [[ level.bot_builtins[ "isbot" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -97,9 +97,9 @@ BotBuiltinIsBot()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGeneratePath( from, to, team, best_effort )
|
BotBuiltinGeneratePath( from, to, team, best_effort )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["generatepath"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "generatepath" ] ) )
|
||||||
{
|
{
|
||||||
return [[ level.bot_builtins["generatepath" ]]]( from, to, team, best_effort );
|
return [[ level.bot_builtins[ "generatepath" ] ]]( from, to, team, best_effort );
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
@ -110,9 +110,9 @@ BotBuiltinGeneratePath( from, to, team, best_effort )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGetFunction( file, threadname )
|
BotBuiltinGetFunction( file, threadname )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["getfunction"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "getfunction" ] ) )
|
||||||
{
|
{
|
||||||
return [[ level.bot_builtins["getfunction" ]]]( file, threadname );
|
return [[ level.bot_builtins[ "getfunction" ] ]]( file, threadname );
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
@ -123,9 +123,9 @@ BotBuiltinGetFunction( file, threadname )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGetMins()
|
BotBuiltinGetMins()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["getmins"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "getmins" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["getmins" ]]]();
|
return self [[ level.bot_builtins[ "getmins" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ( 0, 0, 0 );
|
return ( 0, 0, 0 );
|
||||||
@ -136,9 +136,9 @@ BotBuiltinGetMins()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGetMaxs()
|
BotBuiltinGetMaxs()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["getmaxs"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "getmaxs" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["getmaxs" ]]]();
|
return self [[ level.bot_builtins[ "getmaxs" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return ( 0, 0, 0 );
|
return ( 0, 0, 0 );
|
||||||
@ -149,9 +149,9 @@ BotBuiltinGetMaxs()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGetGuid()
|
BotBuiltinGetGuid()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["getguid"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "getguid" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["getguid" ]]]();
|
return self [[ level.bot_builtins[ "getguid" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -161,9 +161,9 @@ BotBuiltinGetGuid()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinSetAllowedTraversals( bot_allowed_negotiation_links )
|
BotBuiltinSetAllowedTraversals( bot_allowed_negotiation_links )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["setallowedtraversals"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "setallowedtraversals" ] ) )
|
||||||
{
|
{
|
||||||
[[ level.bot_builtins["setallowedtraversals" ]]]( bot_allowed_negotiation_links );
|
[[ level.bot_builtins[ "setallowedtraversals" ] ]]( bot_allowed_negotiation_links );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,9 +171,9 @@ BotBuiltinSetAllowedTraversals( bot_allowed_negotiation_links )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinSetIgnoredLinks( bot_ignore_links )
|
BotBuiltinSetIgnoredLinks( bot_ignore_links )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["setignoredlinks"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "setignoredlinks" ] ) )
|
||||||
{
|
{
|
||||||
[[ level.bot_builtins["setignoredlinks" ]]]( bot_ignore_links );
|
[[ level.bot_builtins[ "setignoredlinks" ] ]]( bot_ignore_links );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -181,9 +181,9 @@ BotBuiltinSetIgnoredLinks( bot_ignore_links )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGetNodeNumber()
|
BotBuiltinGetNodeNumber()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["getnodenumber"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "getnodenumber" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["getnodenumber" ]]]();
|
return self [[ level.bot_builtins[ "getnodenumber" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -193,9 +193,9 @@ BotBuiltinGetNodeNumber()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinGetLinkedNodes()
|
BotBuiltinGetLinkedNodes()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["getlinkednodes"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "getlinkednodes" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["getlinkednodes" ]]]();
|
return self [[ level.bot_builtins[ "getlinkednodes" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return [];
|
return [];
|
||||||
@ -205,9 +205,9 @@ BotBuiltinGetLinkedNodes()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinAddTestClient()
|
BotBuiltinAddTestClient()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["addtestclient"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "addtestclient" ] ) )
|
||||||
{
|
{
|
||||||
return [[ level.bot_builtins["addtestclient" ]]]();
|
return [[ level.bot_builtins[ "addtestclient" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined;
|
return undefined;
|
||||||
@ -217,9 +217,9 @@ BotBuiltinAddTestClient()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinCmdExec( what )
|
BotBuiltinCmdExec( what )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["cmdexec"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "cmdexec" ] ) )
|
||||||
{
|
{
|
||||||
[[ level.bot_builtins["cmdexec" ]]]( what );
|
[[ level.bot_builtins[ "cmdexec" ] ]]( what );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ BotBuiltinCmdExec( what )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinNotifyOnPlayerCommand( cmd, notif )
|
BotBuiltinNotifyOnPlayerCommand( cmd, notif )
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["notifyonplayercommand"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "notifyonplayercommand" ] ) )
|
||||||
{
|
{
|
||||||
self [[ level.bot_builtins["notifyonplayercommand" ]]]( cmd, notif );
|
self [[ level.bot_builtins[ "notifyonplayercommand" ] ]]( cmd, notif );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,9 +238,9 @@ BotBuiltinNotifyOnPlayerCommand( cmd, notif )
|
|||||||
*/
|
*/
|
||||||
BotBuiltinIsHost()
|
BotBuiltinIsHost()
|
||||||
{
|
{
|
||||||
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins["ishost"] ) )
|
if ( isdefined( level.bot_builtins ) && isdefined( level.bot_builtins[ "ishost" ] ) )
|
||||||
{
|
{
|
||||||
return self [[ level.bot_builtins["ishost" ]]]();
|
return self [[ level.bot_builtins[ "ishost" ] ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@ -251,7 +251,7 @@ BotBuiltinIsHost()
|
|||||||
*/
|
*/
|
||||||
is_host()
|
is_host()
|
||||||
{
|
{
|
||||||
return ( isdefined( self.pers["bot_host"] ) && self.pers["bot_host"] );
|
return ( isdefined( self.pers[ "bot_host" ] ) && self.pers[ "bot_host" ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -259,7 +259,7 @@ is_host()
|
|||||||
*/
|
*/
|
||||||
doHostCheck()
|
doHostCheck()
|
||||||
{
|
{
|
||||||
self.pers["bot_host"] = false;
|
self.pers[ "bot_host" ] = false;
|
||||||
|
|
||||||
if ( self is_bot() )
|
if ( self is_bot() )
|
||||||
return;
|
return;
|
||||||
@ -287,7 +287,7 @@ doHostCheck()
|
|||||||
|
|
||||||
for ( i = 0; i < guids.size; i++ )
|
for ( i = 0; i < guids.size; i++ )
|
||||||
{
|
{
|
||||||
if ( self BotBuiltinGetGuid() + "" == guids[i] )
|
if ( self BotBuiltinGetGuid() + "" == guids[ i ] )
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -295,7 +295,7 @@ doHostCheck()
|
|||||||
if ( !self BotBuiltinIsHost() && !result )
|
if ( !self BotBuiltinIsHost() && !result )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.pers["bot_host"] = true;
|
self.pers[ "bot_host" ] = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -639,7 +639,7 @@ getValidTube()
|
|||||||
|
|
||||||
for ( i = 0; i < weaps.size; i++ )
|
for ( i = 0; i < weaps.size; i++ )
|
||||||
{
|
{
|
||||||
weap = weaps[i];
|
weap = weaps[ i ];
|
||||||
|
|
||||||
if ( !self getammocount( weap ) )
|
if ( !self getammocount( weap ) )
|
||||||
continue;
|
continue;
|
||||||
@ -657,19 +657,19 @@ getValidTube()
|
|||||||
getValidGrenade()
|
getValidGrenade()
|
||||||
{
|
{
|
||||||
grenadeTypes = [];
|
grenadeTypes = [];
|
||||||
grenadeTypes[grenadeTypes.size] = "stielhandgranate";
|
grenadeTypes[ grenadeTypes.size ] = "stielhandgranate";
|
||||||
|
|
||||||
possibles = [];
|
possibles = [];
|
||||||
|
|
||||||
for ( i = 0; i < grenadeTypes.size; i++ )
|
for ( i = 0; i < grenadeTypes.size; i++ )
|
||||||
{
|
{
|
||||||
if ( !self hasweapon( grenadeTypes[i] ) )
|
if ( !self hasweapon( grenadeTypes[ i ] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !self getammocount( grenadeTypes[i] ) )
|
if ( !self getammocount( grenadeTypes[ i ] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
possibles[possibles.size] = grenadeTypes[i];
|
possibles[ possibles.size ] = grenadeTypes[ i ];
|
||||||
}
|
}
|
||||||
|
|
||||||
return PickRandom( possibles );
|
return PickRandom( possibles );
|
||||||
@ -683,7 +683,7 @@ PickRandom( arr )
|
|||||||
if ( !arr.size )
|
if ( !arr.size )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
return arr[randomint( arr.size )];
|
return arr[ randomint( arr.size ) ];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -699,7 +699,7 @@ isSecondaryGrenade( gnade )
|
|||||||
*/
|
*/
|
||||||
getBaseWeaponName( weap )
|
getBaseWeaponName( weap )
|
||||||
{
|
{
|
||||||
return strtok( weap, "_" )[0];
|
return strtok( weap, "_" )[ 0 ];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -709,7 +709,7 @@ WeaponIsFullAuto( weap )
|
|||||||
{
|
{
|
||||||
weaptoks = strtok( weap, "_" );
|
weaptoks = strtok( weap, "_" );
|
||||||
|
|
||||||
return isdefined( weaptoks[0] ) && isstring( weaptoks[0] ) && isdefined( level.bots_fullautoguns[weaptoks[0]] );
|
return isdefined( weaptoks[ 0 ] ) && isstring( weaptoks[ 0 ] ) && isdefined( level.bots_fullautoguns[ weaptoks[ 0 ]] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -787,7 +787,7 @@ GetHostPlayer()
|
|||||||
{
|
{
|
||||||
for ( i = 0; i < level.players.size; i++ )
|
for ( i = 0; i < level.players.size; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( !player is_host() )
|
if ( !player is_host() )
|
||||||
continue;
|
continue;
|
||||||
@ -856,8 +856,8 @@ getConeDot( to, from, dir )
|
|||||||
*/
|
*/
|
||||||
distancesquared2D( to, from )
|
distancesquared2D( to, from )
|
||||||
{
|
{
|
||||||
to = ( to[0], to[1], 0 );
|
to = ( to[ 0 ], to[ 1 ], 0 );
|
||||||
from = ( from[0], from[1], 0 );
|
from = ( from[ 0 ], from[ 1 ], 0 );
|
||||||
|
|
||||||
return distancesquared( to, from );
|
return distancesquared( to, from );
|
||||||
}
|
}
|
||||||
@ -871,21 +871,21 @@ Rectdistancesquared( origin )
|
|||||||
dy = 0;
|
dy = 0;
|
||||||
dz = 0;
|
dz = 0;
|
||||||
|
|
||||||
if ( origin[0] < self.x0 )
|
if ( origin[ 0 ] < self.x0 )
|
||||||
dx = origin[0] - self.x0;
|
dx = origin[ 0 ] - self.x0;
|
||||||
else if ( origin[0] > self.x1 )
|
else if ( origin[ 0 ] > self.x1 )
|
||||||
dx = origin[0] - self.x1;
|
dx = origin[ 0 ] - self.x1;
|
||||||
|
|
||||||
if ( origin[1] < self.y0 )
|
if ( origin[ 1 ] < self.y0 )
|
||||||
dy = origin[1] - self.y0;
|
dy = origin[ 1 ] - self.y0;
|
||||||
else if ( origin[1] > self.y1 )
|
else if ( origin[ 1 ] > self.y1 )
|
||||||
dy = origin[1] - self.y1;
|
dy = origin[ 1 ] - self.y1;
|
||||||
|
|
||||||
|
|
||||||
if ( origin[2] < self.z0 )
|
if ( origin[ 2 ] < self.z0 )
|
||||||
dz = origin[2] - self.z0;
|
dz = origin[ 2 ] - self.z0;
|
||||||
else if ( origin[2] > self.z1 )
|
else if ( origin[ 2 ] > self.z1 )
|
||||||
dz = origin[2] - self.z1;
|
dz = origin[ 2 ] - self.z1;
|
||||||
|
|
||||||
return dx * dx + dy * dy + dz * dz;
|
return dx * dx + dy * dy + dz * dz;
|
||||||
}
|
}
|
||||||
@ -1017,126 +1017,126 @@ load_waypoints()
|
|||||||
{
|
{
|
||||||
case "nazi_zombie_sumpf":
|
case "nazi_zombie_sumpf":
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1825;
|
a[ a.size ] = 1825;
|
||||||
a[a.size] = 1826;
|
a[ a.size ] = 1826;
|
||||||
a[a.size] = 1829;
|
a[ a.size ] = 1829;
|
||||||
a[a.size] = 1830;
|
a[ a.size ] = 1830;
|
||||||
a[a.size] = 1833;
|
a[ a.size ] = 1833;
|
||||||
a[a.size] = 1837;
|
a[ a.size ] = 1837;
|
||||||
bot_ignore_links[1603 + ""] = a;
|
bot_ignore_links[ 1603 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1829;
|
a[ a.size ] = 1829;
|
||||||
bot_ignore_links[1604 + ""] = a;
|
bot_ignore_links[ 1604 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
bot_ignore_links[1823 + ""] = a;
|
bot_ignore_links[ 1823 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1603;
|
a[ a.size ] = 1603;
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
a[a.size] = 1906;
|
a[ a.size ] = 1906;
|
||||||
bot_ignore_links[1825 + ""] = a;
|
bot_ignore_links[ 1825 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1603;
|
a[ a.size ] = 1603;
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
a[a.size] = 1907;
|
a[ a.size ] = 1907;
|
||||||
bot_ignore_links[1826 + ""] = a;
|
bot_ignore_links[ 1826 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
bot_ignore_links[1827 + ""] = a;
|
bot_ignore_links[ 1827 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1603;
|
a[ a.size ] = 1603;
|
||||||
a[a.size] = 1604;
|
a[ a.size ] = 1604;
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
a[a.size] = 1906;
|
a[ a.size ] = 1906;
|
||||||
a[a.size] = 1907;
|
a[ a.size ] = 1907;
|
||||||
bot_ignore_links[1829 + ""] = a;
|
bot_ignore_links[ 1829 + "" ] = a;
|
||||||
|
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1603;
|
a[ a.size ] = 1603;
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
a[a.size] = 1907;
|
a[ a.size ] = 1907;
|
||||||
bot_ignore_links[1830 + ""] = a;
|
bot_ignore_links[ 1830 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
bot_ignore_links[1831 + ""] = a;
|
bot_ignore_links[ 1831 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1603;
|
a[ a.size ] = 1603;
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
a[a.size] = 1906;
|
a[ a.size ] = 1906;
|
||||||
a[a.size] = 1907;
|
a[ a.size ] = 1907;
|
||||||
bot_ignore_links[1833 + ""] = a;
|
bot_ignore_links[ 1833 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
bot_ignore_links[1834 + ""] = a;
|
bot_ignore_links[ 1834 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1603;
|
a[ a.size ] = 1603;
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
a[a.size] = 1906;
|
a[ a.size ] = 1906;
|
||||||
a[a.size] = 1907;
|
a[ a.size ] = 1907;
|
||||||
bot_ignore_links[1837 + ""] = a;
|
bot_ignore_links[ 1837 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1903;
|
a[ a.size ] = 1903;
|
||||||
a[a.size] = 1904;
|
a[ a.size ] = 1904;
|
||||||
bot_ignore_links[1838 + ""] = a;
|
bot_ignore_links[ 1838 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1825;
|
a[ a.size ] = 1825;
|
||||||
a[a.size] = 1826;
|
a[ a.size ] = 1826;
|
||||||
a[a.size] = 1829;
|
a[ a.size ] = 1829;
|
||||||
a[a.size] = 1830;
|
a[ a.size ] = 1830;
|
||||||
a[a.size] = 1833;
|
a[ a.size ] = 1833;
|
||||||
a[a.size] = 1834;
|
a[ a.size ] = 1834;
|
||||||
a[a.size] = 1837;
|
a[ a.size ] = 1837;
|
||||||
a[a.size] = 1838;
|
a[ a.size ] = 1838;
|
||||||
bot_ignore_links[1903 + ""] = a;
|
bot_ignore_links[ 1903 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1823;
|
a[ a.size ] = 1823;
|
||||||
a[a.size] = 1825;
|
a[ a.size ] = 1825;
|
||||||
a[a.size] = 1826;
|
a[ a.size ] = 1826;
|
||||||
a[a.size] = 1827;
|
a[ a.size ] = 1827;
|
||||||
a[a.size] = 1829;
|
a[ a.size ] = 1829;
|
||||||
a[a.size] = 1830;
|
a[ a.size ] = 1830;
|
||||||
a[a.size] = 1831;
|
a[ a.size ] = 1831;
|
||||||
a[a.size] = 1833;
|
a[ a.size ] = 1833;
|
||||||
a[a.size] = 1834;
|
a[ a.size ] = 1834;
|
||||||
a[a.size] = 1837;
|
a[ a.size ] = 1837;
|
||||||
a[a.size] = 1838;
|
a[ a.size ] = 1838;
|
||||||
bot_ignore_links[1904 + ""] = a;
|
bot_ignore_links[ 1904 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1825;
|
a[ a.size ] = 1825;
|
||||||
a[a.size] = 1829;
|
a[ a.size ] = 1829;
|
||||||
a[a.size] = 1833;
|
a[ a.size ] = 1833;
|
||||||
a[a.size] = 1837;
|
a[ a.size ] = 1837;
|
||||||
bot_ignore_links[1906 + ""] = a;
|
bot_ignore_links[ 1906 + "" ] = a;
|
||||||
|
|
||||||
a = [];
|
a = [];
|
||||||
a[a.size] = 1826;
|
a[ a.size ] = 1826;
|
||||||
a[a.size] = 1829;
|
a[ a.size ] = 1829;
|
||||||
a[a.size] = 1830;
|
a[ a.size ] = 1830;
|
||||||
a[a.size] = 1833;
|
a[ a.size ] = 1833;
|
||||||
a[a.size] = 1837;
|
a[ a.size ] = 1837;
|
||||||
bot_ignore_links[1907 + ""] = a;
|
bot_ignore_links[ 1907 + "" ] = a;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1175,7 +1175,7 @@ getBotToKick()
|
|||||||
{
|
{
|
||||||
bots = getBotArray();
|
bots = getBotArray();
|
||||||
|
|
||||||
if ( !isdefined( bots ) || !isdefined( bots.size ) || bots.size <= 0 || !isdefined( bots[0] ) )
|
if ( !isdefined( bots ) || !isdefined( bots.size ) || bots.size <= 0 || !isdefined( bots[ 0 ] ) )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
tokick = undefined;
|
tokick = undefined;
|
||||||
@ -1183,15 +1183,15 @@ getBotToKick()
|
|||||||
// just kick lowest skill
|
// just kick lowest skill
|
||||||
for ( i = 0; i < bots.size; i++ )
|
for ( i = 0; i < bots.size; i++ )
|
||||||
{
|
{
|
||||||
bot = bots[i];
|
bot = bots[ i ];
|
||||||
|
|
||||||
if ( !isdefined( bot ) )
|
if ( !isdefined( bot ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isdefined( bot.pers ) || !isdefined( bot.pers["bots"] ) || !isdefined( bot.pers["bots"]["skill"] ) || !isdefined( bot.pers["bots"]["skill"]["base"] ) )
|
if ( !isdefined( bot.pers ) || !isdefined( bot.pers[ "bots" ] ) || !isdefined( bot.pers[ "bots" ][ "skill" ] ) || !isdefined( bot.pers[ "bots" ][ "skill" ][ "base" ] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isdefined( tokick ) && bot.pers["bots"]["skill"]["base"] > tokick.pers["bots"]["skill"]["base"] )
|
if ( isdefined( tokick ) && bot.pers[ "bots" ][ "skill" ][ "base" ] > tokick.pers[ "bots" ][ "skill" ][ "base" ] )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
tokick = bot;
|
tokick = bot;
|
||||||
@ -1210,12 +1210,12 @@ getBotArray()
|
|||||||
|
|
||||||
for ( i = 0; i < playercount; i++ )
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
player = level.players[i];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( !player is_bot() )
|
if ( !player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
result[result.size] = player;
|
result[ result.size ] = player;
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
@ -1247,7 +1247,7 @@ HeapPriority( item, item2 )
|
|||||||
*/
|
*/
|
||||||
HeapTraceFraction( item, item2 )
|
HeapTraceFraction( item, item2 )
|
||||||
{
|
{
|
||||||
return item["fraction"] > item2["fraction"];
|
return item[ "fraction" ] > item2[ "fraction" ];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1268,7 +1268,7 @@ NewHeap( compare )
|
|||||||
HeapInsert( item )
|
HeapInsert( item )
|
||||||
{
|
{
|
||||||
insert = self.data.size;
|
insert = self.data.size;
|
||||||
self.data[insert] = item;
|
self.data[ insert ] = item;
|
||||||
|
|
||||||
current = insert + 1;
|
current = insert + 1;
|
||||||
|
|
||||||
@ -1277,11 +1277,11 @@ HeapInsert( item )
|
|||||||
last = current;
|
last = current;
|
||||||
current = int( current / 2 );
|
current = int( current / 2 );
|
||||||
|
|
||||||
if ( ![[self.compare]]( item, self.data[current - 1] ) )
|
if ( ![[ self.compare ]]( item, self.data[ current - 1 ] ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
self.data[last - 1] = self.data[current - 1];
|
self.data[ last - 1 ] = self.data[ current - 1 ];
|
||||||
self.data[current - 1] = item;
|
self.data[ current - 1 ] = item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1299,7 +1299,7 @@ _HeapNextChild( node, hsize )
|
|||||||
if ( right > hsize )
|
if ( right > hsize )
|
||||||
return left;
|
return left;
|
||||||
|
|
||||||
if ( [[self.compare]]( self.data[left - 1], self.data[right - 1] ) )
|
if ( [[ self.compare ]]( self.data[ left - 1 ], self.data[ right - 1 ] ) )
|
||||||
return left;
|
return left;
|
||||||
else
|
else
|
||||||
return right;
|
return right;
|
||||||
@ -1315,9 +1315,9 @@ HeapRemove()
|
|||||||
if ( !remove )
|
if ( !remove )
|
||||||
return remove;
|
return remove;
|
||||||
|
|
||||||
move = self.data[remove - 1];
|
move = self.data[ remove - 1 ];
|
||||||
self.data[0] = move;
|
self.data[ 0 ] = move;
|
||||||
self.data[remove - 1] = undefined;
|
self.data[ remove - 1 ] = undefined;
|
||||||
remove--;
|
remove--;
|
||||||
|
|
||||||
if ( !remove )
|
if ( !remove )
|
||||||
@ -1328,11 +1328,11 @@ HeapRemove()
|
|||||||
|
|
||||||
while ( next != -1 )
|
while ( next != -1 )
|
||||||
{
|
{
|
||||||
if ( [[self.compare]]( move, self.data[next - 1] ) )
|
if ( [[ self.compare ]]( move, self.data[ next - 1 ] ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
self.data[last - 1] = self.data[next - 1];
|
self.data[ last - 1 ] = self.data[ next - 1 ];
|
||||||
self.data[next - 1] = move;
|
self.data[ next - 1 ] = move;
|
||||||
|
|
||||||
last = next;
|
last = next;
|
||||||
next = self _HeapNextChild( next, remove );
|
next = self _HeapNextChild( next, remove );
|
||||||
@ -1376,7 +1376,7 @@ array_average( array )
|
|||||||
|
|
||||||
for ( i = 0; i < array.size; i++ )
|
for ( i = 0; i < array.size; i++ )
|
||||||
{
|
{
|
||||||
total += array[i];
|
total += array[ i ];
|
||||||
}
|
}
|
||||||
|
|
||||||
return ( total / array.size );
|
return ( total / array.size );
|
||||||
@ -1393,14 +1393,14 @@ array_std_deviation( array, mean )
|
|||||||
|
|
||||||
for ( i = 0; i < array.size; i++ )
|
for ( i = 0; i < array.size; i++ )
|
||||||
{
|
{
|
||||||
tmp[i] = ( array[i] - mean ) * ( array[i] - mean );
|
tmp[ i ] = ( array[ i ] - mean ) * ( array[ i ] - mean );
|
||||||
}
|
}
|
||||||
|
|
||||||
total = 0;
|
total = 0;
|
||||||
|
|
||||||
for ( i = 0; i < tmp.size; i++ )
|
for ( i = 0; i < tmp.size; i++ )
|
||||||
{
|
{
|
||||||
total = total + tmp[i];
|
total = total + tmp[ i ];
|
||||||
}
|
}
|
||||||
|
|
||||||
return sqrt( total / array.size );
|
return sqrt( total / array.size );
|
||||||
@ -1448,7 +1448,7 @@ inLastStand()
|
|||||||
{
|
{
|
||||||
func = BotBuiltinGetFunction( "maps/_laststand", "player_is_in_laststand" );
|
func = BotBuiltinGetFunction( "maps/_laststand", "player_is_in_laststand" );
|
||||||
|
|
||||||
return self [[func]]();
|
return self [[ func ]]();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1458,7 +1458,7 @@ isReviving( revivee )
|
|||||||
{
|
{
|
||||||
func = BotBuiltinGetFunction( "maps/_laststand", "is_reviving" );
|
func = BotBuiltinGetFunction( "maps/_laststand", "is_reviving" );
|
||||||
|
|
||||||
return self [[func]]( revivee );
|
return self [[ func ]]( revivee );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1499,7 +1499,7 @@ isWeaponPrimary( weap )
|
|||||||
|
|
||||||
for ( i = 0; i < weaps.size; i++ )
|
for ( i = 0; i < weaps.size; i++ )
|
||||||
{
|
{
|
||||||
if ( weap == weaps[i] )
|
if ( weap == weaps[ i ] )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1632,12 +1632,12 @@ PointInsideUseTrigger( point )
|
|||||||
maxs = self BotBuiltinGetMaxs();
|
maxs = self BotBuiltinGetMaxs();
|
||||||
|
|
||||||
box = spawnstruct();
|
box = spawnstruct();
|
||||||
box.x0 = self.origin[0] + mins[0];
|
box.x0 = self.origin[ 0 ] + mins[ 0 ];
|
||||||
box.x1 = self.origin[0] + maxs[0];
|
box.x1 = self.origin[ 0 ] + maxs[ 0 ];
|
||||||
box.y0 = self.origin[1] + mins[1];
|
box.y0 = self.origin[ 1 ] + mins[ 1 ];
|
||||||
box.y1 = self.origin[1] + maxs[1];
|
box.y1 = self.origin[ 1 ] + maxs[ 1 ];
|
||||||
box.z0 = self.origin[2] + mins[2];
|
box.z0 = self.origin[ 2 ] + mins[ 2 ];
|
||||||
box.z1 = self.origin[2] + maxs[2];
|
box.z1 = self.origin[ 2 ] + maxs[ 2 ];
|
||||||
|
|
||||||
if ( box Rectdistancesquared( self.origin ) > 72 * 72 )
|
if ( box Rectdistancesquared( self.origin ) > 72 * 72 )
|
||||||
{
|
{
|
||||||
@ -1669,22 +1669,22 @@ debug_bounding_box_for_ent( color )
|
|||||||
mins = self BotBuiltinGetMins();
|
mins = self BotBuiltinGetMins();
|
||||||
maxs = self BotBuiltinGetMaxs();
|
maxs = self BotBuiltinGetMaxs();
|
||||||
|
|
||||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], mins[1], maxs[2] ), color );
|
line( self.origin + ( mins[ 0 ], mins[ 1 ], mins[ 2 ] ), self.origin + ( mins[ 0 ], mins[ 1 ], maxs[ 2 ] ), color );
|
||||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( mins[0], maxs[1], mins[2] ), color );
|
line( self.origin + ( mins[ 0 ], mins[ 1 ], mins[ 2 ] ), self.origin + ( mins[ 0 ], maxs[ 1 ], mins[ 2 ] ), color );
|
||||||
line( self.origin + ( mins[0], mins[1], mins[2] ), self.origin + ( maxs[0], mins[1], mins[2] ), color );
|
line( self.origin + ( mins[ 0 ], mins[ 1 ], mins[ 2 ] ), self.origin + ( maxs[ 0 ], mins[ 1 ], mins[ 2 ] ), color );
|
||||||
|
|
||||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
line( self.origin + ( maxs[ 0 ], maxs[ 1 ], maxs[ 2 ] ), self.origin + ( maxs[ 0 ], maxs[ 1 ], mins[ 2 ] ), color );
|
||||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
line( self.origin + ( maxs[ 0 ], maxs[ 1 ], maxs[ 2 ] ), self.origin + ( maxs[ 0 ], mins[ 1 ], maxs[ 2 ] ), color );
|
||||||
line( self.origin + ( maxs[0], maxs[1], maxs[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
line( self.origin + ( maxs[ 0 ], maxs[ 1 ], maxs[ 2 ] ), self.origin + ( mins[ 0 ], maxs[ 1 ], maxs[ 2 ] ), color );
|
||||||
|
|
||||||
line( self.origin + ( maxs[0], mins[1], mins[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
line( self.origin + ( maxs[ 0 ], mins[ 1 ], mins[ 2 ] ), self.origin + ( maxs[ 0 ], maxs[ 1 ], mins[ 2 ] ), color );
|
||||||
line( self.origin + ( maxs[0], mins[1], mins[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
line( self.origin + ( maxs[ 0 ], mins[ 1 ], mins[ 2 ] ), self.origin + ( maxs[ 0 ], mins[ 1 ], maxs[ 2 ] ), color );
|
||||||
|
|
||||||
line( self.origin + ( mins[0], mins[1], maxs[2] ), self.origin + ( maxs[0], mins[1], maxs[2] ), color );
|
line( self.origin + ( mins[ 0 ], mins[ 1 ], maxs[ 2 ] ), self.origin + ( maxs[ 0 ], mins[ 1 ], maxs[ 2 ] ), color );
|
||||||
line( self.origin + ( mins[0], mins[1], maxs[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
line( self.origin + ( mins[ 0 ], mins[ 1 ], maxs[ 2 ] ), self.origin + ( mins[ 0 ], maxs[ 1 ], maxs[ 2 ] ), color );
|
||||||
|
|
||||||
line( self.origin + ( mins[0], maxs[1], mins[2] ), self.origin + ( maxs[0], maxs[1], mins[2] ), color );
|
line( self.origin + ( mins[ 0 ], maxs[ 1 ], mins[ 2 ] ), self.origin + ( maxs[ 0 ], maxs[ 1 ], mins[ 2 ] ), color );
|
||||||
line( self.origin + ( mins[0], maxs[1], mins[2] ), self.origin + ( mins[0], maxs[1], maxs[2] ), color );
|
line( self.origin + ( mins[ 0 ], maxs[ 1 ], mins[ 2 ] ), self.origin + ( mins[ 0 ], maxs[ 1 ], maxs[ 2 ] ), color );
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
@ -6,12 +6,12 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.bot_objectives = [];
|
level.bot_objectives = [];
|
||||||
level.bot_objectives[level.bot_objectives.size] = CreateObjectiveForManger( "revive", maps\bots\objectives\_revive::Finder, maps\bots\objectives\_revive::Priority, maps\bots\objectives\_revive::Executer, 1000 );
|
level.bot_objectives[ level.bot_objectives.size ] = CreateObjectiveForManger( "revive", maps\bots\objectives\_revive::Finder, maps\bots\objectives\_revive::Priority, maps\bots\objectives\_revive::Executer, 1000 );
|
||||||
level.bot_objectives[level.bot_objectives.size] = CreateObjectiveForManger( "powerup", maps\bots\objectives\_powerup::Finder, maps\bots\objectives\_powerup::Priority, maps\bots\objectives\_powerup::Executer, 2500 );
|
level.bot_objectives[ level.bot_objectives.size ] = CreateObjectiveForManger( "powerup", maps\bots\objectives\_powerup::Finder, maps\bots\objectives\_powerup::Priority, maps\bots\objectives\_powerup::Executer, 2500 );
|
||||||
level.bot_objectives[level.bot_objectives.size] = CreateObjectiveForManger( "wallweapon", maps\bots\objectives\_wallweapon::Finder, maps\bots\objectives\_wallweapon::Priority, maps\bots\objectives\_wallweapon::Executer, 7500 );
|
level.bot_objectives[ level.bot_objectives.size ] = CreateObjectiveForManger( "wallweapon", maps\bots\objectives\_wallweapon::Finder, maps\bots\objectives\_wallweapon::Priority, maps\bots\objectives\_wallweapon::Executer, 7500 );
|
||||||
level.bot_objectives[level.bot_objectives.size] = CreateObjectiveForManger( "treasurechest", maps\bots\objectives\_treasurechest::Finder, maps\bots\objectives\_treasurechest::Priority, maps\bots\objectives\_treasurechest::Executer, 7000 );
|
level.bot_objectives[ level.bot_objectives.size ] = CreateObjectiveForManger( "treasurechest", maps\bots\objectives\_treasurechest::Finder, maps\bots\objectives\_treasurechest::Priority, maps\bots\objectives\_treasurechest::Executer, 7000 );
|
||||||
maps\bots\objectives\_perkmachine::init();
|
maps\bots\objectives\_perkmachine::init();
|
||||||
level.bot_objectives[level.bot_objectives.size] = CreateObjectiveForManger( "perkmachine", maps\bots\objectives\_perkmachine::Finder, maps\bots\objectives\_perkmachine::Priority, maps\bots\objectives\_perkmachine::Executer, 10000 );
|
level.bot_objectives[ level.bot_objectives.size ] = CreateObjectiveForManger( "perkmachine", maps\bots\objectives\_perkmachine::Finder, maps\bots\objectives\_perkmachine::Priority, maps\bots\objectives\_perkmachine::Executer, 10000 );
|
||||||
}
|
}
|
||||||
|
|
||||||
connected()
|
connected()
|
||||||
@ -64,7 +64,7 @@ clean_objective_on_completion()
|
|||||||
{
|
{
|
||||||
obj_name = self.bot_current_objective.sname;
|
obj_name = self.bot_current_objective.sname;
|
||||||
|
|
||||||
self.bot_current_objective.eparentobj.abotprocesstimes[self getentitynumber() + ""] = gettime();
|
self.bot_current_objective.eparentobj.abotprocesstimes[ self getentitynumber() + "" ] = gettime();
|
||||||
}
|
}
|
||||||
|
|
||||||
self BotNotifyBotEvent( "debug", "clean_objective_on_completion: " + obj_name + ": " + successful + ": " + reason );
|
self BotNotifyBotEvent( "debug", "clean_objective_on_completion: " + obj_name + ": " + successful + ": " + reason );
|
||||||
@ -100,16 +100,16 @@ bot_objective_think()
|
|||||||
|
|
||||||
for ( i = 0; i < level.bot_objectives.size; i++ )
|
for ( i = 0; i < level.bot_objectives.size; i++ )
|
||||||
{
|
{
|
||||||
objective = level.bot_objectives[i];
|
objective = level.bot_objectives[ i ];
|
||||||
|
|
||||||
// check the process rate
|
// check the process rate
|
||||||
if ( isdefined( objective.abotprocesstimes[our_key] ) && now - objective.abotprocesstimes[our_key] < objective.iprocessrate )
|
if ( isdefined( objective.abotprocesstimes[ our_key ] ) && now - objective.abotprocesstimes[ our_key ] < objective.iprocessrate )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
objectives = array_merge( objectives, self [[objective.fpfinder]]( objective ) );
|
objectives = array_merge( objectives, self [[ objective.fpfinder ]]( objective ) );
|
||||||
objective.abotprocesstimes[our_key] = now;
|
objective.abotprocesstimes[ our_key ] = now;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( objectives.size <= 0 )
|
if ( objectives.size <= 0 )
|
||||||
@ -122,16 +122,16 @@ bot_objective_think()
|
|||||||
|
|
||||||
for ( i = 0; i < objectives.size; i++ )
|
for ( i = 0; i < objectives.size; i++ )
|
||||||
{
|
{
|
||||||
if ( objectives[i].fpriority <= -100 )
|
if ( objectives[ i ].fpriority <= -100 )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
heap HeapInsert( objectives[i] );
|
heap HeapInsert( objectives[ i ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
// pop the top!
|
// pop the top!
|
||||||
best_prio = heap.data[0];
|
best_prio = heap.data[ 0 ];
|
||||||
|
|
||||||
if ( !isdefined( best_prio ) )
|
if ( !isdefined( best_prio ) )
|
||||||
{
|
{
|
||||||
@ -139,7 +139,7 @@ bot_objective_think()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// already on a better obj
|
// already on a better obj
|
||||||
if ( isdefined( self.bot_current_objective ) && ( best_prio.guid == self.bot_current_objective.guid || best_prio.fpriority < self [[self.bot_current_objective.eparentobj.fppriorty]]( self.bot_current_objective.eparentobj, self.bot_current_objective.eent ) ) )
|
if ( isdefined( self.bot_current_objective ) && ( best_prio.guid == self.bot_current_objective.guid || best_prio.fpriority < self [[ self.bot_current_objective.eparentobj.fppriorty ]]( self.bot_current_objective.eparentobj, self.bot_current_objective.eent ) ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -155,7 +155,7 @@ bot_objective_think()
|
|||||||
self waittill( "completed_bot_objective" );
|
self waittill( "completed_bot_objective" );
|
||||||
|
|
||||||
// redo the loop, should do the obj next iteration
|
// redo the loop, should do the obj next iteration
|
||||||
best_prio.eparentobj.abotprocesstimes[our_key] = undefined;
|
best_prio.eparentobj.abotprocesstimes[ our_key ] = undefined;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,6 +163,6 @@ bot_objective_think()
|
|||||||
self BotNotifyBotEvent( "debug", "bot_objective_think: " + best_prio.sname );
|
self BotNotifyBotEvent( "debug", "bot_objective_think: " + best_prio.sname );
|
||||||
|
|
||||||
self.bot_current_objective = best_prio;
|
self.bot_current_objective = best_prio;
|
||||||
self thread [[best_prio.eparentobj.fpexecuter]]( best_prio );
|
self thread [[ best_prio.eparentobj.fpexecuter ]]( best_prio );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ init()
|
|||||||
|
|
||||||
for ( i = 0 ; i < vending_triggers.size; i++ )
|
for ( i = 0 ; i < vending_triggers.size; i++ )
|
||||||
{
|
{
|
||||||
vending_triggers[i] thread init_vending_trigger();
|
vending_triggers[ i ] thread init_vending_trigger();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -69,7 +69,7 @@ Finder( eObj )
|
|||||||
|
|
||||||
for ( i = 0 ; i < vending_triggers.size; i++ )
|
for ( i = 0 ; i < vending_triggers.size; i++ )
|
||||||
{
|
{
|
||||||
vending = vending_triggers[i];
|
vending = vending_triggers[ i ];
|
||||||
|
|
||||||
if ( !isdefined( vending.bot_powered_on ) || !vending.bot_powered_on )
|
if ( !isdefined( vending.bot_powered_on ) || !vending.bot_powered_on )
|
||||||
{
|
{
|
||||||
@ -104,7 +104,7 @@ Finder( eObj )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, vending );
|
answer[ answer.size ] = self CreateFinderObjectiveEZ( eObj, vending );
|
||||||
}
|
}
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
@ -130,10 +130,10 @@ getPerkCost()
|
|||||||
{
|
{
|
||||||
if ( self.targetname == "harrybo21_perk_trigger" )
|
if ( self.targetname == "harrybo21_perk_trigger" )
|
||||||
{
|
{
|
||||||
return level.zombie_perks[self getVendingPerk()].perk_cost;
|
return level.zombie_perks[ self getVendingPerk() ].perk_cost;
|
||||||
}
|
}
|
||||||
|
|
||||||
cost = level.zombie_vars["zombie_perk_cost"];
|
cost = level.zombie_vars[ "zombie_perk_cost" ];
|
||||||
|
|
||||||
switch ( self getVendingPerk() )
|
switch ( self getVendingPerk() )
|
||||||
{
|
{
|
||||||
|
@ -17,24 +17,24 @@ Finder( eObj )
|
|||||||
for ( i = 0; i < ents.size; i++ )
|
for ( i = 0; i < ents.size; i++ )
|
||||||
{
|
{
|
||||||
// not a powerup script_model
|
// not a powerup script_model
|
||||||
if ( !isdefined( ents[i].powerup_name ) )
|
if ( !isdefined( ents[ i ].powerup_name ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// can we path to it?
|
// can we path to it?
|
||||||
if ( GetPathIsInaccessible( self.origin, ents[i].origin ) )
|
if ( GetPathIsInaccessible( self.origin, ents[ i ].origin ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
// make sure we are the only one going for it
|
// make sure we are the only one going for it
|
||||||
if ( self GetBotsAmountForEntity( ents[i] ) >= 1 )
|
if ( self GetBotsAmountForEntity( ents[ i ] ) >= 1 )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, ents[i] );
|
answer[ answer.size ] = self CreateFinderObjectiveEZ( eObj, ents[ i ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
|
@ -15,7 +15,7 @@ Finder( eObj )
|
|||||||
|
|
||||||
for ( i = 0; i < Players.size; i++ )
|
for ( i = 0; i < Players.size; i++ )
|
||||||
{
|
{
|
||||||
Player = Players[i];
|
Player = Players[ i ];
|
||||||
|
|
||||||
if ( !isdefined( Player ) || !isdefined( Player.team ) )
|
if ( !isdefined( Player ) || !isdefined( Player.team ) )
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@ Finder( eObj )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Answer[Answer.size] = self CreateFinderObjectiveEZ( eObj, Player );
|
Answer[ Answer.size ] = self CreateFinderObjectiveEZ( eObj, Player );
|
||||||
}
|
}
|
||||||
|
|
||||||
return Answer;
|
return Answer;
|
||||||
|
@ -29,7 +29,7 @@ Finder( eObj )
|
|||||||
|
|
||||||
for ( i = 0; i < chests.size; i ++ )
|
for ( i = 0; i < chests.size; i ++ )
|
||||||
{
|
{
|
||||||
chest = chests[i];
|
chest = chests[ i ];
|
||||||
|
|
||||||
// not active chest
|
// not active chest
|
||||||
if ( isdefined( chest.disabled ) && chest.disabled )
|
if ( isdefined( chest.disabled ) && chest.disabled )
|
||||||
@ -81,7 +81,7 @@ Finder( eObj )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, chest );
|
answer[ answer.size ] = self CreateFinderObjectiveEZ( eObj, chest );
|
||||||
}
|
}
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
|
@ -19,7 +19,7 @@ CreateObjectiveForManger( sName, fpFinder, fpPriorty, fpExecuter, iProcessRate )
|
|||||||
|
|
||||||
CreateFinderObjectiveEZ( eObj, eEnt )
|
CreateFinderObjectiveEZ( eObj, eEnt )
|
||||||
{
|
{
|
||||||
return self CreateFinderObjective( eObj, eObj.sname + "_" + eEnt getentitynumber(), eEnt, self [[eObj.fppriorty]]( eObj, eEnt ) );
|
return self CreateFinderObjective( eObj, eObj.sname + "_" + eEnt getentitynumber(), eEnt, self [[ eObj.fppriorty ]]( eObj, eEnt ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
CreateFinderObjective( eObj, sName, eEnt, fPriority )
|
CreateFinderObjective( eObj, sName, eEnt, fPriority )
|
||||||
|
@ -27,26 +27,26 @@ Finder( eObj )
|
|||||||
{
|
{
|
||||||
player_has_weapon = false;
|
player_has_weapon = false;
|
||||||
|
|
||||||
if ( !isdefined( weapon_spawns[i].zombie_weapon_upgrade ) )
|
if ( !isdefined( weapon_spawns[ i ].zombie_weapon_upgrade ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( h = 0; h < weapons.size; h++ )
|
for ( h = 0; h < weapons.size; h++ )
|
||||||
{
|
{
|
||||||
if ( weapons[h] == weapon_spawns[i].zombie_weapon_upgrade )
|
if ( weapons[ h ] == weapon_spawns[ i ].zombie_weapon_upgrade )
|
||||||
{
|
{
|
||||||
player_has_weapon = true;
|
player_has_weapon = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is_grenade = ( weapontype( weapon_spawns[i].zombie_weapon_upgrade ) == "grenade" );
|
is_grenade = ( weapontype( weapon_spawns[ i ].zombie_weapon_upgrade ) == "grenade" );
|
||||||
|
|
||||||
if ( !player_has_weapon || is_grenade )
|
if ( !player_has_weapon || is_grenade )
|
||||||
{
|
{
|
||||||
func = BotBuiltinGetFunction( "maps/_zombiemode_weapons", "get_weapon_cost" );
|
func = BotBuiltinGetFunction( "maps/_zombiemode_weapons", "get_weapon_cost" );
|
||||||
|
|
||||||
if ( self.score < [[func]]( weapon_spawns[i].zombie_weapon_upgrade ) )
|
if ( self.score < [[ func ]]( weapon_spawns[ i ].zombie_weapon_upgrade ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -55,7 +55,7 @@ Finder( eObj )
|
|||||||
{
|
{
|
||||||
func = BotBuiltinGetFunction( "maps/_zombiemode_weapons", "get_ammo_cost" );
|
func = BotBuiltinGetFunction( "maps/_zombiemode_weapons", "get_ammo_cost" );
|
||||||
|
|
||||||
if ( self.score < [[func]]( weapon_spawns[i].zombie_weapon_upgrade ) )
|
if ( self.score < [[ func ]]( weapon_spawns[ i ].zombie_weapon_upgrade ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -80,7 +80,7 @@ Finder( eObj )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
answer[answer.size] = self CreateFinderObjectiveEZ( eObj, weapon_spawns[i] );
|
answer[ answer.size ] = self CreateFinderObjectiveEZ( eObj, weapon_spawns[ i ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
@ -90,7 +90,7 @@ getOffset( model, weapon )
|
|||||||
{
|
{
|
||||||
org = model get_angle_offset_node( 40, ( 0, -90, 0 ), ( 0, 0, 1 ) );
|
org = model get_angle_offset_node( 40, ( 0, -90, 0 ), ( 0, 0, 1 ) );
|
||||||
|
|
||||||
test_org = ( org[0], org[1], weapon.origin[2] );
|
test_org = ( org[ 0 ], org[ 1 ], weapon.origin[ 2 ] );
|
||||||
|
|
||||||
if ( !weapon PointInsideUseTrigger( test_org ) )
|
if ( !weapon PointInsideUseTrigger( test_org ) )
|
||||||
{
|
{
|
||||||
|
@ -1,24 +1,24 @@
|
|||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.bot_builtins["printconsole"] = ::do_printconsole;
|
level.bot_builtins[ "printconsole" ] = ::do_printconsole;
|
||||||
level.bot_builtins["botaction"] = ::do_botaction;
|
level.bot_builtins[ "botaction" ] = ::do_botaction;
|
||||||
level.bot_builtins["botstop"] = ::do_botstop;
|
level.bot_builtins[ "botstop" ] = ::do_botstop;
|
||||||
level.bot_builtins["botmovement"] = ::do_botmovement;
|
level.bot_builtins[ "botmovement" ] = ::do_botmovement;
|
||||||
level.bot_builtins["botmeleeparams"] = ::do_botmeleeparams;
|
level.bot_builtins[ "botmeleeparams" ] = ::do_botmeleeparams;
|
||||||
level.bot_builtins["isbot"] = ::do_isbot;
|
level.bot_builtins[ "isbot" ] = ::do_isbot;
|
||||||
level.bot_builtins["generatepath"] = ::do_generatepath;
|
level.bot_builtins[ "generatepath" ] = ::do_generatepath;
|
||||||
level.bot_builtins["getfunction"] = ::do_getfunction;
|
level.bot_builtins[ "getfunction" ] = ::do_getfunction;
|
||||||
level.bot_builtins["getmins"] = ::do_getmins;
|
level.bot_builtins[ "getmins" ] = ::do_getmins;
|
||||||
level.bot_builtins["getmaxs"] = ::do_getmaxs;
|
level.bot_builtins[ "getmaxs" ] = ::do_getmaxs;
|
||||||
level.bot_builtins["getguid"] = ::do_getguid;
|
level.bot_builtins[ "getguid" ] = ::do_getguid;
|
||||||
level.bot_builtins["setallowedtraversals"] = ::do_setallowedtraversals;
|
level.bot_builtins[ "setallowedtraversals" ] = ::do_setallowedtraversals;
|
||||||
level.bot_builtins["setignoredlinks"] = ::do_setignoredlinks;
|
level.bot_builtins[ "setignoredlinks" ] = ::do_setignoredlinks;
|
||||||
level.bot_builtins["getnodenumber"] = ::do_getnodenumber;
|
level.bot_builtins[ "getnodenumber" ] = ::do_getnodenumber;
|
||||||
level.bot_builtins["getlinkednodes"] = ::do_getlinkednodes;
|
level.bot_builtins[ "getlinkednodes" ] = ::do_getlinkednodes;
|
||||||
level.bot_builtins["addtestclient"] = ::do_addtestclient;
|
level.bot_builtins[ "addtestclient" ] = ::do_addtestclient;
|
||||||
level.bot_builtins["notifyonplayercommand"] = ::do_notifyonplayercommand;
|
level.bot_builtins[ "notifyonplayercommand" ] = ::do_notifyonplayercommand;
|
||||||
level.bot_builtins["cmdexec"] = ::do_cmdexec;
|
level.bot_builtins[ "cmdexec" ] = ::do_cmdexec;
|
||||||
level.bot_builtins["ishost"] = ::do_ishost;
|
level.bot_builtins[ "ishost" ] = ::do_ishost;
|
||||||
}
|
}
|
||||||
|
|
||||||
do_printconsole( s )
|
do_printconsole( s )
|
||||||
|
Loading…
x
Reference in New Issue
Block a user