experimental commit of a menu attachment for sm_reloadadmins

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401524
This commit is contained in:
David Anderson 2007-10-02 01:02:40 +00:00
parent f8e2a09b39
commit 5600942b3c
5 changed files with 92 additions and 12 deletions

View File

@ -54,6 +54,7 @@ new Handle:hAdminMenu = INVALID_HANDLE;
/* Top menu objects */
new TopMenuObject:obj_playercmds = INVALID_TOPMENUOBJECT;
new TopMenuObject:obj_servercmds = INVALID_TOPMENUOBJECT;
public bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max)
{
@ -83,6 +84,12 @@ public OnAllPluginsLoaded()
CategoryHandler,
INVALID_TOPMENUOBJECT);
obj_servercmds = AddToTopMenu(hAdminMenu,
"ServerCommands",
TopMenuObject_Category,
CategoryHandler,
INVALID_TOPMENUOBJECT);
Call_StartForward(hOnAdminMenuCreated);
Call_PushCell(hAdminMenu);
Call_Finish();
@ -109,6 +116,10 @@ public CategoryHandler(Handle:topmenu,
{
Format(buffer, maxlength, "%T:", "Player Commands", param);
}
else if (object_id == obj_servercmds)
{
Format(buffer, maxlength, "%T:", "Server Commands", param);
}
}
else if (action == TopMenuAction_DrawOption)
{
@ -116,6 +127,10 @@ public CategoryHandler(Handle:topmenu,
{
Format(buffer, maxlength, "%T", "Player Commands", param);
}
else if (object_id == obj_servercmds)
{
Format(buffer, maxlength, "%T", "Server Commands", param);
}
return ITEMDRAW_DEFAULT;
}
@ -174,3 +189,4 @@ stock UTIL_AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only)
return num_clients;
}

View File

@ -49,6 +49,7 @@ public Plugin:myinfo =
new Handle:hTopMenu = INVALID_HANDLE;
#include "basecommands/kick.sp"
#include "basecommands/reloadadmins.sp"
public OnPluginStart()
{
@ -95,6 +96,19 @@ public OnAdminMenuReady(Handle:topmenu)
"sm_kick",
ADMFLAG_KICK);
}
new TopMenuObject:server_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_SERVERCOMMANDS);
if (server_commands != INVALID_TOPMENUOBJECT)
{
AddToTopMenu(hTopMenu,
"Reload Admins",
TopMenuObject_Item,
AdminMenu_ReloadAdmins,
server_commands,
"sm_reloadadmins",
ADMFLAG_BAN);
}
}
public OnLibraryRemoved(const String:name[])
@ -105,18 +119,6 @@ public OnLibraryRemoved(const String:name[])
}
}
public Action:Command_ReloadAdmins(client, args)
{
/* Dump it all! */
DumpAdminCache(AdminCache_Groups, true);
DumpAdminCache(AdminCache_Overrides, true);
LogAction(client, -1, "\"%L\" refreshed the admin cache.", client);
ReplyToCommand(client, "[SM] %t", "Admin cache refreshed");
return Plugin_Handled;
}
#define FLAG_STRINGS 14
new String:g_FlagNames[FLAG_STRINGS][20] =
{

View File

@ -0,0 +1,37 @@
PerformReloadAdmins(client)
{
/* Dump it all! */
DumpAdminCache(AdminCache_Groups, true);
DumpAdminCache(AdminCache_Overrides, true);
LogAction(client, -1, "\"%L\" refreshed the admin cache.", client);
ReplyToCommand(client, "[SM] %t", "Admin cache refreshed");
}
public AdminMenu_ReloadAdmins(Handle:topmenu,
TopMenuAction:action,
TopMenuObject:object_id,
param,
String:buffer[],
maxlength)
{
if (action == TopMenuAction_DrawOption)
{
Format(buffer, maxlength, "%T", "Kick player", param);
}
else if (action == TopMenuAction_SelectOption)
{
PerformReloadAdmins(param);
RedisplayAdminMenu(topmenu, param);
}
}
public Action:Command_ReloadAdmins(client, args)
{
PerformReloadAdmins(client);
return Plugin_Handled;
}

View File

@ -52,6 +52,8 @@
/** Category for player commands. */
#define ADMINMENU_PLAYERCOMMANDS "PlayerCommands"
/** Category for server commands. */
#define ADMINMENU_SERVERCOMMANDS "ServerCommands"
/**
* Called when the admin menu is created and 3rd party plugins can grab
@ -91,6 +93,24 @@ native Handle:GetAdminTopMenu();
*/
native AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only=true);
/**
* Re-displays the admin menu to a client after selecting an item.
* Auto-aborts if the Handle is invalid.
*
* @param topmenu TopMenu Handle.
* @param client Client index.
* @return True on success, false on failure.
*/
stock bool:RedisplayAdminMenu(Handle:topmenu, client)
{
if (topmenu == INVALID_HANDLE)
{
return false;
}
return DisplayTopMenu(topmenu, client, TopMenuPosition_LastCategory);
}
/* DO NOT EDIT BELOW THIS LINE */
public SharedPlugin:__pl_adminmenu =

View File

@ -256,5 +256,10 @@
{
"en" "Player Commands"
}
"Server Commands"
{
"en" "Server Commands"
}
}