curly braces, spacing, formatting, casing

This commit is contained in:
ineed bots 2023-12-21 20:26:04 -06:00
parent 5cf6960371
commit f58a9826ea
8 changed files with 4565 additions and 2469 deletions

View File

@ -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 )
{ {

View File

@ -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 ) );

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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;
} }
} }

View File

@ -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();
} }