Fixed distance

This commit is contained in:
INeedBots 2020-09-27 23:09:13 -06:00
parent 15d878a12e
commit c2d88e9f17
3 changed files with 63 additions and 26 deletions

View File

@ -351,7 +351,7 @@ watchScrabler()
if(level.teamBased && player2.team == player.team) if(level.teamBased && player2.team == player.team)
continue; continue;
if (Distance(player2.origin, player.origin) > 100) if (DistanceSquared(player2.origin, player.origin) > 100*100)
continue; continue;
player.bot_isScrambled = true; player.bot_isScrambled = true;

View File

@ -195,6 +195,7 @@ resetBotVars()
self.bot.knifing = false; self.bot.knifing = false;
self.bot.knifingafter = false; self.bot.knifingafter = false;
self.bot.knifeteleport = false;
} }
/* /*
@ -947,17 +948,18 @@ moveHack()
if (!isReallyAlive(player)) if (!isReallyAlive(player))
continue; continue;
dist = distance(self.origin, player.origin); if (distanceSquared(self.origin, player.origin) > level.botPushOutDist*level.botPushOutDist)
if (dist > level.botPushOutDist)
continue; continue;
dist = distance(self.origin, player.origin);
pushOutDist = level.botPushOutDist;
pushOutDir = VectorNormalize((self.origin[0], self.origin[1], 0)-(player.origin[0], player.origin[1], 0)); pushOutDir = VectorNormalize((self.origin[0], self.origin[1], 0)-(player.origin[0], player.origin[1], 0));
trace = bulletTrace(self.origin + (0,0,20), (self.origin + (0,0,20)) + (pushOutDir * ((level.botPushOutDist-dist)+10)), false, self); trace = bulletTrace(self.origin + (0,0,20), (self.origin + (0,0,20)) + (pushOutDir * ((pushOutDist-dist)+10)), false, self);
//no collision, so push out //no collision, so push out
if(trace["fraction"] == 1) if(trace["fraction"] == 1)
{ {
pushoutPos = self.origin + (pushOutDir * (level.botPushOutDist-dist)); pushoutPos = self.origin + (pushOutDir * (pushOutDist-dist));
self SetOrigin((pushoutPos[0], pushoutPos[1], self.origin[2])); self SetOrigin((pushoutPos[0], pushoutPos[1], self.origin[2]));
} }
} }
@ -2221,7 +2223,7 @@ walk()
self botMoveTo(self.origin); self botMoveTo(self.origin);
if(self.bot.isfrozen || self.bot.stop_move) if(self.bot.isfrozen || self.bot.stop_move || self.bot.knifeteleport)
continue; continue;
if(self maps\mp\_flashgrenades::isFlashbanged() && !self.bot.jumpingafter) if(self maps\mp\_flashgrenades::isFlashbanged() && !self.bot.jumpingafter)
@ -2265,7 +2267,7 @@ walk()
goal = PhysicsTrace(goal + (0, 0, 50), goal + (0, 0, -40), false, self); goal = PhysicsTrace(goal + (0, 0, 50), goal + (0, 0, -40), false, self);
// too small, lets bounce off the wall // too small, lets bounce off the wall
if (Distance(goal, myOrg) < stepDist - 1 || randomInt(100) < 5) if (DistanceSquared(goal, myOrg) < stepDist*stepDist - 1 || randomInt(100) < 5)
{ {
trace = bulletTrace(myOrg, myOrg + forward, false, self); trace = bulletTrace(myOrg, myOrg + forward, false, self);
@ -2535,6 +2537,19 @@ movetowards(goal)
self notify("completed_move_to"); self notify("completed_move_to");
} }
dontMoveForABit()
{
self endon("disconnect");
self endon("death");
level endon ( "game_ended" );
self.bot.knifeteleport = true;
wait 0.3;
self.bot.knifeteleport = false;
}
/* /*
Bot will knife. Bot will knife.
*/ */
@ -2566,7 +2581,7 @@ knife(ent, knifeDist)
isplay = (isDefined(ent) && isPlayer(ent)); isplay = (isDefined(ent) && isPlayer(ent));
usedRiot = self.hasRiotShieldEquipped; usedRiot = self.hasRiotShieldEquipped;
org = (0, 0, 99999999); org = self.origin;
if (isDefined(ent)) if (isDefined(ent))
org = ent.origin; org = ent.origin;
distsq = DistanceSquared(self.origin, org); distsq = DistanceSquared(self.origin, org);
@ -2598,7 +2613,7 @@ knife(ent, knifeDist)
} }
else else
{ {
if ((distsq / knifeDist) < 0.5) if ((distsq / knifeDist) < 0.75)
{ {
self playSound("melee_swing_small"); self playSound("melee_swing_small");
if (stance != "prone") if (stance != "prone")
@ -2631,7 +2646,13 @@ knife(ent, knifeDist)
wait 0.15; wait 0.15;
if (isDefined(ent) && isAlive(ent) && randomInt(20)) // 5percent chance of missing allIsStillGood = false;
if (isDefined(ent) && isAlive(ent))
{
allIsStillGood = (getConeDot(ent.origin, self.origin, self GetPlayerAngles()) > 0.85); // make sure that the bot is looking at the target
}
if (allIsStillGood)
{ {
if (isplay) if (isplay)
{ {
@ -2642,14 +2663,18 @@ knife(ent, knifeDist)
pushoutPos = self.origin + (pushOutDir * (60-distance(ent.origin,self.origin))); pushoutPos = self.origin + (pushOutDir * (60-distance(ent.origin,self.origin)));
self SetOrigin((pushoutPos[0], pushoutPos[1], ent.origin[2])); self SetOrigin((pushoutPos[0], pushoutPos[1], ent.origin[2]));
self notify("kill_goal"); self notify("kill_goal");
self thread dontMoveForABit();
} }
for (;;) for (;;)
{ {
if (!randomInt(20)) // 5 percent chance to miss
break;
// check riotshield // check riotshield
if (ent.hasRiotShield) if (ent.hasRiotShield)
{ {
entCone = ent getConeDot((self.origin[0], self.origin[1], 0), (ent.origin[0], ent.origin[1], 0), (0, ent GetPlayerAngles()[1], 0)); entCone = getConeDot((self.origin[0], self.origin[1], 0), (ent.origin[0], ent.origin[1], 0), (0, ent GetPlayerAngles()[1], 0));
if ((entCone > 0.65 && ent.hasRiotShieldEquipped) || (entCone < -0.65 && !ent.hasRiotShieldEquipped)) if ((entCone > 0.65 && ent.hasRiotShieldEquipped) || (entCone < -0.65 && !ent.hasRiotShieldEquipped))
{ {
// play riot shield hitting knife sound // play riot shield hitting knife sound

View File

@ -1188,14 +1188,17 @@ nearAnyOfWaypoints(dist, waypoints)
getNearestWaypointOfWaypoints(waypoints) getNearestWaypointOfWaypoints(waypoints)
{ {
answer = undefined; answer = undefined;
closestDist = -1;
for (i = 0; i < waypoints.size; i++) for (i = 0; i < waypoints.size; i++)
{ {
waypoint = waypoints[i]; waypoint = waypoints[i];
thisDist = DistanceSquared(self.origin, waypoint.origin);
if (isDefined(answer) && closer(self.origin, answer.origin, waypoint.origin)) if (isDefined(answer) && thisDist < closestDist)
continue; continue;
answer = waypoint; answer = waypoint;
closestDist = thisDist;
} }
return answer; return answer;
@ -1377,9 +1380,10 @@ bot_think_camp()
continue; continue;
campSpots = []; campSpots = [];
distSq = 1024*1024;
for (i = 0; i < level.waypointsCamp.size; i++) for (i = 0; i < level.waypointsCamp.size; i++)
{ {
if (Distance(self.origin, level.waypointsCamp[i].origin) > 1024) if (DistanceSquared(self.origin, level.waypointsCamp[i].origin) > distSq)
continue; continue;
campSpots[campSpots.size] = level.waypointsCamp[i]; campSpots[campSpots.size] = level.waypointsCamp[i];
@ -1484,6 +1488,7 @@ bot_think_follow()
continue; continue;
follows = []; follows = [];
distSq = self.pers["bots"]["skill"]["help_dist"] * self.pers["bots"]["skill"]["help_dist"];
for (i = level.players.size - 1; i >= 0; i--) for (i = level.players.size - 1; i >= 0; i--)
{ {
player = level.players[i]; player = level.players[i];
@ -1497,7 +1502,7 @@ bot_think_follow()
if (player.team != self.team) if (player.team != self.team)
continue; continue;
if (Distance(player.origin, self.origin) > self.pers["bots"]["skill"]["help_dist"]) if (DistanceSquared(player.origin, self.origin) > distSq)
continue; continue;
follows[follows.size] = player; follows[follows.size] = player;
@ -1568,7 +1573,7 @@ followPlayer(who)
self SetScriptAimPos(who.origin + (0, 0, 42)); self SetScriptAimPos(who.origin + (0, 0, 42));
myGoal = self GetScriptGoal(); myGoal = self GetScriptGoal();
if (isDefined(myGoal) && Distance(myGoal, who.origin) < 64) if (isDefined(myGoal) && DistanceSquared(myGoal, who.origin) < 64*64)
continue; continue;
self.bot_was_follow_script_update = true; self.bot_was_follow_script_update = true;
@ -1775,9 +1780,10 @@ bot_use_tube_think()
if (!self nearAnyOfWaypoints(128, level.waypointsTube)) if (!self nearAnyOfWaypoints(128, level.waypointsTube))
{ {
tubeWps = []; tubeWps = [];
distSq = 1024*1024;
for (i = 0; i < level.waypointsTube.size; i++) for (i = 0; i < level.waypointsTube.size; i++)
{ {
if (Distance(self.origin, level.waypointsTube[i].origin) > 1024) if (DistanceSquared(self.origin, level.waypointsTube[i].origin) > distSq)
continue; continue;
tubeWps[tubeWps.size] = level.waypointsTube[i]; tubeWps[tubeWps.size] = level.waypointsTube[i];
@ -1930,9 +1936,10 @@ bot_use_equipment_think()
if (!self nearAnyOfWaypoints(128, level.waypointsClay)) if (!self nearAnyOfWaypoints(128, level.waypointsClay))
{ {
clayWps = []; clayWps = [];
distSq = 1024*1024;
for (i = 0; i < level.waypointsClay.size; i++) for (i = 0; i < level.waypointsClay.size; i++)
{ {
if (Distance(self.origin, level.waypointsClay[i].origin) > 1024) if (DistanceSquared(self.origin, level.waypointsClay[i].origin) > distSq)
continue; continue;
clayWps[clayWps.size] = level.waypointsClay[i]; clayWps[clayWps.size] = level.waypointsClay[i];
@ -2044,9 +2051,10 @@ bot_use_grenade_think()
if (!self nearAnyOfWaypoints(128, level.waypointsGren)) if (!self nearAnyOfWaypoints(128, level.waypointsGren))
{ {
nadeWps = []; nadeWps = [];
distSq = 1024*1024;
for (i = 0; i < level.waypointsGren.size; i++) for (i = 0; i < level.waypointsGren.size; i++)
{ {
if (Distance(self.origin, level.waypointsGren[i].origin) > 1024) if (DistanceSquared(self.origin, level.waypointsGren[i].origin) > distSq)
continue; continue;
nadeWps[nadeWps.size] = level.waypointsGren[i]; nadeWps[nadeWps.size] = level.waypointsGren[i];
@ -2172,9 +2180,10 @@ bot_jav_loc_think()
if (!self nearAnyOfWaypoints(128, level.waypointsJav)) if (!self nearAnyOfWaypoints(128, level.waypointsJav))
{ {
javWps = []; javWps = [];
distSq = 1024*1024;
for (i = 0; i < level.waypointsJav.size; i++) for (i = 0; i < level.waypointsJav.size; i++)
{ {
if (Distance(self.origin, level.waypointsJav[i].origin) > 1024) if (DistanceSquared(self.origin, level.waypointsJav[i].origin) > distSq)
continue; continue;
javWps[javWps.size] = level.waypointsJav[i]; javWps[javWps.size] = level.waypointsJav[i];
@ -2533,12 +2542,14 @@ bot_uav_think()
if(!isReallyAlive(player)) if(!isReallyAlive(player))
continue; continue;
if(DistanceSquared(self.origin, player.origin) > dist) distFromPlayer = DistanceSquared(self.origin, player.origin);
if(distFromPlayer > dist)
continue; continue;
if((!isSubStr(player getCurrentWeapon(), "_silencer_") && player.bots_firing) || (hasRadar && !player hasPerk("specialty_coldblooded"))) if((!isSubStr(player getCurrentWeapon(), "_silencer_") && player.bots_firing) || (hasRadar && !player hasPerk("specialty_coldblooded")))
{ {
if (Distance(self.origin, player.origin) < self.pers["bots"]["skill"]["help_dist"] && bulletTracePassed(self getEye(), player getTagOrigin( "j_spineupper" ), false, player)) distSq = self.pers["bots"]["skill"]["help_dist"] * self.pers["bots"]["skill"]["help_dist"];
if (distFromPlayer < distSq && bulletTracePassed(self getEye(), player getTagOrigin( "j_spineupper" ), false, player))
{ {
self SetAttacker(player); self SetAttacker(player);
} }
@ -2799,7 +2810,7 @@ bot_crate_think()
{ {
if (wantsClosest) if (wantsClosest)
{ {
if (Distance(crate.origin, self.origin) < Distance(tempCrate.origin, self.origin)) if (DistanceSquared(crate.origin, self.origin) < DistanceSquared(tempCrate.origin, self.origin))
continue; continue;
} }
else else
@ -3221,9 +3232,10 @@ bot_killstreak_think()
if (self.pers["killstreaks"][0].lifeId == self.pers["deaths"] && !self HasScriptGoal() && !self.bot_lock_goal && streakName != "sentry" && !self nearAnyOfWaypoints(128, level.waypointsCamp)) if (self.pers["killstreaks"][0].lifeId == self.pers["deaths"] && !self HasScriptGoal() && !self.bot_lock_goal && streakName != "sentry" && !self nearAnyOfWaypoints(128, level.waypointsCamp))
{ {
campSpots = []; campSpots = [];
distSq = 1024*1024;
for (i = 0; i < level.waypointsCamp.size; i++) for (i = 0; i < level.waypointsCamp.size; i++)
{ {
if (Distance(self.origin, level.waypointsCamp[i].origin) > 1024) if (DistanceSquared(self.origin, level.waypointsCamp[i].origin) > distSq)
continue; continue;
campSpots[campSpots.size] = level.waypointsCamp[i]; campSpots[campSpots.size] = level.waypointsCamp[i];
@ -3249,7 +3261,7 @@ bot_killstreak_think()
forwardTrace = bulletTrace(myEye, myEye + AnglesToForward(angles)*1024, false, self); forwardTrace = bulletTrace(myEye, myEye + AnglesToForward(angles)*1024, false, self);
if (Distance(self.origin, forwardTrace["position"]) < 1000 && self.pers["bots"]["skill"]["base"] > 3) if (DistanceSquared(self.origin, forwardTrace["position"]) < 1000*1000 && self.pers["bots"]["skill"]["base"] > 3)
continue; continue;
self BotFreezeControls(true); self BotFreezeControls(true);
@ -3386,7 +3398,7 @@ bot_killstreak_think()
forwardTrace = bulletTrace(myEye, myEye + AnglesToForward(angles)*256, false, self); forwardTrace = bulletTrace(myEye, myEye + AnglesToForward(angles)*256, false, self);
if (Distance(self.origin, forwardTrace["position"]) < 96 && self.pers["bots"]["skill"]["base"] > 3) if (DistanceSquared(self.origin, forwardTrace["position"]) < 96*96 && self.pers["bots"]["skill"]["base"] > 3)
continue; continue;
if (!bulletTracePassed(forwardTrace["position"], forwardTrace["position"]+(0,0,2048), false, self) && self.pers["bots"]["skill"]["base"] > 3) if (!bulletTracePassed(forwardTrace["position"], forwardTrace["position"]+(0,0,2048), false, self) && self.pers["bots"]["skill"]["base"] > 3)