mirror of
https://github.com/ineedbots/iw3_bot_warfare.git
synced 2025-04-23 02:35:43 +00:00
laststand and switch
This commit is contained in:
parent
f1de7e695a
commit
5fa9289424
@ -186,6 +186,7 @@ onPlayerSpawned()
|
|||||||
|
|
||||||
self resetBotVars();
|
self resetBotVars();
|
||||||
self thread onWeaponChange();
|
self thread onWeaponChange();
|
||||||
|
self thread onLastStand();
|
||||||
|
|
||||||
self thread reload_watch();
|
self thread reload_watch();
|
||||||
self thread sprint_watch();
|
self thread sprint_watch();
|
||||||
@ -236,10 +237,46 @@ watchHoldBreath()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
When the bot enters laststand, we fix the weapons
|
||||||
|
*/
|
||||||
|
onLastStand()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("death");
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
while (!self inLastStand())
|
||||||
|
wait 0.05;
|
||||||
|
|
||||||
|
self notify("kill_goal");
|
||||||
|
|
||||||
|
while (self.disabledWeapon)
|
||||||
|
wait 0.05;
|
||||||
|
waittillframeend;
|
||||||
|
|
||||||
|
weaponslist = self getweaponslist();
|
||||||
|
for( i = 0; i < weaponslist.size; i++ )
|
||||||
|
{
|
||||||
|
weapon = weaponslist[i];
|
||||||
|
|
||||||
|
if ( maps\mp\gametypes\_weapons::isPistol( weapon ) )
|
||||||
|
{
|
||||||
|
self setSpawnWeapon(weapon);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
while (self inLastStand())
|
||||||
|
wait 0.05;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
When the bot changes weapon.
|
When the bot changes weapon.
|
||||||
*/
|
*/
|
||||||
onWeaponChange() // !
|
onWeaponChange()
|
||||||
{
|
{
|
||||||
self endon("disconnect");
|
self endon("disconnect");
|
||||||
self endon("death");
|
self endon("death");
|
||||||
@ -256,32 +293,62 @@ onWeaponChange() // !
|
|||||||
|
|
||||||
// A cod4x fix because bots don't switchtoweapon properally. When a bot goes on a ladder or mount, they will by stuck with a none weapon. Also fixes the bot's weapon while going into laststand.
|
// A cod4x fix because bots don't switchtoweapon properally. When a bot goes on a ladder or mount, they will by stuck with a none weapon. Also fixes the bot's weapon while going into laststand.
|
||||||
//fix for when switchtoweapon doesnt work and weapons get disabled from climbing or somethings
|
//fix for when switchtoweapon doesnt work and weapons get disabled from climbing or somethings
|
||||||
if(newWeapon == "none")
|
switch (newWeapon)
|
||||||
{
|
{
|
||||||
if(!self inLastStand())
|
case "none":
|
||||||
{
|
self thread doNoneSwitch();
|
||||||
if(isDefined(self.lastDroppableWeapon) && self.lastDroppableWeapon != "none")
|
break;
|
||||||
self setSpawnWeapon(self.lastDroppableWeapon);
|
default:
|
||||||
}
|
self thread doSwitch(newWeapon);
|
||||||
else
|
break;
|
||||||
{
|
|
||||||
waittillframeend;
|
|
||||||
weaponslist = self getweaponslist();
|
|
||||||
for( i = 0; i < weaponslist.size; i++ )
|
|
||||||
{
|
|
||||||
weapon = weaponslist[i];
|
|
||||||
|
|
||||||
if ( maps\mp\gametypes\_weapons::isPistol( weapon ) )
|
|
||||||
{
|
|
||||||
self setSpawnWeapon(weapon);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
When the bot switches to a none weapon, we fix it
|
||||||
|
*/
|
||||||
|
doNoneSwitch()
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("death");
|
||||||
|
self endon("weapon_change");
|
||||||
|
|
||||||
|
self.bot.isswitching = false;
|
||||||
|
|
||||||
|
while (self.disabledWeapon)
|
||||||
|
wait 0.05;
|
||||||
|
|
||||||
|
weap = self.lastDroppableWeapon;
|
||||||
|
if (isDefined(self.bot.switch_to_after_none))
|
||||||
|
{
|
||||||
|
weap = self.bot.switch_to_after_none;
|
||||||
|
self.bot.switch_to_after_none = undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
self SetSpawnWeapon(weap);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
When the bot switches to a weapon, we play the active animation, and shoot delay
|
||||||
|
*/
|
||||||
|
doSwitch(newWeapon)
|
||||||
|
{
|
||||||
|
self endon("disconnect");
|
||||||
|
self endon("death");
|
||||||
|
self endon("weapon_change");
|
||||||
|
|
||||||
|
waittillframeend;
|
||||||
|
if (self.lastDroppableWeapon != newWeapon)
|
||||||
|
return;
|
||||||
|
|
||||||
|
self.bot.isswitching = true;
|
||||||
|
|
||||||
|
wait 1; // fast pullout?
|
||||||
|
|
||||||
|
self.bot.isswitching = false;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Updates the bot if it is sprinting.
|
Updates the bot if it is sprinting.
|
||||||
*/
|
*/
|
||||||
@ -1024,7 +1091,7 @@ aim()
|
|||||||
|
|
||||||
if (trace_time > reaction_time)
|
if (trace_time > reaction_time)
|
||||||
{
|
{
|
||||||
if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
if((!canADS || self playerads() == 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
||||||
self botFire();
|
self botFire();
|
||||||
|
|
||||||
if (isplay)
|
if (isplay)
|
||||||
@ -1059,7 +1126,7 @@ aim()
|
|||||||
if (canADS)
|
if (canADS)
|
||||||
self thread pressADS();
|
self thread pressADS();
|
||||||
|
|
||||||
if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
if((!canADS || self playerads() == 1.0 || self InLastStand() || self GetStance() == "prone") && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
||||||
self botFire();
|
self botFire();
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
@ -1787,4 +1854,6 @@ prone()
|
|||||||
{
|
{
|
||||||
self botAction("-gocrouch");
|
self botAction("-gocrouch");
|
||||||
self botAction("+goprone");
|
self botAction("+goprone");
|
||||||
|
|
||||||
|
self notify("kill_goal");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user