From c2d88e9f17bf424dcf01e5465c7615763c490725 Mon Sep 17 00:00:00 2001 From: INeedBots Date: Sun, 27 Sep 2020 23:09:13 -0600 Subject: [PATCH] Fixed distance --- userraw/maps/mp/bots/_bot.gsc | 2 +- userraw/maps/mp/bots/_bot_internal.gsc | 47 ++++++++++++++++++++------ userraw/maps/mp/bots/_bot_script.gsc | 40 ++++++++++++++-------- 3 files changed, 63 insertions(+), 26 deletions(-) diff --git a/userraw/maps/mp/bots/_bot.gsc b/userraw/maps/mp/bots/_bot.gsc index bc265c9..f46f13a 100644 --- a/userraw/maps/mp/bots/_bot.gsc +++ b/userraw/maps/mp/bots/_bot.gsc @@ -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; diff --git a/userraw/maps/mp/bots/_bot_internal.gsc b/userraw/maps/mp/bots/_bot_internal.gsc index e783102..6e9705d 100644 --- a/userraw/maps/mp/bots/_bot_internal.gsc +++ b/userraw/maps/mp/bots/_bot_internal.gsc @@ -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 diff --git a/userraw/maps/mp/bots/_bot_script.gsc b/userraw/maps/mp/bots/_bot_script.gsc index 14eb204..498f0e2 100644 --- a/userraw/maps/mp/bots/_bot_script.gsc +++ b/userraw/maps/mp/bots/_bot_script.gsc @@ -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)