From ee90188103fc7b106b8ab15352b597f40952229b Mon Sep 17 00:00:00 2001 From: David Anderson <dvander@alliedmods.net> Date: Tue, 2 Oct 2007 14:34:45 +0000 Subject: [PATCH] added voting category and a menu option for cancelling votes --HG-- extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%401529 --- plugins/adminmenu.sp | 15 ++++++++++++ plugins/basecommands.sp | 29 +++++++++++----------- plugins/basecommands/cancelvote.sp | 39 ++++++++++++++++++++++++++++++ plugins/include/adminmenu.inc | 2 ++ 4 files changed, 70 insertions(+), 15 deletions(-) create mode 100644 plugins/basecommands/cancelvote.sp diff --git a/plugins/adminmenu.sp b/plugins/adminmenu.sp index 27040b08..3ace75be 100644 --- a/plugins/adminmenu.sp +++ b/plugins/adminmenu.sp @@ -55,6 +55,7 @@ new Handle:hAdminMenu = INVALID_HANDLE; /* Top menu objects */ new TopMenuObject:obj_playercmds = INVALID_TOPMENUOBJECT; new TopMenuObject:obj_servercmds = INVALID_TOPMENUOBJECT; +new TopMenuObject:obj_votingcmds = INVALID_TOPMENUOBJECT; public bool:AskPluginLoad(Handle:myself, bool:late, String:error[], err_max) { @@ -89,6 +90,12 @@ public OnAllPluginsLoaded() TopMenuObject_Category, CategoryHandler, INVALID_TOPMENUOBJECT); + + obj_votingcmds = AddToTopMenu(hAdminMenu, + "VotingCommands", + TopMenuObject_Category, + CategoryHandler, + INVALID_TOPMENUOBJECT); Call_StartForward(hOnAdminMenuCreated); Call_PushCell(hAdminMenu); @@ -120,6 +127,10 @@ public CategoryHandler(Handle:topmenu, { Format(buffer, maxlength, "%T:", "Server Commands", param); } + else if (object_id == obj_votingcmds) + { + Format(buffer, maxlength, "%T:", "Voting Commands", param); + } } else if (action == TopMenuAction_DrawOption) { @@ -131,6 +142,10 @@ public CategoryHandler(Handle:topmenu, { Format(buffer, maxlength, "%T", "Server Commands", param); } + else if (object_id == obj_votingcmds) + { + Format(buffer, maxlength, "%T", "Voting Commands", param); + } return ITEMDRAW_DEFAULT; } diff --git a/plugins/basecommands.sp b/plugins/basecommands.sp index 36d601fc..f583c36c 100644 --- a/plugins/basecommands.sp +++ b/plugins/basecommands.sp @@ -50,6 +50,7 @@ new Handle:hTopMenu = INVALID_HANDLE; #include "basecommands/kick.sp" #include "basecommands/reloadadmins.sp" +#include "basecommands/cancelvote.sp" public OnPluginStart() { @@ -110,6 +111,19 @@ public OnAdminMenuReady(Handle:topmenu) "sm_reloadadmins", ADMFLAG_BAN); } + + new TopMenuObject:voting_commands = FindTopMenuCategory(hTopMenu, ADMINMENU_VOTINGCOMMANDS); + + if (voting_commands != INVALID_TOPMENUOBJECT) + { + AddToTopMenu(hTopMenu, + "Cancel Vote", + TopMenuObject_Item, + AdminMenu_CancelVote, + voting_commands, + "sm_cancelvote", + ADMFLAG_VOTE); + } } public OnLibraryRemoved(const String:name[]) @@ -415,18 +429,3 @@ public Action:Timer_ChangeMap(Handle:timer, Handle:dp) return Plugin_Stop; } -public Action:Command_CancelVote(client, args) -{ - if (!IsVoteInProgress()) - { - ReplyToCommand(client, "[SM] %t", "Vote Not In Progress"); - return Plugin_Handled; - } - - ShowActivity(client, "%t", "Cancelled Vote"); - - CancelVote(); - - return Plugin_Handled; -} - diff --git a/plugins/basecommands/cancelvote.sp b/plugins/basecommands/cancelvote.sp new file mode 100644 index 00000000..8cf2bb7e --- /dev/null +++ b/plugins/basecommands/cancelvote.sp @@ -0,0 +1,39 @@ + +PerformCancelVote(client) +{ + if (!IsVoteInProgress()) + { + ReplyToCommand(client, "[SM] %t", "Vote Not In Progress"); + return; + } + + ShowActivity(client, "%t", "Cancelled Vote"); + + CancelVote(); +} + +public AdminMenu_CancelVote(Handle:topmenu, + TopMenuAction:action, + TopMenuObject:object_id, + param, + String:buffer[], + maxlength) +{ + if (action == TopMenuAction_DrawOption) + { + Format(buffer, maxlength, "%T", "Cancel vote", param); + } + else if (action == TopMenuAction_SelectOption) + { + PerformCancelVote(param); + RedisplayAdminMenu(topmenu, param); + } +} + +public Action:Command_CancelVote(client, args) +{ + PerformCancelVote(client); + + return Plugin_Handled; +} + diff --git a/plugins/include/adminmenu.inc b/plugins/include/adminmenu.inc index 5e265ed6..ff8dab4c 100644 --- a/plugins/include/adminmenu.inc +++ b/plugins/include/adminmenu.inc @@ -54,6 +54,8 @@ #define ADMINMENU_PLAYERCOMMANDS "PlayerCommands" /** Category for server commands. */ #define ADMINMENU_SERVERCOMMANDS "ServerCommands" +/** Category for voting commands. */ +#define ADMINMENU_VOTINGCOMMANDS "VotingCommands" /** * Called when the admin menu is created and 3rd party plugins can grab