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)
continue;
if (Distance(player2.origin, player.origin) > 100)
if (DistanceSquared(player2.origin, player.origin) > 100*100)
continue;
player.bot_isScrambled = true;

View File

@ -195,6 +195,7 @@ resetBotVars()
self.bot.knifing = false;
self.bot.knifingafter = false;
self.bot.knifeteleport = false;
}
/*
@ -947,17 +948,18 @@ moveHack()
if (!isReallyAlive(player))
continue;
dist = distance(self.origin, player.origin);
if (dist > level.botPushOutDist)
if (distanceSquared(self.origin, player.origin) > level.botPushOutDist*level.botPushOutDist)
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));
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
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]));
}
}
@ -2221,7 +2223,7 @@ walk()
self botMoveTo(self.origin);
if(self.bot.isfrozen || self.bot.stop_move)
if(self.bot.isfrozen || self.bot.stop_move || self.bot.knifeteleport)
continue;
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);
// 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);
@ -2535,6 +2537,19 @@ movetowards(goal)
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.
*/
@ -2566,7 +2581,7 @@ knife(ent, knifeDist)
isplay = (isDefined(ent) && isPlayer(ent));
usedRiot = self.hasRiotShieldEquipped;
org = (0, 0, 99999999);
org = self.origin;
if (isDefined(ent))
org = ent.origin;
distsq = DistanceSquared(self.origin, org);
@ -2598,7 +2613,7 @@ knife(ent, knifeDist)
}
else
{
if ((distsq / knifeDist) < 0.5)
if ((distsq / knifeDist) < 0.75)
{
self playSound("melee_swing_small");
if (stance != "prone")
@ -2631,7 +2646,13 @@ knife(ent, knifeDist)
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)
{
@ -2642,14 +2663,18 @@ knife(ent, knifeDist)
pushoutPos = self.origin + (pushOutDir * (60-distance(ent.origin,self.origin)));
self SetOrigin((pushoutPos[0], pushoutPos[1], ent.origin[2]));
self notify("kill_goal");
self thread dontMoveForABit();
}
for (;;)
{
if (!randomInt(20)) // 5 percent chance to miss
break;
// check riotshield
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))
{
// play riot shield hitting knife sound

View File

@ -1188,14 +1188,17 @@ nearAnyOfWaypoints(dist, waypoints)
getNearestWaypointOfWaypoints(waypoints)
{
answer = undefined;
closestDist = -1;
for (i = 0; i < waypoints.size; 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;
answer = waypoint;
closestDist = thisDist;
}
return answer;
@ -1377,9 +1380,10 @@ bot_think_camp()
continue;
campSpots = [];
distSq = 1024*1024;
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;
campSpots[campSpots.size] = level.waypointsCamp[i];
@ -1484,6 +1488,7 @@ bot_think_follow()
continue;
follows = [];
distSq = self.pers["bots"]["skill"]["help_dist"] * self.pers["bots"]["skill"]["help_dist"];
for (i = level.players.size - 1; i >= 0; i--)
{
player = level.players[i];
@ -1497,7 +1502,7 @@ bot_think_follow()
if (player.team != self.team)
continue;
if (Distance(player.origin, self.origin) > self.pers["bots"]["skill"]["help_dist"])
if (DistanceSquared(player.origin, self.origin) > distSq)
continue;
follows[follows.size] = player;
@ -1568,7 +1573,7 @@ followPlayer(who)
self SetScriptAimPos(who.origin + (0, 0, 42));
myGoal = self GetScriptGoal();
if (isDefined(myGoal) && Distance(myGoal, who.origin) < 64)
if (isDefined(myGoal) && DistanceSquared(myGoal, who.origin) < 64*64)
continue;
self.bot_was_follow_script_update = true;
@ -1775,9 +1780,10 @@ bot_use_tube_think()
if (!self nearAnyOfWaypoints(128, level.waypointsTube))
{
tubeWps = [];
distSq = 1024*1024;
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;
tubeWps[tubeWps.size] = level.waypointsTube[i];
@ -1930,9 +1936,10 @@ bot_use_equipment_think()
if (!self nearAnyOfWaypoints(128, level.waypointsClay))
{
clayWps = [];
distSq = 1024*1024;
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;
clayWps[clayWps.size] = level.waypointsClay[i];
@ -2044,9 +2051,10 @@ bot_use_grenade_think()
if (!self nearAnyOfWaypoints(128, level.waypointsGren))
{
nadeWps = [];
distSq = 1024*1024;
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;
nadeWps[nadeWps.size] = level.waypointsGren[i];
@ -2172,9 +2180,10 @@ bot_jav_loc_think()
if (!self nearAnyOfWaypoints(128, level.waypointsJav))
{
javWps = [];
distSq = 1024*1024;
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;
javWps[javWps.size] = level.waypointsJav[i];
@ -2533,12 +2542,14 @@ bot_uav_think()
if(!isReallyAlive(player))
continue;
if(DistanceSquared(self.origin, player.origin) > dist)
distFromPlayer = DistanceSquared(self.origin, player.origin);
if(distFromPlayer > dist)
continue;
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);
}
@ -2799,7 +2810,7 @@ bot_crate_think()
{
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;
}
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))
{
campSpots = [];
distSq = 1024*1024;
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;
campSpots[campSpots.size] = level.waypointsCamp[i];
@ -3249,7 +3261,7 @@ bot_killstreak_think()
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;
self BotFreezeControls(true);
@ -3386,7 +3398,7 @@ bot_killstreak_think()
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;
if (!bulletTracePassed(forwardTrace["position"], forwardTrace["position"]+(0,0,2048), false, self) && self.pers["bots"]["skill"]["base"] > 3)