This commit is contained in:
Your Name 2020-07-30 20:50:23 -06:00
parent f9aa349ba3
commit 40ba2387c2
2 changed files with 151 additions and 98 deletions

View File

@ -18,7 +18,9 @@ added()
self.pers["bots"]["skill"]["aim_time"] = 0.05; self.pers["bots"]["skill"]["aim_time"] = 0.05;
self.pers["bots"]["skill"]["init_react_time"] = 0; self.pers["bots"]["skill"]["init_react_time"] = 0;
self.pers["bots"]["skill"]["reaction_time"] = 0; self.pers["bots"]["skill"]["reaction_time"] = 0;
self.pers["bots"]["skill"]["remember_time"] = 10000; self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500;
self.pers["bots"]["skill"]["no_trace_look_time"] = 10000;
self.pers["bots"]["skill"]["remember_time"] = 25000;
self.pers["bots"]["skill"]["fov"] = -1; self.pers["bots"]["skill"]["fov"] = -1;
self.pers["bots"]["skill"]["dist"] = 100000; self.pers["bots"]["skill"]["dist"] = 100000;
self.pers["bots"]["skill"]["spawn_time"] = 0; self.pers["bots"]["skill"]["spawn_time"] = 0;
@ -145,11 +147,12 @@ onPlayerSpawned()
self thread fireHack(); self thread fireHack();
self thread stanceHack(); self thread stanceHack();
self thread moveHack(); self thread moveHack();
self thread emptyClipShoot();
self thread UseRunThink(); self thread UseRunThink();
self thread watchUsingRemote(); self thread watchUsingRemote();
// grenades (pick up too), knife (players and ents), walk, stinger, reload, footsounds, claymore hack // grenades (pick up too), knife (players and ents), stinger, footsounds, claymore hack
self thread spawned(); self thread spawned();
} }
@ -168,6 +171,11 @@ knife()
*/ */
reload() reload()
{ {
cur = self GetCurrentWeapon();
self SetWeaponAmmoStock(cur, self GetWeaponAmmoClip(cur) + self GetWeaponAmmoStock(cur));
self setWeaponAmmoClip(cur, 0);
// the script should reload for us.
} }
/* /*
@ -281,7 +289,7 @@ doRunDelay()
self.bot.run_in_delay = false; self.bot.run_in_delay = false;
} }
bot_lookat(pos, time, vel) bot_lookat(pos, time)
{ {
self notify("bots_aim_overlap"); self notify("bots_aim_overlap");
self endon("bots_aim_overlap"); self endon("bots_aim_overlap");
@ -297,13 +305,6 @@ bot_lookat(pos, time, vel)
if (!isDefined(steps) || steps <= 0) if (!isDefined(steps) || steps <= 0)
steps = 1; steps = 1;
if (isDefined(vel))
{
vel *= time;
vel /= steps;
pos += vel;
}
myAngle=self getPlayerAngles(); myAngle=self getPlayerAngles();
angles = VectorToAngles( (pos - self GetEye()) - anglesToForward(myAngle) ); angles = VectorToAngles( (pos - self GetEye()) - anglesToForward(myAngle) );
@ -353,6 +354,27 @@ stanceHack()
} }
} }
emptyClipShoot()
{
self endon("disconnect");
self endon("death");
for (;;)
{
wait 0.05;
if (self.bot.isreloading || self GetCurrentWeaponClipAmmo())
continue;
cur = self GetCurrentWeapon();
if (IsWeaponClipOnly(cur) || !self GetWeaponAmmoStock(cur) || self IsUsingRemote())
continue;
self thread pressFire();
}
}
moveHack() moveHack()
{ {
self endon("disconnect"); self endon("disconnect");
@ -365,9 +387,12 @@ moveHack()
{ {
wait 0.05; wait 0.05;
self.bot.velocity = self.origin-self.bot.last_pos; self.bot.velocity = (self.origin-self.bot.last_pos)*20;
self.bot.last_pos = self.origin; self.bot.last_pos = self.origin;
if (DistanceSquared(self.bot.moveTo, self.origin) < 1)
continue;
if (level.gameEnded || !gameFlag( "prematch_done" )) if (level.gameEnded || !gameFlag( "prematch_done" ))
continue; continue;
@ -496,7 +521,7 @@ fireHack()
if (self.bot.isswitching || self.bot.run_in_delay || self.bot.running) if (self.bot.isswitching || self.bot.run_in_delay || self.bot.running)
shouldFire = false; shouldFire = false;
if (self.bot.isfragging || self.bot.issmoking || (self.bot.isreloading && !self IsUsingRemote())) if (self.bot.isfragging || self.bot.issmoking)
shouldFire = true; shouldFire = true;
if (level.gameEnded || !gameFlag( "prematch_done" )) if (level.gameEnded || !gameFlag( "prematch_done" ))
@ -817,7 +842,7 @@ check_reload()
for(;;) for(;;)
{ {
self waittill( "weapon_fired" ); self waittill_notify_or_timeout( "weapon_fired", 5 );
self thread reload_thread(); self thread reload_thread();
} }
} }
@ -832,8 +857,11 @@ reload_thread()
self endon("weapon_fired"); self endon("weapon_fired");
wait 2.5; wait 2.5;
if (self.bot.isfrozen || level.gameEnded || !gameFlag( "prematch_done" ))
return;
if(isDefined(self.bot.target) || self.bot.isreloading || self.bot.isfraggingafter || self.bot.issmokingafter || self.bot.isfrozen || level.gameEnded || !gameFlag( "prematch_done" ) || self.bot.climbing) if(isDefined(self.bot.target) || self.bot.isreloading || self.bot.isfraggingafter || self.bot.issmokingafter || self.bot.climbing)
return; return;
cur = self getCurrentWEapon(); cur = self getCurrentWEapon();
@ -1252,104 +1280,113 @@ aim()
if(isDefined(self.bot.target) && isDefined(self.bot.target.entity) && !self.bot.climbing) if(isDefined(self.bot.target) && isDefined(self.bot.target.entity) && !self.bot.climbing)
{ {
trace_time = self.bot.target.trace_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;
last_pos = self.bot.target.last_seen_pos;
target = self.bot.target.entity; if (no_trace_time <= no_trace_look_time)
conedot = 0;
isplay = self.bot.target.isplay;
offset = self.bot.target.offset;
dist = self.bot.target.dist;
curweap = self getCurrentWeapon();
eyePos = self getEye();
angles = self GetPlayerAngles();
rand = self.bot.target.rand;
remember_time = self.pers["bots"]["skill"]["remember_time"];
reaction_time = self.pers["bots"]["skill"]["reaction_time"];
nadeAimOffset = 0;
myeye = self getEye();
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 > remember_time/2 && !usingRemote) trace_time = self.bot.target.trace_time;
last_pos = self.bot.target.last_seen_pos;
target = self.bot.target.entity;
conedot = 0;
isplay = self.bot.target.isplay;
offset = self.bot.target.offset;
dist = self.bot.target.dist;
curweap = self getCurrentWeapon();
eyePos = self getEye();
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 getEye();
if(self.bot.isfraggingafter || self.bot.issmokingafter)
nadeAimOffset = dist/3000;
else if(weaponClass(curweap) == "grenade")
nadeAimOffset = dist/16000;
if(no_trace_time)
{ {
self ads(false); if(no_trace_time > no_trace_ads_time && !usingRemote)
if(isplay)
{ {
//better room to nade? cook time function with dist? self ads(false);
if(!self.bot.isfraggingafter && !self.bot.issmokingafter)
if(isplay)
{ {
nade = self getValidGrenade(); //better room to nade? cook time function with dist?
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)) if(!self.bot.isfraggingafter && !self.bot.issmokingafter)
{ {
if(nade == "frag_grenade_mp") nade = self getValidGrenade();
self thread frag(2.5); 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))
else {
self thread smoke(0.5); if(nade == "frag_grenade_mp")
self thread frag(2.5);
self notify("kill_goal"); else
self thread smoke(0.5);
self notify("kill_goal");
}
} }
} }
else
{
self stopNading();
}
} }
if (!usingRemote)
self thread bot_lookat(last_pos + (0, 0, self getEyeHeight() + nadeAimOffset), aimspeed);
else else
{ self thread bot_lookat(last_pos, aimspeed);
self stopNading(); continue;
}
} }
if (!usingRemote) self stopNading();
self thread bot_lookat(last_pos + (0, 0, self getEyeHeight() + nadeAimOffset), aimspeed);
else if(isplay)
self thread bot_lookat(last_pos, aimspeed); {
continue; aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset);
} conedot = getConeDot(aimpos, eyePos, angles);
self stopNading();
if(isplay)
{
aimpos = target getTagOrigin( "j_spineupper" ) + (0, 0, nadeAimOffset);
conedot = getConeDot(aimpos, eyePos, angles);
self thread bot_lookat(aimpos, aimspeed, target GetVelocity());
}
else
{
aimpos = target.origin;
if (isDefined(offset))
aimpos += offset;
aimpos += (0, 0, nadeAimOffset);
conedot = getConeDot(aimpos, eyePos, angles);
self thread bot_lookat(aimpos, aimspeed);
}
if(false && isplay && conedot > 0.9 && dist < level.bots_maxKnifeDistance && trace_time > reaction_time)
{
self ads(false);
self knife();
continue;
}
if(!self canFire(curweap) || !self isInRange(dist, curweap))
{
self ads(false);
continue;
}
canADS = self canAds(dist, curweap);
self ads(canADS);
if((!canADS || self botAdsAmount() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && trace_time > reaction_time) if (!nadeAimOffset && conedot > 0.999)
{ self thread bot_lookat(aimpos, 0.05);
self botFire(); else
self thread bot_lookat(aimpos, aimspeed);
}
else
{
aimpos = target.origin;
if (isDefined(offset))
aimpos += offset;
aimpos += (0, 0, nadeAimOffset);
conedot = getConeDot(aimpos, eyePos, angles);
self thread bot_lookat(aimpos, aimspeed);
}
if(false && isplay && conedot > 0.9 && dist < level.bots_maxKnifeDistance && trace_time > reaction_time)
{
self ads(false);
self knife();
continue;
}
if(!self canFire(curweap) || !self isInRange(dist, curweap))
{
self ads(false);
continue;
}
canADS = self canAds(dist, curweap);
self ads(canADS);
if((!canADS || self botAdsAmount() == 1.0) && (conedot > 0.95 || dist < level.bots_maxKnifeDistance) && trace_time > reaction_time)
{
self botFire();
}
continue;
} }
continue;
} }
self ads(false); self ads(false);

View File

@ -628,6 +628,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.6; self.pers["bots"]["skill"]["aim_time"] = 0.6;
self.pers["bots"]["skill"]["init_react_time"] = 1500; self.pers["bots"]["skill"]["init_react_time"] = 1500;
self.pers["bots"]["skill"]["reaction_time"] = 1000; self.pers["bots"]["skill"]["reaction_time"] = 1000;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 500;
self.pers["bots"]["skill"]["no_trace_look_time"] = 600;
self.pers["bots"]["skill"]["remember_time"] = 750; self.pers["bots"]["skill"]["remember_time"] = 750;
self.pers["bots"]["skill"]["fov"] = 0.7; self.pers["bots"]["skill"]["fov"] = 0.7;
self.pers["bots"]["skill"]["dist"] = 1000; self.pers["bots"]["skill"]["dist"] = 1000;
@ -648,6 +650,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.55; self.pers["bots"]["skill"]["aim_time"] = 0.55;
self.pers["bots"]["skill"]["init_react_time"] = 1000; self.pers["bots"]["skill"]["init_react_time"] = 1000;
self.pers["bots"]["skill"]["reaction_time"] = 800; self.pers["bots"]["skill"]["reaction_time"] = 800;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000;
self.pers["bots"]["skill"]["no_trace_look_time"] = 1250;
self.pers["bots"]["skill"]["remember_time"] = 1500; self.pers["bots"]["skill"]["remember_time"] = 1500;
self.pers["bots"]["skill"]["fov"] = 0.65; self.pers["bots"]["skill"]["fov"] = 0.65;
self.pers["bots"]["skill"]["dist"] = 1500; self.pers["bots"]["skill"]["dist"] = 1500;
@ -668,6 +672,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.4; self.pers["bots"]["skill"]["aim_time"] = 0.4;
self.pers["bots"]["skill"]["init_react_time"] = 750; self.pers["bots"]["skill"]["init_react_time"] = 750;
self.pers["bots"]["skill"]["reaction_time"] = 500; self.pers["bots"]["skill"]["reaction_time"] = 500;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1000;
self.pers["bots"]["skill"]["no_trace_look_time"] = 1500;
self.pers["bots"]["skill"]["remember_time"] = 2000; self.pers["bots"]["skill"]["remember_time"] = 2000;
self.pers["bots"]["skill"]["fov"] = 0.6; self.pers["bots"]["skill"]["fov"] = 0.6;
self.pers["bots"]["skill"]["dist"] = 2250; self.pers["bots"]["skill"]["dist"] = 2250;
@ -688,6 +694,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.3; self.pers["bots"]["skill"]["aim_time"] = 0.3;
self.pers["bots"]["skill"]["init_react_time"] = 600; self.pers["bots"]["skill"]["init_react_time"] = 600;
self.pers["bots"]["skill"]["reaction_time"] = 400; self.pers["bots"]["skill"]["reaction_time"] = 400;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 1500;
self.pers["bots"]["skill"]["no_trace_look_time"] = 2000;
self.pers["bots"]["skill"]["remember_time"] = 3000; self.pers["bots"]["skill"]["remember_time"] = 3000;
self.pers["bots"]["skill"]["fov"] = 0.55; self.pers["bots"]["skill"]["fov"] = 0.55;
self.pers["bots"]["skill"]["dist"] = 3350; self.pers["bots"]["skill"]["dist"] = 3350;
@ -708,6 +716,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.25; self.pers["bots"]["skill"]["aim_time"] = 0.25;
self.pers["bots"]["skill"]["init_react_time"] = 500; self.pers["bots"]["skill"]["init_react_time"] = 500;
self.pers["bots"]["skill"]["reaction_time"] = 300; self.pers["bots"]["skill"]["reaction_time"] = 300;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500;
self.pers["bots"]["skill"]["no_trace_look_time"] = 3000;
self.pers["bots"]["skill"]["remember_time"] = 4000; self.pers["bots"]["skill"]["remember_time"] = 4000;
self.pers["bots"]["skill"]["fov"] = 0.5; self.pers["bots"]["skill"]["fov"] = 0.5;
self.pers["bots"]["skill"]["dist"] = 5000; self.pers["bots"]["skill"]["dist"] = 5000;
@ -728,6 +738,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.2; self.pers["bots"]["skill"]["aim_time"] = 0.2;
self.pers["bots"]["skill"]["init_react_time"] = 250; self.pers["bots"]["skill"]["init_react_time"] = 250;
self.pers["bots"]["skill"]["reaction_time"] = 150; self.pers["bots"]["skill"]["reaction_time"] = 150;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500;
self.pers["bots"]["skill"]["no_trace_look_time"] = 4000;
self.pers["bots"]["skill"]["remember_time"] = 5000; self.pers["bots"]["skill"]["remember_time"] = 5000;
self.pers["bots"]["skill"]["fov"] = 0.45; self.pers["bots"]["skill"]["fov"] = 0.45;
self.pers["bots"]["skill"]["dist"] = 7500; self.pers["bots"]["skill"]["dist"] = 7500;
@ -748,6 +760,8 @@ difficulty()
self.pers["bots"]["skill"]["aim_time"] = 0.1; self.pers["bots"]["skill"]["aim_time"] = 0.1;
self.pers["bots"]["skill"]["init_react_time"] = 100; self.pers["bots"]["skill"]["init_react_time"] = 100;
self.pers["bots"]["skill"]["reaction_time"] = 50; self.pers["bots"]["skill"]["reaction_time"] = 50;
self.pers["bots"]["skill"]["no_trace_ads_time"] = 2500;
self.pers["bots"]["skill"]["no_trace_look_time"] = 4000;
self.pers["bots"]["skill"]["remember_time"] = 7500; self.pers["bots"]["skill"]["remember_time"] = 7500;
self.pers["bots"]["skill"]["fov"] = 0.4; self.pers["bots"]["skill"]["fov"] = 0.4;
self.pers["bots"]["skill"]["dist"] = 10000; self.pers["bots"]["skill"]["dist"] = 10000;
@ -788,6 +802,8 @@ set_diff()
self.pers["bots"]["skill"]["init_react_time"] = 50 * randomInt(100); self.pers["bots"]["skill"]["init_react_time"] = 50 * randomInt(100);
self.pers["bots"]["skill"]["reaction_time"] = 50 * randomInt(100); self.pers["bots"]["skill"]["reaction_time"] = 50 * randomInt(100);
self.pers["bots"]["skill"]["remember_time"] = 50 * randomInt(100); self.pers["bots"]["skill"]["remember_time"] = 50 * randomInt(100);
self.pers["bots"]["skill"]["no_trace_ads_time"] = 50 * randomInt(100);
self.pers["bots"]["skill"]["no_trace_look_time"] = 50 * randomInt(100);
self.pers["bots"]["skill"]["fov"] = randomFloatRange(-1, 1); self.pers["bots"]["skill"]["fov"] = randomFloatRange(-1, 1);
self.pers["bots"]["skill"]["dist"] = randomIntRange(500, 25000); self.pers["bots"]["skill"]["dist"] = randomIntRange(500, 25000);
self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomInt(20); self.pers["bots"]["skill"]["spawn_time"] = 0.05 * randomInt(20);