From de01ed6746e14bc4edc498d219efdd3504cd628a Mon Sep 17 00:00:00 2001 From: Jackz Date: Sat, 17 Apr 2021 15:21:05 -0500 Subject: [PATCH] Fix l4d2_autobotcrown small issues --- plugins/l4d2_autobotcrown.smx | Bin 8425 -> 8669 bytes scripting/l4d2_autobotcrown.sp | 76 ++++++++++++++++++++++++++------- 2 files changed, 61 insertions(+), 15 deletions(-) diff --git a/plugins/l4d2_autobotcrown.smx b/plugins/l4d2_autobotcrown.smx index 1c71376be35469b1f676ac70d9650144885eefdb..9d1c4c5678620ea5f0f77d7f2694bbf7471de0c9 100644 GIT binary patch delta 8519 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 delta 8273 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 JS4u+k{{SblGXnqs diff --git a/scripting/l4d2_autobotcrown.sp b/scripting/l4d2_autobotcrown.sp index 3c9c3cd..c571ea2 100644 --- a/scripting/l4d2_autobotcrown.sp +++ b/scripting/l4d2_autobotcrown.sp @@ -6,7 +6,7 @@ //#define DEBUG 0 #define SCAN_INTERVAL 4.0 -#define SCAN_RANGE 750.0 +#define SCAN_RANGE 570.0 #define ACTIVE_INTERVAL 0.4 #include @@ -29,7 +29,7 @@ public Plugin myinfo = static ArrayList WitchList; static Handle timer = INVALID_HANDLE; static bool lateLoaded = false, AutoCrownInPosition = false; -static int AutoCrownBot = -1, AutoCrownTarget, currentDifficulty; +static int AutoCrownBot = -1, AutoCrownTarget, currentDifficulty, PathfindTries = 0; static float CrownPos[3], CrownAng[3]; static ConVar hValidDifficulties, hAllowedGamemodes; @@ -46,18 +46,22 @@ public void OnPluginStart() WitchList = new ArrayList(1, 0); if(lateLoaded) { - char classname[32]; + char classname[8]; for(int i = MaxClients; i < 2048; i++) { if(IsValidEntity(i)) { GetEntityClassname(i, classname, sizeof(classname)); if(StrEqual(classname, "witch", false)) { WitchList.Push(i); - if(timer == INVALID_HANDLE) { - timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); - } + #if defined DEBUG + PrintToServer("Found pre-existing witch %d", i); + #endif + } } } + if(timer == INVALID_HANDLE && WitchList.Length > 0) { + timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT); + } } hValidDifficulties = CreateConVar("l4d2_autocrown_allowed_difficulty", "7", "The difficulties the plugin is active on. 1=Easy, 2=Normal 4=Advanced 8=Expert. Add numbers together.", FCVAR_NONE); @@ -76,7 +80,20 @@ public void OnPluginStart() HookEvent("difficulty_changed", Event_DifficultyChanged); RegAdminCmd("sm_ws", Cmd_Status, ADMFLAG_ROOT); + + #if defined DEBUG + CreateTimer(0.6, Timer_Debug, _, TIMER_REPEAT); + #endif } + +#if defined DEBUG +public Action Timer_Debug(Handle timer) { + PrintHintTextToAll("Scan Timer: %b | Active: %b | In Position %b | Witches %d | Bot %N", timer != INVALID_HANDLE, AutoCrownBot > -1, AutoCrownInPosition, WitchList.Length, GetClientOfUserId(AutoCrownBot)); + return Plugin_Continue; +} +#endif + + public Action Cmd_Status(int client, int args) { ReplyToCommand(client, "Scan Timer: %b | Active: %b | In Position %b | Witches %d | Bot %N", timer != INVALID_HANDLE, AutoCrownBot > -1, AutoCrownInPosition, WitchList.Length, GetClientOfUserId(AutoCrownBot)); return Plugin_Handled; @@ -87,17 +104,15 @@ public void Event_DifficultyChanged(Event event, const char[] name, bool dontBro currentDifficulty = GetDifficultyInt(diff); if(hAllowedGamemodes.IntValue & currentDifficulty > 0) { if(timer == INVALID_HANDLE && AutoCrownBot == -1) { - timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); + timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT); } }else{ - CloseHandle(timer); - timer = INVALID_HANDLE; + delete timer; } } public void Change_Gamemode(ConVar convar, const char[] oldValue, const char[] newValue) { if(StrEqual(newValue, "realism")) { - CloseHandle(timer); - timer = INVALID_HANDLE; + delete timer; } } @@ -112,8 +127,9 @@ public Action Event_WitchSpawn(Event event, const char[] name, bool dontBroadcas #if defined DEBUG PrintToServer("Witch spawned: %d", witchID); #endif + //If not currently scanning, begin scanning ONLY if not active if(timer == INVALID_HANDLE && AutoCrownBot == -1) { - timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); + timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT); } } @@ -126,6 +142,7 @@ public Action Event_WitchKilled(Event event, const char[] name, bool dontBroadca if(index > -1) { RemoveFromArray(WitchList, index); } + //If witch that was killed, terminate active loop if(AutoCrownTarget == witchID) { ResetAutoCrown(); #if defined DEBUG @@ -139,10 +156,10 @@ public Action Timer_Active(Handle hdl) { #if defined DEBUG PrintToServer("No witches detected, ending timer"); #endif - timer = INVALID_HANDLE; return Plugin_Stop; } //TODO: Also check if startled and cancel it immediately. + //TODO: X amount of tries, then ignore. if(AutoCrownBot > -1) { int client = GetClientOfUserId(AutoCrownBot); if(!IsValidEntity(AutoCrownTarget) || IsPlayerIncapped(client)) { @@ -185,10 +202,21 @@ public Action Timer_Active(Handle hdl) { AutoCrownInPosition = true; }else{ L4D2_RunScript("CommandABot({cmd=1,bot=GetPlayerFromUserID(%i),pos=Vector(%f,%f,%f)})", AutoCrownBot, witchPos[0], witchPos[1], witchPos[2]); + PathfindTries++; + } + if(PathfindTries > 30) { + ResetAutoCrown(); + int index = FindValueInArray(WitchList, AutoCrownTarget); + if(index > -1) + RemoveFromArray(WitchList, index); + //remove witch + #if defined DEBUG + PrintToServer("Could not pathfind to witch in time."); + #endif } return Plugin_Continue; }else{ - timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT | TIMER_FLAG_NO_MAPCHANGE); + timer = CreateTimer(SCAN_INTERVAL, Timer_Scan, _, TIMER_REPEAT); return Plugin_Stop; } } @@ -198,6 +226,7 @@ public Action Timer_Scan(Handle hdl) { #if defined DEBUG PrintToServer("No witches detected, ending timer"); #endif + timer = INVALID_HANDLE; return Plugin_Stop; } for(int bot = 1; bot <= MaxClients; bot++) { @@ -208,6 +237,7 @@ public Action Timer_Scan(Handle hdl) { if(GetClientWeapon(bot, wpn, sizeof(wpn)) && (StrEqual(wpn, "weapon_autoshotgun") || StrEqual(wpn, "weapon_shotgun_spas"))) { GetClientAbsOrigin(bot, botPosition); + //Loop all witches, find any valid nearby witches: for(int i = 0; i < WitchList.Length; i++) { int witchID = WitchList.Get(i); if(IsValidEntity(witchID) && HasEntProp(witchID, Prop_Send, "m_rage") && GetEntPropFloat(witchID, Prop_Send, "m_rage") <= 0.4) { @@ -255,7 +285,23 @@ public void ResetAutoCrown() { if(AutoCrownBot > -1) L4D2_RunScript("CommandABot({cmd=3,bot=GetPlayerFromUserID(%i)})", AutoCrownBot); AutoCrownBot = -1; - timer = INVALID_HANDLE; + PathfindTries = 0; + if(timer != INVALID_HANDLE) { + CloseHandle(timer); + timer = INVALID_HANDLE; + } +} + +public void OnMapStart() { + WitchList.Clear(); + ResetAutoCrown(); +} +public void OnMapEnd() { + if(timer != INVALID_HANDLE) { + CloseHandle(timer); + timer = INVALID_HANDLE; + } + WitchList.Clear(); } int GetDifficultyInt(const char[] type) {