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:
parent
f8e2a09b39
commit
5600942b3c
@ -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)
|
||||
{
|
||||
@ -82,6 +83,12 @@ public OnAllPluginsLoaded()
|
||||
TopMenuObject_Category,
|
||||
CategoryHandler,
|
||||
INVALID_TOPMENUOBJECT);
|
||||
|
||||
obj_servercmds = AddToTopMenu(hAdminMenu,
|
||||
"ServerCommands",
|
||||
TopMenuObject_Category,
|
||||
CategoryHandler,
|
||||
INVALID_TOPMENUOBJECT);
|
||||
|
||||
Call_StartForward(hOnAdminMenuCreated);
|
||||
Call_PushCell(hAdminMenu);
|
||||
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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] =
|
||||
{
|
||||
|
37
plugins/basecommands/reloadadmins.sp
Normal file
37
plugins/basecommands/reloadadmins.sp
Normal 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;
|
||||
}
|
||||
|
||||
|
@ -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 =
|
||||
|
@ -256,5 +256,10 @@
|
||||
{
|
||||
"en" "Player Commands"
|
||||
}
|
||||
|
||||
"Server Commands"
|
||||
{
|
||||
"en" "Server Commands"
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user