dvander@1510: /** dvander@1510: * vim: set ts=4 : dvander@1510: * ============================================================================= ds@1947: * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. dvander@1510: * ============================================================================= dvander@1510: * dvander@1510: * This file is part of the SourceMod/SourcePawn SDK. dvander@1510: * dvander@1510: * This program is free software; you can redistribute it and/or modify it under dvander@1510: * the terms of the GNU General Public License, version 3.0, as published by the dvander@1510: * Free Software Foundation. dvander@1510: * dvander@1510: * This program is distributed in the hope that it will be useful, but WITHOUT dvander@1510: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS dvander@1510: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more dvander@1510: * details. dvander@1510: * dvander@1510: * You should have received a copy of the GNU General Public License along with dvander@1510: * this program. If not, see . dvander@1510: * dvander@1510: * As a special exception, AlliedModders LLC gives you permission to link the dvander@1510: * code of this program (as well as its derivative works) to "Half-Life 2," the dvander@1510: * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software dvander@1510: * by the Valve Corporation. You must obey the GNU General Public License in dvander@1510: * all respects for all other code used. Additionally, AlliedModders LLC grants dvander@1510: * this exception to all derivative works. AlliedModders LLC defines further dvander@1510: * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), dvander@1510: * or . dvander@1510: * dvander@1510: * Version: $Id$ dvander@1510: */ dvander@1510: dvander@1510: #if defined _adminmenu_included dvander@1510: #endinput dvander@1510: #endif dvander@1510: #define _adminmenu_included dvander@1510: dvander@1510: /* Decide whether topmenus should be required */ dvander@1510: #if !defined REQUIRE_PLUGIN dvander@1510: #if defined REQUIRE_EXTENSIONS dvander@1510: #define TEMP_REQUIRE_EXTENSIONS dvander@1510: #undef REQUIRE_EXTENSIONS dvander@1510: #endif dvander@1510: dvander@1510: #include dvander@1510: dvander@1510: /* Restore old REQUIRE_EXTENSIONS value if necessary */ dvander@1510: #if defined TEMP_REQUIRE_EXTENSIONS dvander@1510: #define REQUIRE_EXTENSIONS dvander@1510: #undef TEMP_REQUIRE_EXTENSIONS dvander@1510: #endif dvander@1510: dvander@1510: /** Category for player commands. */ dvander@1510: #define ADMINMENU_PLAYERCOMMANDS "PlayerCommands" dvander@1518: /** Category for server commands. */ dvander@1518: #define ADMINMENU_SERVERCOMMANDS "ServerCommands" dvander@1523: /** Category for voting commands. */ dvander@1523: #define ADMINMENU_VOTINGCOMMANDS "VotingCommands" dvander@1510: dvander@1510: /** dvander@1510: * Called when the admin menu is created and 3rd party plugins can grab dvander@1510: * the Handle or add categories. dvander@1510: * dvander@1510: * @param topmenu Handle to the admin menu's TopMenu. dvander@1510: * @noreturn dvander@1510: */ dvander@1510: forward OnAdminMenuCreated(Handle:topmenu); dvander@1510: dvander@1510: /** dvander@1510: * Called when the admin menu is ready to have items added. dvander@1510: * dvander@1510: * @param topmenu Handle to the admin menu's TopMenu. dvander@1510: * @noreturn dvander@1510: */ dvander@1510: forward OnAdminMenuReady(Handle:topmenu); dvander@1510: dvander@1510: /** dvander@1510: * Retrieves the Handle to the admin top menu. dvander@1510: * dvander@1510: * @return Handle to the admin menu's TopMenu, dvander@1510: * or INVALID_HANDLE if not created yet. dvander@1510: */ dvander@1510: native Handle:GetAdminTopMenu(); dvander@1510: dvander@1510: /** dvander@1510: * Adds targets to an admin menu. dvander@1510: * dvander@1510: * Each client is displayed as: name (userid) dvander@1510: * Each item contains the userid as a string for its info. dvander@1510: * dvander@1510: * @param menu Menu Handle. dvander@1510: * @param source_client Source client, or 0 to ignore immunity. dvander@1510: * @param in_game_only True to only select in-game players. pred@1626: * @param alive_only True to only select alive players. dvander@1510: * @return Number of clients added. dvander@1510: */ dvander@1832: native AddTargetsToMenu(Handle:menu, dvander@1832: source_client, dvander@1832: bool:in_game_only=true, dvander@1832: bool:alive_only=false); dvander@1832: dvander@1832: /** dvander@1832: * Adds targets to an admin menu. dvander@1832: * dvander@1832: * Each client is displayed as: name (userid) dvander@1832: * Each item contains the userid as a string for its info. dvander@1832: * dvander@1832: * @param menu Menu Handle. dvander@1832: * @param source_client Source client, or 0 to ignore immunity. dvander@1832: * @param flags COMMAND_FILTER flags from commandfilters.inc. dvander@1832: * @return Number of clients added. dvander@1832: */ dvander@1832: native AddTargetsToMenu2(Handle:menu, source_client, flags); dvander@1510: dvander@1518: /** dvander@1518: * Re-displays the admin menu to a client after selecting an item. dvander@1518: * Auto-aborts if the Handle is invalid. dvander@1518: * dvander@1518: * @param topmenu TopMenu Handle. dvander@1518: * @param client Client index. dvander@1518: * @return True on success, false on failure. dvander@1518: */ dvander@1518: stock bool:RedisplayAdminMenu(Handle:topmenu, client) dvander@1518: { dvander@1518: if (topmenu == INVALID_HANDLE) dvander@1518: { dvander@1518: return false; dvander@1518: } dvander@1518: dvander@1518: return DisplayTopMenu(topmenu, client, TopMenuPosition_LastCategory); dvander@1518: } dvander@1518: dvander@1510: /* DO NOT EDIT BELOW THIS LINE */ dvander@1510: dvander@1510: public SharedPlugin:__pl_adminmenu = dvander@1510: { dvander@1510: name = "adminmenu", dvander@1510: file = "adminmenu.smx", dvander@1510: #if defined REQUIRE_PLUGIN dvander@1510: required = 1, dvander@1510: #else dvander@1510: required = 0, dvander@1510: #endif dvander@1510: }; dvander@1510: dvander@1572: #if !defined REQUIRE_PLUGIN dvander@1510: public __pl_adminmenu_SetNTVOptional() dvander@1510: { dvander@1510: MarkNativeAsOptional("GetAdminTopMenu"); dvander@1513: MarkNativeAsOptional("AddTargetsToMenu"); dvander@1832: MarkNativeAsOptional("AddTargetsToMenu2"); dvander@1510: } dvander@1572: #endif