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
andrewborba10@2904: #define TEMP_REQUIRE_EXTENSIONS
andrewborba10@2904: #undef REQUIRE_EXTENSIONS
andrewborba10@2904: #endif
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