mirror of
https://github.com/ineedbots/iw4_bot_warfare.git
synced 2025-04-22 05:55:42 +00:00
obj
This commit is contained in:
parent
14d92e01bd
commit
a77c24ba9b
@ -127,6 +127,7 @@ init()
|
|||||||
|
|
||||||
level thread onPlayerConnect();
|
level thread onPlayerConnect();
|
||||||
level thread addNotifyOnAirdrops();
|
level thread addNotifyOnAirdrops();
|
||||||
|
level thread watchScrabler();
|
||||||
|
|
||||||
level thread handleBots();
|
level thread handleBots();
|
||||||
}
|
}
|
||||||
@ -253,6 +254,43 @@ onPlayerConnect()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
watchScrabler()
|
||||||
|
{
|
||||||
|
for (;;)
|
||||||
|
{
|
||||||
|
wait 1;
|
||||||
|
|
||||||
|
for ( i = level.players.size - 1; i >= 0; i-- )
|
||||||
|
{
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
player.bot_isScrambled = false;
|
||||||
|
|
||||||
|
if (!player _HasPerk("specialty_localjammer") || !isReallyAlive(player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (player isEMPed())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for ( h = level.players.size - 1; h >= 0; h-- )
|
||||||
|
{
|
||||||
|
player2 = level.players[h];
|
||||||
|
|
||||||
|
if (player2 == player)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(level.teamBased && player2.team == player.team)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (Distance(player2.origin, player.origin) > 100)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
player.bot_isScrambled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Called when a player connects.
|
Called when a player connects.
|
||||||
*/
|
*/
|
||||||
|
@ -1085,6 +1085,199 @@ onBotSpawned()
|
|||||||
self thread bot_weapon_think();
|
self thread bot_weapon_think();
|
||||||
self thread bot_crate_think();
|
self thread bot_crate_think();
|
||||||
self thread bot_turret_think();
|
self thread bot_turret_think();
|
||||||
|
self thread bot_revenge_think();
|
||||||
|
self thread bot_uav_think();
|
||||||
|
self thread bot_listen_to_steps();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bot_listen_to_steps()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("death");
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
wait 1;
|
||||||
|
|
||||||
|
if(self HasScriptGoal() || self.bot_lock_goal)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(self.pers["bots"]["skill"]["base"] < 3)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
dist = level.bots_listenDist;
|
||||||
|
if(self hasPerk("specialty_selectivehearing"))
|
||||||
|
dist *= 1.4;
|
||||||
|
|
||||||
|
dist *= dist;
|
||||||
|
|
||||||
|
heard = undefined;
|
||||||
|
for(i = level.players.size-1 ; i >= 0; i--)
|
||||||
|
{
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
if(player == self)
|
||||||
|
continue;
|
||||||
|
if(level.teamBased && self.team == player.team)
|
||||||
|
continue;
|
||||||
|
if(player.sessionstate != "playing")
|
||||||
|
continue;
|
||||||
|
if(!isReallyAlive(player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ( player is_bot() && lengthsquared( player getBotVelocity() ) < 20000 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if( lengthsquared( player getVelocity() ) < 20000 )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if( distanceSquared(player.origin, self.origin) > dist )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if( player hasPerk("specialty_quieter"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
heard = player;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
hasHeartbeat = (isSubStr(self GetCurrentWeapon(), "_heartbeat_") && !self IsEMPed());
|
||||||
|
heartbeatDist = 350*350;
|
||||||
|
|
||||||
|
if(!IsDefined(heard) && hasHeartbeat)
|
||||||
|
{
|
||||||
|
for(i = level.players.size-1 ; i >= 0; i--)
|
||||||
|
{
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
if(player == self)
|
||||||
|
continue;
|
||||||
|
if(level.teamBased && self.team == player.team)
|
||||||
|
continue;
|
||||||
|
if(player.sessionstate != "playing")
|
||||||
|
continue;
|
||||||
|
if(!isReallyAlive(player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (player hasPerk("specialty_heartbreaker"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (distanceSquared(player.origin, self.origin) > heartbeatDist)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (GetConeDot(player.origin, self.origin, self GetPlayerAngles()) < 0.6)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
heard = player;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!IsDefined(heard))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(bulletTracePassed(self getEye(), heard getTagOrigin( "j_spineupper" ), false, heard))
|
||||||
|
{
|
||||||
|
self setAttacker(heard);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
self SetScriptGoal( heard.origin, 64 );
|
||||||
|
self waittill_any( "goal", "bad_path" );
|
||||||
|
self ClearScriptGoal();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bot_uav_think()
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
wait 0.75;
|
||||||
|
|
||||||
|
if ( self HasScriptGoal() || self.bot_lock_goal )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(self.pers["bots"]["skill"]["base"] <= 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (self isEMPed() || self.bot_isScrambled)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (self _hasPerk("_specialty_blastshield"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if ((level.teamBased && level.activeCounterUAVs[level.otherTeam[self.team]]) || (!level.teamBased && self.isRadarBlocked))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
hasRadar = ((level.teamBased && level.activeUAVs[self.team]) || (!level.teamBased && level.activeUAVs[self.guid]));
|
||||||
|
if( level.hardcoreMode && !hasRadar )
|
||||||
|
continue;
|
||||||
|
|
||||||
|
dist = self.pers["bots"]["skill"]["help_dist"];
|
||||||
|
dist *= 8;
|
||||||
|
|
||||||
|
for ( i = level.players.size - 1; i >= 0; i-- )
|
||||||
|
{
|
||||||
|
player = level.players[i];
|
||||||
|
|
||||||
|
if(player == self)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(!isDefined(player.team))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(player.sessionstate != "playing")
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(level.teambased && player.team == self.team)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(!isReallyAlive(player))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if(DistanceSquared(self.origin, player.origin) > dist)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if((!isSubStr(player getCurrentWeapon(), "_silencer_") && player.bots_firing) || (hasRadar && !player hasPerk("specialty_coldblooded")))
|
||||||
|
{
|
||||||
|
self SetScriptGoal( player.origin, 128 );
|
||||||
|
|
||||||
|
self waittill_any( "goal", "bad_path" );
|
||||||
|
|
||||||
|
self ClearScriptGoal();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bot_revenge_think()
|
||||||
|
{
|
||||||
|
self endon( "death" );
|
||||||
|
self endon( "disconnect" );
|
||||||
|
|
||||||
|
if(self.pers["bots"]["skill"]["base"] <= 1)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(!isDefined(self.killerLocation))
|
||||||
|
return;
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
wait( RandomIntRange( 1, 5 ) );
|
||||||
|
|
||||||
|
if(self HasScriptGoal() || self.bot_lock_goal)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if ( randomint( 100 ) < 75 )
|
||||||
|
return;
|
||||||
|
|
||||||
|
self SetScriptGoal( self.killerLocation, 64 );
|
||||||
|
self waittill_any( "goal", "bad_path" );
|
||||||
|
self ClearScriptGoal();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1154,6 +1347,9 @@ bot_turret_think()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(self.pers["bots"]["skill"]["base"] <= 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
if (self HasScriptEnemy() || self IsUsingRemote())
|
if (self HasScriptEnemy() || self IsUsingRemote())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1435,6 +1631,9 @@ bot_target_vehicle()
|
|||||||
{
|
{
|
||||||
wait randomIntRange(2, 4);
|
wait randomIntRange(2, 4);
|
||||||
|
|
||||||
|
if(self.pers["bots"]["skill"]["base"] <= 1)
|
||||||
|
continue;
|
||||||
|
|
||||||
if(self HasScriptEnemy())
|
if(self HasScriptEnemy())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -1732,7 +1931,7 @@ bot_killstreak_think()
|
|||||||
if (streakName == "counter_uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeCounterUAVs[self.team]) || (!level.teamBased && level.activeCounterUAVs[self.guid])))
|
if (streakName == "counter_uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeCounterUAVs[self.team]) || (!level.teamBased && level.activeCounterUAVs[self.guid])))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (streakName == "uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeUAVs[self.team]) || (!level.teamBased && level.activeUAVs[self.guid])))
|
if (streakName == "uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && (level.activeUAVs[self.team] || level.activeCounterUAVs[level.otherTeam[self.team]])) || (!level.teamBased && (level.activeUAVs[self.guid] || self.isRadarBlocked))))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (streakName == "emp" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.teamEMPed[level.otherTeam[self.team]]) || (!level.teamBased && isDefined( level.empPlayer ))))
|
if (streakName == "emp" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.teamEMPed[level.otherTeam[self.team]]) || (!level.teamBased && isDefined( level.empPlayer ))))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user