plugins/include/adminmenu.inc
author David Anderson <dvander@alliedmods.net>
Tue Oct 16 19:28:02 2007 +0000 (2007-10-16)
changeset 1594 10ed42f305e1
parent 1572 adbc41dc9cd0
child 1626 8775cc33c01e
permissions -rw-r--r--
cleaned up menu vote code a bit
     1 /**
     2  * vim: set ts=4 :
     3  * =============================================================================
     4  * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
     5  * =============================================================================
     6  *
     7  * This file is part of the SourceMod/SourcePawn SDK.
     8  *
     9  * This program is free software; you can redistribute it and/or modify it under
    10  * the terms of the GNU General Public License, version 3.0, as published by the
    11  * Free Software Foundation.
    12  * 
    13  * This program is distributed in the hope that it will be useful, but WITHOUT
    14  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    15  * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
    16  * details.
    17  *
    18  * You should have received a copy of the GNU General Public License along with
    19  * this program.  If not, see <http://www.gnu.org/licenses/>.
    20  *
    21  * As a special exception, AlliedModders LLC gives you permission to link the
    22  * code of this program (as well as its derivative works) to "Half-Life 2," the
    23  * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
    24  * by the Valve Corporation.  You must obey the GNU General Public License in
    25  * all respects for all other code used.  Additionally, AlliedModders LLC grants
    26  * this exception to all derivative works.  AlliedModders LLC defines further
    27  * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
    28  * or <http://www.sourcemod.net/license.php>.
    29  *
    30  * Version: $Id$
    31  */
    32  
    33 #if defined _adminmenu_included
    34  #endinput
    35 #endif
    36 #define _adminmenu_included
    37 
    38 /* Decide whether topmenus should be required */
    39 #if !defined REQUIRE_PLUGIN
    40  #if defined REQUIRE_EXTENSIONS
    41  #define TEMP_REQUIRE_EXTENSIONS
    42  #undef REQUIRE_EXTENSIONS
    43 #endif
    44 
    45 #include <topmenus>
    46 
    47 /* Restore old REQUIRE_EXTENSIONS value if necessary */
    48 #if defined TEMP_REQUIRE_EXTENSIONS
    49  #define REQUIRE_EXTENSIONS
    50  #undef TEMP_REQUIRE_EXTENSIONS
    51 #endif
    52 
    53 /** Category for player commands. */
    54 #define ADMINMENU_PLAYERCOMMANDS		"PlayerCommands"
    55 /** Category for server commands. */
    56 #define ADMINMENU_SERVERCOMMANDS		"ServerCommands"
    57 /** Category for voting commands. */
    58 #define ADMINMENU_VOTINGCOMMANDS		"VotingCommands"
    59 
    60 /**
    61  * Called when the admin menu is created and 3rd party plugins can grab 
    62  * the Handle or add categories.
    63  * 
    64  * @param topmenu		Handle to the admin menu's TopMenu.
    65  * @noreturn
    66  */
    67 forward OnAdminMenuCreated(Handle:topmenu);
    68 
    69 /**
    70  * Called when the admin menu is ready to have items added.
    71  * 
    72  * @param topmenu		Handle to the admin menu's TopMenu.
    73  * @noreturn
    74  */
    75 forward OnAdminMenuReady(Handle:topmenu);
    76 
    77 /**
    78  * Retrieves the Handle to the admin top menu.
    79  *
    80  * @return				Handle to the admin menu's TopMenu,
    81  *						or INVALID_HANDLE if not created yet.
    82  */
    83 native Handle:GetAdminTopMenu();
    84 
    85 /**
    86  * Adds targets to an admin menu.
    87  *
    88  * Each client is displayed as: name (userid)
    89  * Each item contains the userid as a string for its info.
    90  *
    91  * @param menu			Menu Handle.
    92  * @param source_client	Source client, or 0 to ignore immunity.
    93  * @param in_game_only	True to only select in-game players.
    94  * @return				Number of clients added.
    95  */
    96 native AddTargetsToMenu(Handle:menu, source_client, bool:in_game_only=true);
    97 
    98 /**
    99  * Re-displays the admin menu to a client after selecting an item.
   100  * Auto-aborts if the Handle is invalid.
   101  *
   102  * @param topmenu		TopMenu Handle.
   103  * @param client		Client index.
   104  * @return				True on success, false on failure.
   105  */
   106 stock bool:RedisplayAdminMenu(Handle:topmenu, client)
   107 {
   108 	if (topmenu == INVALID_HANDLE)
   109 	{
   110 		return false;
   111 	}
   112 
   113 	return DisplayTopMenu(topmenu, client, TopMenuPosition_LastCategory);
   114 }
   115 
   116 /* DO NOT EDIT BELOW THIS LINE */
   117 
   118 public SharedPlugin:__pl_adminmenu = 
   119 {
   120 	name = "adminmenu",
   121 	file = "adminmenu.smx",
   122 #if defined REQUIRE_PLUGIN
   123 	required = 1,
   124 #else
   125 	required = 0,
   126 #endif
   127 };
   128 
   129 #if !defined REQUIRE_PLUGIN
   130 public __pl_adminmenu_SetNTVOptional()
   131 {
   132 	MarkNativeAsOptional("GetAdminTopMenu");
   133 	MarkNativeAsOptional("AddTargetsToMenu");
   134 }
   135 #endif