mirror of
https://github.com/ineedbots/t4_bot_warfare.git
synced 2026-07-04 06:40:03 +00:00
curly braces, spacing, formatting, casing
This commit is contained in:
+358
-166
@@ -8,154 +8,236 @@
|
|||||||
*/
|
*/
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
level.bw_VERSION = "2.1.0";
|
level.bw_version = "2.1.0";
|
||||||
|
|
||||||
if ( getDvar( "bots_main" ) == "" )
|
if ( getdvar( "bots_main" ) == "" )
|
||||||
setDvar( "bots_main", true );
|
{
|
||||||
|
setdvar( "bots_main", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( !getDvarInt( "bots_main" ) )
|
if ( !getdvarint( "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();
|
||||||
cac_init_patch();
|
cac_init_patch();
|
||||||
thread hook_callbacks();
|
thread hook_callbacks();
|
||||||
|
|
||||||
if ( getDvar( "bots_main_GUIDs" ) == "" )
|
if ( getdvar( "bots_main_GUIDs" ) == "" )
|
||||||
setDvar( "bots_main_GUIDs", "" ); //guids of players who will be given host powers, comma seperated
|
{
|
||||||
|
setdvar( "bots_main_GUIDs", "" ); // guids of players who will be given host powers, comma seperated
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_firstIsHost" ) == "" )
|
if ( getdvar( "bots_main_firstIsHost" ) == "" )
|
||||||
setDvar( "bots_main_firstIsHost", true ); //first player to connect is a host
|
{
|
||||||
|
setdvar( "bots_main_firstIsHost", true ); // first player to connect is a host
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_waitForHostTime" ) == "" )
|
if ( getdvar( "bots_main_waitForHostTime" ) == "" )
|
||||||
setDvar( "bots_main_waitForHostTime", 10.0 ); //how long to wait to wait for the host player
|
{
|
||||||
|
setdvar( "bots_main_waitForHostTime", 10.0 ); // how long to wait to wait for the host player
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_kickBotsAtEnd" ) == "" )
|
if ( getdvar( "bots_main_kickBotsAtEnd" ) == "" )
|
||||||
setDvar( "bots_main_kickBotsAtEnd", false ); //kicks the bots at game end
|
{
|
||||||
|
setdvar( "bots_main_kickBotsAtEnd", false ); // kicks the bots at game end
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_manage_add" ) == "" )
|
if ( getdvar( "bots_manage_add" ) == "" )
|
||||||
setDvar( "bots_manage_add", 0 ); //amount of bots to add to the game
|
{
|
||||||
|
setdvar( "bots_manage_add", 0 ); // amount of bots to add to the game
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_manage_fill" ) == "" )
|
if ( getdvar( "bots_manage_fill" ) == "" )
|
||||||
setDvar( "bots_manage_fill", 0 ); //amount of bots to maintain
|
{
|
||||||
|
setdvar( "bots_manage_fill", 0 ); // amount of bots to maintain
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_manage_fill_spec" ) == "" )
|
if ( getdvar( "bots_manage_fill_spec" ) == "" )
|
||||||
setDvar( "bots_manage_fill_spec", true ); //to count for fill if player is on spec team
|
{
|
||||||
|
setdvar( "bots_manage_fill_spec", true ); // to count for fill if player is on spec team
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_manage_fill_mode" ) == "" )
|
if ( getdvar( "bots_manage_fill_mode" ) == "" )
|
||||||
setDvar( "bots_manage_fill_mode", 0 ); //fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
|
{
|
||||||
|
setdvar( "bots_manage_fill_mode", 0 ); // fill mode, 0 adds everyone, 1 just bots, 2 maintains at maps, 3 is 2 with 1
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_manage_fill_kick" ) == "" )
|
if ( getdvar( "bots_manage_fill_kick" ) == "" )
|
||||||
setDvar( "bots_manage_fill_kick", false ); //kick bots if too many
|
{
|
||||||
|
setdvar( "bots_manage_fill_kick", false ); // kick bots if too many
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_team" ) == "" )
|
if ( getdvar( "bots_team" ) == "" )
|
||||||
setDvar( "bots_team", "autoassign" ); //which team for bots to join
|
{
|
||||||
|
setdvar( "bots_team", "autoassign" ); // which team for bots to join
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_team_amount" ) == "" )
|
if ( getdvar( "bots_team_amount" ) == "" )
|
||||||
setDvar( "bots_team_amount", 0 ); //amount of bots on axis team
|
{
|
||||||
|
setdvar( "bots_team_amount", 0 ); // amount of bots on axis team
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_team_force" ) == "" )
|
if ( getdvar( "bots_team_force" ) == "" )
|
||||||
setDvar( "bots_team_force", false ); //force bots on team
|
{
|
||||||
|
setdvar( "bots_team_force", false ); // force bots on team
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_team_mode" ) == "" )
|
if ( getdvar( "bots_team_mode" ) == "" )
|
||||||
setDvar( "bots_team_mode", 0 ); //counts just bots when 1
|
{
|
||||||
|
setdvar( "bots_team_mode", 0 ); // counts just bots when 1
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill" ) == "" )
|
if ( getdvar( "bots_skill" ) == "" )
|
||||||
setDvar( "bots_skill", 0 ); //0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
|
{
|
||||||
|
setdvar( "bots_skill", 0 ); // 0 is random, 1 is easy 7 is hard, 8 is custom, 9 is completely random
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill_axis_hard" ) == "" )
|
if ( getdvar( "bots_skill_axis_hard" ) == "" )
|
||||||
setDvar( "bots_skill_axis_hard", 0 ); //amount of hard bots on axis team
|
{
|
||||||
|
setdvar( "bots_skill_axis_hard", 0 ); // amount of hard bots on axis team
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill_axis_med" ) == "" )
|
if ( getdvar( "bots_skill_axis_med" ) == "" )
|
||||||
setDvar( "bots_skill_axis_med", 0 );
|
{
|
||||||
|
setdvar( "bots_skill_axis_med", 0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill_allies_hard" ) == "" )
|
if ( getdvar( "bots_skill_allies_hard" ) == "" )
|
||||||
setDvar( "bots_skill_allies_hard", 0 );
|
{
|
||||||
|
setdvar( "bots_skill_allies_hard", 0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill_allies_med" ) == "" )
|
if ( getdvar( "bots_skill_allies_med" ) == "" )
|
||||||
setDvar( "bots_skill_allies_med", 0 );
|
{
|
||||||
|
setdvar( "bots_skill_allies_med", 0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill_min" ) == "" )
|
if ( getdvar( "bots_skill_min" ) == "" )
|
||||||
setDvar( "bots_skill_min", 1 );
|
{
|
||||||
|
setdvar( "bots_skill_min", 1 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_skill_max" ) == "" )
|
if ( getdvar( "bots_skill_max" ) == "" )
|
||||||
setDvar( "bots_skill_max", 7 );
|
{
|
||||||
|
setdvar( "bots_skill_max", 7 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_loadout_reasonable" ) == "" ) //filter out the bad 'guns' and perks
|
if ( getdvar( "bots_loadout_reasonable" ) == "" ) // filter out the bad 'guns' and perks
|
||||||
setDvar( "bots_loadout_reasonable", false );
|
{
|
||||||
|
setdvar( "bots_loadout_reasonable", false );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_loadout_allow_op" ) == "" ) //allows jug, marty and laststand
|
if ( getdvar( "bots_loadout_allow_op" ) == "" ) // allows jug, marty and laststand
|
||||||
setDvar( "bots_loadout_allow_op", true );
|
{
|
||||||
|
setdvar( "bots_loadout_allow_op", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
|
if ( getdvar( "bots_loadout_rank" ) == "" ) // what rank the bots should be around, -1 is around the players, 0 is all random
|
||||||
setDvar( "bots_loadout_rank", -1 );
|
{
|
||||||
|
setdvar( "bots_loadout_rank", -1 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_loadout_prestige" ) == "" ) // what pretige the bots will be, -1 is the players, -2 is random
|
if ( getdvar( "bots_loadout_prestige" ) == "" ) // what pretige the bots will be, -1 is the players, -2 is random
|
||||||
setDvar( "bots_loadout_prestige", -1 );
|
{
|
||||||
|
setdvar( "bots_loadout_prestige", -1 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_move" ) == "" ) //bots move
|
if ( getdvar( "bots_play_move" ) == "" ) // bots move
|
||||||
setDvar( "bots_play_move", true );
|
{
|
||||||
|
setdvar( "bots_play_move", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_knife" ) == "" ) //bots knife
|
if ( getdvar( "bots_play_knife" ) == "" ) // bots knife
|
||||||
setDvar( "bots_play_knife", true );
|
{
|
||||||
|
setdvar( "bots_play_knife", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_fire" ) == "" ) //bots fire
|
if ( getdvar( "bots_play_fire" ) == "" ) // bots fire
|
||||||
setDvar( "bots_play_fire", true );
|
{
|
||||||
|
setdvar( "bots_play_fire", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_nade" ) == "" ) //bots grenade
|
if ( getdvar( "bots_play_nade" ) == "" ) // bots grenade
|
||||||
setDvar( "bots_play_nade", true );
|
{
|
||||||
|
setdvar( "bots_play_nade", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_obj" ) == "" ) //bots play the obj
|
if ( getdvar( "bots_play_obj" ) == "" ) // bots play the obj
|
||||||
setDvar( "bots_play_obj", true );
|
{
|
||||||
|
setdvar( "bots_play_obj", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_camp" ) == "" ) //bots camp and follow
|
if ( getdvar( "bots_play_camp" ) == "" ) // bots camp and follow
|
||||||
setDvar( "bots_play_camp", true );
|
{
|
||||||
|
setdvar( "bots_play_camp", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_jumpdrop" ) == "" ) //bots jump and dropshot
|
if ( getdvar( "bots_play_jumpdrop" ) == "" ) // bots jump and dropshot
|
||||||
setDvar( "bots_play_jumpdrop", true );
|
{
|
||||||
|
setdvar( "bots_play_jumpdrop", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_target_other" ) == "" ) //bot target non play ents (vehicles)
|
if ( getdvar( "bots_play_target_other" ) == "" ) // bot target non play ents (vehicles)
|
||||||
setDvar( "bots_play_target_other", true );
|
{
|
||||||
|
setdvar( "bots_play_target_other", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_killstreak" ) == "" ) //bot use killstreaks
|
if ( getdvar( "bots_play_killstreak" ) == "" ) // bot use killstreaks
|
||||||
setDvar( "bots_play_killstreak", true );
|
{
|
||||||
|
setdvar( "bots_play_killstreak", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_ads" ) == "" ) //bot ads
|
if ( getdvar( "bots_play_ads" ) == "" ) // bot ads
|
||||||
setDvar( "bots_play_ads", true );
|
{
|
||||||
|
setdvar( "bots_play_ads", true );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_play_aim" ) == "" )
|
if ( getdvar( "bots_play_aim" ) == "" )
|
||||||
setDvar( "bots_play_aim", true );
|
{
|
||||||
|
setdvar( "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.tbl_PerkData[0]["reference_full"] = true;
|
level.tbl_perkdata[ 0 ][ "reference_full" ] = true;
|
||||||
|
|
||||||
for ( h = 1; h < 6; h++ )
|
for ( h = 1; h < 6; h++ )
|
||||||
|
{
|
||||||
for ( i = 0; i < 3; i++ )
|
for ( i = 0; i < 3; i++ )
|
||||||
|
{
|
||||||
level.default_perk[ "CLASS_CUSTOM" + h ][ i ] = "specialty_null";
|
level.default_perk[ "CLASS_CUSTOM" + h ][ i ] = "specialty_null";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
level.bots_minSprintDistance = 315;
|
level.bots_minsprintdistance = 315;
|
||||||
level.bots_minSprintDistance *= level.bots_minSprintDistance;
|
level.bots_minsprintdistance *= level.bots_minsprintdistance;
|
||||||
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 = 128;
|
level.bots_maxknifedistance = 128;
|
||||||
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 = [];
|
||||||
|
|
||||||
@@ -190,18 +272,22 @@ handleBots()
|
|||||||
level addBots();
|
level addBots();
|
||||||
|
|
||||||
while ( !level.intermission )
|
while ( !level.intermission )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
setDvar( "bots_manage_add", getBotArray().size );
|
setdvar( "bots_manage_add", getBotArray().size );
|
||||||
|
|
||||||
if ( !getDvarInt( "bots_main_kickBotsAtEnd" ) )
|
if ( !getdvarint( "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() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +302,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 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -230,15 +316,15 @@ 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.lastAttacker = eAttacker;
|
self.lastattacker = eAttacker;
|
||||||
|
|
||||||
if ( isDefined( eAttacker ) )
|
if ( isdefined( eAttacker ) )
|
||||||
{
|
{
|
||||||
eAttacker.lastKilledPlayer = self;
|
eAttacker.lastkilledplayer = self;
|
||||||
eAttacker notify( "killed_enemy" );
|
eAttacker notify( "killed_enemy" );
|
||||||
}
|
}
|
||||||
|
|
||||||
self [[level.prevCallbackPlayerKilled]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
self [[ level.prevcallbackplayerkilled ]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -247,11 +333,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -265,24 +351,28 @@ fixKoth()
|
|||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( !isDefined( level.radioObject ) )
|
if ( !isdefined( level.radioobject ) )
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = level.radios.size - 1; i >= 0; i-- )
|
for ( i = level.radios.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
if ( level.radioObject != level.radios[i].gameobject )
|
if ( level.radioobject != level.radios[ i ].gameobject )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
level.radio = level.radios[ i ];
|
level.radio = level.radios[ i ];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( isDefined( level.radioObject ) && level.radio.gameobject == level.radioObject )
|
while ( isdefined( level.radioobject ) && level.radio.gameobject == level.radioobject )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Fixes gamemodes when level starts.
|
Fixes gamemodes when level starts.
|
||||||
@@ -291,15 +381,17 @@ fixGamemodes()
|
|||||||
{
|
{
|
||||||
for ( i = 0; i < 19; i++ )
|
for ( i = 0; i < 19; i++ )
|
||||||
{
|
{
|
||||||
if ( isDefined( level.bombZones ) && level.gametype == "sd" )
|
if ( isdefined( level.bombzones ) && level.gametype == "sd" )
|
||||||
{
|
{
|
||||||
for ( i = 0; i < level.bombZones.size; i++ )
|
for ( i = 0; i < level.bombzones.size; i++ )
|
||||||
level.bombZones[i].onUse = ::onUsePlantObjectFix;
|
{
|
||||||
|
level.bombzones[ i ].onuse = ::onUsePlantObjectFix;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.radios ) && level.gametype == "koth" )
|
if ( isdefined( level.radios ) && level.gametype == "koth" )
|
||||||
{
|
{
|
||||||
level thread fixKoth();
|
level thread fixKoth();
|
||||||
|
|
||||||
@@ -339,8 +431,10 @@ fixPerksAndScriptKick()
|
|||||||
|
|
||||||
self.pers[ "isBot" ] = undefined;
|
self.pers[ "isBot" ] = undefined;
|
||||||
|
|
||||||
if ( !level.gameEnded )
|
if ( !level.gameended )
|
||||||
|
{
|
||||||
level waittill ( "game_ended" );
|
level waittill ( "game_ended" );
|
||||||
|
}
|
||||||
|
|
||||||
self.pers[ "isBot" ] = true;
|
self.pers[ "isBot" ] = true;
|
||||||
}
|
}
|
||||||
@@ -362,19 +456,23 @@ 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();
|
||||||
|
}
|
||||||
|
|
||||||
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();
|
||||||
@@ -404,34 +502,48 @@ 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 ( GetDvarInt( "bots_main_debug" ) >= 2 )
|
if ( getdvarint( "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" && GetDvarInt( "bots_main_debug" ) )
|
else if ( msg == "debug" && getdvarint( "bots_main_debug" ) )
|
||||||
{
|
{
|
||||||
BotBuiltinPrintConsole( "Bot Warfare debug: " + self.name + ": " + str );
|
BotBuiltinPrintConsole( "Bot Warfare debug: " + self.name + ": " + str );
|
||||||
}
|
}
|
||||||
@@ -469,11 +581,11 @@ add_bot()
|
|||||||
*/
|
*/
|
||||||
diffBots_loop()
|
diffBots_loop()
|
||||||
{
|
{
|
||||||
var_allies_hard = getDVarInt( "bots_skill_allies_hard" );
|
var_allies_hard = getdvarint( "bots_skill_allies_hard" );
|
||||||
var_allies_med = getDVarInt( "bots_skill_allies_med" );
|
var_allies_med = getdvarint( "bots_skill_allies_med" );
|
||||||
var_axis_hard = getDVarInt( "bots_skill_axis_hard" );
|
var_axis_hard = getdvarint( "bots_skill_axis_hard" );
|
||||||
var_axis_med = getDVarInt( "bots_skill_axis_med" );
|
var_axis_med = getdvarint( "bots_skill_axis_med" );
|
||||||
var_skill = getDvarInt( "bots_skill" );
|
var_skill = getdvarint( "bots_skill" );
|
||||||
|
|
||||||
allies_hard = 0;
|
allies_hard = 0;
|
||||||
allies_med = 0;
|
allies_med = 0;
|
||||||
@@ -488,11 +600,15 @@ 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() )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( player.pers[ "team" ] == "axis" )
|
if ( player.pers[ "team" ] == "axis" )
|
||||||
{
|
{
|
||||||
@@ -507,8 +623,10 @@ diffBots_loop()
|
|||||||
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 ( player.pers[ "team" ] == "allies" )
|
else if ( player.pers[ "team" ] == "allies" )
|
||||||
{
|
{
|
||||||
if ( allies_hard < var_allies_hard )
|
if ( allies_hard < var_allies_hard )
|
||||||
@@ -522,10 +640,12 @@ diffBots_loop()
|
|||||||
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 )
|
||||||
{
|
{
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
@@ -535,22 +655,26 @@ diffBots_loop()
|
|||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
min_diff = GetDvarInt( "bots_skill_min" );
|
min_diff = getdvarint( "bots_skill_min" );
|
||||||
max_diff = GetDvarInt( "bots_skill_max" );
|
max_diff = getdvarint( "bots_skill_max" );
|
||||||
|
|
||||||
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" ] = int( clamp( player.pers[ "bots" ][ "skill" ][ "base" ], min_diff, max_diff ) );
|
player.pers[ "bots" ][ "skill" ][ "base" ] = int( clamp( player.pers[ "bots" ][ "skill" ][ "base" ], min_diff, max_diff ) );
|
||||||
}
|
}
|
||||||
@@ -574,8 +698,8 @@ diffBots()
|
|||||||
*/
|
*/
|
||||||
teamBots_loop()
|
teamBots_loop()
|
||||||
{
|
{
|
||||||
teamAmount = getDvarInt( "bots_team_amount" );
|
teamAmount = getdvarint( "bots_team_amount" );
|
||||||
toTeam = getDvar( "bots_team" );
|
toTeam = getdvar( "bots_team" );
|
||||||
|
|
||||||
alliesbots = 0;
|
alliesbots = 0;
|
||||||
alliesplayers = 0;
|
alliesplayers = 0;
|
||||||
@@ -588,29 +712,39 @@ 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() )
|
||||||
{
|
{
|
||||||
if ( player.pers[ "team" ] == "allies" )
|
if ( player.pers[ "team" ] == "allies" )
|
||||||
|
{
|
||||||
alliesbots++;
|
alliesbots++;
|
||||||
|
}
|
||||||
else if ( player.pers[ "team" ] == "axis" )
|
else if ( player.pers[ "team" ] == "axis" )
|
||||||
|
{
|
||||||
axisbots++;
|
axisbots++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( player.pers[ "team" ] == "allies" )
|
if ( player.pers[ "team" ] == "allies" )
|
||||||
|
{
|
||||||
alliesplayers++;
|
alliesplayers++;
|
||||||
|
}
|
||||||
else if ( player.pers[ "team" ] == "axis" )
|
else if ( player.pers[ "team" ] == "axis" )
|
||||||
|
{
|
||||||
axisplayers++;
|
axisplayers++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
allies = alliesbots;
|
allies = alliesbots;
|
||||||
axis = axisbots;
|
axis = axisbots;
|
||||||
|
|
||||||
if ( !getDvarInt( "bots_team_mode" ) )
|
if ( !getdvarint( "bots_team_mode" ) )
|
||||||
{
|
{
|
||||||
allies += alliesplayers;
|
allies += alliesplayers;
|
||||||
axis += axisplayers;
|
axis += axisplayers;
|
||||||
@@ -618,7 +752,7 @@ teamBots_loop()
|
|||||||
|
|
||||||
if ( toTeam != "custom" )
|
if ( toTeam != "custom" )
|
||||||
{
|
{
|
||||||
if ( getDvarInt( "bots_team_force" ) )
|
if ( getdvarint( "bots_team_force" ) )
|
||||||
{
|
{
|
||||||
if ( toTeam == "autoassign" )
|
if ( toTeam == "autoassign" )
|
||||||
{
|
{
|
||||||
@@ -627,9 +761,11 @@ teamBots_loop()
|
|||||||
toTeam = "axis";
|
toTeam = "axis";
|
||||||
|
|
||||||
if ( axis > allies )
|
if ( axis > allies )
|
||||||
|
{
|
||||||
toTeam = "allies";
|
toTeam = "allies";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( toTeam != "autoassign" )
|
if ( toTeam != "autoassign" )
|
||||||
{
|
{
|
||||||
@@ -639,21 +775,33 @@ 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() )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( player.pers[ "team" ] == toTeam )
|
if ( player.pers[ "team" ] == toTeam )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( toTeam == "allies" )
|
if ( toTeam == "allies" )
|
||||||
|
{
|
||||||
player thread [[ level.allies ]]();
|
player thread [[ level.allies ]]();
|
||||||
|
}
|
||||||
else if ( toTeam == "axis" )
|
else if ( toTeam == "axis" )
|
||||||
|
{
|
||||||
player thread [[ level.axis ]]();
|
player thread [[ level.axis ]]();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
player thread [[ level.spectator ]]();
|
player thread [[ level.spectator ]]();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -668,11 +816,15 @@ 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() )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( player.pers[ "team" ] == "axis" )
|
if ( player.pers[ "team" ] == "axis" )
|
||||||
{
|
{
|
||||||
@@ -717,14 +869,16 @@ teamBots()
|
|||||||
*/
|
*/
|
||||||
addBots_loop()
|
addBots_loop()
|
||||||
{
|
{
|
||||||
botsToAdd = GetDvarInt( "bots_manage_add" );
|
botsToAdd = getdvarint( "bots_manage_add" );
|
||||||
|
|
||||||
if ( botsToAdd > 0 )
|
if ( botsToAdd > 0 )
|
||||||
{
|
{
|
||||||
SetDvar( "bots_manage_add", 0 );
|
setdvar( "bots_manage_add", 0 );
|
||||||
|
|
||||||
if ( botsToAdd > 64 )
|
if ( botsToAdd > 64 )
|
||||||
|
{
|
||||||
botsToAdd = 64;
|
botsToAdd = 64;
|
||||||
|
}
|
||||||
|
|
||||||
for ( ; botsToAdd > 0; botsToAdd-- )
|
for ( ; botsToAdd > 0; botsToAdd-- )
|
||||||
{
|
{
|
||||||
@@ -733,12 +887,14 @@ addBots_loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fillMode = getDVarInt( "bots_manage_fill_mode" );
|
fillMode = getdvarint( "bots_manage_fill_mode" );
|
||||||
|
|
||||||
if ( fillMode == 2 || fillMode == 3 )
|
if ( fillMode == 2 || fillMode == 3 )
|
||||||
setDvar( "bots_manage_fill", getGoodMapAmount() );
|
{
|
||||||
|
setdvar( "bots_manage_fill", getGoodMapAmount() );
|
||||||
|
}
|
||||||
|
|
||||||
fillAmount = getDvarInt( "bots_manage_fill" );
|
fillAmount = getdvarint( "bots_manage_fill" );
|
||||||
|
|
||||||
players = 0;
|
players = 0;
|
||||||
bots = 0;
|
bots = 0;
|
||||||
@@ -751,18 +907,24 @@ addBots_loop()
|
|||||||
player = level.players[ i ];
|
player = level.players[ i ];
|
||||||
|
|
||||||
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 ) )
|
||||||
{
|
{
|
||||||
setDvar( "testclients_doreload", true );
|
setdvar( "testclients_doreload", true );
|
||||||
wait 0.1;
|
wait 0.1;
|
||||||
setDvar( "testclients_doreload", false );
|
setdvar( "testclients_doreload", false );
|
||||||
doExtraCheck();
|
doExtraCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -778,28 +940,42 @@ addBots_loop()
|
|||||||
player = level.players[ i ];
|
player = level.players[ i ];
|
||||||
|
|
||||||
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" )
|
||||||
|
{
|
||||||
axisplayers++;
|
axisplayers++;
|
||||||
|
}
|
||||||
else if ( player.pers[ "team" ] == "allies" )
|
else if ( player.pers[ "team" ] == "allies" )
|
||||||
|
{
|
||||||
alliesplayers++;
|
alliesplayers++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
result = fillAmount - abs( axisplayers - alliesplayers ) + bots;
|
result = fillAmount - abs( axisplayers - alliesplayers ) + bots;
|
||||||
|
|
||||||
if ( players == 0 )
|
if ( players == 0 )
|
||||||
{
|
{
|
||||||
if ( bots < fillAmount )
|
if ( bots < fillAmount )
|
||||||
|
{
|
||||||
result = fillAmount - 1;
|
result = fillAmount - 1;
|
||||||
|
}
|
||||||
else if ( bots > fillAmount )
|
else if ( bots > fillAmount )
|
||||||
|
{
|
||||||
result = fillAmount + 1;
|
result = fillAmount + 1;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
result = fillAmount;
|
result = fillAmount;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bots = result;
|
bots = result;
|
||||||
}
|
}
|
||||||
@@ -807,19 +983,27 @@ addBots_loop()
|
|||||||
amount = bots;
|
amount = bots;
|
||||||
|
|
||||||
if ( fillMode == 0 || fillMode == 2 )
|
if ( fillMode == 0 || fillMode == 2 )
|
||||||
|
{
|
||||||
amount += players;
|
amount += players;
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDVarInt( "bots_manage_fill_spec" ) )
|
if ( getdvarint( "bots_manage_fill_spec" ) )
|
||||||
|
{
|
||||||
amount += spec;
|
amount += spec;
|
||||||
|
}
|
||||||
|
|
||||||
if ( amount < fillAmount )
|
if ( amount < fillAmount )
|
||||||
setDvar( "bots_manage_add", 1 );
|
{
|
||||||
else if ( amount > fillAmount && getDvarInt( "bots_manage_fill_kick" ) )
|
setdvar( "bots_manage_add", 1 );
|
||||||
|
}
|
||||||
|
else if ( amount > fillAmount && getdvarint( "bots_manage_fill_kick" ) )
|
||||||
{
|
{
|
||||||
tempBot = getBotToKick();
|
tempBot = getBotToKick();
|
||||||
|
|
||||||
if ( isDefined( tempBot ) )
|
if ( isdefined( tempBot ) )
|
||||||
kick( tempBot getEntityNumber() );
|
{
|
||||||
|
kick( tempBot getentitynumber() );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -865,15 +1049,19 @@ onGrenadeFire()
|
|||||||
{
|
{
|
||||||
self waittill ( "grenade_fire", grenade, weaponName );
|
self waittill ( "grenade_fire", grenade, weaponName );
|
||||||
|
|
||||||
if ( !isDefined( grenade ) )
|
if ( !isdefined( grenade ) )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
grenade.name = weaponName;
|
grenade.name = weaponName;
|
||||||
|
|
||||||
if ( weaponName == "m8_white_smoke_mp" )
|
if ( weaponName == "m8_white_smoke_mp" )
|
||||||
|
{
|
||||||
grenade thread AddToSmokeList();
|
grenade thread AddToSmokeList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Adds a smoke grenade to the list of smokes in the game. Used to prevent bots from seeing through smoke.
|
Adds a smoke grenade to the list of smokes in the game. Used to prevent bots from seeing through smoke.
|
||||||
@@ -881,13 +1069,13 @@ onGrenadeFire()
|
|||||||
AddToSmokeList()
|
AddToSmokeList()
|
||||||
{
|
{
|
||||||
grenade = spawnstruct();
|
grenade = spawnstruct();
|
||||||
grenade.origin = self getOrigin();
|
grenade.origin = self getorigin();
|
||||||
grenade.state = "moving";
|
grenade.state = "moving";
|
||||||
grenade.grenade = self;
|
grenade.grenade = self;
|
||||||
|
|
||||||
grenade thread thinkSmoke();
|
grenade thread thinkSmoke();
|
||||||
|
|
||||||
level.bots_smokeList ListAdd( grenade );
|
level.bots_smokelist ListAdd( grenade );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -895,9 +1083,9 @@ AddToSmokeList()
|
|||||||
*/
|
*/
|
||||||
thinkSmoke()
|
thinkSmoke()
|
||||||
{
|
{
|
||||||
while ( isDefined( self.grenade ) )
|
while ( isdefined( self.grenade ) )
|
||||||
{
|
{
|
||||||
self.origin = self.grenade getOrigin();
|
self.origin = self.grenade getorigin();
|
||||||
self.state = "moving";
|
self.state = "moving";
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
@@ -905,7 +1093,7 @@ thinkSmoke()
|
|||||||
self.state = "smoking";
|
self.state = "smoking";
|
||||||
wait 11.5;
|
wait 11.5;
|
||||||
|
|
||||||
level.bots_smokeList ListRemove( self );
|
level.bots_smokelist ListRemove( self );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -945,8 +1133,10 @@ doUAVUpdate( team )
|
|||||||
{
|
{
|
||||||
player = level.players[ i ];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( !isDefined( player.team ) )
|
if ( !isdefined( player.team ) )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( player.team == team )
|
if ( player.team == team )
|
||||||
{
|
{
|
||||||
@@ -954,7 +1144,7 @@ doUAVUpdate( team )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wait level.radarViewTime;
|
wait level.radarviewtime;
|
||||||
|
|
||||||
playercount = level.players.size;
|
playercount = level.players.size;
|
||||||
|
|
||||||
@@ -962,8 +1152,10 @@ doUAVUpdate( team )
|
|||||||
{
|
{
|
||||||
player = level.players[ i ];
|
player = level.players[ i ];
|
||||||
|
|
||||||
if ( !isDefined( player.team ) )
|
if ( !isdefined( player.team ) )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if ( player.team == team )
|
if ( player.team == team )
|
||||||
{
|
{
|
||||||
|
|||||||
+115
-39
@@ -15,8 +15,10 @@
|
|||||||
*/
|
*/
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
if ( getDvar( "bots_main_chat" ) == "" )
|
if ( getdvar( "bots_main_chat" ) == "" )
|
||||||
setDvar( "bots_main_chat", 1.0 );
|
{
|
||||||
|
setdvar( "bots_main_chat", 1.0 );
|
||||||
|
}
|
||||||
|
|
||||||
level thread onBotConnected();
|
level thread onBotConnected();
|
||||||
}
|
}
|
||||||
@@ -39,20 +41,26 @@ onBotConnected()
|
|||||||
*/
|
*/
|
||||||
BotDoChat( chance, string, isTeam )
|
BotDoChat( chance, string, isTeam )
|
||||||
{
|
{
|
||||||
mod = getDvarFloat( "bots_main_chat" );
|
mod = getdvarfloat( "bots_main_chat" );
|
||||||
|
|
||||||
if ( mod <= 0.0 )
|
if ( mod <= 0.0 )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( chance >= 100 || mod >= 100.0 ||
|
if ( chance >= 100 || mod >= 100.0 ||
|
||||||
( RandomInt( 100 ) < ( chance * mod ) + 0 ) )
|
( randomint( 100 ) < ( chance * mod ) + 0 ) )
|
||||||
|
{
|
||||||
|
if ( isdefined( isTeam ) && isTeam )
|
||||||
{
|
{
|
||||||
if ( isDefined( isTeam ) && isTeam )
|
|
||||||
self sayteam( string );
|
self sayteam( string );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
self sayall( string );
|
self sayall( string );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Threads for bots
|
Threads for bots
|
||||||
@@ -81,9 +89,9 @@ start_death_watch()
|
|||||||
{
|
{
|
||||||
self waittill( "death" );
|
self waittill( "death" );
|
||||||
|
|
||||||
self thread bot_chat_death_watch( self.lastAttacker, self.bots_lastKS );
|
self thread bot_chat_death_watch( self.lastattacker, self.bots_lastks );
|
||||||
|
|
||||||
self.bots_lastKS = 0;
|
self.bots_lastks = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,13 +118,15 @@ start_random_chat()
|
|||||||
{
|
{
|
||||||
wait 1;
|
wait 1;
|
||||||
|
|
||||||
if ( randomInt( 100 ) < 1 )
|
if ( randomint( 100 ) < 1 )
|
||||||
|
{
|
||||||
|
if ( randomint( 100 ) < 1 && isalive( self ) )
|
||||||
{
|
{
|
||||||
if ( randomInt( 100 ) < 1 && isAlive( self ) )
|
|
||||||
self thread doQuickMessage();
|
self thread doQuickMessage();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Got a kill
|
Got a kill
|
||||||
@@ -125,24 +135,24 @@ start_killed_watch()
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
self.bots_lastKS = 0;
|
self.bots_lastks = 0;
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
self waittill( "killed_enemy" );
|
self waittill( "killed_enemy" );
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( self.bots_lastKS < self.cur_kill_streak )
|
if ( self.bots_lastks < self.cur_kill_streak )
|
||||||
{
|
{
|
||||||
for ( i = self.bots_lastKS + 1; i <= self.cur_kill_streak; i++ )
|
for ( i = self.bots_lastks + 1; i <= self.cur_kill_streak; i++ )
|
||||||
{
|
{
|
||||||
self thread bot_chat_streak( i );
|
self thread bot_chat_streak( i );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.bots_lastKS = self.cur_kill_streak;
|
self.bots_lastks = self.cur_kill_streak;
|
||||||
|
|
||||||
self thread bot_chat_killed_watch( self.lastKilledPlayer );
|
self thread bot_chat_killed_watch( self.lastkilledplayer );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -378,7 +388,7 @@ doQuickMessage()
|
|||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
if ( !isDefined( self.talking ) || !self.talking )
|
if ( !isdefined( self.talking ) || !self.talking )
|
||||||
{
|
{
|
||||||
self.talking = true;
|
self.talking = true;
|
||||||
soundalias = "";
|
soundalias = "";
|
||||||
@@ -416,16 +426,18 @@ doQuickMessage()
|
|||||||
|
|
||||||
if ( soundalias != "" && saytext != "" )
|
if ( soundalias != "" && saytext != "" )
|
||||||
{
|
{
|
||||||
self maps\mp\gametypes\_quickmessages::saveHeadIcon();
|
self maps\mp\gametypes\_quickmessages::saveheadicon();
|
||||||
self maps\mp\gametypes\_quickmessages::doQuickMessage( soundalias, saytext );
|
self maps\mp\gametypes\_quickmessages::doquickmessage( soundalias, saytext );
|
||||||
wait 2;
|
wait 2;
|
||||||
self maps\mp\gametypes\_quickmessages::restoreHeadIcon();
|
self maps\mp\gametypes\_quickmessages::restoreheadicon();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( randomint( 100 ) < 1 )
|
if ( randomint( 100 ) < 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 1, maps\mp\bots\_bot_utility::keyCodeToString( 2 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 13 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 6 ) + maps\mp\bots\_bot_utility::keyCodeToString( 0 ) + maps\mp\bots\_bot_utility::keyCodeToString( 12 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 5 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 1 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 26 ) );
|
self BotDoChat( 1, maps\mp\bots\_bot_utility::keyCodeToString( 2 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 8 ) + maps\mp\bots\_bot_utility::keyCodeToString( 13 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 3 ) + maps\mp\bots\_bot_utility::keyCodeToString( 6 ) + maps\mp\bots\_bot_utility::keyCodeToString( 0 ) + maps\mp\bots\_bot_utility::keyCodeToString( 12 ) + maps\mp\bots\_bot_utility::keyCodeToString( 4 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 5 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 17 ) + maps\mp\bots\_bot_utility::keyCodeToString( 27 ) + maps\mp\bots\_bot_utility::keyCodeToString( 1 ) + maps\mp\bots\_bot_utility::keyCodeToString( 14 ) + maps\mp\bots\_bot_utility::keyCodeToString( 19 ) + maps\mp\bots\_bot_utility::keyCodeToString( 18 ) + maps\mp\bots\_bot_utility::keyCodeToString( 26 ) );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
self.spamdelay = undefined;
|
self.spamdelay = undefined;
|
||||||
wait randomint( 5 );
|
wait randomint( 5 );
|
||||||
@@ -463,9 +475,9 @@ endgame_chat()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.teamBased )
|
if ( level.teambased )
|
||||||
{
|
{
|
||||||
winningteam = maps\mp\gametypes\_globallogic::getWinningTeam();
|
winningteam = maps\mp\gametypes\_globallogic::getwinningteam();
|
||||||
|
|
||||||
if ( self.pers[ "team" ] == winningteam )
|
if ( self.pers[ "team" ] == winningteam )
|
||||||
{
|
{
|
||||||
@@ -541,25 +553,41 @@ endgame_chat()
|
|||||||
|
|
||||||
case 17:
|
case 17:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "LOL we wouldn't of won without me!" );
|
self BotDoChat( 20, "LOL we wouldn't of won without me!" );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "damn i sucked but i still won" );
|
self BotDoChat( 20, "damn i sucked but i still won" );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "lol " + loser.name + " sucked hard!" );
|
self BotDoChat( 20, "lol " + loser.name + " sucked hard!" );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "wow " + winner.name + " did very well!" );
|
self BotDoChat( 20, "wow " + winner.name + " did very well!" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 18:
|
case 18:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "I'm the VERY BEST!" );
|
self BotDoChat( 20, "I'm the VERY BEST!" );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "lol my team is good, i suck doe" );
|
self BotDoChat( 20, "lol my team is good, i suck doe" );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "lol " + loser.name + " should be playing a noobier game" );
|
self BotDoChat( 20, "lol " + loser.name + " should be playing a noobier game" );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "i think " + winner.name + " is a hacker" );
|
self BotDoChat( 20, "i think " + winner.name + " is a hacker" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -636,25 +664,41 @@ endgame_chat()
|
|||||||
|
|
||||||
case 14:
|
case 14:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "LOL we lost even with my score." );
|
self BotDoChat( 20, "LOL we lost even with my score." );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "damn im probally the reason we lost" );
|
self BotDoChat( 20, "damn im probally the reason we lost" );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, loser.name + " should just leave" );
|
self BotDoChat( 20, loser.name + " should just leave" );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "kwtf " + winner.name + " is a hacker" );
|
self BotDoChat( 20, "kwtf " + winner.name + " is a hacker" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 15:
|
case 15:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "my teammates are garabge" );
|
self BotDoChat( 20, "my teammates are garabge" );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "lol im garbage" );
|
self BotDoChat( 20, "lol im garbage" );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, loser.name + " sux" );
|
self BotDoChat( 20, loser.name + " sux" );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, winner.name + " is a noob!" );
|
self BotDoChat( 20, winner.name + " is a noob!" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -724,37 +768,61 @@ endgame_chat()
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Haha Suck it, you all just got pwnd!" );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Haha Suck it, you all just got pwnd!" );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Lol i Sucked in this game, just look at my score!" );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Lol i Sucked in this game, just look at my score!" );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "gga, Bad luck " + loser.name );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "gga, Bad luck " + loser.name );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "This game sucked, " + winner.name + " is such a hacker!!" );
|
self BotDoChat( 20, "This game sucked, " + winner.name + " is such a hacker!!" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "LOL i just wasted you all!! Whoot whoot!" );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "LOL i just wasted you all!! Whoot whoot!" );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "GGA i suck, Nice score " + winner.name );
|
self BotDoChat( 20, "GGA i suck, Nice score " + winner.name );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Rofl, " + loser.name + " dude, you suck!!" );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Rofl, " + loser.name + " dude, you suck!!" );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Nice Score " + winner.name + ", how did you get to be so good?" );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Nice Score " + winner.name + ", how did you get to be so good?" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
if ( self == winner )
|
if ( self == winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "LOL i just wasted you all!! Whoot whoot!" );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "LOL i just wasted you all!! Whoot whoot!" );
|
||||||
|
}
|
||||||
else if ( self == loser )
|
else if ( self == loser )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "nice wallhacks " + winner.name );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "nice wallhacks " + winner.name );
|
||||||
|
}
|
||||||
else if ( self != loser && randomint( 2 ) == 1 )
|
else if ( self != loser && randomint( 2 ) == 1 )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Lol atleast i did better then " + loser.name );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "Lol atleast i did better then " + loser.name );
|
||||||
|
}
|
||||||
else if ( self != winner )
|
else if ( self != winner )
|
||||||
|
{
|
||||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "lolwtf " + winner.name );
|
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "lolwtf " + winner.name );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -838,7 +906,7 @@ bot_chat_streak( streakCount )
|
|||||||
|
|
||||||
if ( streakCount == 7 )
|
if ( streakCount == 7 )
|
||||||
{
|
{
|
||||||
if ( isDefined( self.pers["hardPointItem"] ) && self.pers["hardPointItem"] == "dogs_mp" )
|
if ( isdefined( self.pers[ "hardPointItem" ] ) && self.pers[ "hardPointItem" ] == "dogs_mp" )
|
||||||
{
|
{
|
||||||
switch ( randomint( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
@@ -861,8 +929,10 @@ bot_chat_killed_watch( victim )
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
if ( !isDefined( victim ) || !isDefined( victim.name ) )
|
if ( !isdefined( victim ) || !isdefined( victim.name ) )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
message = "";
|
message = "";
|
||||||
|
|
||||||
@@ -1029,7 +1099,7 @@ bot_chat_killed_watch( victim )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 40:
|
case 40:
|
||||||
message = ( "Man, I sure love my " + getBaseWeaponName( self GetCurrentWeapon() ) + "!" );
|
message = ( "Man, I sure love my " + getBaseWeaponName( self getcurrentweapon() ) + "!" );
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1049,8 +1119,10 @@ bot_chat_death_watch( killer, last_ks )
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
if ( !isDefined( killer ) || !isDefined( killer.name ) )
|
if ( !isdefined( killer ) || !isdefined( killer.name ) )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
message = "";
|
message = "";
|
||||||
|
|
||||||
@@ -1074,14 +1146,18 @@ bot_chat_death_watch( killer, last_ks )
|
|||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
if ( last_ks > 0 )
|
if ( last_ks > 0 )
|
||||||
|
{
|
||||||
message = ( "^" + ( randomint( 6 ) + 1 ) + "Nooooooooo my killstreaks!! :( I had a " + last_ks + " killstreak!!" );
|
message = ( "^" + ( randomint( 6 ) + 1 ) + "Nooooooooo my killstreaks!! :( I had a " + last_ks + " killstreak!!" );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
message = ( "man im getting spawn killed, i have a " + self.cur_death_streak + " deathstreak!" );
|
message = ( "man im getting spawn killed, i have a " + self.cur_death_streak + " deathstreak!" );
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
message = ( "^" + ( randomint( 6 ) + 1 ) + "Stop Spawn KILLING!!!" );
|
message = ( "^" + ( randomint( 6 ) + 1 ) + "Stop spawn KILLING!!!" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 6:
|
case 6:
|
||||||
@@ -1301,7 +1377,7 @@ bot_chat_death_watch( killer, last_ks )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case 60:
|
case 60:
|
||||||
message = "Wow! Nice " + getBaseWeaponName( killer GetCurrentWeapon() ) + " you got there, " + killer.name + "!";
|
message = "Wow! Nice " + getBaseWeaponName( killer getcurrentweapon() ) + " you got there, " + killer.name + "!";
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1348,7 +1424,7 @@ bot_chat_revive_watch( state, revive, c, d, e, f, g )
|
|||||||
switch ( state )
|
switch ( state )
|
||||||
{
|
{
|
||||||
case "go":
|
case "go":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "i am going to revive " + revive.name );
|
self BotDoChat( 10, "i am going to revive " + revive.name );
|
||||||
@@ -1358,7 +1434,7 @@ bot_chat_revive_watch( state, revive, c, d, e, f, g )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "start":
|
case "start":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "i am reviving " + revive.name );
|
self BotDoChat( 10, "i am reviving " + revive.name );
|
||||||
@@ -1368,7 +1444,7 @@ bot_chat_revive_watch( state, revive, c, d, e, f, g )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "stop":
|
case "stop":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "i revived " + revive.name );
|
self BotDoChat( 10, "i revived " + revive.name );
|
||||||
@@ -1389,7 +1465,7 @@ bot_chat_killcam_watch( state, b, c, d, e, f, g )
|
|||||||
switch ( state )
|
switch ( state )
|
||||||
{
|
{
|
||||||
case "start":
|
case "start":
|
||||||
switch ( randomInt( 2 ) )
|
switch ( randomint( 2 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 1, "WTF?!?!?!! Dude youre a hacker and a half!!" );
|
self BotDoChat( 1, "WTF?!?!?!! Dude youre a hacker and a half!!" );
|
||||||
@@ -1403,7 +1479,7 @@ bot_chat_killcam_watch( state, b, c, d, e, f, g )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "stop":
|
case "stop":
|
||||||
switch ( randomInt( 2 ) )
|
switch ( randomint( 2 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 1, "Wow... Im reporting you!!!" );
|
self BotDoChat( 1, "Wow... Im reporting you!!!" );
|
||||||
@@ -1425,7 +1501,7 @@ bot_chat_stuck_watch( a, b, c, d, e, f, g )
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
sayLength = randomintRange( 5, 30 );
|
sayLength = randomintrange( 5, 30 );
|
||||||
msg = "";
|
msg = "";
|
||||||
|
|
||||||
for ( i = 0; i < sayLength; i++ )
|
for ( i = 0; i < sayLength; i++ )
|
||||||
@@ -1483,7 +1559,7 @@ bot_chat_tube_watch( state, tubeWp, tubeWeap, d, e, f, g )
|
|||||||
switch ( state )
|
switch ( state )
|
||||||
{
|
{
|
||||||
case "go":
|
case "go":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "i am going to go tube" );
|
self BotDoChat( 10, "i am going to go tube" );
|
||||||
@@ -1493,7 +1569,7 @@ bot_chat_tube_watch( state, tubeWp, tubeWeap, d, e, f, g )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "start":
|
case "start":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "i tubed" );
|
self BotDoChat( 10, "i tubed" );
|
||||||
@@ -1629,7 +1705,7 @@ bot_chat_follow_watch( state, player, time, d, e, f, g )
|
|||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
|
|
||||||
if ( !isDefined( player ) )
|
if ( !isdefined( player ) )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1680,7 +1756,7 @@ bot_chat_equ_watch( state, wp, weap, d, e, f, g )
|
|||||||
switch ( state )
|
switch ( state )
|
||||||
{
|
{
|
||||||
case "go":
|
case "go":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "going to place a " + getBaseWeaponName( weap ) );
|
self BotDoChat( 10, "going to place a " + getBaseWeaponName( weap ) );
|
||||||
@@ -1690,7 +1766,7 @@ bot_chat_equ_watch( state, wp, weap, d, e, f, g )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "start":
|
case "start":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "placed a " + getBaseWeaponName( weap ) );
|
self BotDoChat( 10, "placed a " + getBaseWeaponName( weap ) );
|
||||||
@@ -1711,7 +1787,7 @@ bot_chat_nade_watch( state, wp, weap, d, e, f, g )
|
|||||||
switch ( state )
|
switch ( state )
|
||||||
{
|
{
|
||||||
case "go":
|
case "go":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "going to throw a " + getBaseWeaponName( weap ) );
|
self BotDoChat( 10, "going to throw a " + getBaseWeaponName( weap ) );
|
||||||
@@ -1721,7 +1797,7 @@ bot_chat_nade_watch( state, wp, weap, d, e, f, g )
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case "start":
|
case "start":
|
||||||
switch ( randomInt( 1 ) )
|
switch ( randomint( 1 ) )
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
self BotDoChat( 10, "threw a " + getBaseWeaponName( weap ) );
|
self BotDoChat( 10, "threw a " + getBaseWeaponName( weap ) );
|
||||||
|
|||||||
+635
-255
File diff suppressed because it is too large
Load Diff
+1487
-587
File diff suppressed because it is too large
Load Diff
+570
-296
File diff suppressed because it is too large
Load Diff
+510
-324
File diff suppressed because it is too large
Load Diff
+241
-153
@@ -12,48 +12,62 @@
|
|||||||
|
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
if ( getDvar( "bots_main_debug" ) == "" )
|
if ( getdvar( "bots_main_debug" ) == "" )
|
||||||
setDvar( "bots_main_debug", 0 );
|
{
|
||||||
|
setdvar( "bots_main_debug", 0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( !getDVarint( "bots_main_debug" ) )
|
if ( !getdvarint( "bots_main_debug" ) )
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ( !getDVarint( "developer" ) )
|
if ( !getdvarint( "developer" ) )
|
||||||
{
|
{
|
||||||
setdvar( "developer_script", 1 );
|
setdvar( "developer_script", 1 );
|
||||||
setdvar( "developer", 1 );
|
setdvar( "developer", 1 );
|
||||||
|
|
||||||
setdvar( "sv_mapRotation", "map " + getDvar( "mapname" ) );
|
setdvar( "sv_mapRotation", "map " + getdvar( "mapname" ) );
|
||||||
exitLevel( false );
|
exitlevel( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
setDvar( "bots_main", 0 );
|
setdvar( "bots_main", 0 );
|
||||||
setdvar( "bots_main_menu", 0 );
|
setdvar( "bots_main_menu", 0 );
|
||||||
setdvar( "bots_manage_fill_mode", 0 );
|
setdvar( "bots_manage_fill_mode", 0 );
|
||||||
setdvar( "bots_manage_fill", 0 );
|
setdvar( "bots_manage_fill", 0 );
|
||||||
setdvar( "bots_manage_add", 0 );
|
setdvar( "bots_manage_add", 0 );
|
||||||
setdvar( "bots_manage_fill_kick", 1 );
|
setdvar( "bots_manage_fill_kick", 1 );
|
||||||
setDvar( "bots_manage_fill_spec", 1 );
|
setdvar( "bots_manage_fill_spec", 1 );
|
||||||
|
|
||||||
if ( getDvar( "bots_main_debug_distance" ) == "" )
|
if ( getdvar( "bots_main_debug_distance" ) == "" )
|
||||||
setDvar( "bots_main_debug_distance", 512.0 );
|
{
|
||||||
|
setdvar( "bots_main_debug_distance", 512.0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_debug_cone" ) == "" )
|
if ( getdvar( "bots_main_debug_cone" ) == "" )
|
||||||
setDvar( "bots_main_debug_cone", 0.65 );
|
{
|
||||||
|
setdvar( "bots_main_debug_cone", 0.65 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_debug_minDist" ) == "" )
|
if ( getdvar( "bots_main_debug_minDist" ) == "" )
|
||||||
setDvar( "bots_main_debug_minDist", 32.0 );
|
{
|
||||||
|
setdvar( "bots_main_debug_minDist", 32.0 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_debug_drawThrough" ) == "" )
|
if ( getdvar( "bots_main_debug_drawThrough" ) == "" )
|
||||||
setDvar( "bots_main_debug_drawThrough", false );
|
{
|
||||||
|
setdvar( "bots_main_debug_drawThrough", false );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getDvar( "bots_main_debug_commandWait" ) == "" )
|
if ( getdvar( "bots_main_debug_commandWait" ) == "" )
|
||||||
setDvar( "bots_main_debug_commandWait", 0.5 );
|
{
|
||||||
|
setdvar( "bots_main_debug_commandWait", 0.5 );
|
||||||
|
}
|
||||||
|
|
||||||
setDvar( "player_sustainAmmo", 1 );
|
setdvar( "player_sustainAmmo", 1 );
|
||||||
|
|
||||||
level.waypoints = [];
|
level.waypoints = [];
|
||||||
level.waypointCount = 0;
|
level.waypointcount = 0;
|
||||||
|
|
||||||
level waittill( "connected", player );
|
level waittill( "connected", player );
|
||||||
|
|
||||||
@@ -76,17 +90,17 @@ beginDebug()
|
|||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
level.autoLink = false;
|
level.autolink = false;
|
||||||
self.closest = -1;
|
self.closest = -1;
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
self clearPerks();
|
self clearperks();
|
||||||
self takeAllWeapons();
|
self takeallweapons();
|
||||||
self.specialty = [];
|
self.specialty = [];
|
||||||
self giveWeapon( "m1garand_gl_mp" );
|
self giveweapon( "m1garand_gl_mp" );
|
||||||
self SetActionSlot( 3, "altMode" );
|
self setactionslot( 3, "altMode" );
|
||||||
self giveWeapon( "frag_grenade_mp" );
|
self giveweapon( "frag_grenade_mp" );
|
||||||
self freezecontrols( false );
|
self freezecontrols( false );
|
||||||
|
|
||||||
self thread debug();
|
self thread debug();
|
||||||
@@ -96,7 +110,7 @@ beginDebug()
|
|||||||
self thread watchSaveWaypointsCommand();
|
self thread watchSaveWaypointsCommand();
|
||||||
self thread sayExtras();
|
self thread sayExtras();
|
||||||
|
|
||||||
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6Delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
|
self thread textScroll( "^1SecondaryOffhand - ^2Add Waypoint; ^3MeleeButton - ^4Link Waypoint; ^5FragButton - ^6delete Waypoint; ^7UseButton + AttackButton - ^8Save" );
|
||||||
}
|
}
|
||||||
|
|
||||||
sayExtras()
|
sayExtras()
|
||||||
@@ -116,30 +130,40 @@ debug()
|
|||||||
{
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
|
||||||
if ( isDefined( self.command ) )
|
if ( isdefined( self.command ) )
|
||||||
|
{
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
closest = -1;
|
closest = -1;
|
||||||
myEye = self getTagOrigin( "j_head" );
|
myEye = self gettagorigin( "j_head" );
|
||||||
myAngles = self GetPlayerAngles();
|
myAngles = self getplayerangles();
|
||||||
|
|
||||||
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" ) && ( bulletTracePassed( myEye, wpOrg, false, self ) || getDVarint( "bots_main_debug_drawThrough" ) ) )
|
if ( distance( level.waypoints[ i ].origin, self.origin ) < getdvarfloat( "bots_main_debug_distance" ) && ( bullettracepassed( myEye, wpOrg, false, self ) || getdvarint( "bots_main_debug_drawThrough" ) ) )
|
||||||
{
|
{
|
||||||
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; h-- )
|
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; h-- )
|
||||||
|
{
|
||||||
line( wpOrg, level.waypoints[ level.waypoints[ i ].children[ h ] ].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) );
|
line( wpOrg, level.waypoints[ level.waypoints[ i ].children[ h ] ].origin + ( 0, 0, 25 ), ( 1, 0, 1 ) );
|
||||||
|
}
|
||||||
|
|
||||||
if ( getConeDot( wpOrg, myEye, myAngles ) > getDvarFloat( "bots_main_debug_cone" ) )
|
if ( getConeDot( wpOrg, myEye, myAngles ) > getdvarfloat( "bots_main_debug_cone" ) )
|
||||||
|
{
|
||||||
print3d( wpOrg, i, ( 1, 0, 0 ), 2 );
|
print3d( wpOrg, i, ( 1, 0, 0 ), 2 );
|
||||||
|
}
|
||||||
|
|
||||||
if ( isDefined( level.waypoints[i].angles ) && level.waypoints[i].type != "stand" )
|
if ( isdefined( level.waypoints[ i ].angles ) && level.waypoints[ i ].type != "stand" )
|
||||||
line( wpOrg, wpOrg + AnglesToForward( level.waypoints[i].angles ) * 64, ( 1, 1, 1 ) );
|
{
|
||||||
|
line( wpOrg, wpOrg + anglestoforward( level.waypoints[ i ].angles ) * 64, ( 1, 1, 1 ) );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,10 +176,14 @@ debug()
|
|||||||
for ( i = 0; i < level.waypoints[ closest ].children.size; i++ )
|
for ( i = 0; i < level.waypoints[ closest ].children.size; i++ )
|
||||||
{
|
{
|
||||||
if ( i != 0 )
|
if ( i != 0 )
|
||||||
|
{
|
||||||
stringChildren = stringChildren + "," + level.waypoints[ closest ].children[ i ];
|
stringChildren = stringChildren + "," + level.waypoints[ closest ].children[ i ];
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
stringChildren = stringChildren + level.waypoints[ closest ].children[ i ];
|
stringChildren = stringChildren + level.waypoints[ closest ].children[ i ];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
print3d( level.waypoints[ closest ].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2 );
|
print3d( level.waypoints[ closest ].origin + ( 0, 0, 35 ), stringChildren, ( 0, 1, 0 ), 2 );
|
||||||
|
|
||||||
@@ -164,17 +192,19 @@ debug()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AddWaypoints()
|
addWaypoints()
|
||||||
{
|
{
|
||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
self endon( "death" );
|
self endon( "death" );
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while ( !self SecondaryOffhandButtonPressed() || isDefined( self.command ) )
|
while ( !self secondaryoffhandbuttonpressed() || isdefined( self.command ) )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
pos = self getOrigin();
|
pos = self getorigin();
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln( "Adding a waypoint..." );
|
self iprintln( "Adding a waypoint..." );
|
||||||
@@ -182,16 +212,18 @@ AddWaypoints()
|
|||||||
self iprintln( "Attack - grenade; Use - claymore" );
|
self iprintln( "Attack - grenade; Use - claymore" );
|
||||||
self iprintln( "Else(wait) - your stance" );
|
self iprintln( "Else(wait) - your stance" );
|
||||||
|
|
||||||
wait getDvarFloat( "bots_main_debug_commandWait" );
|
wait getdvarfloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
self addWaypoint( pos );
|
self addWaypoint( pos );
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while ( self SecondaryOffhandButtonPressed() )
|
while ( self secondaryoffhandbuttonpressed() )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
linkWaypoints()
|
linkWaypoints()
|
||||||
{
|
{
|
||||||
@@ -200,26 +232,34 @@ linkWaypoints()
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while ( !self MeleeButtonPressed() || isDefined( self.command ) )
|
while ( !self meleebuttonpressed() || isdefined( self.command ) )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln( "ADS - Unlink; Else(wait) - Link" );
|
self iprintln( "ADS - unlink; Else(wait) - Link" );
|
||||||
|
|
||||||
wait getDvarFloat( "bots_main_debug_commandWait" );
|
wait getdvarfloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
if ( !self adsButtonPressed() )
|
if ( !self adsbuttonpressed() )
|
||||||
|
{
|
||||||
self LinkWaypoint( self.closest );
|
self LinkWaypoint( self.closest );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
self UnLinkWaypoint( self.closest );
|
self UnLinkWaypoint( self.closest );
|
||||||
|
}
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while ( self MeleeButtonPressed() )
|
while ( self meleebuttonpressed() )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
deleteWaypoints()
|
deleteWaypoints()
|
||||||
{
|
{
|
||||||
@@ -228,29 +268,39 @@ deleteWaypoints()
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while ( !self fragButtonPressed() || isDefined( self.command ) )
|
while ( !self fragbuttonpressed() || isdefined( self.command ) )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln( "Attack - DeleteAll; ADS - Load" );
|
self iprintln( "Attack - deleteAll; ADS - Load" );
|
||||||
self iprintln( "Else(wait) - Delete" );
|
self iprintln( "Else(wait) - delete" );
|
||||||
|
|
||||||
wait getDvarFloat( "bots_main_debug_commandWait" );
|
wait getdvarfloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
if ( self attackButtonPressed() )
|
if ( self attackbuttonpressed() )
|
||||||
|
{
|
||||||
self deleteAllWaypoints();
|
self deleteAllWaypoints();
|
||||||
else if ( self adsButtonPressed() )
|
}
|
||||||
|
else if ( self adsbuttonpressed() )
|
||||||
|
{
|
||||||
self LoadWaypoints();
|
self LoadWaypoints();
|
||||||
|
}
|
||||||
else
|
else
|
||||||
self DeleteWaypoint( self.closest );
|
{
|
||||||
|
self deleteWaypoint( self.closest );
|
||||||
|
}
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while ( self fragButtonPressed() )
|
while ( self fragbuttonpressed() )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
watchSaveWaypointsCommand()
|
watchSaveWaypointsCommand()
|
||||||
{
|
{
|
||||||
@@ -259,16 +309,18 @@ watchSaveWaypointsCommand()
|
|||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
while ( !self useButtonPressed() || !self attackButtonPressed() || isDefined( self.command ) )
|
while ( !self usebuttonpressed() || !self attackbuttonpressed() || isdefined( self.command ) )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
|
}
|
||||||
|
|
||||||
self.command = true;
|
self.command = true;
|
||||||
|
|
||||||
self iprintln( "ADS - Autolink; Else(wait) - Save" );
|
self iprintln( "ADS - Autolink; Else(wait) - Save" );
|
||||||
|
|
||||||
wait getDvarFloat( "bots_main_debug_commandWait" );
|
wait getdvarfloat( "bots_main_debug_commandWait" );
|
||||||
|
|
||||||
if ( !self adsButtonPressed() )
|
if ( !self adsbuttonpressed() )
|
||||||
{
|
{
|
||||||
self checkForWarnings();
|
self checkForWarnings();
|
||||||
wait 1;
|
wait 1;
|
||||||
@@ -279,7 +331,7 @@ watchSaveWaypointsCommand()
|
|||||||
logprint( "\n\n" + mpnm + "()\n{\n/*" );
|
logprint( "\n\n" + mpnm + "()\n{\n/*" );
|
||||||
logprint( "*/waypoints = [];\n/*" );
|
logprint( "*/waypoints = [];\n/*" );
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
logprint( "*/waypoints[ " + i + " ] = spawnstruct();\n/*" );
|
logprint( "*/waypoints[ " + i + " ] = spawnstruct();\n/*" );
|
||||||
logprint( "*/waypoints[ " + i + " ].origin = " + level.waypoints[ i ].origin + ";\n/*" );
|
logprint( "*/waypoints[ " + i + " ].origin = " + level.waypoints[ i ].origin + ";\n/*" );
|
||||||
@@ -290,20 +342,22 @@ watchSaveWaypointsCommand()
|
|||||||
logprint( "*/waypoints[ " + i + " ].children[ " + c + " ] = " + level.waypoints[ i ].children[ c ] + ";\n/*" );
|
logprint( "*/waypoints[ " + i + " ].children[ " + c + " ] = " + level.waypoints[ i ].children[ c ] + ";\n/*" );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( isDefined( level.waypoints[i].angles ) && ( level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || ( level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1 ) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade" ) )
|
if ( isdefined( level.waypoints[ i ].angles ) && ( level.waypoints[ i ].type == "claymore" || level.waypoints[ i ].type == "tube" || ( level.waypoints[ i ].type == "crouch" && level.waypoints[ i ].children.size == 1 ) || level.waypoints[ i ].type == "climb" || level.waypoints[ i ].type == "grenade" ) )
|
||||||
|
{
|
||||||
logprint( "*/waypoints[ " + i + " ].angles = " + level.waypoints[ i ].angles + ";\n/*" );
|
logprint( "*/waypoints[ " + i + " ].angles = " + level.waypoints[ i ].angles + ";\n/*" );
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
logprint( "*/return waypoints;\n}\n\n\n\n" );
|
logprint( "*/return waypoints;\n}\n\n\n\n" );
|
||||||
|
|
||||||
filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv";
|
filename = "waypoints/" + getdvar( "mapname" ) + "_wp.csv";
|
||||||
|
|
||||||
PrintLn( "********* Start Bot Warfare WPDump *********" );
|
println( "********* Start Bot Warfare WPDump *********" );
|
||||||
PrintLn( level.waypointCount );
|
println( level.waypointcount );
|
||||||
|
|
||||||
BotBuiltinFileWrite( filename, level.waypointCount + "\n", "write" );
|
BotBuiltinFileWrite( filename, level.waypointcount + "\n", "write" );
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
str = "";
|
str = "";
|
||||||
wp = level.waypoints[ i ];
|
wp = level.waypoints[ i ];
|
||||||
@@ -315,53 +369,61 @@ watchSaveWaypointsCommand()
|
|||||||
str += wp.children[ h ];
|
str += wp.children[ h ];
|
||||||
|
|
||||||
if ( h < wp.children.size - 1 )
|
if ( h < wp.children.size - 1 )
|
||||||
|
{
|
||||||
str += " ";
|
str += " ";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
str += "," + wp.type + ",";
|
str += "," + wp.type + ",";
|
||||||
|
|
||||||
if ( isDefined( wp.angles ) )
|
if ( isdefined( wp.angles ) )
|
||||||
|
{
|
||||||
str += wp.angles[ 0 ] + " " + wp.angles[ 1 ] + " " + wp.angles[ 2 ] + ",";
|
str += wp.angles[ 0 ] + " " + wp.angles[ 1 ] + " " + wp.angles[ 2 ] + ",";
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
str += ",";
|
str += ",";
|
||||||
|
}
|
||||||
|
|
||||||
str += ",";
|
str += ",";
|
||||||
|
|
||||||
PrintLn( str );
|
println( str );
|
||||||
BotBuiltinFileWrite( filename, str + "\n", "append" );
|
BotBuiltinFileWrite( filename, str + "\n", "append" );
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintLn( "\n\n\n\n\n\n" );
|
println( "\n\n\n\n\n\n" );
|
||||||
|
|
||||||
self iprintln( "Saved!!! to " + filename );
|
self iprintln( "Saved!!! to " + filename );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( level.autoLink )
|
if ( level.autolink )
|
||||||
{
|
{
|
||||||
self iPrintlnBold( "Auto link disabled" );
|
self iprintlnbold( "Auto link disabled" );
|
||||||
level.autoLink = false;
|
level.autolink = false;
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self iPrintlnBold( "Auto link enabled" );
|
self iprintlnbold( "Auto link enabled" );
|
||||||
level.autoLink = true;
|
level.autolink = true;
|
||||||
level.wpToLink = self.closest;
|
level.wptolink = self.closest;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.command = undefined;
|
self.command = undefined;
|
||||||
|
|
||||||
while ( self useButtonPressed() && self attackButtonPressed() )
|
while ( self usebuttonpressed() && self attackbuttonpressed() )
|
||||||
|
{
|
||||||
wait 0.05;
|
wait 0.05;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
LoadWaypoints()
|
LoadWaypoints()
|
||||||
{
|
{
|
||||||
self DeleteAllWaypoints();
|
self deleteAllWaypoints();
|
||||||
self iPrintlnBold( "Loading WPS..." );
|
self iprintlnbold( "Loading WPS..." );
|
||||||
load_waypoints();
|
load_waypoints();
|
||||||
|
|
||||||
wait 1;
|
wait 1;
|
||||||
@@ -371,25 +433,31 @@ LoadWaypoints()
|
|||||||
|
|
||||||
checkForWarnings()
|
checkForWarnings()
|
||||||
{
|
{
|
||||||
if ( level.waypointCount <= 0 )
|
if ( level.waypointcount <= 0 )
|
||||||
self iprintln( "WARNING: waypointCount is " + level.waypointCount );
|
|
||||||
|
|
||||||
if ( level.waypointCount != level.waypoints.size )
|
|
||||||
self iprintln( "WARNING: waypointCount is not " + level.waypoints.size );
|
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.waypoints[i] ) )
|
self iprintln( "WARNING: waypointCount is " + level.waypointcount );
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( level.waypointcount != level.waypoints.size )
|
||||||
|
{
|
||||||
|
self iprintln( "WARNING: waypointCount is not " + level.waypoints.size );
|
||||||
|
}
|
||||||
|
|
||||||
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
|
{
|
||||||
|
if ( !isdefined( level.waypoints[ i ] ) )
|
||||||
{
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " is undefined" );
|
self iprintln( "WARNING: waypoint " + i + " is undefined" );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.waypoints[ i ].children.size <= 0 )
|
if ( level.waypoints[ i ].children.size <= 0 )
|
||||||
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " childCount is " + level.waypoints[ i ].children.size );
|
self iprintln( "WARNING: waypoint " + i + " childCount is " + level.waypoints[ i ].children.size );
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if ( !isDefined( level.waypoints[i].children ) || !isDefined( level.waypoints[i].children.size ) )
|
if ( !isdefined( level.waypoints[ i ].children ) || !isdefined( level.waypoints[ i ].children.size ) )
|
||||||
{
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " children is not defined" );
|
self iprintln( "WARNING: waypoint " + i + " children is not defined" );
|
||||||
}
|
}
|
||||||
@@ -399,42 +467,48 @@ checkForWarnings()
|
|||||||
{
|
{
|
||||||
child = level.waypoints[ i ].children[ h ];
|
child = level.waypoints[ i ].children[ h ];
|
||||||
|
|
||||||
if ( !isDefined( level.waypoints[child] ) )
|
if ( !isdefined( level.waypoints[ child ] ) )
|
||||||
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " child " + child + " is undefined" );
|
self iprintln( "WARNING: waypoint " + i + " child " + child + " is undefined" );
|
||||||
|
}
|
||||||
else if ( child == i )
|
else if ( child == i )
|
||||||
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " child " + child + " is itself" );
|
self iprintln( "WARNING: waypoint " + i + " child " + child + " is itself" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( !isDefined( level.waypoints[i].type ) )
|
if ( !isdefined( level.waypoints[ i ].type ) )
|
||||||
{
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " type is undefined" );
|
self iprintln( "WARNING: waypoint " + i + " type is undefined" );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !isDefined( level.waypoints[i].angles ) && ( level.waypoints[i].type == "claymore" || level.waypoints[i].type == "tube" || ( level.waypoints[i].type == "crouch" && level.waypoints[i].children.size == 1 ) || level.waypoints[i].type == "climb" || level.waypoints[i].type == "grenade" ) )
|
if ( !isdefined( level.waypoints[ i ].angles ) && ( level.waypoints[ i ].type == "claymore" || level.waypoints[ i ].type == "tube" || ( level.waypoints[ i ].type == "crouch" && level.waypoints[ i ].children.size == 1 ) || level.waypoints[ i ].type == "climb" || level.waypoints[ i ].type == "grenade" ) )
|
||||||
|
{
|
||||||
self iprintln( "WARNING: waypoint " + i + " angles is undefined" );
|
self iprintln( "WARNING: waypoint " + i + " angles is undefined" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DeleteAllWaypoints()
|
deleteAllWaypoints()
|
||||||
{
|
{
|
||||||
level.waypoints = [];
|
level.waypoints = [];
|
||||||
level.waypointCount = 0;
|
level.waypointcount = 0;
|
||||||
|
|
||||||
self iprintln( "DelAllWps" );
|
self iprintln( "DelAllWps" );
|
||||||
}
|
}
|
||||||
|
|
||||||
DeleteWaypoint( nwp )
|
deleteWaypoint( nwp )
|
||||||
{
|
{
|
||||||
if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) )
|
if ( nwp == -1 || distance( self.origin, level.waypoints[ nwp ].origin ) > getdvarfloat( "bots_main_debug_minDist" ) )
|
||||||
{
|
{
|
||||||
self iprintln( "No close enough waypoint to delete." );
|
self iprintln( "No close enough waypoint to delete." );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
|
|
||||||
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
|
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
@@ -443,20 +517,22 @@ DeleteWaypoint( nwp )
|
|||||||
level.waypoints[ child ].children = array_remove( level.waypoints[ child ].children, nwp );
|
level.waypoints[ child ].children = array_remove( level.waypoints[ child ].children, nwp );
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( i = 0; i < level.waypointCount; i++ )
|
for ( i = 0; i < level.waypointcount; i++ )
|
||||||
{
|
{
|
||||||
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; h-- )
|
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; h-- )
|
||||||
{
|
{
|
||||||
if ( level.waypoints[ i ].children[ h ] > nwp )
|
if ( level.waypoints[ i ].children[ h ] > nwp )
|
||||||
|
{
|
||||||
level.waypoints[ i ].children[ h ]--;
|
level.waypoints[ i ].children[ h ]--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for ( entry = 0; entry < level.waypointCount; entry++ )
|
for ( entry = 0; entry < level.waypointcount; entry++ )
|
||||||
{
|
{
|
||||||
if ( entry == nwp )
|
if ( entry == nwp )
|
||||||
{
|
{
|
||||||
while ( entry < level.waypointCount - 1 )
|
while ( entry < level.waypointcount - 1 )
|
||||||
{
|
{
|
||||||
level.waypoints[ entry ] = level.waypoints[ entry + 1 ];
|
level.waypoints[ entry ] = level.waypoints[ entry + 1 ];
|
||||||
entry++;
|
entry++;
|
||||||
@@ -467,92 +543,104 @@ DeleteWaypoint( nwp )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypointCount--;
|
level.waypointcount--;
|
||||||
|
|
||||||
self iprintln( "DelWp " + nwp );
|
self iprintln( "DelWp " + nwp );
|
||||||
}
|
}
|
||||||
|
|
||||||
addWaypoint( pos )
|
addWaypoint( pos )
|
||||||
{
|
{
|
||||||
level.waypoints[level.waypointCount] = spawnstruct();
|
level.waypoints[ level.waypointcount ] = spawnstruct();
|
||||||
|
|
||||||
level.waypoints[level.waypointCount].origin = pos;
|
level.waypoints[ level.waypointcount ].origin = pos;
|
||||||
|
|
||||||
if ( self AdsButtonPressed() )
|
if ( self adsbuttonpressed() )
|
||||||
level.waypoints[level.waypointCount].type = "climb";
|
|
||||||
else if ( self AttackButtonPressed() && self UseButtonPressed() )
|
|
||||||
level.waypoints[level.waypointCount].type = "tube";
|
|
||||||
else if ( self AttackButtonPressed() )
|
|
||||||
level.waypoints[level.waypointCount].type = "grenade";
|
|
||||||
else if ( self UseButtonPressed() )
|
|
||||||
level.waypoints[level.waypointCount].type = "claymore";
|
|
||||||
else
|
|
||||||
level.waypoints[level.waypointCount].type = self getStance();
|
|
||||||
|
|
||||||
level.waypoints[level.waypointCount].angles = self getPlayerAngles();
|
|
||||||
|
|
||||||
level.waypoints[level.waypointCount].children = [];
|
|
||||||
|
|
||||||
self iprintln( level.waypoints[level.waypointCount].type + " Waypoint " + level.waypointCount + " Added at " + pos );
|
|
||||||
|
|
||||||
if ( level.autoLink )
|
|
||||||
{
|
{
|
||||||
if ( level.wpToLink == -1 )
|
level.waypoints[ level.waypointcount ].type = "climb";
|
||||||
level.wpToLink = level.waypointCount - 1;
|
}
|
||||||
|
else if ( self attackbuttonpressed() && self usebuttonpressed() )
|
||||||
level.waypointCount++;
|
{
|
||||||
self LinkWaypoint( level.waypointCount - 1 );
|
level.waypoints[ level.waypointcount ].type = "tube";
|
||||||
|
}
|
||||||
|
else if ( self attackbuttonpressed() )
|
||||||
|
{
|
||||||
|
level.waypoints[ level.waypointcount ].type = "grenade";
|
||||||
|
}
|
||||||
|
else if ( self usebuttonpressed() )
|
||||||
|
{
|
||||||
|
level.waypoints[ level.waypointcount ].type = "claymore";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
level.waypointCount++;
|
level.waypoints[ level.waypointcount ].type = self getstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
level.waypoints[ level.waypointcount ].angles = self getplayerangles();
|
||||||
|
|
||||||
|
level.waypoints[ level.waypointcount ].children = [];
|
||||||
|
|
||||||
|
self iprintln( level.waypoints[ level.waypointcount ].type + " Waypoint " + level.waypointcount + " Added at " + pos );
|
||||||
|
|
||||||
|
if ( level.autolink )
|
||||||
|
{
|
||||||
|
if ( level.wptolink == -1 )
|
||||||
|
{
|
||||||
|
level.wptolink = level.waypointcount - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
level.waypointcount++;
|
||||||
|
self LinkWaypoint( level.waypointcount - 1 );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
level.waypointcount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
UnLinkWaypoint( nwp )
|
UnLinkWaypoint( nwp )
|
||||||
{
|
{
|
||||||
if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) )
|
if ( nwp == -1 || distance( self.origin, level.waypoints[ nwp ].origin ) > getdvarfloat( "bots_main_debug_minDist" ) )
|
||||||
{
|
{
|
||||||
self iprintln( "Waypoint Unlink Cancelled " + level.wpToLink );
|
self iprintln( "Waypoint unlink Cancelled " + level.wptolink );
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.wpToLink == -1 || nwp == level.wpToLink )
|
if ( level.wptolink == -1 || nwp == level.wptolink )
|
||||||
{
|
{
|
||||||
level.wpToLink = nwp;
|
level.wptolink = nwp;
|
||||||
self iprintln( "Waypoint Unlink Started " + nwp );
|
self iprintln( "Waypoint unlink Started " + nwp );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypoints[nwp].children = array_remove( level.waypoints[nwp].children, level.wpToLink );
|
level.waypoints[ nwp ].children = array_remove( level.waypoints[ nwp ].children, level.wptolink );
|
||||||
level.waypoints[level.wpToLink].children = array_remove( level.waypoints[level.wpToLink].children, nwp );
|
level.waypoints[ level.wptolink ].children = array_remove( level.waypoints[ level.wptolink ].children, nwp );
|
||||||
|
|
||||||
self iprintln( "Waypoint " + nwp + " Broken to " + level.wpToLink );
|
self iprintln( "Waypoint " + nwp + " Broken to " + level.wptolink );
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkWaypoint( nwp )
|
LinkWaypoint( nwp )
|
||||||
{
|
{
|
||||||
if ( nwp == -1 || distance( self.origin, level.waypoints[nwp].origin ) > getDvarFloat( "bots_main_debug_minDist" ) )
|
if ( nwp == -1 || distance( self.origin, level.waypoints[ nwp ].origin ) > getdvarfloat( "bots_main_debug_minDist" ) )
|
||||||
{
|
{
|
||||||
self iprintln( "Waypoint Link Cancelled " + level.wpToLink );
|
self iprintln( "Waypoint Link Cancelled " + level.wptolink );
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( level.wpToLink == -1 || nwp == level.wpToLink )
|
if ( level.wptolink == -1 || nwp == level.wptolink )
|
||||||
{
|
{
|
||||||
level.wpToLink = nwp;
|
level.wptolink = nwp;
|
||||||
self iprintln( "Waypoint Link Started " + nwp );
|
self iprintln( "Waypoint Link Started " + nwp );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
weGood = true;
|
weGood = true;
|
||||||
|
|
||||||
for ( i = level.waypoints[level.wpToLink].children.size - 1; i >= 0; i-- )
|
for ( i = level.waypoints[ level.wptolink ].children.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
if ( level.waypoints[level.wpToLink].children[i] == nwp )
|
if ( level.waypoints[ level.wptolink ].children[ i ] == nwp )
|
||||||
{
|
{
|
||||||
weGood = false;
|
weGood = false;
|
||||||
break;
|
break;
|
||||||
@@ -563,7 +651,7 @@ LinkWaypoint( nwp )
|
|||||||
{
|
{
|
||||||
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
|
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
|
||||||
{
|
{
|
||||||
if ( level.waypoints[nwp].children[i] == level.wpToLink )
|
if ( level.waypoints[ nwp ].children[ i ] == level.wptolink )
|
||||||
{
|
{
|
||||||
weGood = false;
|
weGood = false;
|
||||||
break;
|
break;
|
||||||
@@ -573,16 +661,16 @@ LinkWaypoint( nwp )
|
|||||||
|
|
||||||
if ( !weGood )
|
if ( !weGood )
|
||||||
{
|
{
|
||||||
self iprintln( "Waypoint Link Cancelled " + nwp + " and " + level.wpToLink + " already linked." );
|
self iprintln( "Waypoint Link Cancelled " + nwp + " and " + level.wptolink + " already linked." );
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
level.waypoints[level.wpToLink].children[level.waypoints[level.wpToLink].children.size] = nwp;
|
level.waypoints[ level.wptolink ].children[ level.waypoints[ level.wptolink ].children.size ] = nwp;
|
||||||
level.waypoints[nwp].children[level.waypoints[nwp].children.size] = level.wpToLink;
|
level.waypoints[ nwp ].children[ level.waypoints[ nwp ].children.size ] = level.wptolink;
|
||||||
|
|
||||||
self iprintln( "Waypoint " + nwp + " Linked to " + level.wpToLink );
|
self iprintln( "Waypoint " + nwp + " Linked to " + level.wptolink );
|
||||||
level.wpToLink = -1;
|
level.wptolink = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
destroyOnDeath( hud )
|
destroyOnDeath( hud )
|
||||||
@@ -598,18 +686,18 @@ textScroll( string )
|
|||||||
self endon( "disconnect" );
|
self endon( "disconnect" );
|
||||||
// thanks ActionScript
|
// thanks ActionScript
|
||||||
|
|
||||||
back = createBar( ( 0, 0, 0 ), 1000, 30 );
|
back = createbar( ( 0, 0, 0 ), 1000, 30 );
|
||||||
back setPoint( "CENTER", undefined, 0, 220 );
|
back setpoint( "CENTER", undefined, 0, 220 );
|
||||||
self thread destroyOnDeath( back );
|
self thread destroyOnDeath( back );
|
||||||
|
|
||||||
text = createFontString( "default", 1.5 );
|
text = createfontstring( "default", 1.5 );
|
||||||
text setText( string );
|
text settext( string );
|
||||||
self thread destroyOnDeath( text );
|
self thread destroyOnDeath( text );
|
||||||
|
|
||||||
for ( ;; )
|
for ( ;; )
|
||||||
{
|
{
|
||||||
text setPoint( "CENTER", undefined, 1200, 220 );
|
text setpoint( "CENTER", undefined, 1200, 220 );
|
||||||
text setPoint( "CENTER", undefined, -1200, 220, 20 );
|
text setpoint( "CENTER", undefined, -1200, 220, 20 );
|
||||||
wait 20;
|
wait 20;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,19 +13,19 @@ init()
|
|||||||
|
|
||||||
do_printconsole( s )
|
do_printconsole( s )
|
||||||
{
|
{
|
||||||
PrintConsole( s );
|
printconsole( s );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_filewrite( file, contents, mode )
|
do_filewrite( file, contents, mode )
|
||||||
{
|
{
|
||||||
file = "scriptdata/" + file;
|
file = "scriptdata/" + file;
|
||||||
FileWrite( file, contents, mode );
|
filewrite( file, contents, mode );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_fileread( file )
|
do_fileread( file )
|
||||||
{
|
{
|
||||||
file = "scriptdata/" + file;
|
file = "scriptdata/" + file;
|
||||||
return FileRead( file );
|
return fileread( file );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_fileexists( file )
|
do_fileexists( file )
|
||||||
@@ -36,25 +36,25 @@ do_fileexists( file )
|
|||||||
|
|
||||||
do_botaction( action )
|
do_botaction( action )
|
||||||
{
|
{
|
||||||
self BotAction( action );
|
self botaction( action );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_botstop()
|
do_botstop()
|
||||||
{
|
{
|
||||||
self BotStop();
|
self botstop();
|
||||||
}
|
}
|
||||||
|
|
||||||
do_botmovement( forward, right )
|
do_botmovement( forward, right )
|
||||||
{
|
{
|
||||||
self BotMovement( forward, right );
|
self botmovement( forward, right );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_botmeleeparams( yaw, dist )
|
do_botmeleeparams( yaw, dist )
|
||||||
{
|
{
|
||||||
// self BotMeleeParams( yaw, dist );
|
// self botmeleeparams( yaw, dist );
|
||||||
}
|
}
|
||||||
|
|
||||||
do_isbot()
|
do_isbot()
|
||||||
{
|
{
|
||||||
return self isBot();
|
return self isbot();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user