Extend: Add no vote option and optional time parameter to sm_extendvote command

This commit is contained in:
BotoX 2017-04-19 19:51:51 +02:00
parent f03620755b
commit ac16967ab4

View File

@ -59,9 +59,9 @@ public void OnPluginStart()
{
RegAdminCmd("sm_extend", Command_Extend, ADMFLAG_GENERIC, "Add more time to mp_timelimit");
RegAdminCmd("sm_extend_time", Command_Extend, ADMFLAG_GENERIC, "Add more time to mp_timelimit");
RegAdminCmd("sm_extendvote", Command_ExtendVote, ADMFLAG_GENERIC, "Creates a vote that will increase the value of mp_timelimit by the value of sm_extendvote_time if successful");
RegAdminCmd("sm_voteextend", Command_ExtendVote, ADMFLAG_GENERIC, "Creates a vote that will increase the value of mp_timelimit by the value of sm_extendvote_time if successful");
RegAdminCmd("sm_extend_vote", Command_ExtendVote, ADMFLAG_GENERIC, "Creates a vote that will increase the value of mp_timelimit by the value of sm_extendvote_time if successful");
RegAdminCmd("sm_extendvote", Command_ExtendVote, ADMFLAG_GENERIC, "sm_extendvote [time] - Start an extendvote");
RegAdminCmd("sm_voteextend", Command_ExtendVote, ADMFLAG_GENERIC, "sm_voteextend [time] - Start an extendvote");
RegAdminCmd("sm_extend_vote", Command_ExtendVote, ADMFLAG_GENERIC, "sm_extend_vote [time] - Start an extendvote");
}
else
{
@ -264,6 +264,7 @@ public Action Command_Extend(int client, int argc)
return Plugin_Handled;
}
int g_ExtendTime = 0;
public Action Command_ExtendVote(int client, int argc)
{
if (IsVoteInProgress())
@ -272,12 +273,23 @@ public Action Command_ExtendVote(int client, int argc)
return Plugin_Handled;
}
Menu hVoteMenu = new Menu(Handler_VoteCallback, MENU_ACTIONS_ALL);
hVoteMenu.SetTitle("Extend the current map (%d minutes)?", g_cvarExtendVoteTime.IntValue);
g_ExtendTime = g_cvarExtendVoteTime.IntValue;
if(argc == 1)
{
char sArg[64];
GetCmdArg(1, sArg, sizeof(sArg));
int Tmp = StringToInt(sArg);
if(Tmp > 0)
g_ExtendTime = Tmp > 30 ? 30 : Tmp;
}
Menu hVoteMenu = new Menu(Handler_VoteCallback, MenuAction_End|MenuAction_DisplayItem|MenuAction_VoteCancel|MenuAction_VoteEnd);
hVoteMenu.SetTitle("Extend the current map (%d minutes)?", g_ExtendTime);
hVoteMenu.AddItem(VOTE_YES, "Yes");
hVoteMenu.AddItem(VOTE_NO, "No");
hVoteMenu.OptionFlags = MENUFLAG_BUTTON_NOVOTE;
hVoteMenu.ExitButton = false;
hVoteMenu.DisplayVoteToAll(20);
@ -319,7 +331,7 @@ public int Handler_VoteCallback(Menu menu, MenuAction action, int param1, int pa
GetMenuVoteInfo(param2, votes, totalVotes);
menu.GetItem(param1, item, sizeof(item), _, display, sizeof(display));
if (strcmp(item, VOTE_NO) == 0 && param1 == 1)
if (strcmp(item, VOTE_NO) == 0)
{
votes = totalVotes - votes;
}
@ -327,17 +339,17 @@ public int Handler_VoteCallback(Menu menu, MenuAction action, int param1, int pa
limit = g_cvarExtendVotePercent.FloatValue;
percent = FloatDiv(float(votes),float(totalVotes));
if ((strcmp(item, VOTE_YES) == 0 && FloatCompare(percent, limit) < 0 && param1 == 0) || (strcmp(item, VOTE_NO) == 0 && param1 == 1))
if ((strcmp(item, VOTE_YES) == 0 && FloatCompare(percent, limit) < 0) || strcmp(item, VOTE_NO) == 0)
{
LogAction(-1, -1, "Extend vote failed.");
PrintToChatAll("[SM] %t", "Vote Failed", RoundToNearest(100.0 * limit), RoundToNearest(100.0 * percent), totalVotes);
}
else
{
LogAction(-1, -1, "Extend vote successful, extending current map by \"%d\" minutes", g_cvarExtendVoteTime.IntValue);
LogAction(-1, -1, "Extend vote successful, extending current map by \"%d\" minutes", g_ExtendTime);
PrintToChatAll("[SM] %t", "Vote Successful", RoundToNearest(100.0 * percent), totalVotes);
g_cvarMpTimeLimit.IntValue += g_cvarExtendVoteTime.IntValue;
g_cvarMpTimeLimit.IntValue += g_ExtendTime;
CancelGameOver();
if (strcmp(item, VOTE_NO) == 0 || strcmp(item, VOTE_YES) == 0)