diff -r c7b4237fff50 -r 03a67e41afbc plugins/mapmanager/votes.sp
--- a/plugins/mapmanager/votes.sp Fri Mar 28 06:21:34 2008 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,318 +0,0 @@
-/**
- * vim: set ts=4 :
- * =============================================================================
- * SourceMod Map Manager Plugin
- * Contains vote callbacks
- *
- * SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved.
- * =============================================================================
- *
- * This program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License, version 3.0, as published by the
- * Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see .
- *
- * As a special exception, AlliedModders LLC gives you permission to link the
- * code of this program (as well as its derivative works) to "Half-Life 2," the
- * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
- * by the Valve Corporation. You must obey the GNU General Public License in
- * all respects for all other code used. Additionally, AlliedModders LLC grants
- * this exception to all derivative works. AlliedModders LLC defines further
- * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
- * or .
- *
- * Version: $Id$
- */
-
-// sm_votemap
-public Handler_VoteCallback(Handle:menu, MenuAction:action, param1, param2)
-{
- if (action == MenuAction_End)
- {
- CloseHandle(menu);
- }
- else if (action == MenuAction_Display)
- {
- decl String:title[64];
- GetMenuTitle(menu, title, sizeof(title));
-
- decl String:map[64];
- GetMenuItem(menu, 1, map, sizeof(map));
-
- decl String:buffer[255];
- Format(buffer, sizeof(buffer), "%T", title, param1, map);
-
- new Handle:panel = Handle:param2;
- SetPanelTitle(panel, buffer);
- }
- else if (action == MenuAction_DisplayItem)
- {
- decl String:display[64];
- GetMenuItem(menu, param2, "", 0, _, display, sizeof(display));
-
- if (strcmp(display, "No") == 0 || strcmp(display, "Yes") == 0)
- {
- decl String:buffer[255];
- Format(buffer, sizeof(buffer), "%T", display, param1);
-
- return RedrawMenuItem(buffer);
- }
- }
- else if (action == MenuAction_VoteCancel && param1 == VoteCancel_NoVotes)
- {
- PrintToChatAll("[SM] %t", "No Votes Cast");
- }
- else if (action == MenuAction_VoteEnd)
- {
- decl String:item[64], String:display[64];
- new Float:percent, Float:limit, votes, totalVotes;
-
- GetMenuVoteInfo(param2, votes, totalVotes);
- GetMenuItem(menu, param1, item, sizeof(item), _, display, sizeof(display));
-
- if (strcmp(item, VOTE_NO) == 0 && param1 == 1)
- {
- votes = totalVotes - votes; // Reverse the votes to be in relation to the Yes option.
- }
-
- percent = GetVotePercent(votes, totalVotes);
-
- limit = GetConVarFloat(g_Cvar_VoteMap);
-
- // A multi-argument vote is "always successful", but have to check if its a Yes/No vote.
- if ((strcmp(item, VOTE_YES) == 0 && FloatCompare(percent,limit) < 0 && param1 == 0) || (strcmp(item, VOTE_NO) == 0 && param1 == 1))
- {
- LogAction(-1, -1, "Vote failed.");
- PrintToChatAll("[SM] %t", "Votemap Failed", RoundToNearest(100.0*limit), RoundToNearest(100.0*percent), totalVotes);
- }
- else
- {
- PrintToChatAll("[SM] %t", "Votemap Successful", RoundToNearest(100.0*percent), totalVotes);
-
- if (g_VoteMapInUse && IsClientInGame(g_VoteMapInUse))
- {
- DisplayAcceptVoteMenu(item);
- }
- else
- {
- LogAction(-1, -1, "Changing map to %s due to vote.", item);
- PrintToChatAll("[SM] %t", "Changing map", item);
- SetMapChange(0, item, g_Client_Data[g_VoteMapInUse][0])
- }
- }
- }
-
- return 0;
-}
-
-public Handler_MapMapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
-{
- switch (action)
- {
- case MenuAction_End:
- {
- CloseHandle(menu);
- }
-
- case MenuAction_Display:
- {
- decl String:oldTitle[255], String:buffer[255];
- GetMenuTitle(menu, oldTitle, sizeof(oldTitle));
- Format(buffer, sizeof(buffer), "%T", oldTitle, param1);
-
- new Handle:panel = Handle:param2;
- SetPanelTitle(panel, buffer);
- }
-
- case MenuAction_DisplayItem:
- {
- if (GetMenuItemCount(menu) - 1 == param2)
- {
- decl String:buffer[255];
- Format(buffer, sizeof(buffer), "%T", "Don't Change", param1);
- return RedrawMenuItem(buffer);
- }
- }
-
- // Why am I commented out? Because BAIL hasn't decided yet if
- // vote notification will be built into the Vote API.
- /*case MenuAction_Select:
- {
- decl String:Name[32], String:Map[32];
- GetClientName(param1, Name, sizeof(Name));
- GetMenuItem(menu, param2, Map, sizeof(Map));
-
- PrintToChatAll("[SM] %s has voted for map '%s'", Name, Map);
- }*/
-
- case MenuAction_VoteCancel:
- {
- if (param1 == VoteCancel_NoVotes)
- {
- PrintToChatAll("[SM] %t", "No Votes");
- g_RTVEnded = true;
- }
- }
-
- case MenuAction_VoteEnd:
- {
- new String:map[64];
-
- GetMenuItem(menu, param1, map, sizeof(map));
-
- if (GetMenuItemCount(menu) - 1 == param1) // This should always match the "Keep Current" option
- {
- PrintToChatAll("[SM] %t", "Current Map Stays");
- LogMessage("[SM] Rockthevote has ended, current map kept.");
- }
- else
- {
- PrintToChatAll("[SM] %t", "Changing Maps", map);
- LogMessage("[SM] Rockthevote has ended, changing to map %s.", map);
- new Handle:dp;
- CreateDataTimer(5.0, Timer_ChangeMap, dp);
- WritePackString(dp, map);
- }
-
- g_RTVEnded = true;
- }
- }
-
- return 0;
-}
-
-public Handler_MapVoteMenu(Handle:menu, MenuAction:action, param1, param2)
-{
- switch (action)
- {
- case MenuAction_End:
- {
- g_VoteMenu = INVALID_HANDLE;
- CloseHandle(menu);
- }
-
- case MenuAction_Display:
- {
- decl String:buffer[255];
- Format(buffer, sizeof(buffer), "%T", "Vote Nextmap", param1);
-
- new Handle:panel = Handle:param2;
- SetPanelTitle(panel, buffer);
- }
-
- case MenuAction_DisplayItem:
- {
- if (GetMenuItemCount(menu) - 1 == param2)
- {
- decl String:map[64], String:buffer[255];
- GetMenuItem(menu, param2, map, sizeof(map));
- if (strcmp(map, VOTE_EXTEND, false) == 0)
- {
- Format(buffer, sizeof(buffer), "%T", "Extend Map", param1);
- return RedrawMenuItem(buffer);
- }
- }
- }
-
- // Why am I commented out? Because BAIL hasn't decided yet if
- // vote notification will be built into the Vote API.
- /*case MenuAction_Select:
- {
- decl String:Name[32], String:Map[32];
- GetClientName(param1, Name, sizeof(Name));
- GetMenuItem(menu, param2, Map, sizeof(Map));
-
- PrintToChatAll("[SM] %s has voted for map '%s'", Name, Map);
- }*/
-
- case MenuAction_VoteCancel:
- {
- // If we receive 0 votes, pick at random.
- if (param1 == VoteCancel_NoVotes && GetConVarBool(g_Cvar_NoVoteMode))
- {
- new count = GetMenuItemCount(menu);
- new item = GetRandomInt(0, count - 1);
- decl String:map[32];
- GetMenuItem(menu, item, map, sizeof(map));
-
- while (strcmp(map, VOTE_EXTEND, false) == 0)
- {
- item = GetRandomInt(0, count - 1);
- GetMenuItem(menu, item, map, sizeof(map));
- }
-
- SetNextMap(map);
- }
- else
- {
- // We were actually cancelled. What should we do?
- }
- }
-
- case MenuAction_VoteEnd:
- {
- decl String:map[32];
- GetMenuItem(menu, param1, map, sizeof(map));
-
- if (strcmp(map, VOTE_EXTEND, false) == 0)
- {
- new time;
- if (GetMapTimeLimit(time))
- {
- if (time > 0 && time < GetConVarInt(g_Cvar_ExtendTimeMax))
- {
- ExtendMapTimeLimit(GetConVarInt(g_Cvar_ExtendTimeStep)*60);
- }
- }
-
- if (g_Cvar_Winlimit != INVALID_HANDLE)
- {
- new winlimit = GetConVarInt(g_Cvar_Winlimit);
- if (winlimit && winlimit < GetConVarInt(g_Cvar_ExtendRoundMax))
- {
- SetConVarInt(g_Cvar_Winlimit, winlimit + GetConVarInt(g_Cvar_ExtendRoundStep));
- }
- }
-
- if (g_Cvar_Maxrounds != INVALID_HANDLE)
- {
- new maxrounds = GetConVarInt(g_Cvar_Maxrounds);
- if (maxrounds && maxrounds < GetConVarInt(g_Cvar_ExtendRoundMax))
- {
- SetConVarInt(g_Cvar_Maxrounds, maxrounds + GetConVarInt(g_Cvar_ExtendRoundStep));
- }
- }
-
- if (g_Cvar_Fraglimit != INVALID_HANDLE)
- {
- new fraglimit = GetConVarInt(g_Cvar_Fraglimit);
- if (fraglimit && fraglimit < GetConVarInt(g_Cvar_ExtendFragMax))
- {
- SetConVarInt(g_Cvar_Fraglimit, fraglimit + GetConVarInt(g_Cvar_ExtendFragStep));
- }
- }
-
- PrintToChatAll("[SM] %t", "Current Map Extended");
- LogMessage("Voting for next map has finished. The current map has been extended.");
-
- // We extended, so we'll have to vote again.
- g_HasVoteStarted = false;
- CreateNextVote();
- SetupTimeleftTimer();
- }
- else
- {
- SetNextMap(map);
- }
- }
- }
-
- return 0;
-}
\ No newline at end of file