diff --git a/plugins/200IQBots_FlyYouFools.smx b/plugins/200IQBots_FlyYouFools.smx index f36a18d..93a059a 100644 Binary files a/plugins/200IQBots_FlyYouFools.smx and b/plugins/200IQBots_FlyYouFools.smx differ diff --git a/plugins/l4d2_avoid_minigun.smx b/plugins/l4d2_avoid_minigun.smx index 49b9ea6..b8ebfd6 100644 Binary files a/plugins/l4d2_avoid_minigun.smx and b/plugins/l4d2_avoid_minigun.smx differ diff --git a/scripting/200IQBots_FlyYouFools.sp b/scripting/200IQBots_FlyYouFools.sp index 286c07e..3e0ba8f 100644 --- a/scripting/200IQBots_FlyYouFools.sp +++ b/scripting/200IQBots_FlyYouFools.sp @@ -4,6 +4,9 @@ #define PLUGIN_VERSION "1.5" #pragma newdecls required +#define MAX_TANK_DISTANCE_FROM_SURVIVOR 1000 +#define MAX_TANK_DIST_SQUARED MAX_TANK_DISTANCE_FROM_SURVIVOR^2 + //#define DEBUG static bool bEscapeReady = false; @@ -34,7 +37,6 @@ public void OnPluginStart() HookEvent("round_start", Event_RoundStart, EventHookMode_PostNoCopy); HookEvent("tank_spawn", Event_TankSpawn); HookEvent("tank_killed", Event_TankDeath); - HookEvent("tank_killed", Event_RoundStart, EventHookMode_PostNoCopy); HookEvent("finale_vehicle_incoming", Event_FinaleArriving, EventHookMode_PostNoCopy); } @@ -109,8 +111,8 @@ public Action BotControlTimerV2(Handle timer) //Fetch the tank's position GetClientAbsOrigin(tankID, TankPosition); //Get distance to survivor, and compare to get closest tank - distanceFromSurvivor = GetVectorDistance(BotPosition, TankPosition); - if(distanceFromSurvivor <= 1000 && smallestDistance > distanceFromSurvivor || smallestDistance == 0.0) { + distanceFromSurvivor = GetVectorDistance(BotPosition, TankPosition, true); + if(distanceFromSurvivor <= MAX_TANK_DIST_SQUARED && smallestDistance > distanceFromSurvivor || smallestDistance == 0.0) { smallestDistance = distanceFromSurvivor; closestTank = tankID; } diff --git a/scripting/l4d2_avoid_minigun.sp b/scripting/l4d2_avoid_minigun.sp index 566bc6c..af02e96 100644 --- a/scripting/l4d2_avoid_minigun.sp +++ b/scripting/l4d2_avoid_minigun.sp @@ -71,7 +71,7 @@ public Action CheckTimer(Handle timer) { //optimization: Only update player-based positions ever 5 loops (5 * 5 = 25 seconds) static int timer_update_pos; if(GetClientCount(true) == 0) return Plugin_Continue; - float pos[3], ang[3], botPos[3], center_distance; + static float pos[3], ang[3], botPos[3], center_distance; static float finalPos[3], checkPos[3]; bool usingMinigun, usingMountedWeapon; @@ -92,9 +92,9 @@ public Action CheckTimer(Handle timer) { if(bIsSurvivorClient[bot] && IsClientInGame(bot) && IsFakeClient(bot) && IsPlayerAlive(bot)) { GetClientAbsOrigin(bot, botPos); - center_distance = GetVectorDistance(checkPos, botPos); + center_distance = GetVectorDistance(checkPos, botPos, true); - if(center_distance <= 70) { + if(center_distance <= 4900) { L4D2_RunScript("CommandABot({cmd=1,bot=GetPlayerFromUserID(%i),pos=Vector(%f,%f,%f)})", GetClientUserId(bot), finalPos[0], finalPos[1], finalPos[2]); }else{ L4D2_RunScript("CommandABot({cmd=3,bot=GetPlayerFromUserID(%i)})", GetClientUserId(bot));