mirror of
https://github.com/shavitush/bhoptimer.git
synced 2025-12-07 02:18:26 +00:00
Opt-in to per-plugin adminmenu integration rather.
Rather than creating the category via core and then adding items on it.
This commit is contained in:
parent
fa78e70dbb
commit
c1b93bfdff
@ -25,7 +25,6 @@
|
|||||||
#include <clientprefs>
|
#include <clientprefs>
|
||||||
|
|
||||||
#undef REQUIRE_PLUGIN
|
#undef REQUIRE_PLUGIN
|
||||||
#include <adminmenu>
|
|
||||||
#include <bhopstats>
|
#include <bhopstats>
|
||||||
|
|
||||||
#define USES_CHAT_COLORS
|
#define USES_CHAT_COLORS
|
||||||
@ -328,8 +327,6 @@ public void OnPluginStart()
|
|||||||
// late
|
// late
|
||||||
if(gB_Late)
|
if(gB_Late)
|
||||||
{
|
{
|
||||||
OnAdminMenuReady(null);
|
|
||||||
|
|
||||||
for(int i = 1; i <= MaxClients; i++)
|
for(int i = 1; i <= MaxClients; i++)
|
||||||
{
|
{
|
||||||
if(IsValidClient(i))
|
if(IsValidClient(i))
|
||||||
@ -385,29 +382,6 @@ public void OnLibraryRemoved(const char[] name)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAdminMenuReady(Handle topmenu)
|
|
||||||
{
|
|
||||||
Handle hTopMenu = INVALID_HANDLE;
|
|
||||||
|
|
||||||
if(LibraryExists("adminmenu") && ((hTopMenu = GetAdminTopMenu()) != INVALID_HANDLE))
|
|
||||||
{
|
|
||||||
AddToTopMenu(hTopMenu, "Timer Commands", TopMenuObject_Category, CategoryHandler, INVALID_TOPMENUOBJECT);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void CategoryHandler(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
|
||||||
{
|
|
||||||
if(action == TopMenuAction_DisplayTitle)
|
|
||||||
{
|
|
||||||
strcopy(buffer, maxlength, "Timer Commands:");
|
|
||||||
}
|
|
||||||
|
|
||||||
else if(action == TopMenuAction_DisplayOption)
|
|
||||||
{
|
|
||||||
strcopy(buffer, maxlength, "Timer Commands");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void OnMapStart()
|
public void OnMapStart()
|
||||||
{
|
{
|
||||||
// styles
|
// styles
|
||||||
|
|||||||
@ -62,7 +62,8 @@ ArrayList gA_Leaderboard[STYLE_LIMIT][TRACKS_SIZE];
|
|||||||
float gF_PlayerRecord[MAXPLAYERS+1][STYLE_LIMIT][TRACKS_SIZE];
|
float gF_PlayerRecord[MAXPLAYERS+1][STYLE_LIMIT][TRACKS_SIZE];
|
||||||
|
|
||||||
// admin menu
|
// admin menu
|
||||||
Handle gH_AdminMenu = null;
|
TopMenu gH_AdminMenu = null;
|
||||||
|
TopMenuObject gH_TimerCommands = INVALID_TOPMENUOBJECT;
|
||||||
|
|
||||||
// table prefix
|
// table prefix
|
||||||
char gS_MySQLPrefix[32];
|
char gS_MySQLPrefix[32];
|
||||||
@ -115,6 +116,7 @@ public void OnAllPluginsLoaded()
|
|||||||
{
|
{
|
||||||
if(gH_SQL == null)
|
if(gH_SQL == null)
|
||||||
{
|
{
|
||||||
|
|
||||||
Shavit_OnDatabaseLoaded();
|
Shavit_OnDatabaseLoaded();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -164,7 +166,10 @@ public void OnPluginStart()
|
|||||||
AutoExecConfig();
|
AutoExecConfig();
|
||||||
|
|
||||||
// admin menu
|
// admin menu
|
||||||
OnAdminMenuReady(null);
|
if(LibraryExists("adminmenu") && ((gH_AdminMenu = GetAdminTopMenu()) != null))
|
||||||
|
{
|
||||||
|
OnAdminMenuReady(gH_AdminMenu);
|
||||||
|
}
|
||||||
|
|
||||||
// modules
|
// modules
|
||||||
gB_Rankings = LibraryExists("shavit-rankings");
|
gB_Rankings = LibraryExists("shavit-rankings");
|
||||||
@ -182,18 +187,46 @@ public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] n
|
|||||||
gI_RecentLimit = gCV_RecentLimit.IntValue;
|
gI_RecentLimit = gCV_RecentLimit.IntValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void OnAdminMenuCreated(Handle topmenu)
|
||||||
|
{
|
||||||
|
if(gH_AdminMenu == null || (topmenu == gH_AdminMenu && gH_TimerCommands != INVALID_TOPMENUOBJECT))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gH_TimerCommands = gH_AdminMenu.AddCategory("Timer Commands", CategoryHandler, "shavit_admin", ADMFLAG_RCON);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void CategoryHandler(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
||||||
|
{
|
||||||
|
if(action == TopMenuAction_DisplayTitle)
|
||||||
|
{
|
||||||
|
FormatEx(buffer, maxlength, "%T:", "TimerCommands", param);
|
||||||
|
}
|
||||||
|
|
||||||
|
else if(action == TopMenuAction_DisplayOption)
|
||||||
|
{
|
||||||
|
FormatEx(buffer, maxlength, "%T", "TimerCommands", param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void OnAdminMenuReady(Handle topmenu)
|
public void OnAdminMenuReady(Handle topmenu)
|
||||||
{
|
{
|
||||||
if(LibraryExists("adminmenu") && ((gH_AdminMenu = GetAdminTopMenu()) != null))
|
if((gH_AdminMenu = GetAdminTopMenu()) != null)
|
||||||
{
|
{
|
||||||
TopMenuObject tmoTimer = FindTopMenuCategory(gH_AdminMenu, "Timer Commands");
|
if(gH_TimerCommands == INVALID_TOPMENUOBJECT)
|
||||||
|
|
||||||
if(tmoTimer != INVALID_TOPMENUOBJECT)
|
|
||||||
{
|
{
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_deleteall", TopMenuObject_Item, AdminMenu_DeleteAll, tmoTimer, "sm_deleteall", ADMFLAG_RCON);
|
gH_TimerCommands = gH_AdminMenu.FindCategory("Timer Commands");
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_delete", TopMenuObject_Item, AdminMenu_Delete, tmoTimer, "sm_delete", ADMFLAG_RCON);
|
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_deletestylerecords", TopMenuObject_Item, AdminMenu_DeleteStyleRecords, tmoTimer, "sm_deletestylerecords", ADMFLAG_RCON);
|
if(gH_TimerCommands == INVALID_TOPMENUOBJECT)
|
||||||
|
{
|
||||||
|
OnAdminMenuCreated(topmenu);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gH_AdminMenu.AddItem("sm_deleteall", AdminMenu_DeleteAll, gH_TimerCommands, "sm_deleteall", ADMFLAG_RCON);
|
||||||
|
gH_AdminMenu.AddItem("sm_delete", AdminMenu_Delete, gH_TimerCommands, "sm_delete", ADMFLAG_RCON);
|
||||||
|
gH_AdminMenu.AddItem("sm_deletestylerecords", AdminMenu_DeleteStyleRecords, gH_TimerCommands, "sm_deletestylerecords", ADMFLAG_RCON);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,7 +296,7 @@ public void OnLibraryRemoved(const char[] name)
|
|||||||
|
|
||||||
else if(StrEqual(name, "adminmenu"))
|
else if(StrEqual(name, "adminmenu"))
|
||||||
{
|
{
|
||||||
gH_AdminMenu = null;
|
delete gH_AdminMenu;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -108,7 +108,8 @@ int gI_BeamSprite = -1;
|
|||||||
int gI_HaloSprite = -1;
|
int gI_HaloSprite = -1;
|
||||||
|
|
||||||
// admin menu
|
// admin menu
|
||||||
Handle gH_AdminMenu = INVALID_HANDLE;
|
TopMenu gH_AdminMenu = null;
|
||||||
|
TopMenuObject gH_TimerCommands = INVALID_TOPMENUOBJECT;
|
||||||
|
|
||||||
// misc cache
|
// misc cache
|
||||||
bool gB_Late = false;
|
bool gB_Late = false;
|
||||||
@ -177,11 +178,6 @@ public APLRes AskPluginLoad2(Handle myself, bool late, char[] error, int err_max
|
|||||||
|
|
||||||
public void OnAllPluginsLoaded()
|
public void OnAllPluginsLoaded()
|
||||||
{
|
{
|
||||||
if(gB_Late)
|
|
||||||
{
|
|
||||||
OnAdminMenuReady(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(gH_SQL == null)
|
if(gH_SQL == null)
|
||||||
{
|
{
|
||||||
Shavit_OnDatabaseLoaded();
|
Shavit_OnDatabaseLoaded();
|
||||||
@ -252,6 +248,12 @@ public void OnPluginStart()
|
|||||||
|
|
||||||
AutoExecConfig();
|
AutoExecConfig();
|
||||||
|
|
||||||
|
// admin menu
|
||||||
|
if(LibraryExists("adminmenu") && ((gH_AdminMenu = GetAdminTopMenu()) != null))
|
||||||
|
{
|
||||||
|
OnAdminMenuReady(gH_AdminMenu);
|
||||||
|
}
|
||||||
|
|
||||||
// misc cvars
|
// misc cvars
|
||||||
sv_gravity = FindConVar("sv_gravity");
|
sv_gravity = FindConVar("sv_gravity");
|
||||||
|
|
||||||
@ -322,20 +324,14 @@ public void OnConVarChanged(ConVar convar, const char[] oldValue, const char[] n
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAdminMenuReady(Handle topmenu)
|
public void OnAdminMenuCreated(Handle topmenu)
|
||||||
{
|
{
|
||||||
if(LibraryExists("adminmenu") && ((gH_AdminMenu = GetAdminTopMenu()) != null))
|
if(gH_AdminMenu == null || (topmenu == gH_AdminMenu && gH_TimerCommands != INVALID_TOPMENUOBJECT))
|
||||||
{
|
{
|
||||||
TopMenuObject tmoTimer = FindTopMenuCategory(gH_AdminMenu, "Timer Commands");
|
return;
|
||||||
|
|
||||||
if(tmoTimer != INVALID_TOPMENUOBJECT)
|
|
||||||
{
|
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_zones", TopMenuObject_Item, AdminMenu_Zones, tmoTimer, "sm_zones", ADMFLAG_RCON);
|
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_deletezone", TopMenuObject_Item, AdminMenu_DeleteZone, tmoTimer, "sm_deletezone", ADMFLAG_RCON);
|
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_deleteallzones", TopMenuObject_Item, AdminMenu_DeleteAllZones, tmoTimer, "sm_deleteallzones", ADMFLAG_RCON);
|
|
||||||
AddToTopMenu(gH_AdminMenu, "sm_zoneedit", TopMenuObject_Item, AdminMenu_ZoneEdit, tmoTimer, "sm_zoneedit", ADMFLAG_RCON);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gH_TimerCommands = gH_AdminMenu.AddCategory("Timer Commands", CategoryHandler, "shavit_admin", ADMFLAG_RCON);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CategoryHandler(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
public void CategoryHandler(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
||||||
@ -351,7 +347,28 @@ public void CategoryHandler(Handle topmenu, TopMenuAction action, TopMenuObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AdminMenu_Zones(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
public void OnAdminMenuReady(Handle topmenu)
|
||||||
|
{
|
||||||
|
if((gH_AdminMenu = GetAdminTopMenu()) != null)
|
||||||
|
{
|
||||||
|
if(gH_TimerCommands == INVALID_TOPMENUOBJECT)
|
||||||
|
{
|
||||||
|
gH_TimerCommands = gH_AdminMenu.FindCategory("Timer Commands");
|
||||||
|
|
||||||
|
if(gH_TimerCommands == INVALID_TOPMENUOBJECT)
|
||||||
|
{
|
||||||
|
OnAdminMenuCreated(topmenu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gH_AdminMenu.AddItem("sm_zones", AdminMenu_Zones, gH_TimerCommands, "sm_zones", ADMFLAG_RCON);
|
||||||
|
gH_AdminMenu.AddItem("sm_deletezone", AdminMenu_DeleteZone, gH_TimerCommands, "sm_deletezone", ADMFLAG_RCON);
|
||||||
|
gH_AdminMenu.AddItem("sm_deleteallzones", AdminMenu_DeleteAllZones, gH_TimerCommands, "sm_deleteallzones", ADMFLAG_RCON);
|
||||||
|
gH_AdminMenu.AddItem("sm_zoneedit", AdminMenu_ZoneEdit, gH_TimerCommands, "sm_zoneedit", ADMFLAG_RCON);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AdminMenu_Zones(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
||||||
{
|
{
|
||||||
if(action == TopMenuAction_DisplayOption)
|
if(action == TopMenuAction_DisplayOption)
|
||||||
{
|
{
|
||||||
@ -364,7 +381,7 @@ public void AdminMenu_Zones(Handle topmenu, TopMenuAction action, TopMenuObject
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AdminMenu_DeleteZone(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
public void AdminMenu_DeleteZone(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
||||||
{
|
{
|
||||||
if(action == TopMenuAction_DisplayOption)
|
if(action == TopMenuAction_DisplayOption)
|
||||||
{
|
{
|
||||||
@ -390,7 +407,7 @@ public void AdminMenu_DeleteAllZones(Handle topmenu, TopMenuAction action, TopM
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AdminMenu_ZoneEdit(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
public void AdminMenu_ZoneEdit(Handle topmenu, TopMenuAction action, TopMenuObject object_id, int param, char[] buffer, int maxlength)
|
||||||
{
|
{
|
||||||
if(action == TopMenuAction_DisplayOption)
|
if(action == TopMenuAction_DisplayOption)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -31,6 +31,10 @@
|
|||||||
"#format" "{1:s}"
|
"#format" "{1:s}"
|
||||||
"en" "Usage: {1}"
|
"en" "Usage: {1}"
|
||||||
}
|
}
|
||||||
|
"TimerCommands"
|
||||||
|
{
|
||||||
|
"en" "Timer Commands"
|
||||||
|
}
|
||||||
// ---------- Timelimit ---------- //
|
// ---------- Timelimit ---------- //
|
||||||
"Minutes"
|
"Minutes"
|
||||||
{
|
{
|
||||||
|
|||||||
@ -13,10 +13,6 @@
|
|||||||
{
|
{
|
||||||
"en" "Delete map zone"
|
"en" "Delete map zone"
|
||||||
}
|
}
|
||||||
"TimerCommands"
|
|
||||||
{
|
|
||||||
"en" "Timer Commands"
|
|
||||||
}
|
|
||||||
// ---------- Commands ---------- //
|
// ---------- Commands ---------- //
|
||||||
"ModifierCommandNoArgs"
|
"ModifierCommandNoArgs"
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user