mirror of
https://github.com/ineedbots/iw4_bot_warfare.git
synced 2025-04-22 05:55:42 +00:00
tdks
This commit is contained in:
parent
88491f954a
commit
0106fab764
@ -216,7 +216,7 @@ lockon_watch()
|
||||
if (!isDefined(self.bot.target) || !isDefined(self.bot.target.entity))
|
||||
continue;
|
||||
|
||||
if (self.bot.target.entity.classname != "script_vehicle" && self.bot.target.entity.model != "vehicle_uav_static_mp")
|
||||
if (!entIsVehicle(self.bot.target.entity))
|
||||
continue;
|
||||
|
||||
weap = self getCurrentWeapon();
|
||||
@ -1925,7 +1925,7 @@ walk()
|
||||
{
|
||||
curweap = self getCurrentWeapon();
|
||||
|
||||
if(self.bot.target.entity.classname == "script_vehicle" || self.bot.target.entity.model == "vehicle_uav_static_mp" || self.bot.isfraggingafter)
|
||||
if(entIsVehicle(self.bot.target.entity) || self.bot.isfraggingafter)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
@ -1010,6 +1010,184 @@ onBotSpawned()
|
||||
gameFlagWait("prematch_done");
|
||||
|
||||
self thread bot_killstreak_think();
|
||||
self thread bot_target_vehicle();
|
||||
self thread bot_weapon_think();
|
||||
}
|
||||
}
|
||||
|
||||
bot_weapon_think()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
level endon("game_ended");
|
||||
|
||||
for(;;)
|
||||
{
|
||||
self waittill_any_timeout(randomIntRange(2, 4), "bot_force_check_switch");
|
||||
|
||||
if(self IsBotReloading() || self IsBotFragging() || self botIsClimbing() || self IsBotKnifing())
|
||||
continue;
|
||||
|
||||
if(self BotIsFrozen())
|
||||
continue;
|
||||
|
||||
if(self isDefusing() || self isPlanting())
|
||||
continue;
|
||||
|
||||
if (self IsUsingRemote())
|
||||
continue;
|
||||
|
||||
curWeap = self GetCurrentWeapon();
|
||||
hasTarget = self hasThreat();
|
||||
if(hasTarget)
|
||||
{
|
||||
threat = self getThreat();
|
||||
rocketAmmo = self getRocketAmmo();
|
||||
|
||||
if(entIsVehicle(threat) && isDefined(rocketAmmo))
|
||||
{
|
||||
if (curWeap != rocketAmmo)
|
||||
self setSpawnWeapon(rocketAmmo);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(curWeap != "none" && self getAmmoCount(curWeap) && curWeap != "stinger_mp" && curWeap != "javelin_mp")
|
||||
{
|
||||
if(randomInt(100) > self.pers["bots"]["behavior"]["switch"])
|
||||
continue;
|
||||
|
||||
if(hasTarget)
|
||||
continue;
|
||||
}
|
||||
|
||||
weaponslist = self getweaponslistall();
|
||||
weap = "";
|
||||
while(weaponslist.size)
|
||||
{
|
||||
weapon = weaponslist[randomInt(weaponslist.size)];
|
||||
weaponslist = array_remove(weaponslist, weapon);
|
||||
|
||||
if(!self getAmmoCount(weapon))
|
||||
continue;
|
||||
|
||||
if (!isWeaponDroppable(weapon))
|
||||
continue;
|
||||
|
||||
if(curWeap == weapon || weapon == "none" || weapon == "")
|
||||
continue;
|
||||
|
||||
weap = weapon;
|
||||
break;
|
||||
}
|
||||
|
||||
if(weap == "")
|
||||
continue;
|
||||
|
||||
self setSpawnWeapon(weap);
|
||||
}
|
||||
}
|
||||
|
||||
getRocketAmmo()
|
||||
{
|
||||
answer = undefined;
|
||||
|
||||
if(self getAmmoCount("rpg_mp"))
|
||||
answer = "rpg_mp";
|
||||
|
||||
if(self getAmmoCount("at4_mp"))
|
||||
answer = "at4_mp";
|
||||
|
||||
if(self getAmmoCount("stinger_mp"))
|
||||
answer = "stinger_mp";
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
getLockonAmmo()
|
||||
{
|
||||
answer = undefined;
|
||||
|
||||
if(self getAmmoCount("at4_mp"))
|
||||
answer = "at4_mp";
|
||||
|
||||
if(self getAmmoCount("stinger_mp"))
|
||||
answer = "stinger_mp";
|
||||
|
||||
return answer;
|
||||
}
|
||||
|
||||
bot_target_vehicle()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait randomIntRange(2, 4);
|
||||
|
||||
if(self HasScriptEnemy())
|
||||
continue;
|
||||
|
||||
if (self IsUsingRemote())
|
||||
continue;
|
||||
|
||||
rocketAmmo = self getRocketAmmo();
|
||||
if(!isDefined(rocketAmmo) && self BotGetRandom() < 90)
|
||||
continue;
|
||||
|
||||
targets = maps\mp\_stinger::GetTargetList();
|
||||
|
||||
if (!targets.size)
|
||||
continue;
|
||||
|
||||
lockOnAmmo = self getLockonAmmo();
|
||||
myEye = self GetEye();
|
||||
target = undefined;
|
||||
for (i = targets.size - 1; i >= 0; i--)
|
||||
{
|
||||
tempTarget = targets[i];
|
||||
|
||||
if (isDefined(tempTarget.owner) && tempTarget.owner == self)
|
||||
continue;
|
||||
|
||||
if(!bulletTracePassed( myEye, tempTarget.origin, false, tempTarget ))
|
||||
continue;
|
||||
|
||||
if (tempTarget.health <= 0)
|
||||
continue;
|
||||
|
||||
if (tempTarget.classname != "script_vehicle" && !isDefined(lockOnAmmo))
|
||||
continue;
|
||||
|
||||
target = tempTarget;
|
||||
}
|
||||
|
||||
if (!isDefined(target))
|
||||
continue;
|
||||
|
||||
self SetScriptEnemy( target, (0, 0, 0) );
|
||||
self bot_attack_vehicle( target );
|
||||
self ClearScriptEnemy();
|
||||
self notify("bot_force_check_switch");
|
||||
}
|
||||
}
|
||||
|
||||
bot_attack_vehicle( target )
|
||||
{
|
||||
target endon("death");
|
||||
|
||||
wait_time = RandomIntRange( 7, 10 );
|
||||
|
||||
for ( i = 0; i < wait_time; i++ )
|
||||
{
|
||||
self notify("bot_force_check_switch");
|
||||
wait( 1 );
|
||||
|
||||
if ( !IsDefined( target ) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1055,11 +1233,6 @@ bot_killstreak_think()
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
|
||||
if (randomInt(2))
|
||||
self maps\mp\killstreaks\_killstreaks::tryGiveKillstreak("ac130");
|
||||
else
|
||||
self maps\mp\killstreaks\_killstreaks::tryGiveKillstreak("helicopter_minigun");
|
||||
|
||||
for (;;)
|
||||
{
|
||||
wait randomIntRange(1, 3);
|
||||
@ -1247,6 +1420,15 @@ bot_killstreak_think()
|
||||
if (streakName == "nuke" && isDefined( level.nukeIncoming ))
|
||||
continue;
|
||||
|
||||
if (streakName == "counter_uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeCounterUAVs[self.team]) || (!level.teamBased && level.activeCounterUAVs[self.guid])))
|
||||
continue;
|
||||
|
||||
if (streakName == "uav" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.activeUAVs[self.team]) || (!level.teamBased && level.activeUAVs[self.guid])))
|
||||
continue;
|
||||
|
||||
if (streakName == "emp" && self.pers["bots"]["skill"]["base"] > 3 && ((level.teamBased && level.teamEMPed[level.otherTeam[self.team]]) || (!level.teamBased && isDefined( level.empPlayer ))))
|
||||
continue;
|
||||
|
||||
location = undefined;
|
||||
directionYaw = undefined;
|
||||
switch (streakName)
|
||||
|
@ -13,6 +13,11 @@ is_bot()
|
||||
return ((isDefined(self.pers["isBot"]) && self.pers["isBot"]) || (isDefined(self.pers["isBotWarfare"]) && self.pers["isBotWarfare"]) || isSubStr( self.guid, "bot" ));
|
||||
}
|
||||
|
||||
entIsVehicle(ent)
|
||||
{
|
||||
return (ent.classname == "script_vehicle" || ent.model == "vehicle_uav_static_mp" || ent.model == "vehicle_ac130_coop");
|
||||
}
|
||||
|
||||
/*
|
||||
Returns how much the bot is ads'ing all the way.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user