From 9e59258ab016d77ea700bb6db49212af8bf940c0 Mon Sep 17 00:00:00 2001 From: jenz Date: Sat, 20 Jun 2026 01:15:58 +0200 Subject: [PATCH] just blocking out the hide option from working in settings in case of not having reached the tier yet --- _Hide/scripting/Hide_TransmitManager.sp | 77 +++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/_Hide/scripting/Hide_TransmitManager.sp b/_Hide/scripting/Hide_TransmitManager.sp index 830abfc..08e4e68 100644 --- a/_Hide/scripting/Hide_TransmitManager.sp +++ b/_Hide/scripting/Hide_TransmitManager.sp @@ -3,6 +3,7 @@ #include #include #include +#include #include #include #include @@ -15,6 +16,7 @@ bool g_bHidePlayers[MAXPLAYERS + 1][MAXPLAYERS + 1]; /* INTEGERS */ int g_iHideRange[MAXPLAYERS+1]; int g_iLeader = 0; +int g_iTierHide = 0; /* HANDLES */ Handle g_hTimer; @@ -72,6 +74,7 @@ public void OnPluginStart() } SetCookieMenuItem(MenuHandler_CookieMenu, 0, "Hide"); g_hTimer = CreateTimer(1.0, UpdateHide, INVALID_HANDLE, TIMER_REPEAT); + g_iTierHide = FindTierForCommandOverride("sm_hide"); } public void OnPluginEnd() @@ -316,11 +319,85 @@ public int MenuHandler_MainMenu(Menu menu, MenuAction action, int client, int se return 0; } +stock int FindTierForCommandOverride(const char[] command) +{ + char sPath[PLATFORM_MAX_PATH]; + BuildPath(Path_SM, sPath, sizeof(sPath), "configs/admin_groups.cfg"); + + KeyValues kv = new KeyValues("Groups"); + if (!kv.ImportFromFile(sPath)) + { + delete kv; + return -1; + } + + // collect tier group names first + char groupNames[32][64]; + int groupCount = 0; + + if (kv.GotoFirstSubKey()) + { + do + { + char sName[64]; + kv.GetSectionName(sName, sizeof(sName)); + if (StrContains(sName, "tier", false) == 0) + { + strcopy(groupNames[groupCount], 64, sName); + groupCount++; + } + } + while (kv.GotoNextKey() && groupCount < 32); + } + + int foundTier = -1; + + for (int i = 0; i < groupCount; i++) + { + kv.Rewind(); + + if (!kv.JumpToKey(groupNames[i])) + continue; + + if (!kv.JumpToKey("Overrides")) + continue; + + if (!kv.GotoFirstSubKey(false)) + continue; + + do + { + char overrideCmd[64]; + kv.GetSectionName(overrideCmd, sizeof(overrideCmd)); + + if (StrEqual(overrideCmd, command, false)) + { + char tierStr[8]; + strcopy(tierStr, sizeof(tierStr), groupNames[i][4]); // skip "tier" + foundTier = StringToInt(tierStr); + break; + } + } + while (kv.GotoNextKey(false)); + + if (foundTier != -1) + break; + } + + delete kv; + return foundTier; +} + //---------------------------------------------------------------------------------------------------- // Purpose: //---------------------------------------------------------------------------------------------------- public void MenuHandler_CookieMenu(int client, CookieMenuAction action, any info, char[] buffer, int maxlen) { + int client_tier = GetPlayerTier_native(client); + if (g_iTierHide > client_tier) + { + return; + } switch(action) { case(CookieMenuAction_DisplayOption):