mirror of
https://github.com/ineedbots/iw2_bot_warfare.git
synced 2025-04-20 14:45:44 +00:00
casing fixes
This commit is contained in:
parent
0734762e24
commit
0fc52265a4
@ -6,131 +6,131 @@
|
|||||||
*/
|
*/
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.bw_VERSION = "2.1.0";
|
level.bw_version = "2.1.0";
|
||||||
|
|
||||||
if ( getCvar( "bots_main" ) == "" )
|
if ( getcvar( "bots_main" ) == "" )
|
||||||
setCvar( "bots_main", true );
|
setcvar( "bots_main", true );
|
||||||
|
|
||||||
if ( !getCvarInt( "bots_main" ) )
|
if ( !getcvarint( "bots_main" ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !wait_for_builtins() )
|
if ( !wait_for_builtins() )
|
||||||
PrintLn( "FATAL: NO BUILT-INS FOR BOTS" );
|
println( "FATAL: NO BUILT-INS FOR BOTS" );
|
||||||
|
|
||||||
thread load_waypoints();
|
thread load_waypoints();
|
||||||
thread hook_callbacks();
|
thread hook_callbacks();
|
||||||
|
|
||||||
if ( getCvar( "bots_main_GUIDs" ) == "" )
|
if ( getcvar( "bots_main_GUIDs" ) == "" )
|
||||||
setCvar( "bots_main_GUIDs", "" ); //guids of players who will be given host powers, comma seperated
|
setcvar( "bots_main_GUIDs", "" ); //guids of players who will be given host powers, comma seperated
|
||||||
|
|
||||||
if ( getCvar( "bots_main_firstIsHost" ) == "" )
|
if ( getcvar( "bots_main_firstIsHost" ) == "" )
|
||||||
setCvar( "bots_main_firstIsHost", true ); //first player to connect is a host
|
setcvar( "bots_main_firstIsHost", true ); //first player to connect is a host
|
||||||
|
|
||||||
if ( getCvar( "bots_main_waitForHostTime" ) == "" )
|
if ( getcvar( "bots_main_waitForHostTime" ) == "" )
|
||||||
setCvar( "bots_main_waitForHostTime", 10.0 ); //how long to wait to wait for the host player
|
setcvar( "bots_main_waitForHostTime", 10.0 ); //how long to wait to wait for the host player
|
||||||
|
|
||||||
if ( getCvar( "bots_main_kickBotsAtEnd" ) == "" )
|
if ( getcvar( "bots_main_kickBotsAtEnd" ) == "" )
|
||||||
setCvar( "bots_main_kickBotsAtEnd", false ); //kicks the bots at game end
|
setcvar( "bots_main_kickBotsAtEnd", false ); //kicks the bots at game end
|
||||||
|
|
||||||
if ( getCvar( "bots_manage_add" ) == "" )
|
if ( getcvar( "bots_manage_add" ) == "" )
|
||||||
setCvar( "bots_manage_add", 0 ); //amount of bots to add to the game
|
setcvar( "bots_manage_add", 0 ); //amount of bots to add to the game
|
||||||
|
|
||||||
if ( getCvar( "bots_manage_fill" ) == "" )
|
if ( getcvar( "bots_manage_fill" ) == "" )
|
||||||
setCvar( "bots_manage_fill", 0 ); //amount of bots to maintain
|
setcvar( "bots_manage_fill", 0 ); //amount of bots to maintain
|
||||||
|
|
||||||
if ( getCvar( "bots_manage_fill_spec" ) == "" )
|
if ( getcvar( "bots_manage_fill_spec" ) == "" )
|
||||||
setCvar( "bots_manage_fill_spec", true ); //to count for fill if player is on spec team
|
setcvar( "bots_manage_fill_spec", true ); //to count for fill if player is on spec team
|
||||||
|
|
||||||
if ( getCvar( "bots_manage_fill_mode" ) == "" )
|
if ( getcvar( "bots_manage_fill_mode" ) == "" )
|
||||||
setCvar( "bots_manage_fill_mode", 0 ); //fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
|
setcvar( "bots_manage_fill_mode", 0 ); //fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
|
||||||
|
|
||||||
if ( getCvar( "bots_manage_fill_kick" ) == "" )
|
if ( getcvar( "bots_manage_fill_kick" ) == "" )
|
||||||
setCvar( "bots_manage_fill_kick", false ); //kick bots if too many
|
setcvar( "bots_manage_fill_kick", false ); //kick bots if too many
|
||||||
|
|
||||||
if ( getCvar( "bots_team" ) == "" )
|
if ( getcvar( "bots_team" ) == "" )
|
||||||
setCvar( "bots_team", "autoassign" ); //which team for bots to join
|
setcvar( "bots_team", "autoassign" ); //which team for bots to join
|
||||||
|
|
||||||
if ( getCvar( "bots_team_amount" ) == "" )
|
if ( getcvar( "bots_team_amount" ) == "" )
|
||||||
setCvar( "bots_team_amount", 0 ); //amount of bots on axis team
|
setcvar( "bots_team_amount", 0 ); //amount of bots on axis team
|
||||||
|
|
||||||
if ( getCvar( "bots_team_force" ) == "" )
|
if ( getcvar( "bots_team_force" ) == "" )
|
||||||
setCvar( "bots_team_force", false ); //force bots on team
|
setcvar( "bots_team_force", false ); //force bots on team
|
||||||
|
|
||||||
if ( getCvar( "bots_team_mode" ) == "" )
|
if ( getcvar( "bots_team_mode" ) == "" )
|
||||||
setCvar( "bots_team_mode", 0 ); //counts just bots when 1
|
setcvar( "bots_team_mode", 0 ); //counts just bots when 1
|
||||||
|
|
||||||
if ( getCvar( "bots_skill" ) == "" )
|
if ( getcvar( "bots_skill" ) == "" )
|
||||||
setCvar( "bots_skill", 0 ); //0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
|
setcvar( "bots_skill", 0 ); //0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
|
||||||
|
|
||||||
if ( getCvar( "bots_skill_axis_hard" ) == "" )
|
if ( getcvar( "bots_skill_axis_hard" ) == "" )
|
||||||
setCvar( "bots_skill_axis_hard", 0 ); //amount of hard bots on axis team
|
setcvar( "bots_skill_axis_hard", 0 ); //amount of hard bots on axis team
|
||||||
|
|
||||||
if ( getCvar( "bots_skill_axis_med" ) == "" )
|
if ( getcvar( "bots_skill_axis_med" ) == "" )
|
||||||
setCvar( "bots_skill_axis_med", 0 );
|
setcvar( "bots_skill_axis_med", 0 );
|
||||||
|
|
||||||
if ( getCvar( "bots_skill_allies_hard" ) == "" )
|
if ( getcvar( "bots_skill_allies_hard" ) == "" )
|
||||||
setCvar( "bots_skill_allies_hard", 0 );
|
setcvar( "bots_skill_allies_hard", 0 );
|
||||||
|
|
||||||
if ( getCvar( "bots_skill_allies_med" ) == "" )
|
if ( getcvar( "bots_skill_allies_med" ) == "" )
|
||||||
setCvar( "bots_skill_allies_med", 0 );
|
setcvar( "bots_skill_allies_med", 0 );
|
||||||
|
|
||||||
if ( getCvar( "bots_skill_min" ) == "" )
|
if ( getcvar( "bots_skill_min" ) == "" )
|
||||||
setCvar( "bots_skill_min", 1 );
|
setcvar( "bots_skill_min", 1 );
|
||||||
|
|
||||||
if ( getCvar( "bots_skill_max" ) == "" )
|
if ( getcvar( "bots_skill_max" ) == "" )
|
||||||
setCvar( "bots_skill_max", 7 );
|
setcvar( "bots_skill_max", 7 );
|
||||||
|
|
||||||
if ( getCvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
|
if ( getcvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
|
||||||
setCvar( "bots_loadout_rank", -1 );
|
setcvar( "bots_loadout_rank", -1 );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_move" ) == "" ) //bots move
|
if ( getcvar( "bots_play_move" ) == "" ) //bots move
|
||||||
setCvar( "bots_play_move", true );
|
setcvar( "bots_play_move", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_knife" ) == "" ) //bots knife
|
if ( getcvar( "bots_play_knife" ) == "" ) //bots knife
|
||||||
setCvar( "bots_play_knife", true );
|
setcvar( "bots_play_knife", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_fire" ) == "" ) //bots fire
|
if ( getcvar( "bots_play_fire" ) == "" ) //bots fire
|
||||||
setCvar( "bots_play_fire", true );
|
setcvar( "bots_play_fire", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_nade" ) == "" ) //bots grenade
|
if ( getcvar( "bots_play_nade" ) == "" ) //bots grenade
|
||||||
setCvar( "bots_play_nade", true );
|
setcvar( "bots_play_nade", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_obj" ) == "" ) //bots play the obj
|
if ( getcvar( "bots_play_obj" ) == "" ) //bots play the obj
|
||||||
setCvar( "bots_play_obj", true );
|
setcvar( "bots_play_obj", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_camp" ) == "" ) //bots camp and follow
|
if ( getcvar( "bots_play_camp" ) == "" ) //bots camp and follow
|
||||||
setCvar( "bots_play_camp", true );
|
setcvar( "bots_play_camp", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_jumpdrop" ) == "" ) //bots jump and dropshot
|
if ( getcvar( "bots_play_jumpdrop" ) == "" ) //bots jump and dropshot
|
||||||
setCvar( "bots_play_jumpdrop", true );
|
setcvar( "bots_play_jumpdrop", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_ads" ) == "" ) //bot ads
|
if ( getcvar( "bots_play_ads" ) == "" ) //bot ads
|
||||||
setCvar( "bots_play_ads", true );
|
setcvar( "bots_play_ads", true );
|
||||||
|
|
||||||
if ( getCvar( "bots_play_aim" ) == "" )
|
if ( getcvar( "bots_play_aim" ) == "" )
|
||||||
setCvar( "bots_play_aim", true );
|
setcvar( "bots_play_aim", true );
|
||||||
|
|
||||||
if ( !isDefined( game["botWarfare"] ) )
|
if ( !isdefined( game["botWarfare"] ) )
|
||||||
game["botWarfare"] = true;
|
game["botWarfare"] = true;
|
||||||
|
|
||||||
level.defuseObject = undefined;
|
level.defuseobject = undefined;
|
||||||
level.bots_smokeList = List();
|
level.bots_smokelist = List();
|
||||||
|
|
||||||
level.bots_minGrenadeDistance = 256;
|
level.bots_mingrenadedistance = 256;
|
||||||
level.bots_minGrenadeDistance *= level.bots_minGrenadeDistance;
|
level.bots_mingrenadedistance *= level.bots_mingrenadedistance;
|
||||||
level.bots_maxGrenadeDistance = 1024;
|
level.bots_maxgrenadedistance = 1024;
|
||||||
level.bots_maxGrenadeDistance *= level.bots_maxGrenadeDistance;
|
level.bots_maxgrenadedistance *= level.bots_maxgrenadedistance;
|
||||||
level.bots_maxKnifeDistance = 80;
|
level.bots_maxknifedistance = 80;
|
||||||
level.bots_maxKnifeDistance *= level.bots_maxKnifeDistance;
|
level.bots_maxknifedistance *= level.bots_maxknifedistance;
|
||||||
level.bots_goalDistance = 27.5;
|
level.bots_goaldistance = 27.5;
|
||||||
level.bots_goalDistance *= level.bots_goalDistance;
|
level.bots_goaldistance *= level.bots_goaldistance;
|
||||||
level.bots_noADSDistance = 200;
|
level.bots_noadsdistance = 200;
|
||||||
level.bots_noADSDistance *= level.bots_noADSDistance;
|
level.bots_noadsdistance *= level.bots_noadsdistance;
|
||||||
level.bots_maxShotgunDistance = 500;
|
level.bots_maxshotgundistance = 500;
|
||||||
level.bots_maxShotgunDistance *= level.bots_maxShotgunDistance;
|
level.bots_maxshotgundistance *= level.bots_maxshotgundistance;
|
||||||
level.bots_listenDist = 100;
|
level.bots_listendist = 100;
|
||||||
|
|
||||||
level.smokeRadius = 255;
|
level.smokeradius = 255;
|
||||||
|
|
||||||
level.bots = [];
|
level.bots = [];
|
||||||
level.players = [];
|
level.players = [];
|
||||||
@ -207,10 +207,10 @@ init()
|
|||||||
level thread watchNades();
|
level thread watchNades();
|
||||||
level thread watchGameEnded();
|
level thread watchGameEnded();
|
||||||
|
|
||||||
level.teamBased = true;
|
level.teambased = true;
|
||||||
|
|
||||||
if ( getcvar( "g_gametype" ) == "dm" )
|
if ( getcvar( "g_gametype" ) == "dm" )
|
||||||
level.teamBased = false;
|
level.teambased = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -225,16 +225,16 @@ handleBots()
|
|||||||
while ( !level.mapended )
|
while ( !level.mapended )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
setCvar( "bots_manage_add", getBotArray().size );
|
setcvar( "bots_manage_add", getBotArray().size );
|
||||||
|
|
||||||
if ( !getCvarInt( "bots_main_kickBotsAtEnd" ) )
|
if ( !getcvarint( "bots_main_kickBotsAtEnd" ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
bots = getBotArray();
|
bots = getBotArray();
|
||||||
|
|
||||||
for ( i = 0; i < bots.size; i++ )
|
for ( i = 0; i < bots.size; i++ )
|
||||||
{
|
{
|
||||||
kick( bots[i] getEntityNumber() );
|
kick( bots[i] getentitynumber() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +249,7 @@ onPlayerDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon,
|
|||||||
self maps\mp\bots\_bot_script::onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
self maps\mp\bots\_bot_script::onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevCallbackPlayerDamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
self [[level.prevcallbackplayerdamage]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -263,7 +263,7 @@ onPlayerKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sH
|
|||||||
self maps\mp\bots\_bot_script::onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
self maps\mp\bots\_bot_script::onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevCallbackPlayerKilled]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
self [[level.prevcallbackplayerkilled]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -272,11 +272,11 @@ onPlayerKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sH
|
|||||||
hook_callbacks()
|
hook_callbacks()
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
level.prevCallbackPlayerDamage = level.callbackPlayerDamage;
|
level.prevcallbackplayerdamage = level.callbackplayerdamage;
|
||||||
level.callbackPlayerDamage = ::onPlayerDamage;
|
level.callbackplayerdamage = ::onPlayerDamage;
|
||||||
|
|
||||||
level.prevCallbackPlayerKilled = level.callbackPlayerKilled;
|
level.prevcallbackplayerkilled = level.callbackplayerkilled;
|
||||||
level.callbackPlayerKilled = ::onPlayerKilled;
|
level.callbackplayerkilled = ::onPlayerKilled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -329,13 +329,13 @@ watchWeapons()
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
weap = self getCurrentWeapon();
|
weap = self getcurrentweapon();
|
||||||
self thread watchAmmoUsage( weap );
|
self thread watchAmmoUsage( weap );
|
||||||
|
|
||||||
while ( weap == self getCurrentWeapon() )
|
while ( weap == self getcurrentweapon() )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
self notify( "weapon_change", self getCurrentWeapon() );
|
self notify( "weapon_change", self getcurrentweapon() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -351,12 +351,12 @@ watchAmmoUsage( weap )
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
aCount = self GetWeaponSlotClipAmmo( slot );
|
aCount = self getweaponslotclipammo( slot );
|
||||||
|
|
||||||
while ( aCount == self GetWeaponSlotClipAmmo( slot ) )
|
while ( aCount == self getweaponslotclipammo( slot ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( self GetWeaponSlotClipAmmo( slot ) < aCount )
|
if ( self getweaponslotclipammo( slot ) < aCount )
|
||||||
self notify( "weapon_fired" );
|
self notify( "weapon_fired" );
|
||||||
else
|
else
|
||||||
self notify( "reload" );
|
self notify( "reload" );
|
||||||
@ -400,13 +400,13 @@ watchVelocity()
|
|||||||
*/
|
*/
|
||||||
killTags()
|
killTags()
|
||||||
{
|
{
|
||||||
if ( isDefined( self.tags ) )
|
if ( isdefined( self.tags ) )
|
||||||
{
|
{
|
||||||
for ( i = 0; i < self.tags.size; i++ )
|
for ( i = 0; i < self.tags.size; i++ )
|
||||||
self.tags[i] delete ();
|
self.tags[i] delete ();
|
||||||
|
|
||||||
self.tags = undefined;
|
self.tags = undefined;
|
||||||
self.tagMap = undefined;
|
self.tagmap = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -456,19 +456,19 @@ connected()
|
|||||||
level.players[level.players.size] = self;
|
level.players[level.players.size] = self;
|
||||||
self thread onDisconnectPlayer();
|
self thread onDisconnectPlayer();
|
||||||
|
|
||||||
if ( !isDefined( self.pers["bot_host"] ) )
|
if ( !isdefined( self.pers["bot_host"] ) )
|
||||||
self thread doHostCheck();
|
self thread doHostCheck();
|
||||||
|
|
||||||
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();
|
||||||
@ -496,34 +496,34 @@ watchBotDebugEvent()
|
|||||||
{
|
{
|
||||||
self waittill( "bot_event", msg, str, b, c, d, e, f, g );
|
self waittill( "bot_event", msg, str, b, c, d, e, f, g );
|
||||||
|
|
||||||
if ( GetCvarInt( "bots_main_debug" ) >= 2 )
|
if ( getcvarint( "bots_main_debug" ) >= 2 )
|
||||||
{
|
{
|
||||||
big_str = "Bot Warfare debug: " + self.name + ": " + msg;
|
big_str = "Bot Warfare debug: " + self.name + ": " + msg;
|
||||||
|
|
||||||
if ( isDefined( str ) && isString( str ) )
|
if ( isdefined( str ) && isstring( str ) )
|
||||||
big_str += ", " + str;
|
big_str += ", " + str;
|
||||||
|
|
||||||
if ( isDefined( b ) && isString( b ) )
|
if ( isdefined( b ) && isstring( b ) )
|
||||||
big_str += ", " + b;
|
big_str += ", " + b;
|
||||||
|
|
||||||
if ( isDefined( c ) && isString( c ) )
|
if ( isdefined( c ) && isstring( c ) )
|
||||||
big_str += ", " + c;
|
big_str += ", " + c;
|
||||||
|
|
||||||
if ( isDefined( d ) && isString( d ) )
|
if ( isdefined( d ) && isstring( d ) )
|
||||||
big_str += ", " + d;
|
big_str += ", " + d;
|
||||||
|
|
||||||
if ( isDefined( e ) && isString( e ) )
|
if ( isdefined( e ) && isstring( e ) )
|
||||||
big_str += ", " + e;
|
big_str += ", " + e;
|
||||||
|
|
||||||
if ( isDefined( f ) && isString( f ) )
|
if ( isdefined( f ) && isstring( f ) )
|
||||||
big_str += ", " + f;
|
big_str += ", " + f;
|
||||||
|
|
||||||
if ( isDefined( g ) && isString( g ) )
|
if ( isdefined( g ) && isstring( g ) )
|
||||||
big_str += ", " + g;
|
big_str += ", " + g;
|
||||||
|
|
||||||
BotBuiltinPrintConsole( big_str );
|
BotBuiltinPrintConsole( big_str );
|
||||||
}
|
}
|
||||||
else if ( msg == "debug" && GetCvarInt( "bots_main_debug" ) )
|
else if ( msg == "debug" && getcvarint( "bots_main_debug" ) )
|
||||||
{
|
{
|
||||||
BotBuiltinPrintConsole( "Bot Warfare debug: " + self.name + ": " + str );
|
BotBuiltinPrintConsole( "Bot Warfare debug: " + self.name + ": " + str );
|
||||||
}
|
}
|
||||||
@ -561,11 +561,11 @@ add_bot()
|
|||||||
*/
|
*/
|
||||||
diffBots_loop()
|
diffBots_loop()
|
||||||
{
|
{
|
||||||
var_allies_hard = getCvarInt( "bots_skill_allies_hard" );
|
var_allies_hard = getcvarint( "bots_skill_allies_hard" );
|
||||||
var_allies_med = getCvarInt( "bots_skill_allies_med" );
|
var_allies_med = getcvarint( "bots_skill_allies_med" );
|
||||||
var_axis_hard = getCvarInt( "bots_skill_axis_hard" );
|
var_axis_hard = getcvarint( "bots_skill_axis_hard" );
|
||||||
var_axis_med = getCvarInt( "bots_skill_axis_med" );
|
var_axis_med = getcvarint( "bots_skill_axis_med" );
|
||||||
var_skill = getCvarInt( "bots_skill" );
|
var_skill = getcvarint( "bots_skill" );
|
||||||
|
|
||||||
allies_hard = 0;
|
allies_hard = 0;
|
||||||
allies_med = 0;
|
allies_med = 0;
|
||||||
@ -580,7 +580,7 @@ diffBots_loop()
|
|||||||
{
|
{
|
||||||
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() )
|
||||||
@ -634,8 +634,8 @@ diffBots_loop()
|
|||||||
}
|
}
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
min_diff = GetCvarInt( "bots_skill_min" );
|
min_diff = getcvarint( "bots_skill_min" );
|
||||||
max_diff = GetCvarInt( "bots_skill_max" );
|
max_diff = getcvarint( "bots_skill_max" );
|
||||||
|
|
||||||
for ( i = 0; i < playercount; i++ )
|
for ( i = 0; i < playercount; i++ )
|
||||||
{
|
{
|
||||||
@ -666,8 +666,8 @@ diffBots()
|
|||||||
*/
|
*/
|
||||||
teamBots_loop()
|
teamBots_loop()
|
||||||
{
|
{
|
||||||
teamAmount = getCvarInt( "bots_team_amount" );
|
teamAmount = getcvarint( "bots_team_amount" );
|
||||||
toTeam = getCvar( "bots_team" );
|
toTeam = getcvar( "bots_team" );
|
||||||
|
|
||||||
alliesbots = 0;
|
alliesbots = 0;
|
||||||
alliesplayers = 0;
|
alliesplayers = 0;
|
||||||
@ -680,7 +680,7 @@ teamBots_loop()
|
|||||||
{
|
{
|
||||||
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() )
|
||||||
@ -702,7 +702,7 @@ teamBots_loop()
|
|||||||
allies = alliesbots;
|
allies = alliesbots;
|
||||||
axis = axisbots;
|
axis = axisbots;
|
||||||
|
|
||||||
if ( !getCvarInt( "bots_team_mode" ) )
|
if ( !getcvarint( "bots_team_mode" ) )
|
||||||
{
|
{
|
||||||
allies += alliesplayers;
|
allies += alliesplayers;
|
||||||
axis += axisplayers;
|
axis += axisplayers;
|
||||||
@ -710,7 +710,7 @@ teamBots_loop()
|
|||||||
|
|
||||||
if ( toTeam != "custom" )
|
if ( toTeam != "custom" )
|
||||||
{
|
{
|
||||||
if ( getCvarInt( "bots_team_force" ) )
|
if ( getcvarint( "bots_team_force" ) )
|
||||||
{
|
{
|
||||||
if ( toTeam == "autoassign" )
|
if ( toTeam == "autoassign" )
|
||||||
{
|
{
|
||||||
@ -731,7 +731,7 @@ teamBots_loop()
|
|||||||
{
|
{
|
||||||
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() )
|
||||||
@ -760,7 +760,7 @@ teamBots_loop()
|
|||||||
{
|
{
|
||||||
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() )
|
||||||
@ -809,11 +809,11 @@ teamBots()
|
|||||||
*/
|
*/
|
||||||
addBots_loop()
|
addBots_loop()
|
||||||
{
|
{
|
||||||
botsToAdd = GetCvarInt( "bots_manage_add" );
|
botsToAdd = getcvarint( "bots_manage_add" );
|
||||||
|
|
||||||
if ( botsToAdd > 0 )
|
if ( botsToAdd > 0 )
|
||||||
{
|
{
|
||||||
SetCvar( "bots_manage_add", 0 );
|
setcvar( "bots_manage_add", 0 );
|
||||||
|
|
||||||
if ( botsToAdd > 64 )
|
if ( botsToAdd > 64 )
|
||||||
botsToAdd = 64;
|
botsToAdd = 64;
|
||||||
@ -825,12 +825,12 @@ addBots_loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fillMode = getCvarInt( "bots_manage_fill_mode" );
|
fillMode = getcvarint( "bots_manage_fill_mode" );
|
||||||
|
|
||||||
if ( fillMode == 2 || fillMode == 3 )
|
if ( fillMode == 2 || fillMode == 3 )
|
||||||
setCvar( "bots_manage_fill", getGoodMapAmount() );
|
setcvar( "bots_manage_fill", getGoodMapAmount() );
|
||||||
|
|
||||||
fillAmount = getCvarInt( "bots_manage_fill" );
|
fillAmount = getcvarint( "bots_manage_fill" );
|
||||||
|
|
||||||
players = 0;
|
players = 0;
|
||||||
bots = 0;
|
bots = 0;
|
||||||
@ -844,17 +844,17 @@ addBots_loop()
|
|||||||
|
|
||||||
if ( player is_bot() )
|
if ( player is_bot() )
|
||||||
bots++;
|
bots++;
|
||||||
else if ( !isDefined( player.pers["team"] ) || ( player.pers["team"] != "axis" && player.pers["team"] != "allies" ) )
|
else if ( !isdefined( player.pers["team"] ) || ( player.pers["team"] != "axis" && player.pers["team"] != "allies" ) )
|
||||||
spec++;
|
spec++;
|
||||||
else
|
else
|
||||||
players++;
|
players++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !randomInt( 999 ) )
|
if ( !randomint( 999 ) )
|
||||||
{
|
{
|
||||||
setCvar( "testclients_doreload", true );
|
setcvar( "testclients_doreload", true );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
setCvar( "testclients_doreload", false );
|
setcvar( "testclients_doreload", false );
|
||||||
doExtraCheck();
|
doExtraCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -872,7 +872,7 @@ addBots_loop()
|
|||||||
if ( player is_bot() )
|
if ( player is_bot() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !isDefined( player.pers["team"] ) )
|
if ( !isdefined( player.pers["team"] ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( player.pers["team"] == "axis" )
|
if ( player.pers["team"] == "axis" )
|
||||||
@ -901,17 +901,17 @@ addBots_loop()
|
|||||||
if ( fillMode == 0 || fillMode == 2 )
|
if ( fillMode == 0 || fillMode == 2 )
|
||||||
amount += players;
|
amount += players;
|
||||||
|
|
||||||
if ( getCvarInt( "bots_manage_fill_spec" ) )
|
if ( getcvarint( "bots_manage_fill_spec" ) )
|
||||||
amount += spec;
|
amount += spec;
|
||||||
|
|
||||||
if ( amount < fillAmount )
|
if ( amount < fillAmount )
|
||||||
setCvar( "bots_manage_add", 1 );
|
setcvar( "bots_manage_add", 1 );
|
||||||
else if ( amount > fillAmount && getCvarInt( "bots_manage_fill_kick" ) )
|
else if ( amount > fillAmount && getcvarint( "bots_manage_fill_kick" ) )
|
||||||
{
|
{
|
||||||
tempBot = getBotToKick();
|
tempBot = getBotToKick();
|
||||||
|
|
||||||
if ( isDefined( tempBot ) )
|
if ( isdefined( tempBot ) )
|
||||||
kick( tempBot getEntityNumber() );
|
kick( tempBot getentitynumber() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -964,14 +964,14 @@ doFiringThread()
|
|||||||
*/
|
*/
|
||||||
launchSmoke( org )
|
launchSmoke( org )
|
||||||
{
|
{
|
||||||
nade = spawnStruct();
|
nade = spawnstruct();
|
||||||
nade.origin = org;
|
nade.origin = org;
|
||||||
|
|
||||||
level.bots_smokeList ListAdd( nade );
|
level.bots_smokelist ListAdd( nade );
|
||||||
|
|
||||||
wait 11.5;
|
wait 11.5;
|
||||||
|
|
||||||
level.bots_smokeList ListRemove( nade );
|
level.bots_smokelist ListRemove( nade );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -982,19 +982,19 @@ watchNade()
|
|||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
lastOrigin = self.origin;
|
lastOrigin = self.origin;
|
||||||
creationTime = getTime();
|
creationTime = gettime();
|
||||||
timeSlow = 0;
|
timeSlow = 0;
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
while ( isDefined( self ) )
|
while ( isdefined( self ) )
|
||||||
{
|
{
|
||||||
velocity = vector_scale( self.origin - lastOrigin, 20 );
|
velocity = vector_scale( self.origin - lastOrigin, 20 );
|
||||||
lastOrigin = self.origin;
|
lastOrigin = self.origin;
|
||||||
|
|
||||||
if ( getTime() - creationTime > 4000 )
|
if ( gettime() - creationTime > 4000 )
|
||||||
{
|
{
|
||||||
if ( lengthSquared( velocity ) <= 0.05 )
|
if ( lengthsquared( velocity ) <= 0.05 )
|
||||||
timeSlow += 0.05;
|
timeSlow += 0.05;
|
||||||
else
|
else
|
||||||
timeSlow = 0;
|
timeSlow = 0;
|
||||||
@ -1021,10 +1021,10 @@ watchNades_loop()
|
|||||||
{
|
{
|
||||||
nade = nades[i];
|
nade = nades[i];
|
||||||
|
|
||||||
if ( !isDefined( nade ) )
|
if ( !isdefined( nade ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( isDefined( nade.bot_audit ) )
|
if ( isdefined( nade.bot_audit ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
nade.bot_audit = true;
|
nade.bot_audit = true;
|
||||||
@ -1051,24 +1051,24 @@ watchNades()
|
|||||||
*/
|
*/
|
||||||
watchGameEnded()
|
watchGameEnded()
|
||||||
{
|
{
|
||||||
level.gameEnded = false;
|
level.gameended = false;
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( isDefined( level.roundended ) )
|
if ( isdefined( level.roundended ) )
|
||||||
{
|
{
|
||||||
if ( level.roundended )
|
if ( level.roundended )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if ( isDefined( level.mapended ) )
|
else if ( isdefined( level.mapended ) )
|
||||||
{
|
{
|
||||||
if ( level.mapended )
|
if ( level.mapended )
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
level.gameEnded = true;
|
level.gameended = true;
|
||||||
level notify( "game_ended" );
|
level notify( "game_ended" );
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -18,8 +18,8 @@ connected()
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
self.killerLocation = undefined;
|
self.killerlocation = undefined;
|
||||||
self.lastKiller = undefined;
|
self.lastkiller = undefined;
|
||||||
self.bot_change_class = true;
|
self.bot_change_class = true;
|
||||||
|
|
||||||
self thread difficulty();
|
self thread difficulty();
|
||||||
@ -34,10 +34,10 @@ connected()
|
|||||||
*/
|
*/
|
||||||
onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration )
|
onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration )
|
||||||
{
|
{
|
||||||
self.killerLocation = undefined;
|
self.killerlocation = undefined;
|
||||||
self.lastKiller = undefined;
|
self.lastkiller = undefined;
|
||||||
|
|
||||||
if ( !IsDefined( self ) || !isDefined( self.team ) )
|
if ( !isdefined( self ) || !isdefined( self.team ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( sMeansOfDeath == "MOD_FALLING" || sMeansOfDeath == "MOD_SUICIDE" )
|
if ( sMeansOfDeath == "MOD_FALLING" || sMeansOfDeath == "MOD_SUICIDE" )
|
||||||
@ -46,23 +46,23 @@ onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc,
|
|||||||
if ( iDamage <= 0 )
|
if ( iDamage <= 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !IsDefined( eAttacker ) || !isDefined( eAttacker.team ) )
|
if ( !isdefined( eAttacker ) || !isdefined( eAttacker.team ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( eAttacker == self )
|
if ( eAttacker == self )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( level.teamBased && eAttacker.team == self.team )
|
if ( level.teambased && eAttacker.team == self.team )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !IsDefined( eInflictor ) || eInflictor.classname != "player" )
|
if ( !isdefined( eInflictor ) || eInflictor.classname != "player" )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isAlive( eAttacker ) )
|
if ( !isalive( eAttacker ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self.killerLocation = eAttacker.origin;
|
self.killerlocation = eAttacker.origin;
|
||||||
self.lastKiller = eAttacker;
|
self.lastkiller = eAttacker;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -70,10 +70,10 @@ onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc,
|
|||||||
*/
|
*/
|
||||||
onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset )
|
onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset )
|
||||||
{
|
{
|
||||||
if ( !IsDefined( self ) || !isDefined( self.team ) )
|
if ( !isdefined( self ) || !isdefined( self.team ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isAlive( self ) )
|
if ( !isalive( self ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( sMeansOfDeath == "MOD_FALLING" || sMeansOfDeath == "MOD_SUICIDE" )
|
if ( sMeansOfDeath == "MOD_FALLING" || sMeansOfDeath == "MOD_SUICIDE" )
|
||||||
@ -82,19 +82,19 @@ onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoin
|
|||||||
if ( iDamage <= 0 )
|
if ( iDamage <= 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !IsDefined( eAttacker ) || !isDefined( eAttacker.team ) )
|
if ( !isdefined( eAttacker ) || !isdefined( eAttacker.team ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( eAttacker == self )
|
if ( eAttacker == self )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( level.teamBased && eAttacker.team == self.team )
|
if ( level.teambased && eAttacker.team == self.team )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !IsDefined( eInflictor ) || eInflictor.classname != "player" )
|
if ( !isdefined( eInflictor ) || eInflictor.classname != "player" )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isAlive( eAttacker ) )
|
if ( !isalive( eAttacker ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
self bot_cry_for_help( eAttacker );
|
self bot_cry_for_help( eAttacker );
|
||||||
@ -107,14 +107,14 @@ onDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoin
|
|||||||
*/
|
*/
|
||||||
bot_cry_for_help( attacker )
|
bot_cry_for_help( attacker )
|
||||||
{
|
{
|
||||||
if ( !level.teamBased )
|
if ( !level.teambased )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
theTime = GetTime();
|
theTime = gettime();
|
||||||
|
|
||||||
if ( IsDefined( self.help_time ) && theTime - self.help_time < 1000 )
|
if ( isdefined( self.help_time ) && theTime - self.help_time < 1000 )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -130,13 +130,13 @@ bot_cry_for_help( attacker )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( player.team ) )
|
if ( !isdefined( player.team ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !player IsPlayerModelOK() )
|
if ( !player IsPlayerModelOK() )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( !IsAlive( player ) )
|
if ( !isalive( player ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -154,16 +154,16 @@ bot_cry_for_help( attacker )
|
|||||||
dist = player.pers["bots"]["skill"]["help_dist"];
|
dist = player.pers["bots"]["skill"]["help_dist"];
|
||||||
dist *= dist;
|
dist *= dist;
|
||||||
|
|
||||||
if ( DistanceSquared( self.origin, player.origin ) > dist )
|
if ( distancesquared( self.origin, player.origin ) > dist )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( RandomInt( 100 ) < 50 )
|
if ( randomint( 100 ) < 50 )
|
||||||
{
|
{
|
||||||
self SetAttacker( attacker );
|
self SetAttacker( attacker );
|
||||||
|
|
||||||
if ( RandomInt( 100 ) > 70 )
|
if ( randomint( 100 ) > 70 )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ bot_cry_for_help( attacker )
|
|||||||
*/
|
*/
|
||||||
set_diff()
|
set_diff()
|
||||||
{
|
{
|
||||||
rankVar = GetCvarInt( "bots_skill" );
|
rankVar = getcvarint( "bots_skill" );
|
||||||
|
|
||||||
switch ( rankVar )
|
switch ( rankVar )
|
||||||
{
|
{
|
||||||
@ -188,36 +188,36 @@ set_diff()
|
|||||||
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_spine4,j_ankle_ri,j_ankle_le";
|
self.pers["bots"]["skill"]["bones"] = "j_head,j_spine4,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"]["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"]["class"] = randomInt( 100 );
|
self.pers["bots"]["behavior"]["class"] = randomint( 100 );
|
||||||
self.pers["bots"]["behavior"]["jump"] = randomInt( 100 );
|
self.pers["bots"]["behavior"]["jump"] = randomint( 100 );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -235,7 +235,7 @@ difficulty()
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
if ( GetCvarInt( "bots_skill" ) != 9 )
|
if ( getcvarint( "bots_skill" ) != 9 )
|
||||||
{
|
{
|
||||||
switch ( self.pers["bots"]["skill"]["base"] )
|
switch ( self.pers["bots"]["skill"]["base"] )
|
||||||
{
|
{
|
||||||
@ -477,7 +477,7 @@ teamWatch()
|
|||||||
wait 0.1;
|
wait 0.1;
|
||||||
|
|
||||||
if ( self.team != "axis" && self.team != "allies" )
|
if ( self.team != "axis" && self.team != "allies" )
|
||||||
self notify( "menuresponse", game["menu_team"], getCvar( "bots_team" ) );
|
self notify( "menuresponse", game["menu_team"], getcvar( "bots_team" ) );
|
||||||
|
|
||||||
while ( isdefined( self.pers["team"] ) )
|
while ( isdefined( self.pers["team"] ) )
|
||||||
wait .05;
|
wait .05;
|
||||||
@ -556,12 +556,12 @@ classWatch()
|
|||||||
|
|
||||||
wait 0.5;
|
wait 0.5;
|
||||||
|
|
||||||
if ( !isDefined( self.pers["weapon"] ) || self.pers["weapon"] == "" || !isDefined( self.bot_change_class ) )
|
if ( !isdefined( self.pers["weapon"] ) || self.pers["weapon"] == "" || !isdefined( self.bot_change_class ) )
|
||||||
self notify( "menuresponse", game["menu_weapon_" + self.team], self chooseRandomClass() );
|
self notify( "menuresponse", game["menu_weapon_" + self.team], self chooseRandomClass() );
|
||||||
|
|
||||||
self.bot_change_class = true;
|
self.bot_change_class = true;
|
||||||
|
|
||||||
while ( isdefined( self.pers["team"] ) && isDefined( self.pers["weapon"] ) && self.pers["weapon"] != "" && isDefined( self.bot_change_class ) )
|
while ( isdefined( self.pers["team"] ) && isdefined( self.pers["weapon"] ) && self.pers["weapon"] != "" && isdefined( self.bot_change_class ) )
|
||||||
wait .05;
|
wait .05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -577,7 +577,7 @@ onSpawned()
|
|||||||
{
|
{
|
||||||
self waittill( "spawned_player" );
|
self waittill( "spawned_player" );
|
||||||
|
|
||||||
if ( randomInt( 100 ) <= self.pers["bots"]["behavior"]["class"] )
|
if ( randomint( 100 ) <= self.pers["bots"]["behavior"]["class"] )
|
||||||
self.bot_change_class = undefined;
|
self.bot_change_class = undefined;
|
||||||
|
|
||||||
self.bot_lock_goal = false;
|
self.bot_lock_goal = false;
|
||||||
|
@ -7,7 +7,7 @@ wait_for_builtins()
|
|||||||
{
|
{
|
||||||
for ( i = 0; i < 20; i++ )
|
for ( i = 0; i < 20; i++ )
|
||||||
{
|
{
|
||||||
if ( isDefined( level.bot_builtins ) )
|
if ( isdefined( level.bot_builtins ) )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( i < 18 )
|
if ( i < 18 )
|
||||||
@ -24,7 +24,7 @@ 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 );
|
||||||
}
|
}
|
||||||
@ -36,7 +36,7 @@ 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 );
|
||||||
}
|
}
|
||||||
@ -48,7 +48,7 @@ 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" ]]]();
|
||||||
}
|
}
|
||||||
@ -60,7 +60,7 @@ BotBuiltinBotStop()
|
|||||||
*/
|
*/
|
||||||
BotBuiltinBotMovement( forward, right )
|
BotBuiltinBotMovement( forward, right )
|
||||||
{
|
{
|
||||||
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" ]]]( forward, right );
|
self [[ level.bot_builtins["botmovement" ]]]( forward, right );
|
||||||
}
|
}
|
||||||
@ -71,7 +71,7 @@ BotBuiltinBotMovement( forward, right )
|
|||||||
*/
|
*/
|
||||||
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" ]]]();
|
||||||
}
|
}
|
||||||
@ -84,7 +84,7 @@ BotBuiltinIsBot()
|
|||||||
*/
|
*/
|
||||||
is_host()
|
is_host()
|
||||||
{
|
{
|
||||||
return ( isDefined( self.pers["bot_host"] ) && self.pers["bot_host"] );
|
return ( isdefined( self.pers["bot_host"] ) && self.pers["bot_host"] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -99,20 +99,20 @@ doHostCheck()
|
|||||||
|
|
||||||
result = false;
|
result = false;
|
||||||
|
|
||||||
if ( getCvar( "bots_main_firstIsHost" ) != "0" )
|
if ( getcvar( "bots_main_firstIsHost" ) != "0" )
|
||||||
{
|
{
|
||||||
BotBuiltinPrintConsole( "WARNING: bots_main_firstIsHost is enabled" );
|
BotBuiltinPrintConsole( "WARNING: bots_main_firstIsHost is enabled" );
|
||||||
|
|
||||||
if ( getCvar( "bots_main_firstIsHost" ) == "1" )
|
if ( getcvar( "bots_main_firstIsHost" ) == "1" )
|
||||||
{
|
{
|
||||||
setCvar( "bots_main_firstIsHost", self getguid() );
|
setcvar( "bots_main_firstIsHost", self getguid() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( getCvar( "bots_main_firstIsHost" ) == self getguid() + "" )
|
if ( getcvar( "bots_main_firstIsHost" ) == self getguid() + "" )
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
DvarGUID = getCvar( "bots_main_GUIDs" );
|
DvarGUID = getcvar( "bots_main_GUIDs" );
|
||||||
|
|
||||||
if ( DvarGUID != "" )
|
if ( DvarGUID != "" )
|
||||||
{
|
{
|
||||||
@ -136,7 +136,7 @@ doHostCheck()
|
|||||||
*/
|
*/
|
||||||
is_bot()
|
is_bot()
|
||||||
{
|
{
|
||||||
return ( ( isDefined( self.pers["isBot"] ) && self.pers["isBot"] ) || ( isDefined( self.pers["isBotWarfare"] ) && self.pers["isBotWarfare"] ) || self BotBuiltinIsBot() );
|
return ( ( isdefined( self.pers["isBot"] ) && self.pers["isBot"] ) || ( isdefined( self.pers["isBotWarfare"] ) && self.pers["isBotWarfare"] ) || self BotBuiltinIsBot() );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -208,7 +208,7 @@ BotGetRandom()
|
|||||||
*/
|
*/
|
||||||
BotGetTargetRandom()
|
BotGetTargetRandom()
|
||||||
{
|
{
|
||||||
if ( !isDefined( self.bot.target ) )
|
if ( !isdefined( self.bot.target ) )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
return self.bot.target.rand;
|
return self.bot.target.rand;
|
||||||
@ -290,7 +290,7 @@ BotNotifyBotEvent( msg, a, b, c, d, e, f, g )
|
|||||||
*/
|
*/
|
||||||
HasScriptGoal()
|
HasScriptGoal()
|
||||||
{
|
{
|
||||||
return ( isDefined( self GetScriptGoal() ) );
|
return ( isdefined( self GetScriptGoal() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -306,7 +306,7 @@ GetScriptGoal()
|
|||||||
*/
|
*/
|
||||||
SetScriptGoal( goal, dist )
|
SetScriptGoal( goal, dist )
|
||||||
{
|
{
|
||||||
if ( !isDefined( dist ) )
|
if ( !isdefined( dist ) )
|
||||||
dist = 16;
|
dist = 16;
|
||||||
|
|
||||||
self.bot.script_goal = goal;
|
self.bot.script_goal = goal;
|
||||||
@ -353,7 +353,7 @@ GetScriptAimPos()
|
|||||||
*/
|
*/
|
||||||
HasScriptAimPos()
|
HasScriptAimPos()
|
||||||
{
|
{
|
||||||
return isDefined( self GetScriptAimPos() );
|
return isdefined( self GetScriptAimPos() );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -397,7 +397,7 @@ GetThreat()
|
|||||||
*/
|
*/
|
||||||
HasScriptEnemy()
|
HasScriptEnemy()
|
||||||
{
|
{
|
||||||
return ( isDefined( self.bot.script_target ) );
|
return ( isdefined( self.bot.script_target ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -405,7 +405,7 @@ HasScriptEnemy()
|
|||||||
*/
|
*/
|
||||||
HasThreat()
|
HasThreat()
|
||||||
{
|
{
|
||||||
return ( isDefined( self GetThreat() ) );
|
return ( isdefined( self GetThreat() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -439,7 +439,7 @@ ClearPriorityObjective()
|
|||||||
*/
|
*/
|
||||||
isInUse()
|
isInUse()
|
||||||
{
|
{
|
||||||
return ( isDefined( self.planting ) && self.planting ) || ( isDefined( self.defusing ) && self.defusing );
|
return ( isdefined( self.planting ) && self.planting ) || ( isdefined( self.defusing ) && self.defusing );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -461,7 +461,7 @@ getValidGrenade()
|
|||||||
|
|
||||||
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] ) )
|
||||||
@ -478,7 +478,7 @@ getValidGrenade()
|
|||||||
*/
|
*/
|
||||||
isSecondaryGrenade( nade )
|
isSecondaryGrenade( nade )
|
||||||
{
|
{
|
||||||
return isSubStr( nade, "smoke_grenade_" );
|
return issubstr( nade, "smoke_grenade_" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -504,7 +504,7 @@ weaponClass( weap )
|
|||||||
{
|
{
|
||||||
answer = level.bots_weapon_class_names[weap];
|
answer = level.bots_weapon_class_names[weap];
|
||||||
|
|
||||||
if ( !isDefined( answer ) )
|
if ( !isdefined( answer ) )
|
||||||
answer = "";
|
answer = "";
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
@ -517,7 +517,7 @@ WeaponClipSize( weap )
|
|||||||
{
|
{
|
||||||
answer = level.bots_weapon_clip_sizes[weap];
|
answer = level.bots_weapon_clip_sizes[weap];
|
||||||
|
|
||||||
if ( !isDefined( answer ) )
|
if ( !isdefined( answer ) )
|
||||||
answer = 1;
|
answer = 1;
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
@ -537,11 +537,11 @@ getWeaponSlot( weap )
|
|||||||
/*
|
/*
|
||||||
cOD2
|
cOD2
|
||||||
*/
|
*/
|
||||||
GetAmmoCount( weap )
|
getAmmoCount( weap )
|
||||||
{
|
{
|
||||||
slot = self getWeaponSlot( weap );
|
slot = self getWeaponSlot( weap );
|
||||||
|
|
||||||
return self GetWeaponSlotClipAmmo( slot ) + self GetWeaponSlotAmmo( slot );
|
return self getweaponslotclipammo( slot ) + self getweaponslotammo( slot );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -549,7 +549,7 @@ GetAmmoCount( weap )
|
|||||||
*/
|
*/
|
||||||
IsWeaponClipOnly( weap )
|
IsWeaponClipOnly( weap )
|
||||||
{
|
{
|
||||||
return isSubStr( weap, "grenade_" );
|
return issubstr( weap, "grenade_" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -575,7 +575,7 @@ getStance()
|
|||||||
*/
|
*/
|
||||||
getVelocity()
|
getVelocity()
|
||||||
{
|
{
|
||||||
if ( !isAlive( self ) )
|
if ( !isalive( self ) )
|
||||||
return ( 0, 0, 0 );
|
return ( 0, 0, 0 );
|
||||||
|
|
||||||
return self.velocity;
|
return self.velocity;
|
||||||
@ -586,7 +586,7 @@ getVelocity()
|
|||||||
*/
|
*/
|
||||||
IsPlayerModelOK()
|
IsPlayerModelOK()
|
||||||
{
|
{
|
||||||
return ( isDefined( self.bot_model_fix ) );
|
return ( isdefined( self.bot_model_fix ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -596,13 +596,13 @@ 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]] );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Returns what our eye height is.
|
Returns what our eye height is.
|
||||||
*/
|
*/
|
||||||
GetEyeHeight()
|
getEyeHeight()
|
||||||
{
|
{
|
||||||
stance = self GetStance();
|
stance = self GetStance();
|
||||||
|
|
||||||
@ -624,26 +624,26 @@ GetEyeHeight()
|
|||||||
*/
|
*/
|
||||||
getTagOrigin( where )
|
getTagOrigin( where )
|
||||||
{
|
{
|
||||||
if ( !isAlive( self ) )
|
if ( !isalive( self ) )
|
||||||
return ( 0, 0, 0 );
|
return ( 0, 0, 0 );
|
||||||
|
|
||||||
if ( !isDefined( self.bot_model_fix ) )
|
if ( !isdefined( self.bot_model_fix ) )
|
||||||
return self.origin;
|
return self.origin;
|
||||||
|
|
||||||
if ( !isDefined( self.tags ) )
|
if ( !isdefined( self.tags ) )
|
||||||
{
|
{
|
||||||
self.tags = [];
|
self.tags = [];
|
||||||
self.tagMap = [];
|
self.tagmap = [];
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( self.tagMap[where] ) )
|
if ( isdefined( self.tagmap[where] ) )
|
||||||
return self.tagMap[where].origin;
|
return self.tagmap[where].origin;
|
||||||
|
|
||||||
obj = spawn( "script_origin", ( 0, 0, 0 ) );
|
obj = spawn( "script_origin", ( 0, 0, 0 ) );
|
||||||
obj linkto( self, where, ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
obj linkto( self, where, ( 0, 0, 0 ), ( 0, 0, 0 ) );
|
||||||
|
|
||||||
self.tags[self.tags.size] = obj;
|
self.tags[self.tags.size] = obj;
|
||||||
self.tagMap[where] = obj;
|
self.tagmap[where] = obj;
|
||||||
|
|
||||||
return self.origin;
|
return self.origin;
|
||||||
}
|
}
|
||||||
@ -651,9 +651,9 @@ getTagOrigin( where )
|
|||||||
/*
|
/*
|
||||||
Returns (iw4) eye pos.
|
Returns (iw4) eye pos.
|
||||||
*/
|
*/
|
||||||
GetEyePos()
|
getEyePos()
|
||||||
{
|
{
|
||||||
return self.origin + ( 0, 0, self GetEyeHeight() );
|
return self.origin + ( 0, 0, self getEyeHeight() );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -671,7 +671,7 @@ waittill_either_return_( str1, str2 )
|
|||||||
*/
|
*/
|
||||||
waittill_either_return( str1, str2 )
|
waittill_either_return( str1, str2 )
|
||||||
{
|
{
|
||||||
if ( !isDefined( self waittill_either_return_( str1, str2 ) ) )
|
if ( !isdefined( self waittill_either_return_( str1, str2 ) ) )
|
||||||
return str1;
|
return str1;
|
||||||
|
|
||||||
return str2;
|
return str2;
|
||||||
@ -751,20 +751,20 @@ _timeout( delay )
|
|||||||
*/
|
*/
|
||||||
isWeaponDroppable( weap )
|
isWeaponDroppable( weap )
|
||||||
{
|
{
|
||||||
return ( maps\mp\gametypes\_weapons::isPistol( weap ) || maps\mp\gametypes\_weapons::isMainWeapon( weap ) );
|
return ( maps\mp\gametypes\_weapons::ispistol( weap ) || maps\mp\gametypes\_weapons::ismainweapon( weap ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Selects a random element from the array.
|
Selects a random element from the array.
|
||||||
*/
|
*/
|
||||||
Random( arr )
|
random( arr )
|
||||||
{
|
{
|
||||||
size = arr.size;
|
size = arr.size;
|
||||||
|
|
||||||
if ( !size )
|
if ( !size )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
return arr[randomInt( size )];
|
return arr[randomint( size )];
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -819,34 +819,34 @@ bot_wait_for_host()
|
|||||||
{
|
{
|
||||||
host = undefined;
|
host = undefined;
|
||||||
|
|
||||||
while ( !isDefined( level ) || !isDefined( level.players ) )
|
while ( !isdefined( level ) || !isdefined( level.players ) )
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
for ( i = getCvarFloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
|
for ( i = getcvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
|
||||||
{
|
{
|
||||||
host = GetHostPlayer();
|
host = GetHostPlayer();
|
||||||
|
|
||||||
if ( isDefined( host ) )
|
if ( isdefined( host ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( host ) )
|
if ( !isdefined( host ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for ( i = getCvarFloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
|
for ( i = getcvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
|
||||||
{
|
{
|
||||||
if ( IsDefined( host.pers[ "team" ] ) )
|
if ( isdefined( host.pers[ "team" ] ) )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !IsDefined( host.pers[ "team" ] ) )
|
if ( !isdefined( host.pers[ "team" ] ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for ( i = getCvarFloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
|
for ( i = getcvarfloat( "bots_main_waitForHostTime" ); i > 0; i -= 0.05 )
|
||||||
{
|
{
|
||||||
if ( host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis" )
|
if ( host.pers[ "team" ] == "allies" || host.pers[ "team" ] == "axis" )
|
||||||
break;
|
break;
|
||||||
@ -893,10 +893,10 @@ RaySphereIntersect( start, end, spherePos, radius )
|
|||||||
// check if the start or end points are in the sphere
|
// check if the start or end points are in the sphere
|
||||||
r2 = radius * radius;
|
r2 = radius * radius;
|
||||||
|
|
||||||
if ( DistanceSquared( start, spherePos ) < r2 )
|
if ( distancesquared( start, spherePos ) < r2 )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if ( DistanceSquared( end, spherePos ) < r2 )
|
if ( distancesquared( end, spherePos ) < r2 )
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// check if the line made by start and end intersect the sphere
|
// check if the line made by start and end intersect the sphere
|
||||||
@ -919,13 +919,13 @@ RaySphereIntersect( start, end, spherePos, radius )
|
|||||||
ip1 = start + vector_scale( dp, mu1 );
|
ip1 = start + vector_scale( dp, mu1 );
|
||||||
//ip2 = start + mu2 * dp;
|
//ip2 = start + mu2 * dp;
|
||||||
|
|
||||||
myDist = DistanceSquared( start, end );
|
myDist = distancesquared( start, end );
|
||||||
|
|
||||||
// check if both intersection points far
|
// check if both intersection points far
|
||||||
if ( DistanceSquared( start, ip1 ) > myDist/* && DistanceSquared(start, ip2) > myDist*/ )
|
if ( distancesquared( start, ip1 ) > myDist/* && distancesquared(start, ip2) > myDist*/ )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
dpAngles = VectorToAngles( dp );
|
dpAngles = vectortoangles( dp );
|
||||||
|
|
||||||
// check if the point is behind us
|
// check if the point is behind us
|
||||||
if ( getConeDot( ip1, start, dpAngles ) < 0/* || getConeDot(ip2, start, dpAngles) < 0*/ )
|
if ( getConeDot( ip1, start, dpAngles ) < 0/* || getConeDot(ip2, start, dpAngles) < 0*/ )
|
||||||
@ -948,9 +948,9 @@ vector_scale( vec, scale )
|
|||||||
*/
|
*/
|
||||||
SmokeTrace( start, end, rad )
|
SmokeTrace( start, end, rad )
|
||||||
{
|
{
|
||||||
for ( i = level.bots_smokeList.count - 1; i >= 0; i-- )
|
for ( i = level.bots_smokelist.count - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
nade = level.bots_smokeList.data[i];
|
nade = level.bots_smokelist.data[i];
|
||||||
|
|
||||||
if ( !RaySphereIntersect( start, end, nade.origin, rad ) )
|
if ( !RaySphereIntersect( start, end, nade.origin, rad ) )
|
||||||
continue;
|
continue;
|
||||||
@ -966,8 +966,8 @@ SmokeTrace( start, end, rad )
|
|||||||
*/
|
*/
|
||||||
getConeDot( to, from, dir )
|
getConeDot( to, from, dir )
|
||||||
{
|
{
|
||||||
dirToTarget = VectorNormalize( to - from );
|
dirToTarget = vectornormalize( to - from );
|
||||||
forward = AnglesToForward( dir );
|
forward = anglestoforward( dir );
|
||||||
return vectordot( dirToTarget, forward );
|
return vectordot( dirToTarget, forward );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -979,7 +979,7 @@ 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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1052,7 +1052,7 @@ min( a, b )
|
|||||||
/*
|
/*
|
||||||
Clamps between value
|
Clamps between value
|
||||||
*/
|
*/
|
||||||
Clamp( a, minv, maxv )
|
clamp( a, minv, maxv )
|
||||||
{
|
{
|
||||||
return max( min( a, maxv ), minv );
|
return max( min( a, maxv ), minv );
|
||||||
}
|
}
|
||||||
@ -1187,7 +1187,7 @@ keyCodeToString( a )
|
|||||||
*/
|
*/
|
||||||
parseTokensIntoWaypoint( tokens )
|
parseTokensIntoWaypoint( tokens )
|
||||||
{
|
{
|
||||||
waypoint = spawnStruct();
|
waypoint = spawnstruct();
|
||||||
|
|
||||||
orgStr = tokens[0];
|
orgStr = tokens[0];
|
||||||
orgToks = strtok( orgStr, " " );
|
orgToks = strtok( orgStr, " " );
|
||||||
@ -1205,7 +1205,7 @@ parseTokensIntoWaypoint( tokens )
|
|||||||
|
|
||||||
anglesStr = tokens[3];
|
anglesStr = tokens[3];
|
||||||
|
|
||||||
if ( isDefined( anglesStr ) && anglesStr != "" )
|
if ( isdefined( anglesStr ) && anglesStr != "" )
|
||||||
{
|
{
|
||||||
anglesToks = strtok( anglesStr, " " );
|
anglesToks = strtok( anglesStr, " " );
|
||||||
|
|
||||||
@ -1232,7 +1232,7 @@ readWpsFromFile( mapname )
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
argc = fReadLn( f );
|
argc = freadln( f );
|
||||||
|
|
||||||
if ( argc <= 0 )
|
if ( argc <= 0 )
|
||||||
break;
|
break;
|
||||||
@ -1244,7 +1244,7 @@ readWpsFromFile( mapname )
|
|||||||
|
|
||||||
for ( i = 1; i <= waypointCount; i++ )
|
for ( i = 1; i <= waypointCount; i++ )
|
||||||
{
|
{
|
||||||
argc = fReadLn( f );
|
argc = freadln( f );
|
||||||
line = "";
|
line = "";
|
||||||
|
|
||||||
for ( h = 0; h < argc; h++ )
|
for ( h = 0; h < argc; h++ )
|
||||||
@ -1255,7 +1255,7 @@ readWpsFromFile( mapname )
|
|||||||
line += ",";
|
line += ",";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( line ) || line == "" )
|
if ( !isdefined( line ) || line == "" )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
tokens = strtok( line, "," );
|
tokens = strtok( line, "," );
|
||||||
@ -1268,7 +1268,7 @@ readWpsFromFile( mapname )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
closeFile( f );
|
closefile( f );
|
||||||
return waypoints;
|
return waypoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1277,9 +1277,9 @@ readWpsFromFile( mapname )
|
|||||||
*/
|
*/
|
||||||
float_old( num )
|
float_old( num )
|
||||||
{
|
{
|
||||||
setCvar( "temp_dvar_bot_util", num );
|
setcvar( "temp_dvar_bot_util", num );
|
||||||
|
|
||||||
return GetCvarFloat( "temp_dvar_bot_util" );
|
return getcvarfloat( "temp_dvar_bot_util" );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1296,19 +1296,19 @@ loadmbotWps( mapname, gametype )
|
|||||||
if ( f < 0 )
|
if ( f < 0 )
|
||||||
return wps;
|
return wps;
|
||||||
|
|
||||||
argc = fReadLn( f );
|
argc = freadln( f );
|
||||||
|
|
||||||
if ( argc <= 0 )
|
if ( argc <= 0 )
|
||||||
{
|
{
|
||||||
closeFile( f );
|
closefile( f );
|
||||||
return wps;
|
return wps;
|
||||||
}
|
}
|
||||||
|
|
||||||
arg = fgetarg( f, 0 );
|
arg = fgetarg( f, 0 );
|
||||||
|
|
||||||
if ( !isDefined( arg ) || arg != "mbotwp" )
|
if ( !isdefined( arg ) || arg != "mbotwp" )
|
||||||
{
|
{
|
||||||
closeFile( f );
|
closefile( f );
|
||||||
return wps;
|
return wps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1319,10 +1319,10 @@ loadmbotWps( mapname, gametype )
|
|||||||
s = fgetarg( f, 0 );
|
s = fgetarg( f, 0 );
|
||||||
t = strtok( s, " ," );
|
t = strtok( s, " ," );
|
||||||
|
|
||||||
if ( !isDefined( t ) || t.size < 6 )
|
if ( !isdefined( t ) || t.size < 6 )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
wp = spawnStruct();
|
wp = spawnstruct();
|
||||||
wp.origin = ( float_old( t[0] ), float_old( t[1] ), float_old( t[2] ) );
|
wp.origin = ( float_old( t[0] ), float_old( t[1] ), float_old( t[2] ) );
|
||||||
|
|
||||||
stance = "stand";
|
stance = "stand";
|
||||||
@ -1363,7 +1363,7 @@ loadmbotWps( mapname, gametype )
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
closeFile( f );
|
closefile( f );
|
||||||
return wps;
|
return wps;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1372,15 +1372,15 @@ loadmbotWps( mapname, gametype )
|
|||||||
*/
|
*/
|
||||||
load_waypoints()
|
load_waypoints()
|
||||||
{
|
{
|
||||||
mapname = getCvar( "mapname" );
|
mapname = getcvar( "mapname" );
|
||||||
|
|
||||||
level.waypointCount = 0;
|
level.waypointcount = 0;
|
||||||
level.waypointUsage = [];
|
level.waypointusage = [];
|
||||||
level.waypointUsage["allies"] = [];
|
level.waypointusage["allies"] = [];
|
||||||
level.waypointUsage["axis"] = [];
|
level.waypointusage["axis"] = [];
|
||||||
|
|
||||||
|
|
||||||
if ( !isDefined( level.waypoints ) )
|
if ( !isdefined( level.waypoints ) )
|
||||||
level.waypoints = [];
|
level.waypoints = [];
|
||||||
|
|
||||||
wps = readWpsFromFile( mapname );
|
wps = readWpsFromFile( mapname );
|
||||||
@ -1418,17 +1418,17 @@ load_waypoints()
|
|||||||
BotBuiltinPrintConsole( "No waypoints loaded!" );
|
BotBuiltinPrintConsole( "No waypoints loaded!" );
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypointCount = level.waypoints.size;
|
level.waypointcount = level.waypoints.size;
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.waypoints[i].children ) || !isDefined( level.waypoints[i].children.size ) )
|
if ( !isdefined( level.waypoints[i].children ) || !isdefined( level.waypoints[i].children.size ) )
|
||||||
level.waypoints[i].children = [];
|
level.waypoints[i].children = [];
|
||||||
|
|
||||||
if ( !isDefined( level.waypoints[i].origin ) )
|
if ( !isdefined( level.waypoints[i].origin ) )
|
||||||
level.waypoints[i].origin = ( 0, 0, 0 );
|
level.waypoints[i].origin = ( 0, 0, 0 );
|
||||||
|
|
||||||
if ( !isDefined( level.waypoints[i].type ) )
|
if ( !isdefined( level.waypoints[i].type ) )
|
||||||
level.waypoints[i].type = "crouch";
|
level.waypoints[i].type = "crouch";
|
||||||
|
|
||||||
level.waypoints[i].childCount = undefined;
|
level.waypoints[i].childCount = undefined;
|
||||||
@ -1446,7 +1446,7 @@ nearAnyOfWaypoints( dist, waypoints )
|
|||||||
{
|
{
|
||||||
waypoint = level.waypoints[waypoints[i]];
|
waypoint = level.waypoints[waypoints[i]];
|
||||||
|
|
||||||
if ( DistanceSquared( waypoint.origin, self.origin ) > dist )
|
if ( distancesquared( waypoint.origin, self.origin ) > dist )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1468,7 +1468,7 @@ waypointsNear( waypoints, dist )
|
|||||||
{
|
{
|
||||||
wp = level.waypoints[waypoints[i]];
|
wp = level.waypoints[waypoints[i]];
|
||||||
|
|
||||||
if ( DistanceSquared( wp.origin, self.origin ) > dist )
|
if ( distancesquared( wp.origin, self.origin ) > dist )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
answer[answer.size] = waypoints[i];
|
answer[answer.size] = waypoints[i];
|
||||||
@ -1488,9 +1488,9 @@ getNearestWaypointOfWaypoints( waypoints )
|
|||||||
for ( i = 0; i < waypoints.size; i++ )
|
for ( i = 0; i < waypoints.size; i++ )
|
||||||
{
|
{
|
||||||
waypoint = level.waypoints[waypoints[i]];
|
waypoint = level.waypoints[waypoints[i]];
|
||||||
thisDist = DistanceSquared( self.origin, waypoint.origin );
|
thisDist = distancesquared( self.origin, waypoint.origin );
|
||||||
|
|
||||||
if ( isDefined( answer ) && thisDist > closestDist )
|
if ( isdefined( answer ) && thisDist > closestDist )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
answer = waypoints[i];
|
answer = waypoints[i];
|
||||||
@ -1507,7 +1507,7 @@ getWaypointsOfType( type )
|
|||||||
{
|
{
|
||||||
answer = [];
|
answer = [];
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
wp = level.waypoints[i];
|
wp = level.waypoints[i];
|
||||||
|
|
||||||
@ -1533,7 +1533,7 @@ getWaypointsOfType( type )
|
|||||||
*/
|
*/
|
||||||
getWaypointForIndex( i )
|
getWaypointForIndex( i )
|
||||||
{
|
{
|
||||||
if ( !isDefined( i ) )
|
if ( !isdefined( i ) )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
return level.waypoints[i];
|
return level.waypoints[i];
|
||||||
@ -1544,7 +1544,7 @@ getWaypointForIndex( i )
|
|||||||
*/
|
*/
|
||||||
getGoodMapAmount()
|
getGoodMapAmount()
|
||||||
{
|
{
|
||||||
switch ( getCvar( "mapname" ) )
|
switch ( getcvar( "mapname" ) )
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1600,20 +1600,20 @@ 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;
|
||||||
axis = 0;
|
axis = 0;
|
||||||
allies = 0;
|
allies = 0;
|
||||||
team = getCvar( "bots_team" );
|
team = getcvar( "bots_team" );
|
||||||
|
|
||||||
// count teams
|
// count teams
|
||||||
for ( i = 0; i < bots.size; i++ )
|
for ( i = 0; i < bots.size; i++ )
|
||||||
{
|
{
|
||||||
bot = bots[i];
|
bot = bots[i];
|
||||||
|
|
||||||
if ( !isDefined( bot ) || !isDefined( bot.team ) )
|
if ( !isdefined( bot ) || !isdefined( bot.team ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( bot.team == "allies" )
|
if ( bot.team == "allies" )
|
||||||
@ -1647,22 +1647,22 @@ getBotToKick()
|
|||||||
{
|
{
|
||||||
bot = bots[i];
|
bot = bots[i];
|
||||||
|
|
||||||
if ( !isDefined( bot ) || !isDefined( bot.team ) )
|
if ( !isdefined( bot ) || !isdefined( bot.team ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if ( bot.team != team )
|
if ( bot.team != team )
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( tokick ) )
|
if ( isdefined( tokick ) )
|
||||||
return tokick;
|
return tokick;
|
||||||
|
|
||||||
// just kick lowest skill
|
// just kick lowest skill
|
||||||
@ -1670,13 +1670,13 @@ getBotToKick()
|
|||||||
{
|
{
|
||||||
bot = bots[i];
|
bot = bots[i];
|
||||||
|
|
||||||
if ( !isDefined( bot ) || !isDefined( bot.team ) )
|
if ( !isdefined( bot ) || !isdefined( bot.team ) )
|
||||||
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;
|
||||||
@ -1781,7 +1781,7 @@ _WaypointsToKDTree( waypoints, dem )
|
|||||||
*/
|
*/
|
||||||
List()
|
List()
|
||||||
{
|
{
|
||||||
list = spawnStruct();
|
list = spawnstruct();
|
||||||
list.count = 0;
|
list.count = 0;
|
||||||
list.data = [];
|
list.data = [];
|
||||||
|
|
||||||
@ -1839,7 +1839,7 @@ ListRemove( thing )
|
|||||||
*/
|
*/
|
||||||
KDTree()
|
KDTree()
|
||||||
{
|
{
|
||||||
kdTree = spawnStruct();
|
kdTree = spawnstruct();
|
||||||
kdTree.root = undefined;
|
kdTree.root = undefined;
|
||||||
kdTree.count = 0;
|
kdTree.count = 0;
|
||||||
|
|
||||||
@ -1859,9 +1859,9 @@ KDTreeInsert( data ) //as long as what you insert has a .origin attru, it will w
|
|||||||
*/
|
*/
|
||||||
_KDTreeInsert( node, data, dem, x0, y0, z0, x1, y1, z1 )
|
_KDTreeInsert( node, data, dem, x0, y0, z0, x1, y1, z1 )
|
||||||
{
|
{
|
||||||
if ( !isDefined( node ) )
|
if ( !isdefined( node ) )
|
||||||
{
|
{
|
||||||
r = spawnStruct();
|
r = spawnstruct();
|
||||||
r.data = data;
|
r.data = data;
|
||||||
r.left = undefined;
|
r.left = undefined;
|
||||||
r.right = undefined;
|
r.right = undefined;
|
||||||
@ -1912,10 +1912,10 @@ _KDTreeInsert( node, data, dem, x0, y0, z0, x1, y1, z1 )
|
|||||||
*/
|
*/
|
||||||
KDTreeNearest( origin )
|
KDTreeNearest( origin )
|
||||||
{
|
{
|
||||||
if ( !isDefined( self.root ) )
|
if ( !isdefined( self.root ) )
|
||||||
return undefined;
|
return undefined;
|
||||||
|
|
||||||
return self _KDTreeNearest( self.root, origin, self.root.data, DistanceSquared( self.root.data.origin, origin ), 0 );
|
return self _KDTreeNearest( self.root, origin, self.root.data, distancesquared( self.root.data.origin, origin ), 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1923,12 +1923,12 @@ KDTreeNearest( origin )
|
|||||||
*/
|
*/
|
||||||
_KDTreeNearest( node, point, closest, closestdist, dem )
|
_KDTreeNearest( node, point, closest, closestdist, dem )
|
||||||
{
|
{
|
||||||
if ( !isDefined( node ) )
|
if ( !isdefined( node ) )
|
||||||
{
|
{
|
||||||
return closest;
|
return closest;
|
||||||
}
|
}
|
||||||
|
|
||||||
thisDis = DistanceSquared( node.data.origin, point );
|
thisDis = distancesquared( node.data.origin, point );
|
||||||
|
|
||||||
if ( thisDis < closestdist )
|
if ( thisDis < closestdist )
|
||||||
{
|
{
|
||||||
@ -1949,7 +1949,7 @@ _KDTreeNearest( node, point, closest, closestdist, dem )
|
|||||||
|
|
||||||
closest = self _KDTreeNearest( near, point, closest, closestdist, ( dem + 1 ) % 3 );
|
closest = self _KDTreeNearest( near, point, closest, closestdist, ( dem + 1 ) % 3 );
|
||||||
|
|
||||||
closest = self _KDTreeNearest( far, point, closest, DistanceSquared( closest.origin, point ), ( dem + 1 ) % 3 );
|
closest = self _KDTreeNearest( far, point, closest, distancesquared( closest.origin, point ), ( dem + 1 ) % 3 );
|
||||||
}
|
}
|
||||||
|
|
||||||
return closest;
|
return closest;
|
||||||
@ -2036,7 +2036,7 @@ HeapTraceFraction( item, item2 )
|
|||||||
*/
|
*/
|
||||||
NewHeap( compare )
|
NewHeap( compare )
|
||||||
{
|
{
|
||||||
heap_node = spawnStruct();
|
heap_node = spawnstruct();
|
||||||
heap_node.data = [];
|
heap_node.data = [];
|
||||||
heap_node.compare = compare;
|
heap_node.compare = compare;
|
||||||
|
|
||||||
@ -2135,16 +2135,16 @@ ReverseHeapAStar( item, item2 )
|
|||||||
*/
|
*/
|
||||||
RemoveWaypointUsage( wp, team )
|
RemoveWaypointUsage( wp, team )
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.waypointUsage ) )
|
if ( !isdefined( level.waypointusage ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( !isDefined( level.waypointUsage[team][wp + ""] ) )
|
if ( !isdefined( level.waypointusage[team][wp + ""] ) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
level.waypointUsage[team][wp + ""]--;
|
level.waypointusage[team][wp + ""]--;
|
||||||
|
|
||||||
if ( level.waypointUsage[team][wp + ""] <= 0 )
|
if ( level.waypointusage[team][wp + ""] <= 0 )
|
||||||
level.waypointUsage[team][wp + ""] = undefined;
|
level.waypointusage[team][wp + ""] = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2155,12 +2155,12 @@ GetNearestWaypointWithSight( pos )
|
|||||||
candidate = undefined;
|
candidate = undefined;
|
||||||
dist = 2147483647;
|
dist = 2147483647;
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
if ( !bulletTracePassed( pos + ( 0, 0, 15 ), level.waypoints[i].origin + ( 0, 0, 15 ), false, undefined ) )
|
if ( !bullettracepassed( pos + ( 0, 0, 15 ), level.waypoints[i].origin + ( 0, 0, 15 ), false, undefined ) )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
curdis = DistanceSquared( level.waypoints[i].origin, pos );
|
curdis = distancesquared( level.waypoints[i].origin, pos );
|
||||||
|
|
||||||
if ( curdis > dist )
|
if ( curdis > dist )
|
||||||
continue;
|
continue;
|
||||||
@ -2175,14 +2175,14 @@ GetNearestWaypointWithSight( pos )
|
|||||||
/*
|
/*
|
||||||
Will linearly search for the nearest waypoint
|
Will linearly search for the nearest waypoint
|
||||||
*/
|
*/
|
||||||
GetNearestWaypoint( pos )
|
getNearestWaypoint( pos )
|
||||||
{
|
{
|
||||||
candidate = undefined;
|
candidate = undefined;
|
||||||
dist = 2147483647;
|
dist = 2147483647;
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
curdis = DistanceSquared( level.waypoints[i].origin, pos );
|
curdis = distancesquared( level.waypoints[i].origin, pos );
|
||||||
|
|
||||||
if ( curdis > dist )
|
if ( curdis > dist )
|
||||||
continue;
|
continue;
|
||||||
@ -2208,35 +2208,35 @@ AStarSearch( start, goal, team, greedy_path )
|
|||||||
|
|
||||||
startWp = getNearestWaypoint( start );
|
startWp = getNearestWaypoint( start );
|
||||||
|
|
||||||
if ( !isDefined( startWp ) )
|
if ( !isdefined( startWp ) )
|
||||||
return [];
|
return [];
|
||||||
|
|
||||||
_startwp = undefined;
|
_startwp = undefined;
|
||||||
|
|
||||||
if ( !bulletTracePassed( start + ( 0, 0, 15 ), level.waypoints[startWp].origin + ( 0, 0, 15 ), false, undefined ) )
|
if ( !bullettracepassed( start + ( 0, 0, 15 ), level.waypoints[startWp].origin + ( 0, 0, 15 ), false, undefined ) )
|
||||||
_startwp = GetNearestWaypointWithSight( start );
|
_startwp = GetNearestWaypointWithSight( start );
|
||||||
|
|
||||||
if ( isDefined( _startwp ) )
|
if ( isdefined( _startwp ) )
|
||||||
startWp = _startwp;
|
startWp = _startwp;
|
||||||
|
|
||||||
|
|
||||||
goalWp = getNearestWaypoint( goal );
|
goalWp = getNearestWaypoint( goal );
|
||||||
|
|
||||||
if ( !isDefined( goalWp ) )
|
if ( !isdefined( goalWp ) )
|
||||||
return [];
|
return [];
|
||||||
|
|
||||||
_goalWp = undefined;
|
_goalWp = undefined;
|
||||||
|
|
||||||
if ( !bulletTracePassed( goal + ( 0, 0, 15 ), level.waypoints[goalWp].origin + ( 0, 0, 15 ), false, undefined ) )
|
if ( !bullettracepassed( goal + ( 0, 0, 15 ), level.waypoints[goalWp].origin + ( 0, 0, 15 ), false, undefined ) )
|
||||||
_goalwp = GetNearestWaypointWithSight( goal );
|
_goalWp = GetNearestWaypointWithSight( goal );
|
||||||
|
|
||||||
if ( isDefined( _goalwp ) )
|
if ( isdefined( _goalWp ) )
|
||||||
goalWp = _goalwp;
|
goalWp = _goalWp;
|
||||||
|
|
||||||
|
|
||||||
node = spawnStruct();
|
node = spawnstruct();
|
||||||
node.g = 0; //path dist so far
|
node.g = 0; //path dist so far
|
||||||
node.h = DistanceSquared( level.waypoints[startWp].origin, level.waypoints[goalWp].origin ); //herustic, distance to goal for path finding
|
node.h = distancesquared( level.waypoints[startWp].origin, level.waypoints[goalWp].origin ); //herustic, distance to goal for path finding
|
||||||
node.f = node.h + node.g; // combine path dist and heru, use reverse heap to sort the priority queue by this attru
|
node.f = node.h + node.g; // combine path dist and heru, use reverse heap to sort the priority queue by this attru
|
||||||
node.index = startWp;
|
node.index = startWp;
|
||||||
node.parent = undefined; //we are start, so we have no parent
|
node.parent = undefined; //we are start, so we have no parent
|
||||||
@ -2259,14 +2259,14 @@ AStarSearch( start, goal, team, greedy_path )
|
|||||||
{
|
{
|
||||||
path = [];
|
path = [];
|
||||||
|
|
||||||
while ( isDefined( bestNode ) )
|
while ( isdefined( bestNode ) )
|
||||||
{
|
{
|
||||||
if ( isdefined( team ) && isDefined( level.waypointUsage ) )
|
if ( isdefined( team ) && isdefined( level.waypointusage ) )
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.waypointUsage[team][bestNode.index + ""] ) )
|
if ( !isdefined( level.waypointusage[team][bestNode.index + ""] ) )
|
||||||
level.waypointUsage[team][bestNode.index + ""] = 0;
|
level.waypointusage[team][bestNode.index + ""] = 0;
|
||||||
|
|
||||||
level.waypointUsage[team][bestNode.index + ""]++;
|
level.waypointusage[team][bestNode.index + ""]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//construct path
|
//construct path
|
||||||
@ -2286,12 +2286,12 @@ AStarSearch( start, goal, team, greedy_path )
|
|||||||
|
|
||||||
penalty = 1;
|
penalty = 1;
|
||||||
|
|
||||||
if ( !greedy_path && isdefined( team ) && isDefined( level.waypointUsage ) )
|
if ( !greedy_path && isdefined( team ) && isdefined( level.waypointusage ) )
|
||||||
{
|
{
|
||||||
temppen = 1;
|
temppen = 1;
|
||||||
|
|
||||||
if ( isDefined( level.waypointUsage[team][child + ""] ) )
|
if ( isdefined( level.waypointusage[team][child + ""] ) )
|
||||||
temppen = level.waypointUsage[team][child + ""]; //consider how many bots are taking this path
|
temppen = level.waypointusage[team][child + ""]; //consider how many bots are taking this path
|
||||||
|
|
||||||
if ( temppen > 1 )
|
if ( temppen > 1 )
|
||||||
penalty = temppen;
|
penalty = temppen;
|
||||||
@ -2302,15 +2302,15 @@ AStarSearch( start, goal, team, greedy_path )
|
|||||||
penalty += 4;
|
penalty += 4;
|
||||||
|
|
||||||
//calc the total path we have took
|
//calc the total path we have took
|
||||||
newg = bestNode.g + DistanceSquared( wp.origin, childWp.origin ) * penalty; //bots on same team's path are more expensive
|
newg = bestNode.g + distancesquared( wp.origin, childWp.origin ) * penalty; //bots on same team's path are more expensive
|
||||||
|
|
||||||
//check if this child is in open or close with a g value less than newg
|
//check if this child is in open or close with a g value less than newg
|
||||||
inopen = isDefined( openset[child + ""] );
|
inopen = isdefined( openset[child + ""] );
|
||||||
|
|
||||||
if ( inopen && openset[child + ""].g <= newg )
|
if ( inopen && openset[child + ""].g <= newg )
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
inclosed = isDefined( closed[child + ""] );
|
inclosed = isdefined( closed[child + ""] );
|
||||||
|
|
||||||
if ( inclosed && closed[child + ""].g <= newg )
|
if ( inclosed && closed[child + ""].g <= newg )
|
||||||
continue;
|
continue;
|
||||||
@ -2322,11 +2322,11 @@ AStarSearch( start, goal, team, greedy_path )
|
|||||||
else if ( inclosed )
|
else if ( inclosed )
|
||||||
node = closed[child + ""];
|
node = closed[child + ""];
|
||||||
else
|
else
|
||||||
node = spawnStruct();
|
node = spawnstruct();
|
||||||
|
|
||||||
node.parent = bestNode;
|
node.parent = bestNode;
|
||||||
node.g = newg;
|
node.g = newg;
|
||||||
node.h = DistanceSquared( childWp.origin, level.waypoints[goalWp].origin );
|
node.h = distancesquared( childWp.origin, level.waypoints[goalWp].origin );
|
||||||
node.f = node.g + node.h;
|
node.f = node.g + node.h;
|
||||||
node.index = child;
|
node.index = child;
|
||||||
|
|
||||||
@ -2387,7 +2387,7 @@ array_std_deviation( array, mean )
|
|||||||
total = total + tmp[i];
|
total = total + tmp[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return Sqrt( total / array.size );
|
return sqrt( total / array.size );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2403,21 +2403,21 @@ random_normal_distribution( mean, std_deviation, lower_bound, upper_bound )
|
|||||||
|
|
||||||
while ( w >= 1 )
|
while ( w >= 1 )
|
||||||
{
|
{
|
||||||
x1 = 2 * RandomFloatRange( 0, 1 ) - 1;
|
x1 = 2 * randomfloatrange( 0, 1 ) - 1;
|
||||||
x2 = 2 * RandomFloatRange( 0, 1 ) - 1;
|
x2 = 2 * randomfloatrange( 0, 1 ) - 1;
|
||||||
w = x1 * x1 + x2 * x2;
|
w = x1 * x1 + x2 * x2;
|
||||||
}
|
}
|
||||||
|
|
||||||
w = Sqrt( ( -2.0 * Log( w ) ) / w );
|
w = sqrt( ( -2.0 * Log( w ) ) / w );
|
||||||
y1 = x1 * w;
|
y1 = x1 * w;
|
||||||
number = mean + y1 * std_deviation;
|
number = mean + y1 * std_deviation;
|
||||||
|
|
||||||
if ( IsDefined( lower_bound ) && number < lower_bound )
|
if ( isdefined( lower_bound ) && number < lower_bound )
|
||||||
{
|
{
|
||||||
number = lower_bound;
|
number = lower_bound;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( IsDefined( upper_bound ) && number > upper_bound )
|
if ( isdefined( upper_bound ) && number > upper_bound )
|
||||||
{
|
{
|
||||||
number = upper_bound;
|
number = upper_bound;
|
||||||
}
|
}
|
||||||
@ -2430,14 +2430,6 @@ random_normal_distribution( mean, std_deviation, lower_bound, upper_bound )
|
|||||||
*/
|
*/
|
||||||
Log( x )
|
Log( x )
|
||||||
{
|
{
|
||||||
/* if (!isDefined(level.log_cache))
|
|
||||||
level.log_cache = [];
|
|
||||||
|
|
||||||
key = x + "";
|
|
||||||
|
|
||||||
if (isDefined(level.log_cache[key]))
|
|
||||||
return level.log_cache[key];*/
|
|
||||||
|
|
||||||
//thanks Bob__ at stackoverflow
|
//thanks Bob__ at stackoverflow
|
||||||
old_sum = 0.0;
|
old_sum = 0.0;
|
||||||
xmlxpl = ( x - 1 ) / ( x + 1 );
|
xmlxpl = ( x - 1 ) / ( x + 1 );
|
||||||
@ -2455,7 +2447,5 @@ Log( x )
|
|||||||
}
|
}
|
||||||
|
|
||||||
answer = 2.0 * sum;
|
answer = 2.0 * sum;
|
||||||
|
|
||||||
//level.log_cache[key] = answer;
|
|
||||||
return answer;
|
return answer;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +80,7 @@ do_botaction( action )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// self BotAction( action );
|
// self botaction( action );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_botstop()
|
do_botstop()
|
||||||
@ -95,7 +95,7 @@ do_botstop()
|
|||||||
self setwalkdir( "none" );
|
self setwalkdir( "none" );
|
||||||
self switchtoweaponid( 1 ); // libcod needs weapon name to id
|
self switchtoweaponid( 1 ); // libcod needs weapon name to id
|
||||||
|
|
||||||
// self BotStop();
|
// self botstop();
|
||||||
}
|
}
|
||||||
|
|
||||||
do_botmovement( forward, right )
|
do_botmovement( forward, right )
|
||||||
@ -127,11 +127,11 @@ do_botmovement( forward, right )
|
|||||||
|
|
||||||
self setwalkdir( "none" );
|
self setwalkdir( "none" );
|
||||||
|
|
||||||
// self botMovement( forward, right );
|
// self botmovement( forward, right );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_isbot()
|
do_isbot()
|
||||||
{
|
{
|
||||||
return false; // no equal in libcod
|
return false; // no equal in libcod
|
||||||
// self isBot();
|
// self isbot();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user