mirror of
https://github.com/ineedbots/iw3_bot_warfare.git
synced 2025-04-22 10:15:44 +00:00
after_target
This commit is contained in:
parent
e5fabd772d
commit
3a17354810
@ -26,6 +26,7 @@ added()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 10000;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.05;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 1;
|
||||
|
||||
self.pers["bots"]["behavior"] = [];
|
||||
self.pers["bots"]["behavior"]["strafe"] = 50;
|
||||
@ -110,6 +111,7 @@ resetBotVars()
|
||||
self.bot.target = undefined;
|
||||
self.bot.targets = [];
|
||||
self.bot.target_this_frame = undefined;
|
||||
self.bot.after_target = undefined;
|
||||
|
||||
self.bot.script_aimpos = undefined;
|
||||
|
||||
@ -795,6 +797,36 @@ watchToLook()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Assigns the bot's after target (bot will keep firing at a target after no sight or death)
|
||||
*/
|
||||
start_bot_after_target(who)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
|
||||
self.bot.after_target = spawnStruct();
|
||||
self.bot.after_target.target = who;
|
||||
self.bot.after_target.last_pos = who.origin;
|
||||
|
||||
self notify("kill_after_target");
|
||||
self endon("kill_after_target");
|
||||
|
||||
wait self.pers["bots"]["skill"]["shoot_after_time"];
|
||||
|
||||
self.bot.after_target = undefined;
|
||||
}
|
||||
|
||||
/*
|
||||
Clears the bot's after target
|
||||
*/
|
||||
clear_bot_after_target()
|
||||
{
|
||||
self.bot.after_target = undefined;
|
||||
self notify("kill_after_target");
|
||||
}
|
||||
|
||||
/*
|
||||
This is the bot's main aimming thread. The bot will aim at its targets or a node its going towards. Bots will aim, fire, ads, grenade.
|
||||
*/
|
||||
@ -811,9 +843,13 @@ aim()
|
||||
continue;
|
||||
|
||||
aimspeed = self.pers["bots"]["skill"]["aim_time"];
|
||||
eyePos = self getEyePos();
|
||||
|
||||
if(self IsStunned() || self isArtShocked())
|
||||
aimspeed = 1;
|
||||
|
||||
eyePos = self getEyePos();
|
||||
curweap = self getCurrentWeapon();
|
||||
angles = self GetPlayerAngles();
|
||||
|
||||
if(isDefined(self.bot.target) && isDefined(self.bot.target.entity))
|
||||
{
|
||||
@ -829,20 +865,17 @@ aim()
|
||||
isplay = self.bot.target.isplay;
|
||||
offset = self.bot.target.offset;
|
||||
dist = self.bot.target.dist;
|
||||
curweap = self getCurrentWeapon();
|
||||
angles = self GetPlayerAngles();
|
||||
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"];
|
||||
nadeAimOffset = 0;
|
||||
myeye = self getEyePos();
|
||||
|
||||
if(self.bot.isfraggingafter || self.bot.issmokingafter)
|
||||
nadeAimOffset = dist/3000;
|
||||
else if(weaponClass(curweap) == "grenade")
|
||||
nadeAimOffset = dist/16000;
|
||||
|
||||
if(no_trace_time)
|
||||
if(no_trace_time && (!isDefined(self.bot.after_target) || self.bot.after_target.target != target))
|
||||
{
|
||||
if(no_trace_time > no_trace_ads_time)
|
||||
{
|
||||
@ -852,7 +885,7 @@ aim()
|
||||
if(!self.bot.isfraggingafter && !self.bot.issmokingafter)
|
||||
{
|
||||
nade = self getValidGrenade();
|
||||
if(isDefined(nade) && rand <= self.pers["bots"]["behavior"]["nade"] && bulletTracePassed(myEye, myEye + (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)
|
||||
{
|
||||
if(nade == "frag_grenade_mp")
|
||||
self thread frag(2.5);
|
||||
@ -873,56 +906,91 @@ aim()
|
||||
self botLookAt(last_pos + (0, 0, self getEyeHeight() + nadeAimOffset), aimspeed);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isplay)
|
||||
|
||||
if (trace_time)
|
||||
{
|
||||
aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset);
|
||||
conedot = getConeDot(aimpos, eyePos, angles);
|
||||
|
||||
if(!nadeAimOffset && conedot > 0.999)
|
||||
if(isplay)
|
||||
{
|
||||
self botLookAtPlayer(target, "j_spineupper");
|
||||
aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset);
|
||||
conedot = getConeDot(aimpos, eyePos, angles);
|
||||
|
||||
if(!nadeAimOffset && conedot > 0.999)
|
||||
{
|
||||
self botLookAtPlayer(target, "j_spineupper");
|
||||
}
|
||||
else
|
||||
{
|
||||
self botLookAt(aimpos, aimspeed);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
aimpos = target.origin;
|
||||
if (isDefined(offset))
|
||||
aimpos += offset;
|
||||
aimpos += (0, 0, nadeAimOffset);
|
||||
conedot = getConeDot(aimpos, eyePos, angles);
|
||||
self botLookAt(aimpos, aimspeed);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
aimpos = target.origin;
|
||||
if (isDefined(offset))
|
||||
aimpos += offset;
|
||||
aimpos += (0, 0, nadeAimOffset);
|
||||
conedot = getConeDot(aimpos, eyePos, angles);
|
||||
self botLookAt(aimpos, aimspeed);
|
||||
}
|
||||
|
||||
if(isplay && conedot > 0.9 && dist < level.bots_maxKnifeDistance && trace_time > reaction_time)
|
||||
{
|
||||
self knife();
|
||||
|
||||
if(isplay && conedot > 0.9 && dist < level.bots_maxKnifeDistance && trace_time > reaction_time)
|
||||
{
|
||||
self clear_bot_after_target();
|
||||
self knife();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!self canFire(curweap) || !self isInRange(dist, curweap))
|
||||
continue;
|
||||
|
||||
//c4 logic here, but doesnt work anyway
|
||||
|
||||
canADS = self canAds(dist, curweap);
|
||||
if (canADS)
|
||||
self thread pressADS();
|
||||
|
||||
if (trace_time > reaction_time)
|
||||
{
|
||||
if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
||||
self botFire();
|
||||
|
||||
if (isplay)
|
||||
self thread start_bot_after_target(target);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!self canFire(curweap) || !self isInRange(dist, curweap))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//c4 logic here, but doesnt work anyway
|
||||
|
||||
canADS = self canAds(dist, curweap);
|
||||
if (canADS)
|
||||
self thread pressADS();
|
||||
|
||||
if((!canADS || self playerads() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && trace_time > reaction_time)
|
||||
{
|
||||
self botFire();
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (isDefined(self.bot.after_target))
|
||||
{
|
||||
nadeAimOffset = 0;
|
||||
last_pos = self.bot.after_target.last_pos;
|
||||
dist = DistanceSquared(self.origin, last_pos);
|
||||
|
||||
if(self.bot.isfraggingafter || self.bot.issmokingafter)
|
||||
nadeAimOffset = dist/3000;
|
||||
else if(weaponClass(curweap) == "grenade")
|
||||
nadeAimOffset = dist/16000;
|
||||
|
||||
aimpos = last_pos + (0, 0, self getEyeHeight() + nadeAimOffset);
|
||||
conedot = getConeDot(aimpos, eyePos, angles);
|
||||
|
||||
self thread bot_lookat(aimpos, aimspeed);
|
||||
|
||||
if(!self canFire(curweap) || !self isInRange(dist, curweap))
|
||||
continue;
|
||||
|
||||
canADS = self canAds(dist, curweap);
|
||||
if (canADS)
|
||||
self thread pressAds();
|
||||
|
||||
if((!canADS || self botAdsAmount() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
||||
self botFire();
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (self.bot.next_wp != -1 && isDefined(level.waypoints[self.bot.next_wp].angles) && false)
|
||||
{
|
||||
|
@ -274,6 +274,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.75;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 0;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.9;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 1;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 0;
|
||||
self.pers["bots"]["behavior"]["nade"] = 10;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 10;
|
||||
@ -296,6 +297,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.65;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 500;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.75;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.75;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 10;
|
||||
self.pers["bots"]["behavior"]["nade"] = 15;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 15;
|
||||
@ -318,6 +320,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.5;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 750;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.65;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.65;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 20;
|
||||
self.pers["bots"]["behavior"]["nade"] = 20;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 20;
|
||||
@ -340,6 +343,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.35;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 1000;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.5;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.5;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 30;
|
||||
self.pers["bots"]["behavior"]["nade"] = 25;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 30;
|
||||
@ -362,6 +366,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.25;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 1500;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.4;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.35;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 40;
|
||||
self.pers["bots"]["behavior"]["nade"] = 35;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 40;
|
||||
@ -384,6 +389,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.2;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 2000;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.25;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0.25;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 50;
|
||||
self.pers["bots"]["behavior"]["nade"] = 45;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 50;
|
||||
@ -406,6 +412,7 @@ difficulty()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.05;
|
||||
self.pers["bots"]["skill"]["help_dist"] = 3000;
|
||||
self.pers["bots"]["skill"]["semi_time"] = 0.1;
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = 0;
|
||||
self.pers["bots"]["behavior"]["strafe"] = 65;
|
||||
self.pers["bots"]["behavior"]["nade"] = 65;
|
||||
self.pers["bots"]["behavior"]["sprint"] = 65;
|
||||
@ -447,6 +454,7 @@ set_diff()
|
||||
self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomInt(20);
|
||||
self.pers["bots"]["skill"]["help_dist"] = randomIntRange(500, 25000);
|
||||
self.pers["bots"]["skill"]["semi_time"] = randomFloatRange(0.05, 1);
|
||||
self.pers["bots"]["skill"]["shoot_after_time"] = randomFloatRange(0.05, 1);
|
||||
self.pers["bots"]["behavior"]["strafe"] = randomInt(100);
|
||||
self.pers["bots"]["behavior"]["nade"] = randomInt(100);
|
||||
self.pers["bots"]["behavior"]["sprint"] = randomInt(100);
|
||||
|
Loading…
x
Reference in New Issue
Block a user