From be2c2797ab8293fe2fa2c22d6b5b646b7dbb69e5 Mon Sep 17 00:00:00 2001
From: jenz <unlozehq@gmail.com>
Date: Sat, 2 Sep 2023 01:02:34 +0200
Subject: [PATCH] actually just removing timer to instead calling on
 postadminforward and disconnect. but also fixing warnings and just shifting
 indentation around

---
 SprayManager/scripting/SprayManager.sp | 1127 ++++++++++++------------
 1 file changed, 576 insertions(+), 551 deletions(-)

diff --git a/SprayManager/scripting/SprayManager.sp b/SprayManager/scripting/SprayManager.sp
index bd19ce63..4c15c3f8 100644
--- a/SprayManager/scripting/SprayManager.sp
+++ b/SprayManager/scripting/SprayManager.sp
@@ -159,7 +159,6 @@ public void OnPluginStart()
     AutoExecConfig(true, "plugin.SprayManager");
 
     g_hTraceTimer = CreateTimer(0.25, Timer_PerformPlayerTraces, _, TIMER_REPEAT);
-    g_hHideSpray = CreateTimer(4.0, Timer_UpdateHideSprays, _, TIMER_REPEAT);
 
     if (g_bLoadedLate)
     {
@@ -328,6 +327,7 @@ public void OnClientPostAdminCheck(int client)
         }
     }
     update_client_online(client, 1);
+    UpdateHideSprays();
 }
 
 public void update_client_online(int client, int is_online)
@@ -365,6 +365,7 @@ public void OnClientDisconnect(int client)
     }
 
     ClearPlayerInfo(client);
+    UpdateHideSprays();
 }
 
 public Action CS_OnTerminateRound(float &fDelay, CSRoundEndReason &reason)
@@ -565,40 +566,41 @@ void Menu_ListBans(int client)
 
 int MenuHandler_Menu_ListBans(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
-				DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
+                DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[32];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[32];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = GetClientOfUserId(StringToInt(sOption));
+            int target = GetClientOfUserId(StringToInt(sOption));
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				g_bInvokedThroughListMenu[iParam1] = true;
-				Menu_ListBans_Target(iParam1, target);
-			}
-		}
-	}
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                g_bInvokedThroughListMenu[iParam1] = true;
+                Menu_ListBans_Target(iParam1, target);
+            }
+        }
+    }
+    return 0;
 }
 
 void Menu_Trace(int client, int target)
@@ -625,227 +627,230 @@ void Menu_Trace(int client, int target)
 
 int MenuHandler_Menu_Trace(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
-				DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
+                DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[2];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[2];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = g_iSprayTraceTarget[iParam1];
+            int target = g_iSprayTraceTarget[iParam1];
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				g_bInvokedThroughTopMenu[iParam1] = false;
+                g_bInvokedThroughTopMenu[iParam1] = false;
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				switch (StringToInt(sOption))
-				{
-					case 1:
-					{
-						PrintToChat(target, "\x01\x04[SprayManager]\x01 Your spray is not allowed, change it.");
-						Menu_Trace(iParam1, target);
-					}
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                switch (StringToInt(sOption))
+                {
+                    case 1:
+                    {
+                        PrintToChat(target, "\x01\x04[SprayManager]\x01 Your spray is not allowed, change it.");
+                        Menu_Trace(iParam1, target);
+                    }
 
-					case 2:
-					{
-						SlapPlayer(target, 0);
-						PrintToChat(target, "\x01\x04[SprayManager]\x01 Your spray is not allowed, change it.");
-						Menu_Trace(iParam1, target);
-					}
+                    case 2:
+                    {
+                        SlapPlayer(target, 0);
+                        PrintToChat(target, "\x01\x04[SprayManager]\x01 Your spray is not allowed, change it.");
+                        Menu_Trace(iParam1, target);
+                    }
 
-					case 3:
-					{
-						g_bInvokedThroughTopMenu[iParam1] = false;
-						KickClient(target, "Your spray is not allowed, change it");
-					}
+                    case 3:
+                    {
+                        g_bInvokedThroughTopMenu[iParam1] = false;
+                        KickClient(target, "Your spray is not allowed, change it");
+                    }
 
-					case 4:
-					{
-						Menu TraceSpraySprayBan = new Menu(MenuHandler_Menu_Trace_SprayBan);
-						TraceSpraySprayBan.SetTitle("[SprayManager] Select a Spray Ban Length for %N (#%d)", target, GetClientUserId(target));
-						TraceSpraySprayBan.ExitBackButton = true;
+                    case 4:
+                    {
+                        Menu TraceSpraySprayBan = new Menu(MenuHandler_Menu_Trace_SprayBan);
+                        TraceSpraySprayBan.SetTitle("[SprayManager] Select a Spray Ban Length for %N (#%d)", target, GetClientUserId(target));
+                        TraceSpraySprayBan.ExitBackButton = true;
 
-						TraceSpraySprayBan.AddItem("10", "10 Minutes");
-						TraceSpraySprayBan.AddItem("30", "30 Minutes");
-						TraceSpraySprayBan.AddItem("60", "1 Hour");
-						TraceSpraySprayBan.AddItem("1440", "1 Day");
-						TraceSpraySprayBan.AddItem("10080", "1 Week");
-						TraceSpraySprayBan.AddItem("40320", "1 Month");
-						TraceSpraySprayBan.AddItem("0", "Permanent");
+                        TraceSpraySprayBan.AddItem("10", "10 Minutes");
+                        TraceSpraySprayBan.AddItem("30", "30 Minutes");
+                        TraceSpraySprayBan.AddItem("60", "1 Hour");
+                        TraceSpraySprayBan.AddItem("1440", "1 Day");
+                        TraceSpraySprayBan.AddItem("10080", "1 Week");
+                        TraceSpraySprayBan.AddItem("40320", "1 Month");
+                        TraceSpraySprayBan.AddItem("0", "Permanent");
 
-						g_iSprayBanTarget[iParam1] = target;
+                        g_iSprayBanTarget[iParam1] = target;
 
-						TraceSpraySprayBan.Display(iParam1, MENU_TIME_FOREVER);
-					}
+                        TraceSpraySprayBan.Display(iParam1, MENU_TIME_FOREVER);
+                    }
 
-					case 5:
-					{
-						if (BanClientSpray(iParam1, target))
-						{
-							ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Banned \x04%N\x01's spray", target);
-							LogAction(iParam1, target, "\"%L\" banned \"%L\"'s spray", iParam1, target);
-						}
-					}
+                    case 5:
+                    {
+                        if (BanClientSpray(iParam1, target))
+                        {
+                            ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Banned \x04%N\x01's spray", target);
+                            LogAction(iParam1, target, "\"%L\" banned \"%L\"'s spray", iParam1, target);
+                        }
+                    }
 
-					case 6:
-					{
-						Menu TraceSprayBan = new Menu(MenuHandler_Menu_Trace_Ban);
-						TraceSprayBan.SetTitle("[SprayManager] Select a Ban Length for %N (#%d)", target, GetClientUserId(target));
-						TraceSprayBan.ExitBackButton = true;
+                    case 6:
+                    {
+                        Menu TraceSprayBan = new Menu(MenuHandler_Menu_Trace_Ban);
+                        TraceSprayBan.SetTitle("[SprayManager] Select a Ban Length for %N (#%d)", target, GetClientUserId(target));
+                        TraceSprayBan.ExitBackButton = true;
 
-						TraceSprayBan.AddItem("10", "10 Minutes");
-						TraceSprayBan.AddItem("30", "30 Minutes");
-						TraceSprayBan.AddItem("60", "1 Hour");
-						TraceSprayBan.AddItem("1440", "1 Day");
-						TraceSprayBan.AddItem("10080", "1 Week");
-						TraceSprayBan.AddItem("40320", "1 Month");
-						TraceSprayBan.AddItem("0", "Permanent");
+                        TraceSprayBan.AddItem("10", "10 Minutes");
+                        TraceSprayBan.AddItem("30", "30 Minutes");
+                        TraceSprayBan.AddItem("60", "1 Hour");
+                        TraceSprayBan.AddItem("1440", "1 Day");
+                        TraceSprayBan.AddItem("10080", "1 Week");
+                        TraceSprayBan.AddItem("40320", "1 Month");
+                        TraceSprayBan.AddItem("0", "Permanent");
 
-						g_iBanTarget[iParam1] = target;
+                        g_iBanTarget[iParam1] = target;
 
-						TraceSprayBan.Display(iParam1, MENU_TIME_FOREVER);
-					}
-				}
-			}
-		}
-	}
+                        TraceSprayBan.Display(iParam1, MENU_TIME_FOREVER);
+                    }
+                }
+            }
+        }
+    }
+    return 0;
 }
 
 int MenuHandler_Menu_Trace_SprayBan(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack)
-			{
-				if (IsValidClient(g_iSprayBanTarget[iParam1]))
-				{
-					Menu_Trace(iParam1, g_iSprayBanTarget[iParam1]);
-				}
-				else if (g_hTopMenu != null)
-				{
-					g_bInvokedThroughTopMenu[iParam1] = false;
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				}
-				else
-				{
-					g_bInvokedThroughTopMenu[iParam1] = false;
-					delete hMenu;
-				}
-			}
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack)
+            {
+                if (IsValidClient(g_iSprayBanTarget[iParam1]))
+                {
+                    Menu_Trace(iParam1, g_iSprayBanTarget[iParam1]);
+                }
+                else if (g_hTopMenu != null)
+                {
+                    g_bInvokedThroughTopMenu[iParam1] = false;
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                }
+                else
+                {
+                    g_bInvokedThroughTopMenu[iParam1] = false;
+                    delete hMenu;
+                }
+            }
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[8];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[8];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = g_iSprayBanTarget[iParam1];
+            int target = g_iSprayBanTarget[iParam1];
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				g_iSprayBanTarget[iParam1] = 0;
-				g_bInvokedThroughTopMenu[iParam1] = false;
+                g_iSprayBanTarget[iParam1] = 0;
+                g_bInvokedThroughTopMenu[iParam1] = false;
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				if (SprayBanClient1(iParam1, target, StringToInt(sOption), "Inappropriate Spray"))
-				{
-					ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray banned \x04%N", target);
-					LogAction(iParam1, target, "\"%L\" spray banned \"%L\" (Hash: \"%s\")", iParam1, target, g_sSprayHash[target]);
-				}
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                if (SprayBanClient1(iParam1, target, StringToInt(sOption), "Inappropriate Spray"))
+                {
+                    ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray banned \x04%N", target);
+                    LogAction(iParam1, target, "\"%L\" spray banned \"%L\" (Hash: \"%s\")", iParam1, target, g_sSprayHash[target]);
+                }
 
-				g_iSprayBanTarget[iParam1] = 0;
-				g_bInvokedThroughTopMenu[iParam1] = false;
-			}
-		}
-	}
+                g_iSprayBanTarget[iParam1] = 0;
+                g_bInvokedThroughTopMenu[iParam1] = false;
+            }
+        }
+    }
+    return 0;
 }
 
 int MenuHandler_Menu_Trace_Ban(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack)
-			{
-				if (IsValidClient(g_iBanTarget[iParam1]))
-				{
-					Menu_Trace(iParam1, g_iBanTarget[iParam1]);
-				}
-				else if (g_hTopMenu != null)
-				{
-					g_bInvokedThroughTopMenu[iParam1] = false;
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				}
-				else
-				{
-					g_bInvokedThroughTopMenu[iParam1] = false;
-					delete hMenu;
-				}
-			}
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack)
+            {
+                if (IsValidClient(g_iBanTarget[iParam1]))
+                {
+                    Menu_Trace(iParam1, g_iBanTarget[iParam1]);
+                }
+                else if (g_hTopMenu != null)
+                {
+                    g_bInvokedThroughTopMenu[iParam1] = false;
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                }
+                else
+                {
+                    g_bInvokedThroughTopMenu[iParam1] = false;
+                    delete hMenu;
+                }
+            }
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[8];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[8];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = g_iBanTarget[iParam1];
+            int target = g_iBanTarget[iParam1];
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				g_iBanTarget[iParam1] = 0;
-				g_bInvokedThroughTopMenu[iParam1] = false;
+                g_iBanTarget[iParam1] = 0;
+                g_bInvokedThroughTopMenu[iParam1] = false;
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				FakeClientCommandEx(iParam1, "sm_ban \"#%d\" \"%s\" \"Inappropriate spray\"", GetClientUserId(g_iBanTarget[iParam1]), sOption);
-				g_iBanTarget[iParam1] = 0;
-				g_bInvokedThroughTopMenu[iParam1] = false;
-			}
-		}
-	}
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                FakeClientCommandEx(iParam1, "sm_ban \"#%d\" \"%s\" \"Inappropriate spray\"", GetClientUserId(g_iBanTarget[iParam1]), sOption);
+                g_iBanTarget[iParam1] = 0;
+                g_bInvokedThroughTopMenu[iParam1] = false;
+            }
+        }
+    }
+    return 0;
 }
 
 void Menu_Spray(int client)
@@ -899,46 +904,49 @@ void Menu_Spray(int client)
 
 int MenuHandler_Menu_Spray(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
-				DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
+                DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[8];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[8];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = GetClientOfUserId(StringToInt(sOption));
+            int target = GetClientOfUserId(StringToInt(sOption));
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				g_iAllowSpray = target;
-				ForceSpray(iParam1, target);
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                g_iAllowSpray = target;
+                ForceSpray(iParam1, target);
 
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Sprayed \x04%N\x01's spray(s).", target);
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Sprayed \x04%N\x01's spray(s).", target);
 
-				Menu_Spray(iParam1);
-			}
-		}
-	}
+                Menu_Spray(iParam1);
+            }
+        }
+    }
+    return 0;
 }
 
+//'
+
 void Menu_SprayBan(int client)
 {
 	if (!IsValidClient(client))
@@ -977,95 +985,97 @@ void Menu_SprayBan(int client)
 
 int MenuHandler_Menu_SprayBan(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
-				DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
+                DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[32];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[32];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = GetClientOfUserId(StringToInt(sOption));
+            int target = GetClientOfUserId(StringToInt(sOption));
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				Menu SprayBanLengthMenu = new Menu(MenuHandler_Menu_SprayBan_Length);
-				SprayBanLengthMenu.SetTitle("[SprayManager] Choose a Spray Ban Length for %N (#%d)", target, GetClientUserId(target));
-				SprayBanLengthMenu.ExitBackButton = true;
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                Menu SprayBanLengthMenu = new Menu(MenuHandler_Menu_SprayBan_Length);
+                SprayBanLengthMenu.SetTitle("[SprayManager] Choose a Spray Ban Length for %N (#%d)", target, GetClientUserId(target));
+                SprayBanLengthMenu.ExitBackButton = true;
 
-				SprayBanLengthMenu.AddItem("10", "10 Minutes");
-				SprayBanLengthMenu.AddItem("30", "30 Minutes");
-				SprayBanLengthMenu.AddItem("60", "1 Hour");
-				SprayBanLengthMenu.AddItem("1440", "1 Day");
-				SprayBanLengthMenu.AddItem("10080", "1 Week");
-				SprayBanLengthMenu.AddItem("40320", "1 Month");
-				SprayBanLengthMenu.AddItem("0", "Permanent");
+                SprayBanLengthMenu.AddItem("10", "10 Minutes");
+                SprayBanLengthMenu.AddItem("30", "30 Minutes");
+                SprayBanLengthMenu.AddItem("60", "1 Hour");
+                SprayBanLengthMenu.AddItem("1440", "1 Day");
+                SprayBanLengthMenu.AddItem("10080", "1 Week");
+                SprayBanLengthMenu.AddItem("40320", "1 Month");
+                SprayBanLengthMenu.AddItem("0", "Permanent");
 
-				g_iSprayBanTarget[iParam1] = target;
+                g_iSprayBanTarget[iParam1] = target;
 
-				SprayBanLengthMenu.Display(iParam1, MENU_TIME_FOREVER);
-			}
-		}
-	}
+                SprayBanLengthMenu.Display(iParam1, MENU_TIME_FOREVER);
+            }
+        }
+    }
+    return 0;
 }
 
 int MenuHandler_Menu_SprayBan_Length(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack)
-				Menu_SprayBan(iParam1);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack)
+                Menu_SprayBan(iParam1);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[8];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[8];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = g_iSprayBanTarget[iParam1];
+            int target = g_iSprayBanTarget[iParam1];
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				g_iSprayBanTarget[iParam1] = 0;
+                g_iSprayBanTarget[iParam1] = 0;
 
-				Menu_SprayBan(iParam1);
-			}
-			else
-			{
-				if (SprayBanClient1(iParam1, target, StringToInt(sOption), "Inappropriate Spray"))
-				{
-					ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray banned \x04%N", target);
-					LogAction(iParam1, target, "\"%L\" spray banned \"%L\" (Hash: \"%s\")", iParam1, target, g_sSprayHash[target]);
-				}
+                Menu_SprayBan(iParam1);
+            }
+            else
+            {
+                if (SprayBanClient1(iParam1, target, StringToInt(sOption), "Inappropriate Spray"))
+                {
+                    ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray banned \x04%N", target);
+                    LogAction(iParam1, target, "\"%L\" spray banned \"%L\" (Hash: \"%s\")", iParam1, target, g_sSprayHash[target]);
+                }
 
-				g_iSprayBanTarget[iParam1] = 0;
-			}
-		}
-	}
+                g_iSprayBanTarget[iParam1] = 0;
+            }
+        }
+    }
+    return 0;
 }
 
 void Menu_BanSpray(int client)
@@ -1106,40 +1116,41 @@ void Menu_BanSpray(int client)
 
 int MenuHandler_Menu_BanSpray(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
-				DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
+                DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[32];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[32];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = GetClientOfUserId(StringToInt(sOption));
+            int target = GetClientOfUserId(StringToInt(sOption));
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				Menu_BanSpray(iParam1);
-			}
-			else
-			{
-				if (BanClientSpray(iParam1, target))
-				{
-					ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Banned \x04%N\x01's spray", target);
-					LogAction(iParam1, target, "\"%L\" banned \"%L\"'s spray", iParam1, target);
-				}
-			}
-		}
-	}
+                Menu_BanSpray(iParam1);
+            }
+            else
+            {
+                if (BanClientSpray(iParam1, target))
+                {
+                    ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Banned \x04%N\x01's spray", target);
+                    LogAction(iParam1, target, "\"%L\" banned \"%L\"'s spray", iParam1, target);
+                }
+            }
+        }
+    }
+    return 0;
 }
 
 void Menu_Unban(int client)
@@ -1180,37 +1191,38 @@ void Menu_Unban(int client)
 
 int MenuHandler_Menu_UnbanSpray(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
-				DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack && g_hTopMenu != null)
+                DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[32];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[32];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = GetClientOfUserId(StringToInt(sOption));
+            int target = GetClientOfUserId(StringToInt(sOption));
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				Menu_Unban(iParam1);
-			}
-			else
-			{
-				g_bInvokedThroughListMenu[iParam1] = false;
-				Menu_ListBans_Target(iParam1, target);
-			}
-		}
-	}
+                Menu_Unban(iParam1);
+            }
+            else
+            {
+                g_bInvokedThroughListMenu[iParam1] = false;
+                Menu_ListBans_Target(iParam1, target);
+            }
+        }
+    }
+    return 0;
 }
 
 void Menu_ListBans_Target(int client, int target)
@@ -1284,215 +1296,218 @@ void Menu_ListBans_Target(int client, int target)
 
 int MenuHandler_Menu_ListBans_Target(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack)
-			{
-				if (g_bInvokedThroughListMenu[iParam1])
-					Menu_ListBans(iParam1);
-				else
-					Menu_Unban(iParam1);
-			}
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack)
+            {
+                if (g_bInvokedThroughListMenu[iParam1])
+                    Menu_ListBans(iParam1);
+                else
+                    Menu_Unban(iParam1);
+            }
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[32];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
-			int target = GetClientOfUserId(StringToInt(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[32];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+            int target = GetClientOfUserId(StringToInt(sOption));
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
-				Menu_ListBans(iParam1);
-			}
-			else
-			{
-				if (g_bSprayBanned[target] && g_bSprayHashBanned[target])
-				{
-					Menu MenuUnbanMode = new Menu(MenuHandler_Menu_UnbanMode);
-					MenuUnbanMode.SetTitle("[SprayManager] Unban %N?", target);
-					MenuUnbanMode.ExitBackButton = true;
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+                Menu_ListBans(iParam1);
+            }
+            else
+            {
+                if (g_bSprayBanned[target] && g_bSprayHashBanned[target])
+                {
+                    Menu MenuUnbanMode = new Menu(MenuHandler_Menu_UnbanMode);
+                    MenuUnbanMode.SetTitle("[SprayManager] Unban %N?", target);
+                    MenuUnbanMode.ExitBackButton = true;
 
-					MenuUnbanMode.AddItem("H", "Remove Hash Ban.");
-					MenuUnbanMode.AddItem("S", "Remove Spray Ban.");
-					MenuUnbanMode.AddItem("B", "Remove Both.");
+                    MenuUnbanMode.AddItem("H", "Remove Hash Ban.");
+                    MenuUnbanMode.AddItem("S", "Remove Spray Ban.");
+                    MenuUnbanMode.AddItem("B", "Remove Both.");
 
-					g_iSprayUnbanTarget[iParam1] = target;
+                    g_iSprayUnbanTarget[iParam1] = target;
 
-					MenuUnbanMode.Display(iParam1, MENU_TIME_FOREVER);
+                    MenuUnbanMode.Display(iParam1, MENU_TIME_FOREVER);
 
-					return;
-				}
+                    return 0;
+                }
 
-				Menu MenuConfirmUnban = new Menu(MenuHandler_Menu_ConfirmUnban);
-				MenuConfirmUnban.SetTitle("[SprayManager] Unban %N?", target);
-				MenuConfirmUnban.ExitBackButton = true;
+                Menu MenuConfirmUnban = new Menu(MenuHandler_Menu_ConfirmUnban);
+                MenuConfirmUnban.SetTitle("[SprayManager] Unban %N?", target);
+                MenuConfirmUnban.ExitBackButton = true;
 
-				MenuConfirmUnban.AddItem("Y", "Yes.");
-				MenuConfirmUnban.AddItem("N", "No.");
+                MenuConfirmUnban.AddItem("Y", "Yes.");
+                MenuConfirmUnban.AddItem("N", "No.");
 
-				g_iSprayUnbanTarget[iParam1] = target;
+                g_iSprayUnbanTarget[iParam1] = target;
 
-				MenuConfirmUnban.Display(iParam1, MENU_TIME_FOREVER);
-			}
-		}
-	}
+                MenuConfirmUnban.Display(iParam1, MENU_TIME_FOREVER);
+            }
+        }
+    }
+    return 0;
 }
 
 int MenuHandler_Menu_UnbanMode(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack)
-			{
-				if (IsValidClient(g_iSprayUnbanTarget[iParam1]))
-					Menu_ListBans_Target(iParam1, g_iSprayUnbanTarget[iParam1]);
-				else if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack)
+            {
+                if (IsValidClient(g_iSprayUnbanTarget[iParam1]))
+                    Menu_ListBans_Target(iParam1, g_iSprayUnbanTarget[iParam1]);
+                else if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[2];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[2];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = g_iSprayUnbanTarget[iParam1];
+            int target = g_iSprayUnbanTarget[iParam1];
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				g_iSprayUnbanTarget[iParam1] = 0;
+                g_iSprayUnbanTarget[iParam1] = 0;
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				if (sOption[0] == 'H')
-				{
-					if (UnbanClientSpray(iParam1, target))
-					{
-						ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Unbanned \x04%N\x01's spray", target);
-						LogAction(iParam1, target, "\"%L\" unbanned \"%L\"'s spray", iParam1, target);
-					}
-				}
-				else if (sOption[0] == 'S')
-				{
-					if (SprayUnbanClient(target, iParam1))
-					{
-						ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
-						LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
-					}
-				}
-				else if (sOption[0] == 'B')
-				{
-					if (SprayUnbanClient(target, iParam1) && UnbanClientSpray(iParam1, target))
-					{
-						ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
-						LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
-					}
-				}
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                if (sOption[0] == 'H')
+                {
+                    if (UnbanClientSpray(iParam1, target))
+                    {
+                        ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Unbanned \x04%N\x01's spray", target);
+                        LogAction(iParam1, target, "\"%L\" unbanned \"%L\"'s spray", iParam1, target);
+                    }
+                }
+                else if (sOption[0] == 'S')
+                {
+                    if (SprayUnbanClient(target, iParam1))
+                    {
+                        ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
+                        LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
+                    }
+                }
+                else if (sOption[0] == 'B')
+                {
+                    if (SprayUnbanClient(target, iParam1) && UnbanClientSpray(iParam1, target))
+                    {
+                        ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
+                        LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
+                    }
+                }
 
-				g_iSprayUnbanTarget[iParam1] = 0;
-			}
-		}
-	}
+                g_iSprayUnbanTarget[iParam1] = 0;
+            }
+        }
+    }
+    return 0;
 }
 
 int MenuHandler_Menu_ConfirmUnban(Menu hMenu, MenuAction action, int iParam1, int iParam2)
 {
-	switch (action)
-	{
-		case MenuAction_End:
-			delete hMenu;
+    switch (action)
+    {
+        case MenuAction_End:
+            delete hMenu;
 
-		case MenuAction_Cancel:
-		{
-			if (iParam2 == MenuCancel_ExitBack)
-			{
-				if (IsValidClient(g_iSprayUnbanTarget[iParam1]))
-					Menu_ListBans_Target(iParam1, g_iSprayUnbanTarget[iParam1]);
-				else if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-		}
+        case MenuAction_Cancel:
+        {
+            if (iParam2 == MenuCancel_ExitBack)
+            {
+                if (IsValidClient(g_iSprayUnbanTarget[iParam1]))
+                    Menu_ListBans_Target(iParam1, g_iSprayUnbanTarget[iParam1]);
+                else if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+        }
 
-		case MenuAction_Select:
-		{
-			char sOption[2];
-			hMenu.GetItem(iParam2, sOption, sizeof(sOption));
+        case MenuAction_Select:
+        {
+            char sOption[2];
+            hMenu.GetItem(iParam2, sOption, sizeof(sOption));
 
-			int target = g_iSprayUnbanTarget[iParam1];
+            int target = g_iSprayUnbanTarget[iParam1];
 
-			if (!IsValidClient(target))
-			{
-				PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
+            if (!IsValidClient(target))
+            {
+                PrintToChat(iParam1, "\x01\x04[SprayManager]\x01 Target no longer available.");
 
-				g_iSprayUnbanTarget[iParam1] = 0;
+                g_iSprayUnbanTarget[iParam1] = 0;
 
-				if (g_hTopMenu != null)
-					DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
-				else
-					delete hMenu;
-			}
-			else
-			{
-				if (sOption[0] == 'Y')
-				{
-					if (g_bSprayHashBanned[target] && g_bSprayBanned[target])
-					{
-						if (SprayUnbanClient(target, iParam1) && UnbanClientSpray(iParam1, target))
-						{
-							ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
-							LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
-						}
-					}
-					else if (g_bSprayBanned[target])
-					{
-						if (SprayUnbanClient(target, iParam1))
-						{
-							ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
-							LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
-						}
-					}
-					else if (g_bSprayHashBanned[target])
-					{
-						if (UnbanClientSpray(iParam1, target))
-						{
-							ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Unbanned \x04%N\x01's spray", target);
-							LogAction(iParam1, target, "\"%L\" unbanned \"%L\"'s spray", iParam1, target);
-						}
-					}
+                if (g_hTopMenu != null)
+                    DisplayTopMenu(g_hTopMenu, iParam1, TopMenuPosition_LastCategory);
+                else
+                    delete hMenu;
+            }
+            else
+            {
+                if (sOption[0] == 'Y')
+                {
+                    if (g_bSprayHashBanned[target] && g_bSprayBanned[target])
+                    {
+                        if (SprayUnbanClient(target, iParam1) && UnbanClientSpray(iParam1, target))
+                        {
+                            ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
+                            LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
+                        }
+                    }
+                    else if (g_bSprayBanned[target])
+                    {
+                        if (SprayUnbanClient(target, iParam1))
+                        {
+                            ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Spray unbanned \x04%N", target);
+                            LogAction(iParam1, target, "\"%L\" spray unbanned \"%L\"", iParam1, target);
+                        }
+                    }
+                    else if (g_bSprayHashBanned[target])
+                    {
+                        if (UnbanClientSpray(iParam1, target))
+                        {
+                            ShowActivity2(iParam1, "\x01\x04[SprayManager] ", "\x01Unbanned \x04%N\x01's spray", target);
+                            LogAction(iParam1, target, "\"%L\" unbanned \"%L\"'s spray", iParam1, target);
+                        }
+                    }
 
-					g_iSprayUnbanTarget[iParam1] = 0;
-				}
-				else if (sOption[0] == 'N')
-				{
-					Menu_ListBans_Target(iParam1, g_iSprayUnbanTarget[iParam1]);
-					g_iSprayUnbanTarget[iParam1] = 0;
-				}
-			}
-		}
-	}
+                    g_iSprayUnbanTarget[iParam1] = 0;
+                }
+                else if (sOption[0] == 'N')
+                {
+                    Menu_ListBans_Target(iParam1, g_iSprayUnbanTarget[iParam1]);
+                    g_iSprayUnbanTarget[iParam1] = 0;
+                }
+            }
+        }
+    }
+    return 0;
 }
 
 public Action Command_MarkNSFW(int client, int argc)
@@ -2175,6 +2190,7 @@ public Action Command_SprayManager_UpdateInfo(int client, int argc)
 	}
 
 	ReplyToCommand(client, "[SprayManager] Refreshed database.");
+	return Plugin_Handled;
 }
 
 public bool isGoodSpray(int client)
@@ -2354,11 +2370,11 @@ public Action HookSprayer(int iClients[MAXPLAYERS], int &iNumClients, char sSoun
 	return Plugin_Continue;
 }
 
-public Action Timer_UpdateHideSprays(Handle hTimer)
+public void UpdateHideSprays()
 {
     if (!g_hDatabase)
     {
-        return Plugin_Handled;
+        return;
     }
     for (int client = 1; client <= MaxClients; client++)
     {
@@ -2374,7 +2390,6 @@ public Action Timer_UpdateHideSprays(Handle hTimer)
         Format(sQuery, sizeof(sQuery), "SELECT `steamidtarget` FROM `sprayhidemanage` WHERE `steamidhider` = '%s' and `is_online` = 1;", g_csSID[client]);
         SQL_TQuery(g_hDatabase, select_sprays_to_hide, sQuery, GetClientSerial(client), DBPrio_Normal);
     }
-    return Plugin_Handled;
 }
 
 public Action Timer_PerformPlayerTraces(Handle hTimer)
@@ -2424,6 +2439,7 @@ public Action Timer_PerformPlayerTraces(Handle hTimer)
 			bOnce[i] = true;
 		}
 	}
+	return Plugin_Handled;
 }
 
 public Action Timer_ProcessPersistentSprays(Handle hThis)
@@ -2466,6 +2482,7 @@ public Action Timer_ProcessPersistentSprays(Handle hThis)
 	}
 
 	g_hRoundEndTimer = null;
+	return Plugin_Handled;
 }
 
 public Action Timer_ResetOldSprays(Handle hThis)
@@ -2504,6 +2521,7 @@ public Action Timer_ResetOldSprays(Handle hThis)
 	}
 
 	g_hRoundEndTimer = null;
+	return Plugin_Handled;
 }
 
 void InitializeSQL()
@@ -2597,6 +2615,7 @@ public Action RetryMainTableCreation(Handle hTimer)
 		SQL_TQuery(g_hDatabase, OnSQLTableCreated, "CREATE TABLE IF NOT EXISTS `spraymanager` (`steamid` TEXT NOT NULL, `name` TEXT DEFAULT 'unknown', `unbantime` INTEGER, `issuersteamid` TEXT, `issuername` TEXT DEFAULT 'unknown', `issuedtime` INTEGER NOT NULL, `issuedreason` TEXT DEFAULT 'none', PRIMARY KEY(steamid));");
 	else
 		SQL_TQuery(g_hDatabase, OnSQLTableCreated, "CREATE TABLE IF NOT EXISTS `spraymanager` (`steamid` VARCHAR(32) NOT NULL, `name` VARCHAR(32) NOT NULL, `unbantime` INT, `issuersteamid` VARCHAR(32), `issuername` VARCHAR(32) NOT NULL, `issuedtime` INT, `issuedreason` VARCHAR(64) NOT NULL, PRIMARY KEY(steamid)) CHARACTER SET utf8 COLLATE utf8_general_ci;");
+	return Plugin_Handled;
 }
 
 public void OnSQLSprayBlacklistCreated(Handle hParent, Handle hChild, const char[] err, any data)
@@ -2628,6 +2647,7 @@ public Action RetryBlacklistTableCreation(Handle hTimer)
 		SQL_TQuery(g_hDatabase, OnSQLSprayBlacklistCreated, "CREATE TABLE IF NOT EXISTS `sprayblacklist` (`sprayhash` TEXT NOT NULL, `sprayer` TEXT DEFAULT 'unknown', `sprayersteamid` TEXT NOT NULL, PRIMARY KEY(sprayhash));");
 	else
 		SQL_TQuery(g_hDatabase, OnSQLSprayBlacklistCreated, "CREATE TABLE IF NOT EXISTS `sprayblacklist` (`sprayhash` VARCHAR(16) NOT NULL, `sprayer` VARCHAR(32) NOT NULL, `sprayersteamid` VARCHAR(32) NOT NULL, PRIMARY KEY(sprayhash)) CHARACTER SET utf8 COLLATE utf8_general_ci;");
+	return Plugin_Handled;
 }
 
 public void OnSQLNSFWListCreated(Handle hParent, Handle hChild, const char[] err, any data)
@@ -2659,6 +2679,7 @@ public Action RetryNSFWlistTableCreation(Handle hTimer)
 		SQL_TQuery(g_hDatabase, OnSQLNSFWListCreated, "CREATE TABLE IF NOT EXISTS `spraynsfwlist` (`sprayhash` TEXT NOT NULL, `sprayersteamid` TEXT, `setbyadmin` INTEGER, PRIMARY KEY(sprayhash));");
 	else
 		SQL_TQuery(g_hDatabase,	OnSQLNSFWListCreated, "CREATE TABLE IF NOT EXISTS `spraynsfwlist` (`sprayhash` VARCHAR(16) NOT NULL, `sprayersteamid` VARCHAR(32), `setbyadmin` TINYINT PRIMARY KEY(sprayhash)) CHARACTER SET utf8 COLLATE utf8_general_ci");
+	return Plugin_Handled;
 }
 
 public Action RetryUpdatingPlayerInfo(Handle hTimer)
@@ -2670,6 +2691,7 @@ public Action RetryUpdatingPlayerInfo(Handle hTimer)
 
 		OnClientPostAdminCheck(i);
 	}
+	return Plugin_Handled;
 }
 
 public void ConVarChanged_DecalFrequency(ConVar cvar, const char[] sOldValue, const char[] sNewValue)
@@ -3075,9 +3097,10 @@ public Action RetryPlayerInfoUpdate(Handle hTimer, int Serial)
     int client;
     if ((client = GetClientFromSerial(Serial)) == 0)
     {
-        return;
+        return Plugin_Handled;
     } 
     UpdatePlayerInfo(client);
+    return Plugin_Handled;
 }
 
 public Action RetrySprayHashUpdate(Handle hTimer, int Serial)
@@ -3085,9 +3108,10 @@ public Action RetrySprayHashUpdate(Handle hTimer, int Serial)
     int client;
     if ((client = GetClientFromSerial(Serial)) == 0)
     {
-        return;
+        return Plugin_Handled;
     }
     UpdateSprayHashInfo(client);
+    return Plugin_Handled;
 }
 
 public Action RetryNSFWSprayLookup(Handle hTimer, int Serial)
@@ -3095,9 +3119,10 @@ public Action RetryNSFWSprayLookup(Handle hTimer, int Serial)
     int client;
     if ((client = GetClientFromSerial(Serial)) == 0)
     {
-        return;
+        return Plugin_Handled;
     }
     UpdateNSFWInfo(client);
+    return Plugin_Handled;
 }
 
 stock bool ForceSpray(int client, int target, bool bPlaySound=true)