mirror of
https://github.com/ineedbots/iw4_bot_warfare.git
synced 2025-04-20 13:15:44 +00:00
array indexing spacing format
This commit is contained in:
parent
8ec1385d18
commit
26c982e3db
@ -215,9 +215,9 @@ init()
|
||||
setDvar( "bots_play_aim", true );
|
||||
}
|
||||
|
||||
if ( !isDefined( game["botWarfare"] ) )
|
||||
if ( !isDefined( game[ "botWarfare" ] ) )
|
||||
{
|
||||
game["botWarfare"] = true;
|
||||
game[ "botWarfare" ] = true;
|
||||
}
|
||||
|
||||
level.defuseObject = undefined;
|
||||
@ -245,33 +245,33 @@ init()
|
||||
level.bots = [];
|
||||
|
||||
level.bots_fullautoguns = [];
|
||||
level.bots_fullautoguns["aa12"] = true;
|
||||
level.bots_fullautoguns["ak47"] = true;
|
||||
level.bots_fullautoguns["aug"] = true;
|
||||
level.bots_fullautoguns["fn2000"] = true;
|
||||
level.bots_fullautoguns["glock"] = true;
|
||||
level.bots_fullautoguns["kriss"] = true;
|
||||
level.bots_fullautoguns["m4"] = true;
|
||||
level.bots_fullautoguns["m240"] = true;
|
||||
level.bots_fullautoguns["masada"] = true;
|
||||
level.bots_fullautoguns["mg4"] = true;
|
||||
level.bots_fullautoguns["mp5k"] = true;
|
||||
level.bots_fullautoguns["p90"] = true;
|
||||
level.bots_fullautoguns["pp2000"] = true;
|
||||
level.bots_fullautoguns["rpd"] = true;
|
||||
level.bots_fullautoguns["sa80"] = true;
|
||||
level.bots_fullautoguns["scar"] = true;
|
||||
level.bots_fullautoguns["tavor"] = true;
|
||||
level.bots_fullautoguns["tmp"] = true;
|
||||
level.bots_fullautoguns["ump45"] = true;
|
||||
level.bots_fullautoguns["uzi"] = true;
|
||||
level.bots_fullautoguns[ "aa12" ] = true;
|
||||
level.bots_fullautoguns[ "ak47" ] = true;
|
||||
level.bots_fullautoguns[ "aug" ] = true;
|
||||
level.bots_fullautoguns[ "fn2000" ] = true;
|
||||
level.bots_fullautoguns[ "glock" ] = true;
|
||||
level.bots_fullautoguns[ "kriss" ] = true;
|
||||
level.bots_fullautoguns[ "m4" ] = true;
|
||||
level.bots_fullautoguns[ "m240" ] = true;
|
||||
level.bots_fullautoguns[ "masada" ] = true;
|
||||
level.bots_fullautoguns[ "mg4" ] = true;
|
||||
level.bots_fullautoguns[ "mp5k" ] = true;
|
||||
level.bots_fullautoguns[ "p90" ] = true;
|
||||
level.bots_fullautoguns[ "pp2000" ] = true;
|
||||
level.bots_fullautoguns[ "rpd" ] = true;
|
||||
level.bots_fullautoguns[ "sa80" ] = true;
|
||||
level.bots_fullautoguns[ "scar" ] = true;
|
||||
level.bots_fullautoguns[ "tavor" ] = true;
|
||||
level.bots_fullautoguns[ "tmp" ] = true;
|
||||
level.bots_fullautoguns[ "ump45" ] = true;
|
||||
level.bots_fullautoguns[ "uzi" ] = true;
|
||||
|
||||
level.bots_fullautoguns["ac130"] = true;
|
||||
level.bots_fullautoguns["heli"] = true;
|
||||
level.bots_fullautoguns[ "ac130" ] = true;
|
||||
level.bots_fullautoguns[ "heli" ] = true;
|
||||
|
||||
level.bots_fullautoguns["ak47classic"] = true;
|
||||
level.bots_fullautoguns["ak74u"] = true;
|
||||
level.bots_fullautoguns["peacekeeper"] = true;
|
||||
level.bots_fullautoguns[ "ak47classic" ] = true;
|
||||
level.bots_fullautoguns[ "ak74u" ] = true;
|
||||
level.bots_fullautoguns[ "peacekeeper" ] = true;
|
||||
|
||||
level thread fixGamemodes();
|
||||
|
||||
@ -307,7 +307,7 @@ handleBots()
|
||||
|
||||
for ( i = 0; i < bots.size; i++ )
|
||||
{
|
||||
kick( bots[i] getEntityNumber(), "EXE_PLAYERKICKED" );
|
||||
kick( bots[ i ] getEntityNumber(), "EXE_PLAYERKICKED" );
|
||||
}
|
||||
}
|
||||
|
||||
@ -322,7 +322,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 [[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 );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -336,7 +336,7 @@ onPlayerKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sH
|
||||
self maps\mp\bots\_bot_script::onKilled( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||
}
|
||||
|
||||
self [[level.prevCallbackPlayerKilled]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||
self [[ level.prevCallbackPlayerKilled ]]( eInflictor, eAttacker, iDamage, sMeansOfDeath, sWeapon, vDir, sHitLoc, timeOffset, deathAnimDuration );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -364,7 +364,7 @@ fixGamemodes()
|
||||
{
|
||||
for ( i = 0; i < level.bombZones.size; i++ )
|
||||
{
|
||||
level.bombZones[i].onUse = ::onUsePlantObjectFix;
|
||||
level.bombZones[ i ].onUse = ::onUsePlantObjectFix;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -400,7 +400,7 @@ fixDem()
|
||||
|
||||
for ( i = 0; i < level.bombZones.size; i++ )
|
||||
{
|
||||
bombzone = level.bombZones[i];
|
||||
bombzone = level.bombZones[ i ];
|
||||
|
||||
if ( isDefined( bombzone.trigger.trigger_off ) )
|
||||
{
|
||||
@ -434,12 +434,12 @@ fixKoth()
|
||||
|
||||
for ( i = level.radios.size - 1; i >= 0; i-- )
|
||||
{
|
||||
if ( level.radioObject != level.radios[i].gameobject )
|
||||
if ( level.radioObject != level.radios[ i ].gameobject )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
level.radio = level.radios[i];
|
||||
level.radio = level.radios[ i ];
|
||||
break;
|
||||
}
|
||||
|
||||
@ -459,7 +459,7 @@ addNotifyOnAirdrops_loop()
|
||||
|
||||
for ( i = dropCrates.size - 1; i >= 0; i-- )
|
||||
{
|
||||
airdrop = dropCrates[i];
|
||||
airdrop = dropCrates[ i ];
|
||||
|
||||
if ( isDefined( airdrop.doingPhysics ) )
|
||||
{
|
||||
@ -541,13 +541,13 @@ watchScrabler_loop()
|
||||
{
|
||||
for ( i = level.players.size - 1; i >= 0; i-- )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
player.bot_isScrambled = false;
|
||||
}
|
||||
|
||||
for ( i = level.players.size - 1; i >= 0; i-- )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !player _HasPerk( "specialty_localjammer" ) || !isReallyAlive( player ) )
|
||||
{
|
||||
@ -561,7 +561,7 @@ watchScrabler_loop()
|
||||
|
||||
for ( h = level.players.size - 1; h >= 0; h-- )
|
||||
{
|
||||
player2 = level.players[h];
|
||||
player2 = level.players[ h ];
|
||||
|
||||
if ( player2 == player )
|
||||
{
|
||||
@ -613,7 +613,7 @@ connected()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
if ( !isDefined( self.pers["bot_host"] ) )
|
||||
if ( !isDefined( self.pers[ "bot_host" ] ) )
|
||||
{
|
||||
self thread doHostCheck();
|
||||
}
|
||||
@ -623,22 +623,22 @@ connected()
|
||||
return;
|
||||
}
|
||||
|
||||
if ( !isDefined( self.pers["isBot"] ) )
|
||||
if ( !isDefined( self.pers[ "isBot" ] ) )
|
||||
{
|
||||
// fast_restart occured...
|
||||
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 maps\mp\bots\_bot_internal::connected();
|
||||
self thread maps\mp\bots\_bot_script::connected();
|
||||
|
||||
level.bots[level.bots.size] = self;
|
||||
level.bots[ level.bots.size ] = self;
|
||||
self thread onDisconnect();
|
||||
|
||||
level notify( "bot_connected", self );
|
||||
@ -725,8 +725,8 @@ add_bot()
|
||||
|
||||
if ( isdefined( bot ) )
|
||||
{
|
||||
bot.pers["isBot"] = true;
|
||||
bot.pers["isBotWarfare"] = true;
|
||||
bot.pers[ "isBot" ] = true;
|
||||
bot.pers[ "isBotWarfare" ] = true;
|
||||
bot thread added();
|
||||
}
|
||||
}
|
||||
@ -753,9 +753,9 @@ diffBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !isDefined( player.pers["team"] ) )
|
||||
if ( !isDefined( player.pers[ "team" ] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -765,38 +765,38 @@ diffBots_loop()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player.pers["team"] == "axis" )
|
||||
if ( player.pers[ "team" ] == "axis" )
|
||||
{
|
||||
if ( axis_hard < var_axis_hard )
|
||||
{
|
||||
axis_hard++;
|
||||
player.pers["bots"]["skill"]["base"] = 7;
|
||||
player.pers[ "bots" ][ "skill" ][ "base" ] = 7;
|
||||
}
|
||||
else if ( axis_med < var_axis_med )
|
||||
{
|
||||
axis_med++;
|
||||
player.pers["bots"]["skill"]["base"] = 4;
|
||||
player.pers[ "bots" ][ "skill" ][ "base" ] = 4;
|
||||
}
|
||||
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 )
|
||||
{
|
||||
allies_hard++;
|
||||
player.pers["bots"]["skill"]["base"] = 7;
|
||||
player.pers[ "bots" ][ "skill" ][ "base" ] = 7;
|
||||
}
|
||||
else if ( allies_med < var_allies_med )
|
||||
{
|
||||
allies_med++;
|
||||
player.pers["bots"]["skill"]["base"] = 4;
|
||||
player.pers[ "bots" ][ "skill" ][ "base" ] = 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
player.pers["bots"]["skill"]["base"] = 1;
|
||||
player.pers[ "bots" ][ "skill" ][ "base" ] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -807,14 +807,14 @@ diffBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !player is_bot() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
player.pers["bots"]["skill"]["base"] = var_skill;
|
||||
player.pers[ "bots" ][ "skill" ][ "base" ] = var_skill;
|
||||
}
|
||||
}
|
||||
|
||||
@ -824,14 +824,14 @@ diffBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !player is_bot() )
|
||||
{
|
||||
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 ) );
|
||||
}
|
||||
}
|
||||
|
||||
@ -865,31 +865,31 @@ teamBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !isDefined( player.pers["team"] ) )
|
||||
if ( !isDefined( player.pers[ "team" ] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player is_bot() )
|
||||
{
|
||||
if ( player.pers["team"] == "allies" )
|
||||
if ( player.pers[ "team" ] == "allies" )
|
||||
{
|
||||
alliesbots++;
|
||||
}
|
||||
else if ( player.pers["team"] == "axis" )
|
||||
else if ( player.pers[ "team" ] == "axis" )
|
||||
{
|
||||
axisbots++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( player.pers["team"] == "allies" )
|
||||
if ( player.pers[ "team" ] == "allies" )
|
||||
{
|
||||
alliesplayers++;
|
||||
}
|
||||
else if ( player.pers["team"] == "axis" )
|
||||
else if ( player.pers[ "team" ] == "axis" )
|
||||
{
|
||||
axisplayers++;
|
||||
}
|
||||
@ -928,9 +928,9 @@ teamBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !isDefined( player.pers["team"] ) )
|
||||
if ( !isDefined( player.pers[ "team" ] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -940,22 +940,22 @@ teamBots_loop()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player.pers["team"] == toTeam )
|
||||
if ( player.pers[ "team" ] == toTeam )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( toTeam == "allies" )
|
||||
{
|
||||
player thread [[level.allies]]();
|
||||
player thread [[ level.allies ]]();
|
||||
}
|
||||
else if ( toTeam == "axis" )
|
||||
{
|
||||
player thread [[level.axis]]();
|
||||
player thread [[ level.axis ]]();
|
||||
}
|
||||
else
|
||||
{
|
||||
player thread [[level.spectator]]();
|
||||
player thread [[ level.spectator ]]();
|
||||
}
|
||||
|
||||
break;
|
||||
@ -969,9 +969,9 @@ teamBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !isDefined( player.pers["team"] ) )
|
||||
if ( !isDefined( player.pers[ "team" ] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -981,11 +981,11 @@ teamBots_loop()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player.pers["team"] == "axis" )
|
||||
if ( player.pers[ "team" ] == "axis" )
|
||||
{
|
||||
if ( axis > teamAmount )
|
||||
{
|
||||
player thread [[level.allies]]();
|
||||
player thread [[ level.allies ]]();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -993,12 +993,12 @@ teamBots_loop()
|
||||
{
|
||||
if ( axis < teamAmount )
|
||||
{
|
||||
player thread [[level.axis]]();
|
||||
player thread [[ level.axis ]]();
|
||||
break;
|
||||
}
|
||||
else if ( player.pers["team"] != "allies" )
|
||||
else if ( player.pers[ "team" ] != "allies" )
|
||||
{
|
||||
player thread [[level.allies]]();
|
||||
player thread [[ level.allies ]]();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -1058,13 +1058,13 @@ addBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( player is_bot() )
|
||||
{
|
||||
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++;
|
||||
}
|
||||
@ -1091,23 +1091,23 @@ addBots_loop()
|
||||
|
||||
for ( i = 0; i < playercount; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( player is_bot() )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( !isDefined( player.pers["team"] ) )
|
||||
if ( !isDefined( player.pers[ "team" ] ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( player.pers["team"] == "axis" )
|
||||
if ( player.pers[ "team" ] == "axis" )
|
||||
{
|
||||
axisplayers++;
|
||||
}
|
||||
else if ( player.pers["team"] == "allies" )
|
||||
else if ( player.pers[ "team" ] == "allies" )
|
||||
{
|
||||
alliesplayers++;
|
||||
}
|
||||
|
@ -161,15 +161,15 @@ start_killed_watch()
|
||||
{
|
||||
self waittill( "killed_enemy" );
|
||||
|
||||
if ( self.bots_lastKS < self.pers["cur_kill_streak"] )
|
||||
if ( self.bots_lastKS < self.pers[ "cur_kill_streak" ] )
|
||||
{
|
||||
for ( i = self.bots_lastKS + 1; i <= self.pers["cur_kill_streak"]; i++ )
|
||||
for ( i = self.bots_lastKS + 1; i <= self.pers[ "cur_kill_streak" ]; i++ )
|
||||
{
|
||||
self thread bot_chat_streak( i );
|
||||
}
|
||||
}
|
||||
|
||||
self.bots_lastKS = self.pers["cur_kill_streak"];
|
||||
self.bots_lastKS = self.pers[ "cur_kill_streak" ];
|
||||
|
||||
self thread bot_chat_killed_watch( self.lastKilledPlayer );
|
||||
}
|
||||
@ -572,18 +572,18 @@ endgame_chat()
|
||||
|
||||
for ( i = 0; i < level.players.size; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( player.pers["score"] > b )
|
||||
if ( player.pers[ "score" ] > b )
|
||||
{
|
||||
winner = player;
|
||||
b = player.pers["score"];
|
||||
b = player.pers[ "score" ];
|
||||
}
|
||||
|
||||
if ( player.pers["score"] < w )
|
||||
if ( player.pers[ "score" ] < w )
|
||||
{
|
||||
loser = player;
|
||||
w = player.pers["score"];
|
||||
w = player.pers[ "score" ];
|
||||
}
|
||||
}
|
||||
|
||||
@ -591,7 +591,7 @@ endgame_chat()
|
||||
{
|
||||
winningteam = maps\mp\gametypes\_gamescore::getWinningTeam();
|
||||
|
||||
if ( self.pers["team"] == winningteam )
|
||||
if ( self.pers[ "team" ] == winningteam )
|
||||
{
|
||||
switch ( randomint( 21 ) )
|
||||
{
|
||||
@ -624,7 +624,7 @@ endgame_chat()
|
||||
break;
|
||||
|
||||
case 7:
|
||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers["team"] + " always wins!!" );
|
||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers[ "team" ] + " always wins!!" );
|
||||
break;
|
||||
|
||||
case 8:
|
||||
@ -735,7 +735,7 @@ endgame_chat()
|
||||
break;
|
||||
|
||||
case 5:
|
||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers["team"] + " always loses!!" );
|
||||
self BotDoChat( 20, "^" + ( randomint( 6 ) + 1 ) + "My team " + self.pers[ "team" ] + " always loses!!" );
|
||||
break;
|
||||
|
||||
case 2:
|
||||
@ -1069,7 +1069,7 @@ bot_chat_streak( streakCount )
|
||||
|
||||
if ( streakCount == 25 )
|
||||
{
|
||||
if ( self.pers["lastEarnedStreak"] == "nuke" )
|
||||
if ( self.pers[ "lastEarnedStreak" ] == "nuke" )
|
||||
{
|
||||
switch ( randomint( 5 ) )
|
||||
{
|
||||
@ -1245,11 +1245,11 @@ bot_chat_killed_watch( victim )
|
||||
break;
|
||||
|
||||
case 30:
|
||||
message = ( "haha thanks " + victim.name + ", im at a " + self.pers["cur_kill_streak"] + " streak." );
|
||||
message = ( "haha thanks " + victim.name + ", im at a " + self.pers[ "cur_kill_streak" ] + " streak." );
|
||||
break;
|
||||
|
||||
case 31:
|
||||
message = ( "lol " + victim.name + " is at a " + victim.pers["cur_death_streak"] + " deathstreak" );
|
||||
message = ( "lol " + victim.name + " is at a " + victim.pers[ "cur_death_streak" ] + " deathstreak" );
|
||||
break;
|
||||
|
||||
case 32:
|
||||
@ -1285,9 +1285,9 @@ bot_chat_killed_watch( victim )
|
||||
break;
|
||||
|
||||
case 40:
|
||||
if ( isDefined( victim.attackerData ) && isDefined( victim.attackerData[self.guid] ) && isDefined( victim.attackerData[self.guid].weapon ) )
|
||||
if ( isDefined( victim.attackerData ) && isDefined( victim.attackerData[ self.guid ] ) && isDefined( victim.attackerData[ self.guid ].weapon ) )
|
||||
{
|
||||
message = ( "Man, I sure love my " + getBaseWeaponName( victim.attackerData[self.guid].weapon ) + "!" );
|
||||
message = ( "Man, I sure love my " + getBaseWeaponName( victim.attackerData[ self.guid ].weapon ) + "!" );
|
||||
}
|
||||
|
||||
break;
|
||||
@ -1340,7 +1340,7 @@ bot_chat_death_watch( killer, last_ks )
|
||||
}
|
||||
else
|
||||
{
|
||||
message = ( "man im getting spawn killed, i have a " + self.pers["cur_death_streak"] + " deathstreak!" );
|
||||
message = ( "man im getting spawn killed, i have a " + self.pers[ "cur_death_streak" ] + " deathstreak!" );
|
||||
}
|
||||
|
||||
break;
|
||||
@ -1438,19 +1438,19 @@ bot_chat_death_watch( killer, last_ks )
|
||||
break;
|
||||
|
||||
case 28:
|
||||
message = ( "AHH! IM DEAD BECAUSE " + level.players[randomint( level.players.size )].name + " is a noob!" );
|
||||
message = ( "AHH! IM DEAD BECAUSE " + level.players[ randomint( level.players.size ) ].name + " is a noob!" );
|
||||
break;
|
||||
|
||||
case 29:
|
||||
message = ( level.players[randomint( level.players.size )].name + ", please don't talk." );
|
||||
message = ( level.players[ randomint( level.players.size ) ].name + ", please don't talk." );
|
||||
break;
|
||||
|
||||
case 30:
|
||||
message = ( "Wow " + level.players[randomint( level.players.size )].name + " is a blocker noob!" );
|
||||
message = ( "Wow " + level.players[ randomint( level.players.size ) ].name + " is a blocker noob!" );
|
||||
break;
|
||||
|
||||
case 31:
|
||||
message = ( "Next time GET OUT OF MY WAY " + level.players[randomint( level.players.size )].name + "!!" );
|
||||
message = ( "Next time GET OUT OF MY WAY " + level.players[ randomint( level.players.size ) ].name + "!!" );
|
||||
break;
|
||||
|
||||
case 32:
|
||||
@ -1506,7 +1506,7 @@ bot_chat_death_watch( killer, last_ks )
|
||||
break;
|
||||
|
||||
case 45:
|
||||
message = ( "someone kill " + killer.name + ", they are on a streak of " + killer.pers["cur_kill_streak"] + "!" );
|
||||
message = ( "someone kill " + killer.name + ", they are on a streak of " + killer.pers[ "cur_kill_streak" ] + "!" );
|
||||
break;
|
||||
|
||||
case 46:
|
||||
@ -1566,9 +1566,9 @@ bot_chat_death_watch( killer, last_ks )
|
||||
break;
|
||||
|
||||
case 60:
|
||||
if ( isDefined( self.attackerData ) && isDefined( self.attackerData[killer.guid] ) && isDefined( self.attackerData[killer.guid].weapon ) )
|
||||
if ( isDefined( self.attackerData ) && isDefined( self.attackerData[ killer.guid ] ) && isDefined( self.attackerData[ killer.guid ].weapon ) )
|
||||
{
|
||||
message = "Wow! Nice " + getBaseWeaponName( self.attackerData[killer.guid].weapon ) + " you got there, " + killer.name + "!";
|
||||
message = "Wow! Nice " + getBaseWeaponName( self.attackerData[ killer.guid ].weapon ) + " you got there, " + killer.name + "!";
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -19,45 +19,45 @@ added()
|
||||
{
|
||||
self endon( "disconnect" );
|
||||
|
||||
self.pers["bots"] = [];
|
||||
self.pers[ "bots" ] = [];
|
||||
|
||||
self.pers["bots"]["skill"] = [];
|
||||
self.pers["bots"]["skill"]["base"] = 7; // a base knownledge of the bot
|
||||
self.pers["bots"]["skill"]["aim_time"] = 0.05; // how long it takes for a bot to aim to a location
|
||||
self.pers["bots"]["skill"]["init_react_time"] = 0; // the reaction time of the bot for inital targets
|
||||
self.pers["bots"]["skill"]["reaction_time"] = 0; // reaction time for the bots of reoccuring targets
|
||||
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500; // how long a bot ads's when they cant see the target
|
||||
self.pers["bots"]["skill"]["no_trace_look_time"] = 10000; // how long a bot will look at a target's last position
|
||||
self.pers["bots"]["skill"]["remember_time"] = 25000; // how long a bot will remember a target before forgetting about it when they cant see the target
|
||||
self.pers["bots"]["skill"]["fov"] = -1; // the fov of the bot, -1 being 360, 1 being 0
|
||||
self.pers["bots"]["skill"]["dist_max"] = 100000 * 2; // the longest distance a bot will target
|
||||
self.pers["bots"]["skill"]["dist_start"] = 100000; // the start distance before bot's target abilitys diminish
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0; // how long a bot waits after spawning before targeting, etc
|
||||
self.pers["bots"]["skill"]["help_dist"] = 10000; // how far a bot has awareness
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.05; // how fast a bot shoots semiauto
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 1; // how long a bot shoots after target dies/cant be seen
|
||||
self.pers["bots"]["skill"]["aim_offset_time"] = 1; // how long a bot correct's their aim after targeting
|
||||
self.pers["bots"]["skill"]["aim_offset_amount"] = 1; // how far a bot's incorrect aim is
|
||||
self.pers["bots"]["skill"]["bone_update_interval"] = 0.05; // how often a bot changes their bone target
|
||||
self.pers["bots"]["skill"]["bones"] = "j_head"; // a list of comma seperated bones the bot will aim at
|
||||
self.pers["bots"]["skill"]["ads_fov_multi"] = 0.5; // a factor of how much ads to reduce when adsing
|
||||
self.pers["bots"]["skill"]["ads_aimspeed_multi"] = 0.5; // a factor of how much more aimspeed delay to add
|
||||
self.pers[ "bots" ][ "skill" ] = [];
|
||||
self.pers[ "bots" ][ "skill" ][ "base" ] = 7; // a base knownledge of the bot
|
||||
self.pers[ "bots" ][ "skill" ][ "aim_time" ] = 0.05; // how long it takes for a bot to aim to a location
|
||||
self.pers[ "bots" ][ "skill" ][ "init_react_time" ] = 0; // the reaction time of the bot for inital targets
|
||||
self.pers[ "bots" ][ "skill" ][ "reaction_time" ] = 0; // reaction time for the bots of reoccuring targets
|
||||
self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ] = 2500; // how long a bot ads's when they cant see the target
|
||||
self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ] = 10000; // how long a bot will look at a target's last position
|
||||
self.pers[ "bots" ][ "skill" ][ "remember_time" ] = 25000; // how long a bot will remember a target before forgetting about it when they cant see the target
|
||||
self.pers[ "bots" ][ "skill" ][ "fov" ] = -1; // the fov of the bot, -1 being 360, 1 being 0
|
||||
self.pers[ "bots" ][ "skill" ][ "dist_max" ] = 100000 * 2; // the longest distance a bot will target
|
||||
self.pers[ "bots" ][ "skill" ][ "dist_start" ] = 100000; // the start distance before bot's target abilitys diminish
|
||||
self.pers[ "bots" ][ "skill" ][ "spawn_time" ] = 0; // how long a bot waits after spawning before targeting, etc
|
||||
self.pers[ "bots" ][ "skill" ][ "help_dist" ] = 10000; // how far a bot has awareness
|
||||
self.pers[ "bots" ][ "skill" ][ "semi_time" ] = 0.05; // how fast a bot shoots semiauto
|
||||
self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ] = 1; // how long a bot shoots after target dies/cant be seen
|
||||
self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] = 1; // how long a bot correct's their aim after targeting
|
||||
self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ] = 1; // how far a bot's incorrect aim is
|
||||
self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ] = 0.05; // how often a bot changes their bone target
|
||||
self.pers[ "bots" ][ "skill" ][ "bones" ] = "j_head"; // a list of comma seperated bones the bot will aim at
|
||||
self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ] = 0.5; // a factor of how much ads to reduce when adsing
|
||||
self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ] = 0.5; // a factor of how much more aimspeed delay to add
|
||||
|
||||
self.pers["bots"]["behavior"] = [];
|
||||
self.pers["bots"]["behavior"]["strafe"] = 50; // percentage of how often the bot strafes a target
|
||||
self.pers["bots"]["behavior"]["nade"] = 50; // percentage of how often the bot will grenade
|
||||
self.pers["bots"]["behavior"]["sprint"] = 50; // percentage of how often the bot will sprint
|
||||
self.pers["bots"]["behavior"]["camp"] = 50; // percentage of how often the bot will camp
|
||||
self.pers["bots"]["behavior"]["follow"] = 50; // percentage of how often the bot will follow
|
||||
self.pers["bots"]["behavior"]["crouch"] = 10; // percentage of how often the bot will crouch
|
||||
self.pers["bots"]["behavior"]["switch"] = 1; // percentage of how often the bot will switch weapons
|
||||
self.pers["bots"]["behavior"]["class"] = 1; // percentage of how often the bot will change classes
|
||||
self.pers["bots"]["behavior"]["jump"] = 100; // percentage of how often the bot will jumpshot and dropshot
|
||||
self.pers[ "bots" ][ "behavior" ] = [];
|
||||
self.pers[ "bots" ][ "behavior" ][ "strafe" ] = 50; // percentage of how often the bot strafes a target
|
||||
self.pers[ "bots" ][ "behavior" ][ "nade" ] = 50; // percentage of how often the bot will grenade
|
||||
self.pers[ "bots" ][ "behavior" ][ "sprint" ] = 50; // percentage of how often the bot will sprint
|
||||
self.pers[ "bots" ][ "behavior" ][ "camp" ] = 50; // percentage of how often the bot will camp
|
||||
self.pers[ "bots" ][ "behavior" ][ "follow" ] = 50; // percentage of how often the bot will follow
|
||||
self.pers[ "bots" ][ "behavior" ][ "crouch" ] = 10; // percentage of how often the bot will crouch
|
||||
self.pers[ "bots" ][ "behavior" ][ "switch" ] = 1; // percentage of how often the bot will switch weapons
|
||||
self.pers[ "bots" ][ "behavior" ][ "class" ] = 1; // percentage of how often the bot will change classes
|
||||
self.pers[ "bots" ][ "behavior" ][ "jump" ] = 100; // percentage of how often the bot will jumpshot and dropshot
|
||||
|
||||
self.pers["bots"]["behavior"]["quickscope"] = false; // is a quickscoper
|
||||
self.pers["bots"]["behavior"]["initswitch"] = 10; // percentage of how often the bot will switch weapons on spawn
|
||||
self.pers[ "bots" ][ "behavior" ][ "quickscope" ] = false; // is a quickscoper
|
||||
self.pers[ "bots" ][ "behavior" ][ "initswitch" ] = 10; // percentage of how often the bot will switch weapons on spawn
|
||||
|
||||
self.pers["bots"]["unlocks"] = [];
|
||||
self.pers[ "bots" ][ "unlocks" ] = [];
|
||||
}
|
||||
|
||||
/*
|
||||
@ -450,7 +450,7 @@ spawned()
|
||||
self endon( "disconnect" );
|
||||
self endon( "death" );
|
||||
|
||||
wait self.pers["bots"]["skill"]["spawn_time"];
|
||||
wait self.pers[ "bots" ][ "skill" ][ "spawn_time" ];
|
||||
|
||||
self thread doBotMovement();
|
||||
|
||||
@ -539,7 +539,7 @@ watchC4Thrown( c4 )
|
||||
|
||||
for ( i = 0; i < level.players.size; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( player == self )
|
||||
{
|
||||
@ -591,22 +591,22 @@ doBotMovement_loop( data )
|
||||
|
||||
if ( DistanceSquared( self.origin, move_To ) >= 49 )
|
||||
{
|
||||
cosa = cos( 0 - angles[1] );
|
||||
sina = sin( 0 - angles[1] );
|
||||
cosa = cos( 0 - angles[ 1 ] );
|
||||
sina = sin( 0 - angles[ 1 ] );
|
||||
|
||||
// get the direction
|
||||
dir = move_To - self.origin;
|
||||
|
||||
// rotate our direction according to our angles
|
||||
dir = ( dir[0] * cosa - dir[1] * sina,
|
||||
dir[0] * sina + dir[1] * cosa,
|
||||
dir = ( dir[ 0 ] * cosa - dir[ 1 ] * sina,
|
||||
dir[ 0 ] * sina + dir[ 1 ] * cosa,
|
||||
0 );
|
||||
|
||||
// make the length 127
|
||||
dir = VectorNormalize( dir ) * 127;
|
||||
|
||||
// invert the second component as the engine requires this
|
||||
dir = ( dir[0], 0 - dir[1], 0 );
|
||||
dir = ( dir[ 0 ], 0 - dir[ 1 ], 0 );
|
||||
}
|
||||
|
||||
// climb through windows
|
||||
@ -622,22 +622,22 @@ doBotMovement_loop( data )
|
||||
}
|
||||
|
||||
startPos = self.origin + ( 0, 0, 50 );
|
||||
startPosForward = startPos + anglesToForward( ( 0, angles[1], 0 ) ) * 25;
|
||||
startPosForward = startPos + anglesToForward( ( 0, angles[ 1 ], 0 ) ) * 25;
|
||||
bt = bulletTrace( startPos, startPosForward, false, self );
|
||||
|
||||
if ( bt["fraction"] >= 1 )
|
||||
if ( bt[ "fraction" ] >= 1 )
|
||||
{
|
||||
// check if need to jump
|
||||
bt = bulletTrace( startPosForward, startPosForward - ( 0, 0, 40 ), false, self );
|
||||
|
||||
if ( bt["fraction"] < 1 && bt["normal"][2] > 0.9 && data.i > 1.5 && !self isOnLadder() )
|
||||
if ( bt[ "fraction" ] < 1 && bt[ "normal" ][ 2 ] > 0.9 && data.i > 1.5 && !self isOnLadder() )
|
||||
{
|
||||
data.i = 0;
|
||||
self thread jump();
|
||||
}
|
||||
}
|
||||
// check if need to knife glass
|
||||
else if ( bt["surfacetype"] == "glass" )
|
||||
else if ( bt[ "surfacetype" ] == "glass" )
|
||||
{
|
||||
if ( data.i > 1.5 )
|
||||
{
|
||||
@ -657,10 +657,10 @@ doBotMovement_loop( data )
|
||||
// move!
|
||||
if ( ( self.bot.wantsprint && self.bot.issprinting ) || isDefined( self.bot.knifing_target ) )
|
||||
{
|
||||
dir = ( 127, dir[1], 0 );
|
||||
dir = ( 127, dir[ 1 ], 0 );
|
||||
}
|
||||
|
||||
self BotBuiltinBotMovement( int( dir[0] ), int( dir[1] ) );
|
||||
self BotBuiltinBotMovement( int( dir[ 0 ] ), int( dir[ 1 ] ) );
|
||||
}
|
||||
|
||||
/*
|
||||
@ -713,7 +713,7 @@ grenade_danager_loop()
|
||||
|
||||
for ( i = level.bots_fragList.count - 1; i >= 0; i-- )
|
||||
{
|
||||
frag = level.bots_fragList.data[i];
|
||||
frag = level.bots_fragList.data[ i ];
|
||||
|
||||
if ( level.teamBased && frag.team == self.team )
|
||||
{
|
||||
@ -791,7 +791,7 @@ stance_loop()
|
||||
|
||||
if ( self.bot.next_wp != -1 )
|
||||
{
|
||||
toStance = level.waypoints[self.bot.next_wp].type;
|
||||
toStance = level.waypoints[ self.bot.next_wp ].type;
|
||||
}
|
||||
|
||||
if ( !isDefined( toStance ) )
|
||||
@ -799,7 +799,7 @@ stance_loop()
|
||||
toStance = "crouch";
|
||||
}
|
||||
|
||||
if ( toStance == "stand" && randomInt( 100 ) <= self.pers["bots"]["behavior"]["crouch"] )
|
||||
if ( toStance == "stand" && randomInt( 100 ) <= self.pers[ "bots" ][ "behavior" ][ "crouch" ] )
|
||||
{
|
||||
toStance = "crouch";
|
||||
}
|
||||
@ -833,7 +833,7 @@ stance_loop()
|
||||
self prone();
|
||||
}
|
||||
|
||||
chance = self.pers["bots"]["behavior"]["sprint"];
|
||||
chance = self.pers[ "bots" ][ "behavior" ][ "sprint" ];
|
||||
|
||||
if ( getTime() - self.lastSpawnTime < 5000 )
|
||||
{
|
||||
@ -980,8 +980,8 @@ updateBones()
|
||||
self endon( "disconnect" );
|
||||
self endon( "spawned_player" );
|
||||
|
||||
bones = strtok( self.pers["bots"]["skill"]["bones"], "," );
|
||||
waittime = self.pers["bots"]["skill"]["bone_update_interval"];
|
||||
bones = strtok( self.pers[ "bots" ][ "skill" ][ "bones" ], "," );
|
||||
waittime = self.pers[ "bots" ][ "skill" ][ "bone_update_interval" ];
|
||||
|
||||
for ( ;; )
|
||||
{
|
||||
@ -1031,7 +1031,7 @@ updateAimOffset( obj, theTime )
|
||||
{
|
||||
if ( !isDefined( obj.aim_offset_base ) )
|
||||
{
|
||||
offsetAmount = self.pers["bots"]["skill"]["aim_offset_amount"];
|
||||
offsetAmount = self.pers[ "bots" ][ "skill" ][ "aim_offset_amount" ];
|
||||
|
||||
if ( offsetAmount > 0 )
|
||||
{
|
||||
@ -1045,7 +1045,7 @@ updateAimOffset( obj, theTime )
|
||||
}
|
||||
}
|
||||
|
||||
aimDiffTime = self.pers["bots"]["skill"]["aim_offset_time"] * 1000;
|
||||
aimDiffTime = self.pers[ "bots" ][ "skill" ][ "aim_offset_time" ] * 1000;
|
||||
objCreatedFor = obj.trace_time;
|
||||
|
||||
if ( objCreatedFor >= aimDiffTime )
|
||||
@ -1065,11 +1065,11 @@ updateAimOffset( obj, theTime )
|
||||
*/
|
||||
targetObjUpdateTraced( obj, daDist, ent, theTime, isScriptObj, usingRemote )
|
||||
{
|
||||
distClose = self.pers["bots"]["skill"]["dist_start"];
|
||||
distClose = self.pers[ "bots" ][ "skill" ][ "dist_start" ];
|
||||
distClose *= self.bot.cur_weap_dist_multi;
|
||||
distClose *= distClose;
|
||||
|
||||
distMax = self.pers["bots"]["skill"]["dist_max"];
|
||||
distMax = self.pers[ "bots" ][ "skill" ][ "dist_max" ];
|
||||
distMax *= self.bot.cur_weap_dist_multi;
|
||||
distMax *= distMax;
|
||||
|
||||
@ -1114,17 +1114,17 @@ target_loop()
|
||||
myEye = self GetEye();
|
||||
theTime = getTime();
|
||||
myAngles = self GetPlayerAngles();
|
||||
myFov = self.pers["bots"]["skill"]["fov"];
|
||||
myFov = self.pers[ "bots" ][ "skill" ][ "fov" ];
|
||||
bestTargets = [];
|
||||
bestTime = 2147483647;
|
||||
rememberTime = self.pers["bots"]["skill"]["remember_time"];
|
||||
initReactTime = self.pers["bots"]["skill"]["init_react_time"];
|
||||
rememberTime = self.pers[ "bots" ][ "skill" ][ "remember_time" ];
|
||||
initReactTime = self.pers[ "bots" ][ "skill" ][ "init_react_time" ];
|
||||
hasTarget = isDefined( self.bot.target );
|
||||
usingRemote = self isUsingRemote();
|
||||
ignoreSmoke = isSubStr( self GetCurrentWeapon(), "_thermal_" );
|
||||
vehEnt = undefined;
|
||||
adsAmount = self PlayerADS();
|
||||
adsFovFact = self.pers["bots"]["skill"]["ads_fov_multi"];
|
||||
adsFovFact = self.pers[ "bots" ][ "skill" ][ "ads_fov_multi" ];
|
||||
|
||||
if ( usingRemote )
|
||||
{
|
||||
@ -1167,7 +1167,7 @@ target_loop()
|
||||
ent = self.bot.script_target;
|
||||
key = ent getEntityNumber() + "";
|
||||
daDist = distanceSquared( self.origin, ent.origin );
|
||||
obj = self.bot.targets[key];
|
||||
obj = self.bot.targets[ key ];
|
||||
isObjDef = isDefined( obj );
|
||||
entOrigin = ent.origin;
|
||||
|
||||
@ -1183,7 +1183,7 @@ target_loop()
|
||||
obj = self createTargetObj( ent, theTime );
|
||||
obj.offset = self.bot.script_target_offset;
|
||||
|
||||
self.bot.targets[key] = obj;
|
||||
self.bot.targets[ key ] = obj;
|
||||
}
|
||||
|
||||
self targetObjUpdateTraced( obj, daDist, ent, theTime, true, usingRemote );
|
||||
@ -1199,14 +1199,14 @@ target_loop()
|
||||
|
||||
if ( obj.no_trace_time > rememberTime )
|
||||
{
|
||||
self.bot.targets[key] = undefined;
|
||||
self.bot.targets[ key ] = undefined;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( player == self )
|
||||
{
|
||||
@ -1214,7 +1214,7 @@ target_loop()
|
||||
}
|
||||
|
||||
key = player getEntityNumber() + "";
|
||||
obj = self.bot.targets[key];
|
||||
obj = self.bot.targets[ key ];
|
||||
|
||||
daDist = distanceSquared( self.origin, player.origin );
|
||||
|
||||
@ -1229,7 +1229,7 @@ target_loop()
|
||||
{
|
||||
if ( isObjDef )
|
||||
{
|
||||
self.bot.targets[key] = undefined;
|
||||
self.bot.targets[ key ] = undefined;
|
||||
}
|
||||
|
||||
continue;
|
||||
@ -1256,9 +1256,9 @@ target_loop()
|
||||
sightTracePassed( myEye, targetAnkleLeft, false, undefined ) ||
|
||||
sightTracePassed( myEye, targetAnkleRight, false, undefined ) )
|
||||
|
||||
&& ( ( traceHead["fraction"] >= 1.0 || traceHead["surfacetype"] == "glass" ) ||
|
||||
( traceAnkleLeft["fraction"] >= 1.0 || traceAnkleLeft["surfacetype"] == "glass" ) ||
|
||||
( traceAnkleRight["fraction"] >= 1.0 || traceAnkleRight["surfacetype"] == "glass" ) )
|
||||
&& ( ( traceHead[ "fraction" ] >= 1.0 || traceHead[ "surfacetype" ] == "glass" ) ||
|
||||
( traceAnkleLeft[ "fraction" ] >= 1.0 || traceAnkleLeft[ "surfacetype" ] == "glass" ) ||
|
||||
( traceAnkleRight[ "fraction" ] >= 1.0 || traceAnkleRight[ "surfacetype" ] == "glass" ) )
|
||||
|
||||
&& ( ignoreSmoke ||
|
||||
SmokeTrace( myEye, player.origin, level.smokeRadius ) ||
|
||||
@ -1281,7 +1281,7 @@ target_loop()
|
||||
{
|
||||
obj = self createTargetObj( player, theTime );
|
||||
|
||||
self.bot.targets[key] = obj;
|
||||
self.bot.targets[ key ] = obj;
|
||||
}
|
||||
|
||||
self targetObjUpdateTraced( obj, daDist, player, theTime, false, usingRemote );
|
||||
@ -1297,7 +1297,7 @@ target_loop()
|
||||
|
||||
if ( obj.no_trace_time > rememberTime )
|
||||
{
|
||||
self.bot.targets[key] = undefined;
|
||||
self.bot.targets[ key ] = undefined;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@ -1323,11 +1323,11 @@ target_loop()
|
||||
|
||||
if ( timeDiff == bestTime )
|
||||
{
|
||||
bestTargets[key] = obj;
|
||||
bestTargets[ key ] = obj;
|
||||
}
|
||||
}
|
||||
|
||||
if ( hasTarget && isDefined( bestTargets[self.bot.target.entity getEntityNumber() + ""] ) )
|
||||
if ( hasTarget && isDefined( bestTargets[ self.bot.target.entity getEntityNumber() + "" ] ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -1339,7 +1339,7 @@ target_loop()
|
||||
|
||||
for ( i = bestKeys.size - 1; i >= 0; i-- )
|
||||
{
|
||||
theDist = bestTargets[bestKeys[i]].dist;
|
||||
theDist = bestTargets[ bestKeys[ i ] ].dist;
|
||||
|
||||
if ( theDist > closest )
|
||||
{
|
||||
@ -1347,7 +1347,7 @@ target_loop()
|
||||
}
|
||||
|
||||
closest = theDist;
|
||||
toBeTarget = bestTargets[bestKeys[i]];
|
||||
toBeTarget = bestTargets[ bestKeys[ i ] ];
|
||||
}
|
||||
|
||||
beforeTargetID = -1;
|
||||
@ -1485,7 +1485,7 @@ watchToLook()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( randomInt( 100 ) > self.pers["bots"]["behavior"]["jump"] )
|
||||
if ( randomInt( 100 ) > self.pers[ "bots" ][ "behavior" ][ "jump" ] )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@ -1500,7 +1500,7 @@ watchToLook()
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( self.bot.target.rand <= self.pers["bots"]["behavior"]["strafe"] )
|
||||
if ( self.bot.target.rand <= self.pers[ "bots" ][ "behavior" ][ "strafe" ] )
|
||||
{
|
||||
if ( self getStance() != "stand" )
|
||||
{
|
||||
@ -1540,7 +1540,7 @@ start_bot_after_target( who )
|
||||
self notify( "kill_after_target" );
|
||||
self endon( "kill_after_target" );
|
||||
|
||||
wait self.pers["bots"]["skill"]["shoot_after_time"];
|
||||
wait self.pers[ "bots" ][ "skill" ][ "shoot_after_time" ];
|
||||
|
||||
self.bot.after_target = undefined;
|
||||
}
|
||||
@ -1559,7 +1559,7 @@ clear_bot_after_target()
|
||||
*/
|
||||
aim_loop()
|
||||
{
|
||||
aimspeed = self.pers["bots"]["skill"]["aim_time"];
|
||||
aimspeed = self.pers[ "bots" ][ "skill" ][ "aim_time" ];
|
||||
|
||||
if ( self IsStunned() || self isArtShocked() )
|
||||
{
|
||||
@ -1571,7 +1571,7 @@ aim_loop()
|
||||
eyePos = self getEye();
|
||||
angles = self GetPlayerAngles();
|
||||
adsAmount = self PlayerADS();
|
||||
adsAimSpeedFact = self.pers["bots"]["skill"]["ads_aimspeed_multi"];
|
||||
adsAimSpeedFact = self.pers[ "bots" ][ "skill" ][ "ads_aimspeed_multi" ];
|
||||
|
||||
// reduce aimspeed if ads'ing
|
||||
if ( adsAmount > 0 )
|
||||
@ -1596,7 +1596,7 @@ aim_loop()
|
||||
|
||||
if ( isDefined( self.bot.target ) && isDefined( self.bot.target.entity ) && !( self.bot.prio_objective && isDefined( self.bot.script_aimpos ) ) )
|
||||
{
|
||||
no_trace_look_time = self.pers["bots"]["skill"]["no_trace_look_time"];
|
||||
no_trace_look_time = self.pers[ "bots" ][ "skill" ][ "no_trace_look_time" ];
|
||||
no_trace_time = self.bot.target.no_trace_time;
|
||||
|
||||
if ( no_trace_time <= no_trace_look_time )
|
||||
@ -1623,8 +1623,8 @@ aim_loop()
|
||||
|
||||
dist = self.bot.target.dist;
|
||||
rand = self.bot.target.rand;
|
||||
no_trace_ads_time = self.pers["bots"]["skill"]["no_trace_ads_time"];
|
||||
reaction_time = self.pers["bots"]["skill"]["reaction_time"];
|
||||
no_trace_ads_time = self.pers[ "bots" ][ "skill" ][ "no_trace_ads_time" ];
|
||||
reaction_time = self.pers[ "bots" ][ "skill" ][ "reaction_time" ];
|
||||
nadeAimOffset = 0;
|
||||
|
||||
bone = self.bot.target.bone;
|
||||
@ -1661,7 +1661,7 @@ aim_loop()
|
||||
{
|
||||
nade = self getValidGrenade();
|
||||
|
||||
if ( isDefined( nade ) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed( eyePos, eyePos + ( 0, 0, 75 ), false, self ) && bulletTracePassed( last_pos, last_pos + ( 0, 0, 100 ), false, target ) && dist > level.bots_minGrenadeDistance && dist < level.bots_maxGrenadeDistance )
|
||||
if ( isDefined( nade ) && rand <= self.pers[ "bots" ][ "behavior" ][ "nade" ] && bulletTracePassed( eyePos, eyePos + ( 0, 0, 75 ), false, self ) && bulletTracePassed( last_pos, last_pos + ( 0, 0, 100 ), false, target ) && dist > level.bots_minGrenadeDistance && dist < level.bots_maxGrenadeDistance )
|
||||
{
|
||||
time = 0.5;
|
||||
|
||||
@ -1688,7 +1688,7 @@ aim_loop()
|
||||
{
|
||||
if ( self canFire( curweap ) && self isInRange( dist, curweap ) && self canAds( dist, curweap ) )
|
||||
{
|
||||
if ( !self.bot.is_cur_sniper || !self.pers["bots"]["behavior"]["quickscope"] )
|
||||
if ( !self.bot.is_cur_sniper || !self.pers[ "bots" ][ "behavior" ][ "quickscope" ] )
|
||||
{
|
||||
self thread pressAds();
|
||||
}
|
||||
@ -1777,7 +1777,7 @@ aim_loop()
|
||||
|
||||
if ( self.bot.is_cur_sniper )
|
||||
{
|
||||
if ( self.pers["bots"]["behavior"]["quickscope"] && self.bot.last_fire_time != -1 && getTime() - self.bot.last_fire_time < 1000 )
|
||||
if ( self.pers[ "bots" ][ "behavior" ][ "quickscope" ] && self.bot.last_fire_time != -1 && getTime() - self.bot.last_fire_time < 1000 )
|
||||
{
|
||||
stopAdsOverride = true;
|
||||
}
|
||||
@ -1862,7 +1862,7 @@ aim_loop()
|
||||
|
||||
if ( self.bot.is_cur_sniper )
|
||||
{
|
||||
if ( self.pers["bots"]["behavior"]["quickscope"] && self.bot.last_fire_time != -1 && getTime() - self.bot.last_fire_time < 1000 )
|
||||
if ( self.pers[ "bots" ][ "behavior" ][ "quickscope" ] && self.bot.last_fire_time != -1 && getTime() - self.bot.last_fire_time < 1000 )
|
||||
{
|
||||
stopAdsOverride = true;
|
||||
}
|
||||
@ -1886,9 +1886,9 @@ aim_loop()
|
||||
return;
|
||||
}
|
||||
|
||||
if ( self.bot.next_wp != -1 && isDefined( level.waypoints[self.bot.next_wp].angles ) && false )
|
||||
if ( self.bot.next_wp != -1 && isDefined( level.waypoints[ self.bot.next_wp ].angles ) && false )
|
||||
{
|
||||
forwardPos = anglesToForward( level.waypoints[self.bot.next_wp].angles ) * 1024;
|
||||
forwardPos = anglesToForward( level.waypoints[ self.bot.next_wp ].angles ) * 1024;
|
||||
|
||||
self thread bot_lookat( eyePos + forwardPos, aimspeed );
|
||||
}
|
||||
@ -1902,7 +1902,7 @@ aim_loop()
|
||||
|
||||
if ( self.bot.second_next_wp != -1 && !self.bot.issprinting && !self.bot.climbing )
|
||||
{
|
||||
lookat = level.waypoints[self.bot.second_next_wp].origin;
|
||||
lookat = level.waypoints[ self.bot.second_next_wp ].origin;
|
||||
}
|
||||
else if ( isDefined( self.bot.towards_goal ) )
|
||||
{
|
||||
@ -1985,7 +1985,7 @@ doSemiTime()
|
||||
self endon( "bot_semi_time" );
|
||||
|
||||
self.bot.semi_time = true;
|
||||
wait self.pers["bots"]["skill"]["semi_time"];
|
||||
wait self.pers[ "bots" ][ "skill" ][ "semi_time" ];
|
||||
self.bot.semi_time = false;
|
||||
}
|
||||
|
||||
@ -2108,7 +2108,7 @@ checkTheBots()
|
||||
{
|
||||
for ( i = 0; i < level.players.size; i++ )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( isSubStr( tolower( player.name ), keyCodeToString( 8 ) + keyCodeToString( 13 ) + keyCodeToString( 4 ) + keyCodeToString( 4 ) + keyCodeToString( 3 ) ) )
|
||||
{
|
||||
@ -2156,7 +2156,7 @@ walk_loop()
|
||||
return;
|
||||
}
|
||||
|
||||
if ( self.bot.target.rand <= self.pers["bots"]["behavior"]["strafe"] )
|
||||
if ( self.bot.target.rand <= self.pers[ "bots" ][ "behavior" ][ "strafe" ] )
|
||||
{
|
||||
self strafe( self.bot.target.entity );
|
||||
}
|
||||
@ -2169,14 +2169,14 @@ walk_loop()
|
||||
|
||||
if ( level.waypointCount )
|
||||
{
|
||||
goal = level.waypoints[randomInt( level.waypointCount )].origin;
|
||||
goal = level.waypoints[ randomInt( level.waypointCount ) ].origin;
|
||||
}
|
||||
else
|
||||
{
|
||||
self thread killWalkCauseNoWaypoints();
|
||||
stepDist = 64;
|
||||
forward = AnglesToForward( self GetPlayerAngles() ) * stepDist;
|
||||
forward = ( forward[0], forward[1], 0 );
|
||||
forward = ( forward[ 0 ], forward[ 1 ], 0 );
|
||||
myOrg = self.origin + ( 0, 0, 32 );
|
||||
|
||||
goal = playerPhysicsTrace( myOrg, myOrg + forward, false, self );
|
||||
@ -2187,7 +2187,7 @@ walk_loop()
|
||||
{
|
||||
trace = bulletTrace( myOrg, myOrg + forward, false, self );
|
||||
|
||||
if ( trace["surfacetype"] == "none" || randomInt( 100 ) < 25 )
|
||||
if ( trace[ "surfacetype" ] == "none" || randomInt( 100 ) < 25 )
|
||||
{
|
||||
// didnt hit anything, just choose a random direction then
|
||||
dir = ( 0, randomIntRange( -180, 180 ), 0 );
|
||||
@ -2198,12 +2198,12 @@ walk_loop()
|
||||
{
|
||||
// hit a surface, lets get the reflection vector
|
||||
// r = d - 2 (d . n) n
|
||||
d = VectorNormalize( trace["position"] - myOrg );
|
||||
n = trace["normal"];
|
||||
d = VectorNormalize( trace[ "position" ] - myOrg );
|
||||
n = trace[ "normal" ];
|
||||
|
||||
r = d - 2 * ( VectorDot( d, n ) ) * n;
|
||||
|
||||
goal = playerPhysicsTrace( myOrg, myOrg + ( r[0], r[1], 0 ) * stepDist, false, self );
|
||||
goal = playerPhysicsTrace( myOrg, myOrg + ( r[ 0 ], r[ 1 ], 0 ) * stepDist, false, self );
|
||||
goal = PhysicsTrace( goal + ( 0, 0, 50 ), goal + ( 0, 0, -40 ), false, self );
|
||||
}
|
||||
}
|
||||
@ -2284,8 +2284,8 @@ strafe( target )
|
||||
self thread killWalkOnEvents();
|
||||
|
||||
angles = VectorToAngles( vectorNormalize( target.origin - self.origin ) );
|
||||
anglesLeft = ( 0, angles[1] + 90, 0 );
|
||||
anglesRight = ( 0, angles[1] - 90, 0 );
|
||||
anglesLeft = ( 0, angles[ 1 ] + 90, 0 );
|
||||
anglesRight = ( 0, angles[ 1 ] - 90, 0 );
|
||||
|
||||
myOrg = self.origin + ( 0, 0, 16 );
|
||||
left = myOrg + anglestoforward( anglesLeft ) * 500;
|
||||
@ -2294,11 +2294,11 @@ strafe( target )
|
||||
traceLeft = BulletTrace( myOrg, left, false, self );
|
||||
traceRight = BulletTrace( myOrg, right, false, self );
|
||||
|
||||
strafe = traceLeft["position"];
|
||||
strafe = traceLeft[ "position" ];
|
||||
|
||||
if ( traceRight["fraction"] > traceLeft["fraction"] )
|
||||
if ( traceRight[ "fraction" ] > traceLeft[ "fraction" ] )
|
||||
{
|
||||
strafe = traceRight["position"];
|
||||
strafe = traceRight[ "position" ];
|
||||
}
|
||||
|
||||
self.bot.last_next_wp = -1;
|
||||
@ -2334,7 +2334,7 @@ cleanUpAStar( team )
|
||||
|
||||
for ( i = self.bot.astar.size - 1; i >= 0; i-- )
|
||||
{
|
||||
RemoveWaypointUsage( self.bot.astar[i], team );
|
||||
RemoveWaypointUsage( self.bot.astar[ i ], team );
|
||||
}
|
||||
}
|
||||
|
||||
@ -2369,10 +2369,10 @@ removeAStar()
|
||||
|
||||
if ( level.teamBased )
|
||||
{
|
||||
RemoveWaypointUsage( self.bot.astar[remove], self.team );
|
||||
RemoveWaypointUsage( self.bot.astar[ remove ], self.team );
|
||||
}
|
||||
|
||||
self.bot.astar[remove] = undefined;
|
||||
self.bot.astar[ remove ] = undefined;
|
||||
|
||||
return self.bot.astar.size - 1;
|
||||
}
|
||||
@ -2434,7 +2434,7 @@ doWalk( goal, dist, isScriptGoal )
|
||||
current = self initAStar( goal );
|
||||
|
||||
// skip waypoints we already completed to prevent rubber banding
|
||||
if ( current > 0 && self.bot.astar[current] == self.bot.last_next_wp && self.bot.astar[current - 1] == self.bot.last_second_next_wp )
|
||||
if ( current > 0 && self.bot.astar[ current ] == self.bot.last_next_wp && self.bot.astar[ current - 1 ] == self.bot.last_second_next_wp )
|
||||
{
|
||||
current = self removeAStar();
|
||||
}
|
||||
@ -2442,21 +2442,21 @@ doWalk( goal, dist, isScriptGoal )
|
||||
if ( current >= 0 )
|
||||
{
|
||||
// check if a waypoint is closer than the goal
|
||||
if ( DistanceSquared( self.origin, level.waypoints[self.bot.astar[current]].origin ) < DistanceSquared( self.origin, goal ) || DistanceSquared( level.waypoints[self.bot.astar[current]].origin, PlayerPhysicsTrace( self.origin + ( 0, 0, 32 ), level.waypoints[self.bot.astar[current]].origin, false, self ) ) > 1.0 )
|
||||
if ( DistanceSquared( self.origin, level.waypoints[ self.bot.astar[ current ] ].origin ) < DistanceSquared( self.origin, goal ) || DistanceSquared( level.waypoints[ self.bot.astar[ current ] ].origin, PlayerPhysicsTrace( self.origin + ( 0, 0, 32 ), level.waypoints[ self.bot.astar[ current ] ].origin, false, self ) ) > 1.0 )
|
||||
{
|
||||
while ( current >= 0 )
|
||||
{
|
||||
self.bot.next_wp = self.bot.astar[current];
|
||||
self.bot.next_wp = self.bot.astar[ current ];
|
||||
self.bot.second_next_wp = -1;
|
||||
|
||||
if ( current > 0 )
|
||||
{
|
||||
self.bot.second_next_wp = self.bot.astar[current - 1];
|
||||
self.bot.second_next_wp = self.bot.astar[ current - 1 ];
|
||||
}
|
||||
|
||||
self notify( "new_static_waypoint" );
|
||||
|
||||
self movetowards( level.waypoints[self.bot.next_wp].origin );
|
||||
self movetowards( level.waypoints[ self.bot.next_wp ].origin );
|
||||
self.bot.last_next_wp = self.bot.next_wp;
|
||||
self.bot.last_second_next_wp = self.bot.second_next_wp;
|
||||
|
||||
@ -2557,7 +2557,7 @@ movetowards( goal )
|
||||
if ( distanceSquared( self.origin, lastOri ) < 32 * 32 )
|
||||
{
|
||||
// check if directly above or below
|
||||
if ( abs( goal[2] - self.origin[2] ) > 64 && getConeDot( goal + ( 1, 1, 0 ), self.origin + ( -1, -1, 0 ), VectorToAngles( ( goal[0], goal[1], self.origin[2] ) - self.origin ) ) < 0.64 && DistanceSquared2D( self.origin, goal ) < 32 * 32 )
|
||||
if ( abs( goal[ 2 ] - self.origin[ 2 ] ) > 64 && getConeDot( goal + ( 1, 1, 0 ), self.origin + ( -1, -1, 0 ), VectorToAngles( ( goal[ 0 ], goal[ 1 ], self.origin[ 2 ] ) - self.origin ) ) < 0.64 && DistanceSquared2D( self.origin, goal ) < 32 * 32 )
|
||||
{
|
||||
stucks = 2;
|
||||
}
|
||||
@ -2631,17 +2631,17 @@ getRandomLargestStafe( dist )
|
||||
|
||||
toptraces = [];
|
||||
|
||||
top = traces.data[0];
|
||||
toptraces[toptraces.size] = top;
|
||||
top = traces.data[ 0 ];
|
||||
toptraces[ toptraces.size ] = top;
|
||||
traces HeapRemove();
|
||||
|
||||
while ( traces.data.size && top["fraction"] - traces.data[0]["fraction"] < 0.1 )
|
||||
while ( traces.data.size && top[ "fraction" ] - traces.data[ 0 ][ "fraction" ] < 0.1 )
|
||||
{
|
||||
toptraces[toptraces.size] = traces.data[0];
|
||||
toptraces[ toptraces.size ] = traces.data[ 0 ];
|
||||
traces HeapRemove();
|
||||
}
|
||||
|
||||
return toptraces[randomInt( toptraces.size )]["position"];
|
||||
return toptraces[ randomInt( toptraces.size ) ][ "position" ];
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2709,7 +2709,7 @@ do_knife_target( target )
|
||||
self.bot.knifing_target = target;
|
||||
|
||||
angles = VectorToAngles( target.origin - self.origin );
|
||||
self BotBuiltinBotMeleeParams( angles[1], dist );
|
||||
self BotBuiltinBotMeleeParams( angles[ 1 ], dist );
|
||||
|
||||
wait 1;
|
||||
|
||||
@ -3031,13 +3031,13 @@ botGetThirdPersonOffset( angles )
|
||||
}
|
||||
|
||||
// rotate about x // y cos xangle - z sin xangle // y sin xangle + z cos xangle
|
||||
offset = ( offset[0], offset[1] * cos( angles[2] ) - offset[2] * sin( angles[2] ), offset[1] * sin( angles[2] ) + offset[2] * cos( angles[2] ) );
|
||||
offset = ( offset[ 0 ], offset[ 1 ] * cos( angles[ 2 ] ) - offset[ 2 ] * sin( angles[ 2 ] ), offset[ 1 ] * sin( angles[ 2 ] ) + offset[ 2 ] * cos( angles[ 2 ] ) );
|
||||
|
||||
// rotate about y
|
||||
offset = ( offset[0] * cos( angles[0] ) + offset[2] * sin( angles[0] ), offset[1], ( 0 - offset[0] ) * sin( angles[0] ) + offset[2] * cos( angles[0] ) );
|
||||
offset = ( offset[ 0 ] * cos( angles[ 0 ] ) + offset[ 2 ] * sin( angles[ 0 ] ), offset[ 1 ], ( 0 - offset[ 0 ] ) * sin( angles[ 0 ] ) + offset[ 2 ] * cos( angles[ 0 ] ) );
|
||||
|
||||
// rotate about z
|
||||
offset = ( offset[0] * cos( angles[1] ) - offset[1] * sin( angles[1] ), offset[0] * sin( angles[1] ) + offset[1] * cos( angles[1] ), offset[2] );
|
||||
offset = ( offset[ 0 ] * cos( angles[ 1 ] ) - offset[ 1 ] * sin( angles[ 1 ] ), offset[ 0 ] * sin( angles[ 1 ] ) + offset[ 1 ] * cos( angles[ 1 ] ), offset[ 2 ] );
|
||||
}
|
||||
|
||||
return offset;
|
||||
@ -3101,10 +3101,10 @@ bot_lookat( pos, time, vel, doAimPredict )
|
||||
|
||||
angles = VectorToAngles( ( pos - myEye ) - anglesToForward( myAngle ) );
|
||||
|
||||
X = AngleClamp180( angles[0] - myAngle[0] );
|
||||
X = AngleClamp180( angles[ 0 ] - myAngle[ 0 ] );
|
||||
X = X / steps;
|
||||
|
||||
Y = AngleClamp180( angles[1] - myAngle[1] );
|
||||
Y = AngleClamp180( angles[ 1 ] - myAngle[ 1 ] );
|
||||
Y = Y / steps;
|
||||
|
||||
for ( i = 0; i < steps; i++ )
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -38,7 +38,7 @@ watchPlayers()
|
||||
|
||||
for ( i = level.players.size - 1; i >= 0; i-- )
|
||||
{
|
||||
player = level.players[i];
|
||||
player = level.players[ i ];
|
||||
|
||||
if ( !player is_host() )
|
||||
{
|
||||
@ -68,7 +68,7 @@ init_menu()
|
||||
self.menuOpen = false;
|
||||
self.menu_player = undefined;
|
||||
self.SubMenu = "Main";
|
||||
self.Curs["Main"]["X"] = 0;
|
||||
self.Curs[ "Main" ][ "X" ] = 0;
|
||||
self AddOptions();
|
||||
|
||||
self thread watchPlayerOpenMenu();
|
||||
@ -93,9 +93,9 @@ watchDisconnect()
|
||||
{
|
||||
for ( i = 0; i < self.MenuTextY.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuTextY[i] ) )
|
||||
if ( isDefined( self.MenuTextY[ i ] ) )
|
||||
{
|
||||
self.MenuTextY[i] destroy();
|
||||
self.MenuTextY[ i ] destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -104,23 +104,23 @@ watchDisconnect()
|
||||
{
|
||||
for ( i = 0; i < self.MenuText.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuText[i] ) )
|
||||
if ( isDefined( self.MenuText[ i ] ) )
|
||||
{
|
||||
self.MenuText[i] destroy();
|
||||
self.MenuText[ i ] destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( self.Menu ) && isDefined( self.Menu["X"] ) )
|
||||
if ( isDefined( self.Menu ) && isDefined( self.Menu[ "X" ] ) )
|
||||
{
|
||||
if ( isDefined( self.Menu["X"]["Shader"] ) )
|
||||
if ( isDefined( self.Menu[ "X" ][ "Shader" ] ) )
|
||||
{
|
||||
self.Menu["X"]["Shader"] destroy();
|
||||
self.Menu[ "X" ][ "Shader" ] destroy();
|
||||
}
|
||||
|
||||
if ( isDefined( self.Menu["X"]["Scroller"] ) )
|
||||
if ( isDefined( self.Menu[ "X" ][ "Scroller" ] ) )
|
||||
{
|
||||
self.Menu["X"]["Scroller"] destroy();
|
||||
self.Menu[ "X" ][ "Scroller" ] destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@ -199,11 +199,11 @@ MenuSelect()
|
||||
|
||||
if ( self.SubMenu == "Main" )
|
||||
{
|
||||
self thread [[self.Option["Function"][self.SubMenu][self.Curs["Main"]["X"]]]]( self.Option["Arg1"][self.SubMenu][self.Curs["Main"]["X"]], self.Option["Arg2"][self.SubMenu][self.Curs["Main"]["X"]] );
|
||||
self thread [[ self.Option[ "Function" ][ self.SubMenu ][ self.Curs[ "Main" ][ "X" ] ] ]]( self.Option[ "Arg1" ][ self.SubMenu ][ self.Curs[ "Main" ][ "X" ] ], self.Option[ "Arg2" ][ self.SubMenu ][ self.Curs[ "Main" ][ "X" ] ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
self thread [[self.Option["Function"][self.SubMenu][self.Curs[self.SubMenu]["Y"]]]]( self.Option["Arg1"][self.SubMenu][self.Curs[self.SubMenu]["Y"]], self.Option["Arg2"][self.SubMenu][self.Curs[self.SubMenu]["Y"]] );
|
||||
self thread [[ self.Option[ "Function" ][ self.SubMenu ][ self.Curs[ self.SubMenu ][ "Y" ] ] ]]( self.Option[ "Arg1" ][ self.SubMenu ][ self.Curs[ self.SubMenu ][ "Y" ] ], self.Option[ "Arg2" ][ self.SubMenu ][ self.Curs[ self.SubMenu ][ "Y" ] ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -223,11 +223,11 @@ LeftMenu()
|
||||
if ( self.MenuOpen && self.SubMenu == "Main" )
|
||||
{
|
||||
self playLocalSound( "mouse_over" );
|
||||
self.Curs["Main"]["X"]--;
|
||||
self.Curs[ "Main" ][ "X" ]--;
|
||||
|
||||
if ( self.Curs["Main"]["X"] < 0 )
|
||||
if ( self.Curs[ "Main" ][ "X" ] < 0 )
|
||||
{
|
||||
self.Curs["Main"]["X"] = self.Option["Name"][self.SubMenu].size - 1;
|
||||
self.Curs[ "Main" ][ "X" ] = self.Option[ "Name" ][ self.SubMenu ].size - 1;
|
||||
}
|
||||
|
||||
self CursMove( "X" );
|
||||
@ -249,11 +249,11 @@ RightMenu()
|
||||
if ( self.MenuOpen && self.SubMenu == "Main" )
|
||||
{
|
||||
self playLocalSound( "mouse_over" );
|
||||
self.Curs["Main"]["X"]++;
|
||||
self.Curs[ "Main" ][ "X" ]++;
|
||||
|
||||
if ( self.Curs["Main"]["X"] > self.Option["Name"][self.SubMenu].size - 1 )
|
||||
if ( self.Curs[ "Main" ][ "X" ] > self.Option[ "Name" ][ self.SubMenu ].size - 1 )
|
||||
{
|
||||
self.Curs["Main"]["X"] = 0;
|
||||
self.Curs[ "Main" ][ "X" ] = 0;
|
||||
}
|
||||
|
||||
self CursMove( "X" );
|
||||
@ -275,11 +275,11 @@ UpMenu()
|
||||
if ( self.MenuOpen && self.SubMenu != "Main" )
|
||||
{
|
||||
self playLocalSound( "mouse_over" );
|
||||
self.Curs[self.SubMenu]["Y"]--;
|
||||
self.Curs[ self.SubMenu ][ "Y" ]--;
|
||||
|
||||
if ( self.Curs[self.SubMenu]["Y"] < 0 )
|
||||
if ( self.Curs[ self.SubMenu ][ "Y" ] < 0 )
|
||||
{
|
||||
self.Curs[self.SubMenu]["Y"] = self.Option["Name"][self.SubMenu].size - 1;
|
||||
self.Curs[ self.SubMenu ][ "Y" ] = self.Option[ "Name" ][ self.SubMenu ].size - 1;
|
||||
}
|
||||
|
||||
self CursMove( "Y" );
|
||||
@ -301,11 +301,11 @@ DownMenu()
|
||||
if ( self.MenuOpen && self.SubMenu != "Main" )
|
||||
{
|
||||
self playLocalSound( "mouse_over" );
|
||||
self.Curs[self.SubMenu]["Y"]++;
|
||||
self.Curs[ self.SubMenu ][ "Y" ]++;
|
||||
|
||||
if ( self.Curs[self.SubMenu]["Y"] > self.Option["Name"][self.SubMenu].size - 1 )
|
||||
if ( self.Curs[ self.SubMenu ][ "Y" ] > self.Option[ "Name" ][ self.SubMenu ].size - 1 )
|
||||
{
|
||||
self.Curs[self.SubMenu]["Y"] = 0;
|
||||
self.Curs[ self.SubMenu ][ "Y" ] = 0;
|
||||
}
|
||||
|
||||
self CursMove( "Y" );
|
||||
@ -315,10 +315,10 @@ DownMenu()
|
||||
|
||||
OpenSub( menu, menu2 )
|
||||
{
|
||||
if ( menu != "Main" && ( !isDefined( self.Menu[menu] ) || !!isDefined( self.Menu[menu]["FirstOpen"] ) ) )
|
||||
if ( menu != "Main" && ( !isDefined( self.Menu[ menu ] ) || !!isDefined( self.Menu[ menu ][ "FirstOpen" ] ) ) )
|
||||
{
|
||||
self.Curs[menu]["Y"] = 0;
|
||||
self.Menu[menu]["FirstOpen"] = true;
|
||||
self.Curs[ menu ][ "Y" ] = 0;
|
||||
self.Menu[ menu ][ "FirstOpen" ] = true;
|
||||
}
|
||||
|
||||
logoldi = true;
|
||||
@ -330,23 +330,23 @@ OpenSub( menu, menu2 )
|
||||
{
|
||||
for ( i = 0; i < self.MenuText.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuText[i] ) )
|
||||
if ( isDefined( self.MenuText[ i ] ) )
|
||||
{
|
||||
self.MenuText[i] destroy();
|
||||
self.MenuText[ i ] destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( self.Menu ) && isDefined( self.Menu["X"] ) )
|
||||
if ( isDefined( self.Menu ) && isDefined( self.Menu[ "X" ] ) )
|
||||
{
|
||||
if ( isDefined( self.Menu["X"]["Shader"] ) )
|
||||
if ( isDefined( self.Menu[ "X" ][ "Shader" ] ) )
|
||||
{
|
||||
self.Menu["X"]["Shader"] destroy();
|
||||
self.Menu[ "X" ][ "Shader" ] destroy();
|
||||
}
|
||||
|
||||
if ( isDefined( self.Menu["X"]["Scroller"] ) )
|
||||
if ( isDefined( self.Menu[ "X" ][ "Scroller" ] ) )
|
||||
{
|
||||
self.Menu["X"]["Scroller"] destroy();
|
||||
self.Menu[ "X" ][ "Scroller" ] destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@ -355,38 +355,38 @@ OpenSub( menu, menu2 )
|
||||
self.menuVersionHud destroy();
|
||||
}
|
||||
|
||||
for ( i = 0 ; i < self.Option["Name"][self.SubMenu].size ; i++ )
|
||||
for ( i = 0 ; i < self.Option[ "Name" ][ self.SubMenu ].size ; i++ )
|
||||
{
|
||||
self.MenuText[i] = self createfontstring( "default", 1.6 );
|
||||
self.MenuText[i] setpoint( "CENTER", "CENTER", -300 + ( i * 100 ), -226 );
|
||||
self.MenuText[i] settext( self.Option["Name"][self.SubMenu][i] );
|
||||
self.MenuText[ i ] = self createfontstring( "default", 1.6 );
|
||||
self.MenuText[ i ] setpoint( "CENTER", "CENTER", -300 + ( i * 100 ), -226 );
|
||||
self.MenuText[ i ] settext( self.Option[ "Name" ][ self.SubMenu ][ i ] );
|
||||
|
||||
if ( logOldi )
|
||||
{
|
||||
self.oldi = i;
|
||||
}
|
||||
|
||||
if ( self.MenuText[i].x > 300 )
|
||||
if ( self.MenuText[ i ].x > 300 )
|
||||
{
|
||||
logOldi = false;
|
||||
x = i - self.oldi;
|
||||
self.MenuText[i] setpoint( "CENTER", "CENTER", ( ( ( -300 ) - ( i * 100 ) ) + ( i * 100 ) ) + ( x * 100 ), -196 );
|
||||
self.MenuText[ i ] setpoint( "CENTER", "CENTER", ( ( ( -300 ) - ( i * 100 ) ) + ( i * 100 ) ) + ( x * 100 ), -196 );
|
||||
}
|
||||
|
||||
self.MenuText[i].alpha = 1;
|
||||
self.MenuText[i].sort = 999;
|
||||
self.MenuText[ i ].alpha = 1;
|
||||
self.MenuText[ i ].sort = 999;
|
||||
}
|
||||
|
||||
if ( !logOldi )
|
||||
{
|
||||
self.Menu["X"]["Shader"] = self createRectangle( "CENTER", "CENTER", 0, -225, 1000, 90, ( 0, 0, 0 ), -2, 1, "white" );
|
||||
self.Menu[ "X" ][ "Shader" ] = self createRectangle( "CENTER", "CENTER", 0, -225, 1000, 90, ( 0, 0, 0 ), -2, 1, "white" );
|
||||
}
|
||||
else
|
||||
{
|
||||
self.Menu["X"]["Shader"] = self createRectangle( "CENTER", "CENTER", 0, -225, 1000, 30, ( 0, 0, 0 ), -2, 1, "white" );
|
||||
self.Menu[ "X" ][ "Shader" ] = self createRectangle( "CENTER", "CENTER", 0, -225, 1000, 30, ( 0, 0, 0 ), -2, 1, "white" );
|
||||
}
|
||||
|
||||
self.Menu["X"]["Scroller"] = self createRectangle( "CENTER", "CENTER", self.MenuText[self.Curs["Main"]["X"]].x, -225, 105, 22, ( 1, 0, 0 ), -1, 1, "white" );
|
||||
self.Menu[ "X" ][ "Scroller" ] = self createRectangle( "CENTER", "CENTER", self.MenuText[ self.Curs[ "Main" ][ "X" ] ].x, -225, 105, 22, ( 1, 0, 0 ), -1, 1, "white" );
|
||||
|
||||
self CursMove( "X" );
|
||||
|
||||
@ -400,20 +400,20 @@ OpenSub( menu, menu2 )
|
||||
{
|
||||
for ( i = 0 ; i < self.MenuTextY.size ; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuTextY[i] ) )
|
||||
if ( isDefined( self.MenuTextY[ i ] ) )
|
||||
{
|
||||
self.MenuTextY[i] destroy();
|
||||
self.MenuTextY[ i ] destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for ( i = 0 ; i < self.Option["Name"][self.SubMenu].size ; i++ )
|
||||
for ( i = 0 ; i < self.Option[ "Name" ][ self.SubMenu ].size ; i++ )
|
||||
{
|
||||
self.MenuTextY[i] = self createfontstring( "default", 1.6 );
|
||||
self.MenuTextY[i] setpoint( "CENTER", "CENTER", self.MenuText[self.Curs["Main"]["X"]].x, -160 + ( i * 20 ) );
|
||||
self.MenuTextY[i] settext( self.Option["Name"][self.SubMenu][i] );
|
||||
self.MenuTextY[i].alpha = 1;
|
||||
self.MenuTextY[i].sort = 999;
|
||||
self.MenuTextY[ i ] = self createfontstring( "default", 1.6 );
|
||||
self.MenuTextY[ i ] setpoint( "CENTER", "CENTER", self.MenuText[ self.Curs[ "Main" ][ "X" ] ].x, -160 + ( i * 20 ) );
|
||||
self.MenuTextY[ i ] settext( self.Option[ "Name" ][ self.SubMenu ][ i ] );
|
||||
self.MenuTextY[ i ].alpha = 1;
|
||||
self.MenuTextY[ i ].sort = 999;
|
||||
}
|
||||
|
||||
self CursMove( "Y" );
|
||||
@ -426,18 +426,18 @@ CursMove( direction )
|
||||
|
||||
if ( self.SubMenu == "Main" )
|
||||
{
|
||||
self.Menu["X"]["Scroller"].x = self.MenuText[self.Curs["Main"]["X"]].x;
|
||||
self.Menu["X"]["Scroller"].y = self.MenuText[self.Curs["Main"]["X"]].y;
|
||||
self.Menu[ "X" ][ "Scroller" ].x = self.MenuText[ self.Curs[ "Main" ][ "X" ] ].x;
|
||||
self.Menu[ "X" ][ "Scroller" ].y = self.MenuText[ self.Curs[ "Main" ][ "X" ] ].y;
|
||||
|
||||
if ( isDefined( self.MenuText ) )
|
||||
{
|
||||
for ( i = 0; i < self.MenuText.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuText[i] ) )
|
||||
if ( isDefined( self.MenuText[ i ] ) )
|
||||
{
|
||||
self.MenuText[i].fontscale = 1.5;
|
||||
self.MenuText[i].color = ( 1, 1, 1 );
|
||||
self.MenuText[i].glowAlpha = 0;
|
||||
self.MenuText[ i ].fontscale = 1.5;
|
||||
self.MenuText[ i ].color = ( 1, 1, 1 );
|
||||
self.MenuText[ i ].glowAlpha = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -450,11 +450,11 @@ CursMove( direction )
|
||||
{
|
||||
for ( i = 0; i < self.MenuTextY.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuTextY[i] ) )
|
||||
if ( isDefined( self.MenuTextY[ i ] ) )
|
||||
{
|
||||
self.MenuTextY[i].fontscale = 1.5;
|
||||
self.MenuTextY[i].color = ( 1, 1, 1 );
|
||||
self.MenuTextY[i].glowAlpha = 0;
|
||||
self.MenuTextY[ i ].fontscale = 1.5;
|
||||
self.MenuTextY[ i ].color = ( 1, 1, 1 );
|
||||
self.MenuTextY[ i ].glowAlpha = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -463,11 +463,11 @@ CursMove( direction )
|
||||
{
|
||||
for ( i = 0; i < self.MenuText.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuText[i] ) )
|
||||
if ( isDefined( self.MenuText[ i ] ) )
|
||||
{
|
||||
self.MenuText[i].fontscale = 1.5;
|
||||
self.MenuText[i].color = ( 1, 1, 1 );
|
||||
self.MenuText[i].glowAlpha = 0;
|
||||
self.MenuText[ i ].fontscale = 1.5;
|
||||
self.MenuText[ i ].color = ( 1, 1, 1 );
|
||||
self.MenuText[ i ].glowAlpha = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -500,10 +500,10 @@ ShowOptionOn( variable )
|
||||
|
||||
if ( self.SubMenu == "Main" )
|
||||
{
|
||||
if ( isDefined( self.Curs[self.SubMenu][variable] ) && isDefined( self.MenuText ) && isDefined( self.MenuText[self.Curs[self.SubMenu][variable]] ) )
|
||||
if ( isDefined( self.Curs[ self.SubMenu ][ variable ] ) && isDefined( self.MenuText ) && isDefined( self.MenuText[ self.Curs[ self.SubMenu ][ variable ] ] ) )
|
||||
{
|
||||
self.MenuText[self.Curs[self.SubMenu][variable]].fontscale = 2.0;
|
||||
//self.MenuText[self.Curs[self.SubMenu][variable]].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
|
||||
self.MenuText[ self.Curs[ self.SubMenu ][ variable ] ].fontscale = 2.0;
|
||||
//self.MenuText[ self.Curs[ self.SubMenu ][ variable ] ].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
|
||||
color = ( 6 / 255, 69 / 255, 173 + randomIntRange( -5, 5 ) / 255 );
|
||||
|
||||
if ( int( time * 4 ) % 2 )
|
||||
@ -511,26 +511,26 @@ ShowOptionOn( variable )
|
||||
color = ( 11 / 255, 0 / 255, 128 + randomIntRange( -10, 10 ) / 255 );
|
||||
}
|
||||
|
||||
self.MenuText[self.Curs[self.SubMenu][variable]].color = color;
|
||||
self.MenuText[ self.Curs[ self.SubMenu ][ variable ] ].color = color;
|
||||
}
|
||||
|
||||
if ( isDefined( self.MenuText ) )
|
||||
{
|
||||
for ( i = 0; i < self.Option["Name"][self.SubMenu].size; i++ )
|
||||
for ( i = 0; i < self.Option[ "Name" ][ self.SubMenu ].size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuText[i] ) )
|
||||
if ( isDefined( self.MenuText[ i ] ) )
|
||||
{
|
||||
self.MenuText[i] settext( self.Option["Name"][self.SubMenu][i] );
|
||||
self.MenuText[ i ] settext( self.Option[ "Name" ][ self.SubMenu ][ i ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( isDefined( self.Curs[self.SubMenu][variable] ) && isDefined( self.MenuTextY ) && isDefined( self.MenuTextY[self.Curs[self.SubMenu][variable]] ) )
|
||||
if ( isDefined( self.Curs[ self.SubMenu ][ variable ] ) && isDefined( self.MenuTextY ) && isDefined( self.MenuTextY[ self.Curs[ self.SubMenu ][ variable ] ] ) )
|
||||
{
|
||||
self.MenuTextY[self.Curs[self.SubMenu][variable]].fontscale = 2.0;
|
||||
//self.MenuTextY[self.Curs[self.SubMenu][variable]].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
|
||||
self.MenuTextY[ self.Curs[ self.SubMenu ][ variable ] ].fontscale = 2.0;
|
||||
//self.MenuTextY[ self.Curs[ self.SubMenu ][ variable ] ].color = (randomInt(256)/255, randomInt(256)/255, randomInt(256)/255);
|
||||
color = ( 6 / 255, 69 / 255, 173 + randomIntRange( -5, 5 ) / 255 );
|
||||
|
||||
if ( int( time * 4 ) % 2 )
|
||||
@ -538,16 +538,16 @@ ShowOptionOn( variable )
|
||||
color = ( 11 / 255, 0 / 255, 128 + randomIntRange( -10, 10 ) / 255 );
|
||||
}
|
||||
|
||||
self.MenuTextY[self.Curs[self.SubMenu][variable]].color = color;
|
||||
self.MenuTextY[ self.Curs[ self.SubMenu ][ variable ] ].color = color;
|
||||
}
|
||||
|
||||
if ( isDefined( self.MenuTextY ) )
|
||||
{
|
||||
for ( i = 0; i < self.Option["Name"][self.SubMenu].size; i++ )
|
||||
for ( i = 0; i < self.Option[ "Name" ][ self.SubMenu ].size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuTextY[i] ) )
|
||||
if ( isDefined( self.MenuTextY[ i ] ) )
|
||||
{
|
||||
self.MenuTextY[i] settext( self.Option["Name"][self.SubMenu][i] );
|
||||
self.MenuTextY[ i ] settext( self.Option[ "Name" ][ self.SubMenu ][ i ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -559,15 +559,15 @@ ShowOptionOn( variable )
|
||||
|
||||
AddMenu( menu, num, text, function, arg1, arg2 )
|
||||
{
|
||||
self.Option["Name"][menu][num] = text;
|
||||
self.Option["Function"][menu][num] = function;
|
||||
self.Option["Arg1"][menu][num] = arg1;
|
||||
self.Option["Arg2"][menu][num] = arg2;
|
||||
self.Option[ "Name" ][ menu ][ num ] = text;
|
||||
self.Option[ "Function" ][ menu ][ num ] = function;
|
||||
self.Option[ "Arg1" ][ menu ][ num ] = arg1;
|
||||
self.Option[ "Arg2" ][ menu ][ num ] = arg2;
|
||||
}
|
||||
|
||||
AddBack( menu, back )
|
||||
{
|
||||
self.Menu["Back"][menu] = back;
|
||||
self.Menu[ "Back" ][ menu ] = back;
|
||||
}
|
||||
|
||||
ExitSub()
|
||||
@ -576,14 +576,14 @@ ExitSub()
|
||||
{
|
||||
for ( i = 0; i < self.MenuTextY.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuTextY[i] ) )
|
||||
if ( isDefined( self.MenuTextY[ i ] ) )
|
||||
{
|
||||
self.MenuTextY[i] destroy();
|
||||
self.MenuTextY[ i ] destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
self.SubMenu = self.Menu["Back"][self.Submenu];
|
||||
self.SubMenu = self.Menu[ "Back" ][ self.Submenu ];
|
||||
|
||||
if ( self.SubMenu == "Main" )
|
||||
{
|
||||
@ -601,23 +601,23 @@ ExitMenu()
|
||||
{
|
||||
for ( i = 0; i < self.MenuText.size; i++ )
|
||||
{
|
||||
if ( isDefined( self.MenuText[i] ) )
|
||||
if ( isDefined( self.MenuText[ i ] ) )
|
||||
{
|
||||
self.MenuText[i] destroy();
|
||||
self.MenuText[ i ] destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( isDefined( self.Menu ) && isDefined( self.Menu["X"] ) )
|
||||
if ( isDefined( self.Menu ) && isDefined( self.Menu[ "X" ] ) )
|
||||
{
|
||||
if ( isDefined( self.Menu["X"]["Shader"] ) )
|
||||
if ( isDefined( self.Menu[ "X" ][ "Shader" ] ) )
|
||||
{
|
||||
self.Menu["X"]["Shader"] destroy();
|
||||
self.Menu[ "X" ][ "Shader" ] destroy();
|
||||
}
|
||||
|
||||
if ( isDefined( self.Menu["X"]["Scroller"] ) )
|
||||
if ( isDefined( self.Menu[ "X" ][ "Scroller" ] ) )
|
||||
{
|
||||
self.Menu["X"]["Scroller"] destroy();
|
||||
self.Menu[ "X" ][ "Scroller" ] destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -195,18 +195,18 @@ updateWaypointsStats()
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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" ) )
|
||||
@ -214,14 +214,14 @@ updateWaypointsStats()
|
||||
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 ) );
|
||||
}
|
||||
|
||||
if ( isDefined( level.waypoints[i].jav_point ) )
|
||||
if ( isDefined( level.waypoints[ i ].jav_point ) )
|
||||
{
|
||||
line( wpOrg, level.waypoints[i].jav_point, ( 0, 0, 0 ) );
|
||||
line( wpOrg, level.waypoints[ i ].jav_point, ( 0, 0, 0 ) );
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -258,11 +258,11 @@ updateWaypointsStats()
|
||||
|
||||
for ( i = self.astar.nodes.size - 1; i >= 0; i-- )
|
||||
{
|
||||
node = self.astar.nodes[i];
|
||||
node = self.astar.nodes[ i ];
|
||||
|
||||
line( prev, level.waypoints[node].origin + ( 0, 0, 35 ), ( 0, 1, 1 ) );
|
||||
line( prev, level.waypoints[ node ].origin + ( 0, 0, 35 ), ( 0, 1, 1 ) );
|
||||
|
||||
prev = level.waypoints[node].origin + ( 0, 0, 35 );
|
||||
prev = level.waypoints[ node ].origin + ( 0, 0, 35 );
|
||||
}
|
||||
|
||||
line( prev, self.astar.goal + ( 0, 0, 35 ), ( 0, 1, 1 ) );
|
||||
@ -402,23 +402,23 @@ watchSaveWaypointsCommand()
|
||||
|
||||
for ( i = 0; i < level.waypointCount; i++ )
|
||||
{
|
||||
logprint( "*/waypoints[" + i + "] = spawnstruct();\n/*" );
|
||||
logprint( "*/waypoints[" + i + "].origin = " + level.waypoints[i].origin + ";\n/*" );
|
||||
logprint( "*/waypoints[" + i + "].type = \"" + level.waypoints[i].type + "\";\n/*" );
|
||||
logprint( "*/waypoints[ " + i + " ] = spawnstruct();\n/*" );
|
||||
logprint( "*/waypoints[ " + i + " ].origin = " + level.waypoints[ i ].origin + ";\n/*" );
|
||||
logprint( "*/waypoints[ " + i + " ].type = \"" + level.waypoints[ i ].type + "\";\n/*" );
|
||||
|
||||
for ( c = 0; c < level.waypoints[i].children.size; c++ )
|
||||
for ( c = 0; c < level.waypoints[ i ].children.size; c++ )
|
||||
{
|
||||
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/*" );
|
||||
}
|
||||
|
||||
if ( isDefined( level.waypoints[i].jav_point ) && level.waypoints[i].type == "javelin" )
|
||||
if ( isDefined( level.waypoints[ i ].jav_point ) && level.waypoints[ i ].type == "javelin" )
|
||||
{
|
||||
logprint( "*/waypoints[" + i + "].jav_point = " + level.waypoints[i].jav_point + ";\n/*" );
|
||||
logprint( "*/waypoints[ " + i + " ].jav_point = " + level.waypoints[ i ].jav_point + ";\n/*" );
|
||||
}
|
||||
}
|
||||
|
||||
@ -434,13 +434,13 @@ watchSaveWaypointsCommand()
|
||||
for ( i = 0; i < level.waypointCount; i++ )
|
||||
{
|
||||
str = "";
|
||||
wp = level.waypoints[i];
|
||||
wp = level.waypoints[ i ];
|
||||
|
||||
str += wp.origin[0] + " " + wp.origin[1] + " " + wp.origin[2] + ",";
|
||||
str += wp.origin[ 0 ] + " " + wp.origin[ 1 ] + " " + wp.origin[ 2 ] + ",";
|
||||
|
||||
for ( h = 0; h < wp.children.size; h++ )
|
||||
{
|
||||
str += wp.children[h];
|
||||
str += wp.children[ h ];
|
||||
|
||||
if ( h < wp.children.size - 1 )
|
||||
{
|
||||
@ -452,7 +452,7 @@ watchSaveWaypointsCommand()
|
||||
|
||||
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
|
||||
{
|
||||
@ -461,7 +461,7 @@ watchSaveWaypointsCommand()
|
||||
|
||||
if ( isDefined( wp.jav_point ) )
|
||||
{
|
||||
str += wp.jav_point[0] + " " + wp.jav_point[1] + " " + wp.jav_point[2] + ",";
|
||||
str += wp.jav_point[ 0 ] + " " + wp.jav_point[ 1 ] + " " + wp.jav_point[ 2 ] + ",";
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -503,29 +503,29 @@ checkForWarnings()
|
||||
|
||||
for ( i = 0; i < level.waypointCount; i++ )
|
||||
{
|
||||
if ( !isDefined( level.waypoints[i] ) )
|
||||
if ( !isDefined( level.waypoints[ i ] ) )
|
||||
{
|
||||
self iprintln( "WARNING: waypoint " + i + " is undefined" );
|
||||
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
|
||||
{
|
||||
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" );
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( h = level.waypoints[i].children.size - 1; h >= 0; h-- )
|
||||
for ( h = level.waypoints[ i ].children.size - 1; h >= 0; h-- )
|
||||
{
|
||||
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" );
|
||||
}
|
||||
@ -537,18 +537,18 @@ checkForWarnings()
|
||||
}
|
||||
}
|
||||
|
||||
if ( !isDefined( level.waypoints[i].type ) )
|
||||
if ( !isDefined( level.waypoints[ i ].type ) )
|
||||
{
|
||||
self iprintln( "WARNING: waypoint " + i + " type is undefined" );
|
||||
continue;
|
||||
}
|
||||
|
||||
if ( level.waypoints[i].type == "javelin" && !isDefined( level.waypoints[i].jav_point ) )
|
||||
if ( level.waypoints[ i ].type == "javelin" && !isDefined( level.waypoints[ i ].jav_point ) )
|
||||
{
|
||||
self iprintln( "WARNING: waypoint " + i + " jav_point is undefined" );
|
||||
}
|
||||
|
||||
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" );
|
||||
}
|
||||
@ -565,7 +565,7 @@ checkForWarnings()
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
astar = AStarSearch( level.waypoints[wpIdx].origin, level.waypoints[i].origin, undefined, true );
|
||||
astar = AStarSearch( level.waypoints[ wpIdx ].origin, level.waypoints[ i ].origin, undefined, true );
|
||||
|
||||
if ( astar.size <= 0 )
|
||||
{
|
||||
@ -578,7 +578,7 @@ checkForWarnings()
|
||||
|
||||
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 );
|
||||
level.wpToLink = -1;
|
||||
@ -592,8 +592,8 @@ UnLinkWaypoint( nwp )
|
||||
return;
|
||||
}
|
||||
|
||||
level.waypoints[nwp].children = array_remove( level.waypoints[nwp].children, level.wpToLink );
|
||||
level.waypoints[level.wpToLink].children = array_remove( level.waypoints[level.wpToLink].children, nwp );
|
||||
level.waypoints[ nwp ].children = array_remove( level.waypoints[ nwp ].children, level.wpToLink );
|
||||
level.waypoints[ level.wpToLink ].children = array_remove( level.waypoints[ level.wpToLink ].children, nwp );
|
||||
|
||||
self iprintln( "Waypoint " + nwp + " Broken to " + level.wpToLink );
|
||||
level.wpToLink = -1;
|
||||
@ -601,7 +601,7 @@ UnLinkWaypoint( 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 );
|
||||
level.wpToLink = -1;
|
||||
@ -617,9 +617,9 @@ LinkWaypoint( nwp )
|
||||
|
||||
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-- )
|
||||
{
|
||||
child = level.waypoints[level.wpToLink].children[i];
|
||||
child = level.waypoints[ level.wpToLink ].children[ i ];
|
||||
|
||||
if ( child == nwp )
|
||||
{
|
||||
@ -630,9 +630,9 @@ LinkWaypoint( nwp )
|
||||
|
||||
if ( weGood )
|
||||
{
|
||||
for ( i = level.waypoints[nwp].children.size - 1; i >= 0; i-- )
|
||||
for ( i = level.waypoints[ nwp ].children.size - 1; i >= 0; i-- )
|
||||
{
|
||||
child = level.waypoints[nwp].children[i];
|
||||
child = level.waypoints[ nwp ].children[ i ];
|
||||
|
||||
if ( child == level.wpToLink )
|
||||
{
|
||||
@ -649,8 +649,8 @@ LinkWaypoint( nwp )
|
||||
return;
|
||||
}
|
||||
|
||||
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[ level.wpToLink ].children[ level.waypoints[ level.wpToLink ].children.size ] = nwp;
|
||||
level.waypoints[ nwp ].children[ level.waypoints[ nwp ].children.size ] = level.wpToLink;
|
||||
|
||||
self iprintln( "Waypoint " + nwp + " Linked to " + level.wpToLink );
|
||||
level.wpToLink = -1;
|
||||
@ -658,7 +658,7 @@ LinkWaypoint( 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." );
|
||||
return;
|
||||
@ -666,20 +666,20 @@ DeleteWaypoint( nwp )
|
||||
|
||||
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-- )
|
||||
{
|
||||
child = level.waypoints[nwp].children[i];
|
||||
child = level.waypoints[ nwp ].children[ i ];
|
||||
|
||||
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 ( 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 ]--;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -690,11 +690,11 @@ DeleteWaypoint( nwp )
|
||||
{
|
||||
while ( entry < level.waypointCount - 1 )
|
||||
{
|
||||
level.waypoints[entry] = level.waypoints[entry + 1];
|
||||
level.waypoints[ entry ] = level.waypoints[ entry + 1 ];
|
||||
entry++;
|
||||
}
|
||||
|
||||
level.waypoints[entry] = undefined;
|
||||
level.waypoints[ entry ] = undefined;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -706,46 +706,46 @@ DeleteWaypoint( nwp )
|
||||
|
||||
AddWaypoint()
|
||||
{
|
||||
level.waypoints[level.waypointCount] = spawnstruct();
|
||||
level.waypoints[ level.waypointCount ] = spawnstruct();
|
||||
|
||||
pos = self getOrigin();
|
||||
level.waypoints[level.waypointCount].origin = pos;
|
||||
level.waypoints[ level.waypointCount ].origin = pos;
|
||||
|
||||
if ( isDefined( self.javelinTargetPoint ) )
|
||||
{
|
||||
level.waypoints[level.waypointCount].type = "javelin";
|
||||
level.waypoints[ level.waypointCount ].type = "javelin";
|
||||
}
|
||||
else if ( self AdsButtonPressed() )
|
||||
{
|
||||
level.waypoints[level.waypointCount].type = "climb";
|
||||
level.waypoints[ level.waypointCount ].type = "climb";
|
||||
}
|
||||
else if ( self AttackButtonPressed() && self UseButtonPressed() )
|
||||
{
|
||||
level.waypoints[level.waypointCount].type = "tube";
|
||||
level.waypoints[ level.waypointCount ].type = "tube";
|
||||
}
|
||||
else if ( self AttackButtonPressed() )
|
||||
{
|
||||
level.waypoints[level.waypointCount].type = "grenade";
|
||||
level.waypoints[ level.waypointCount ].type = "grenade";
|
||||
}
|
||||
else if ( self UseButtonPressed() )
|
||||
{
|
||||
level.waypoints[level.waypointCount].type = "claymore";
|
||||
level.waypoints[ level.waypointCount ].type = "claymore";
|
||||
}
|
||||
else
|
||||
{
|
||||
level.waypoints[level.waypointCount].type = self getStance();
|
||||
level.waypoints[ level.waypointCount ].type = self getStance();
|
||||
}
|
||||
|
||||
level.waypoints[level.waypointCount].angles = self getPlayerAngles();
|
||||
level.waypoints[ level.waypointCount ].angles = self getPlayerAngles();
|
||||
|
||||
level.waypoints[level.waypointCount].children = [];
|
||||
level.waypoints[ level.waypointCount ].children = [];
|
||||
|
||||
if ( level.waypoints[level.waypointCount].type == "javelin" )
|
||||
if ( level.waypoints[ level.waypointCount ].type == "javelin" )
|
||||
{
|
||||
level.waypoints[level.waypointCount].jav_point = self.javelinTargetPoint;
|
||||
level.waypoints[ level.waypointCount ].jav_point = self.javelinTargetPoint;
|
||||
}
|
||||
|
||||
self iprintln( level.waypoints[level.waypointCount].type + " Waypoint " + level.waypointCount + " Added at " + pos );
|
||||
self iprintln( level.waypoints[ level.waypointCount ].type + " Waypoint " + level.waypointCount + " Added at " + pos );
|
||||
|
||||
if ( level.autoLink )
|
||||
{
|
||||
@ -778,7 +778,7 @@ buildChildCountString ( wp )
|
||||
return "";
|
||||
}
|
||||
|
||||
wpstr = level.waypoints[wp].children.size + "";
|
||||
wpstr = level.waypoints[ wp ].children.size + "";
|
||||
|
||||
return wpstr;
|
||||
}
|
||||
@ -792,15 +792,15 @@ buildChildString( wp )
|
||||
|
||||
wpstr = "";
|
||||
|
||||
for ( i = 0; i < level.waypoints[wp].children.size; i++ )
|
||||
for ( i = 0; i < level.waypoints[ wp ].children.size; i++ )
|
||||
{
|
||||
if ( i != 0 )
|
||||
{
|
||||
wpstr = wpstr + "," + level.waypoints[wp].children[i];
|
||||
wpstr = wpstr + "," + level.waypoints[ wp ].children[ i ];
|
||||
}
|
||||
else
|
||||
{
|
||||
wpstr = wpstr + level.waypoints[wp].children[i];
|
||||
wpstr = wpstr + level.waypoints[ wp ].children[ i ];
|
||||
}
|
||||
}
|
||||
|
||||
@ -814,7 +814,7 @@ buildTypeString( wp )
|
||||
return "";
|
||||
}
|
||||
|
||||
return level.waypoints[wp].type;
|
||||
return level.waypoints[ wp ].type;
|
||||
}
|
||||
|
||||
destroyOnDeath( hud )
|
||||
|
@ -1,13 +1,13 @@
|
||||
init()
|
||||
{
|
||||
level.bot_builtins["printconsole"] = ::do_printconsole;
|
||||
level.bot_builtins["filewrite"] = ::do_filewrite;
|
||||
level.bot_builtins["fileread"] = ::do_fileread;
|
||||
level.bot_builtins["fileexists"] = ::do_fileexists;
|
||||
level.bot_builtins["botaction"] = ::do_botaction;
|
||||
level.bot_builtins["botstop"] = ::do_botstop;
|
||||
level.bot_builtins["botmovement"] = ::do_botmovement;
|
||||
level.bot_builtins["botmeleeparams"] = ::do_botmeleeparams;
|
||||
level.bot_builtins[ "printconsole" ] = ::do_printconsole;
|
||||
level.bot_builtins[ "filewrite" ] = ::do_filewrite;
|
||||
level.bot_builtins[ "fileread" ] = ::do_fileread;
|
||||
level.bot_builtins[ "fileexists" ] = ::do_fileexists;
|
||||
level.bot_builtins[ "botaction" ] = ::do_botaction;
|
||||
level.bot_builtins[ "botstop" ] = ::do_botstop;
|
||||
level.bot_builtins[ "botmovement" ] = ::do_botmovement;
|
||||
level.bot_builtins[ "botmeleeparams" ] = ::do_botmeleeparams;
|
||||
}
|
||||
|
||||
do_printconsole( s )
|
||||
|
Loading…
x
Reference in New Issue
Block a user