mirror of
https://github.com/ineedbots/iw4_bot_warfare.git
synced 2025-04-22 05:55:42 +00:00
shoot_after_time
This commit is contained in:
parent
4db866901e
commit
2edd1d8ff3
@ -34,6 +34,7 @@ added()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0;
|
self.pers["bots"]["skill"]["spawn_time"] = 0;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 10000;
|
self.pers["bots"]["skill"]["help_dist"] = 10000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.05;
|
self.pers["bots"]["skill"]["semi_time"] = 0.05;
|
||||||
|
self.pers["bots"]["skill"]["shoot_after_time"] = 1;
|
||||||
|
|
||||||
self.pers["bots"]["behavior"] = [];
|
self.pers["bots"]["behavior"] = [];
|
||||||
self.pers["bots"]["behavior"]["strafe"] = 50;
|
self.pers["bots"]["behavior"]["strafe"] = 50;
|
||||||
@ -139,6 +140,7 @@ resetBotVars()
|
|||||||
self.bot.target = undefined;
|
self.bot.target = undefined;
|
||||||
self.bot.target_this_frame = undefined;
|
self.bot.target_this_frame = undefined;
|
||||||
self.bot.jav_loc = undefined;
|
self.bot.jav_loc = undefined;
|
||||||
|
self.bot.after_target = undefined;
|
||||||
|
|
||||||
self.bot.script_aimpos = undefined;
|
self.bot.script_aimpos = undefined;
|
||||||
|
|
||||||
@ -1949,6 +1951,35 @@ 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("spawned_player");
|
||||||
|
|
||||||
|
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.
|
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.
|
||||||
*/
|
*/
|
||||||
@ -1974,12 +2005,14 @@ aim()
|
|||||||
usingRemote = self IsUsingRemote();
|
usingRemote = self IsUsingRemote();
|
||||||
curweap = self getCurrentWeapon();
|
curweap = self getCurrentWeapon();
|
||||||
eyePos = self getEye();
|
eyePos = self getEye();
|
||||||
|
angles = self GetPlayerAngles();
|
||||||
|
isClimbing = self.bot.climbing;
|
||||||
|
|
||||||
if (isDefined(self.bot.jav_loc) && !usingRemote)
|
if (isDefined(self.bot.jav_loc) && !usingRemote && !isClimbing)
|
||||||
{
|
{
|
||||||
lookPos = self.bot.jav_loc;
|
aimpos = self.bot.jav_loc;
|
||||||
|
|
||||||
self thread bot_lookat(lookPos, aimspeed);
|
self thread bot_lookat(aimpos, aimspeed);
|
||||||
self thread pressAds();
|
self thread pressAds();
|
||||||
|
|
||||||
if (curweap == "javelin_mp")
|
if (curweap == "javelin_mp")
|
||||||
@ -1987,7 +2020,7 @@ aim()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isDefined(self.bot.target) && isDefined(self.bot.target.entity) && !self.bot.climbing)
|
if(isDefined(self.bot.target) && isDefined(self.bot.target.entity) && !isClimbing)
|
||||||
{
|
{
|
||||||
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;
|
no_trace_time = self.bot.target.no_trace_time;
|
||||||
@ -2001,12 +2034,10 @@ aim()
|
|||||||
isplay = self.bot.target.isplay;
|
isplay = self.bot.target.isplay;
|
||||||
offset = self.bot.target.offset;
|
offset = self.bot.target.offset;
|
||||||
dist = self.bot.target.dist;
|
dist = self.bot.target.dist;
|
||||||
angles = self GetPlayerAngles();
|
|
||||||
rand = self.bot.target.rand;
|
rand = self.bot.target.rand;
|
||||||
no_trace_ads_time = self.pers["bots"]["skill"]["no_trace_ads_time"];
|
no_trace_ads_time = self.pers["bots"]["skill"]["no_trace_ads_time"];
|
||||||
reaction_time = self.pers["bots"]["skill"]["reaction_time"];
|
reaction_time = self.pers["bots"]["skill"]["reaction_time"];
|
||||||
nadeAimOffset = 0;
|
nadeAimOffset = 0;
|
||||||
myeye = self getEye();
|
|
||||||
|
|
||||||
if(weaponClass(curweap) == "grenade" || curweap == "throwingknife_mp")
|
if(weaponClass(curweap) == "grenade" || curweap == "throwingknife_mp")
|
||||||
{
|
{
|
||||||
@ -2016,7 +2047,7 @@ aim()
|
|||||||
nadeAimOffset = dist/3000;
|
nadeAimOffset = dist/3000;
|
||||||
}
|
}
|
||||||
|
|
||||||
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 && !usingRemote)
|
if(no_trace_time > no_trace_ads_time && !usingRemote)
|
||||||
{
|
{
|
||||||
@ -2026,7 +2057,7 @@ aim()
|
|||||||
if(!self.bot.isfraggingafter)
|
if(!self.bot.isfraggingafter)
|
||||||
{
|
{
|
||||||
nade = self getValidGrenade();
|
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)
|
||||||
{
|
{
|
||||||
time = 0.5;
|
time = 0.5;
|
||||||
if (nade == "frag_grenade_mp")
|
if (nade == "frag_grenade_mp")
|
||||||
@ -2050,6 +2081,8 @@ aim()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (trace_time)
|
||||||
|
{
|
||||||
if(isplay)
|
if(isplay)
|
||||||
{
|
{
|
||||||
aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset);
|
aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset);
|
||||||
@ -2075,29 +2108,68 @@ aim()
|
|||||||
knifeDist *= 1.4;
|
knifeDist *= 1.4;
|
||||||
if((isplay || target.classname == "misc_turret") && !self.bot.knifing && conedot > 0.9 && dist < knifeDist && trace_time > reaction_time && !usingRemote)
|
if((isplay || target.classname == "misc_turret") && !self.bot.knifing && conedot > 0.9 && dist < knifeDist && trace_time > reaction_time && !usingRemote)
|
||||||
{
|
{
|
||||||
|
self clear_bot_after_target();
|
||||||
self thread knife(target, knifeDist);
|
self thread knife(target, knifeDist);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!self canFire(curweap) || !self isInRange(dist, curweap))
|
if(!self canFire(curweap) || !self isInRange(dist, curweap))
|
||||||
{
|
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
canADS = self canAds(dist, curweap);
|
canADS = self canAds(dist, curweap);
|
||||||
if (canADS)
|
if (canADS)
|
||||||
self thread pressAds();
|
self thread pressAds();
|
||||||
|
|
||||||
if((!canADS || self botAdsAmount() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && trace_time > reaction_time)
|
if (trace_time > reaction_time)
|
||||||
{
|
{
|
||||||
|
if((!canADS || self botAdsAmount() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance))
|
||||||
self botFire();
|
self botFire();
|
||||||
|
|
||||||
|
if (isplay)
|
||||||
|
self thread start_bot_after_target(target);
|
||||||
}
|
}
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (self.bot.next_wp != -1 && isDefined(level.waypoints[self.bot.next_wp].angles) && self.bot.climbing)
|
if (isDefined(self.bot.after_target) && !isClimbing)
|
||||||
|
{
|
||||||
|
nadeAimOffset = 0;
|
||||||
|
last_pos = self.bot.after_target.last_pos;
|
||||||
|
dist = DistanceSquared(self.origin, last_pos);
|
||||||
|
aimpos = last_pos + (0, 0, self getEyeHeight() + nadeAimOffset);
|
||||||
|
|
||||||
|
if (usingRemote)
|
||||||
|
aimpos = last_pos;
|
||||||
|
|
||||||
|
conedot = getConeDot(aimpos, eyePos, angles);
|
||||||
|
|
||||||
|
if(weaponClass(curweap) == "grenade" || curweap == "throwingknife_mp")
|
||||||
|
{
|
||||||
|
if (getWeaponClass(curweap) == "weapon_projectile")
|
||||||
|
nadeAimOffset = dist/16000;
|
||||||
|
else
|
||||||
|
nadeAimOffset = dist/3000;
|
||||||
|
}
|
||||||
|
|
||||||
|
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) && isClimbing)
|
||||||
{
|
{
|
||||||
forwardPos = anglesToForward(level.waypoints[self.bot.next_wp].angles) * 1024;
|
forwardPos = anglesToForward(level.waypoints[self.bot.next_wp].angles) * 1024;
|
||||||
|
|
||||||
|
@ -1006,6 +1006,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.75;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.75;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 0;
|
self.pers["bots"]["skill"]["help_dist"] = 0;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.9;
|
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"]["strafe"] = 0;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 10;
|
self.pers["bots"]["behavior"]["nade"] = 10;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 10;
|
self.pers["bots"]["behavior"]["sprint"] = 10;
|
||||||
@ -1028,6 +1029,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.65;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.65;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 500;
|
self.pers["bots"]["skill"]["help_dist"] = 500;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.75;
|
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"]["strafe"] = 10;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 15;
|
self.pers["bots"]["behavior"]["nade"] = 15;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 15;
|
self.pers["bots"]["behavior"]["sprint"] = 15;
|
||||||
@ -1050,6 +1052,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.5;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.5;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 750;
|
self.pers["bots"]["skill"]["help_dist"] = 750;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.65;
|
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"]["strafe"] = 20;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 20;
|
self.pers["bots"]["behavior"]["nade"] = 20;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 20;
|
self.pers["bots"]["behavior"]["sprint"] = 20;
|
||||||
@ -1072,6 +1075,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.35;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.35;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 1000;
|
self.pers["bots"]["skill"]["help_dist"] = 1000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.5;
|
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"]["strafe"] = 30;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 25;
|
self.pers["bots"]["behavior"]["nade"] = 25;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 30;
|
self.pers["bots"]["behavior"]["sprint"] = 30;
|
||||||
@ -1094,6 +1098,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.25;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.25;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 1500;
|
self.pers["bots"]["skill"]["help_dist"] = 1500;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.4;
|
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"]["strafe"] = 40;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 35;
|
self.pers["bots"]["behavior"]["nade"] = 35;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 40;
|
self.pers["bots"]["behavior"]["sprint"] = 40;
|
||||||
@ -1116,6 +1121,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.2;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.2;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 2000;
|
self.pers["bots"]["skill"]["help_dist"] = 2000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.25;
|
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"]["strafe"] = 50;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 45;
|
self.pers["bots"]["behavior"]["nade"] = 45;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 50;
|
self.pers["bots"]["behavior"]["sprint"] = 50;
|
||||||
@ -1138,6 +1144,7 @@ difficulty()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.05;
|
self.pers["bots"]["skill"]["spawn_time"] = 0.05;
|
||||||
self.pers["bots"]["skill"]["help_dist"] = 3000;
|
self.pers["bots"]["skill"]["help_dist"] = 3000;
|
||||||
self.pers["bots"]["skill"]["semi_time"] = 0.1;
|
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"]["strafe"] = 65;
|
||||||
self.pers["bots"]["behavior"]["nade"] = 65;
|
self.pers["bots"]["behavior"]["nade"] = 65;
|
||||||
self.pers["bots"]["behavior"]["sprint"] = 65;
|
self.pers["bots"]["behavior"]["sprint"] = 65;
|
||||||
@ -1179,6 +1186,7 @@ set_diff()
|
|||||||
self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomInt(20);
|
self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomInt(20);
|
||||||
self.pers["bots"]["skill"]["help_dist"] = randomIntRange(500, 25000);
|
self.pers["bots"]["skill"]["help_dist"] = randomIntRange(500, 25000);
|
||||||
self.pers["bots"]["skill"]["semi_time"] = randomFloatRange(0.05, 1);
|
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"]["strafe"] = randomInt(100);
|
||||||
self.pers["bots"]["behavior"]["nade"] = randomInt(100);
|
self.pers["bots"]["behavior"]["nade"] = randomInt(100);
|
||||||
self.pers["bots"]["behavior"]["sprint"] = randomInt(100);
|
self.pers["bots"]["behavior"]["sprint"] = randomInt(100);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user