added feature for leader to nominate a map which skips the restrictions
This commit is contained in:
parent
0394a2a402
commit
04ab4f9602
@ -9,6 +9,11 @@ native int PushMapsIntoNominationPool(ArrayList maps);
|
||||
native int RemoveMapFromNominationPool(char[] map);
|
||||
native int RemoveMapsFromNominationPool(ArrayList maps);
|
||||
|
||||
/**
|
||||
* @MapleaderNominatedMapname is the map nominated from a map leader
|
||||
*/
|
||||
native void GetMapleaderNominatedMap(char[] MapleaderNominatedMapname);
|
||||
|
||||
public SharedPlugin __pl_nominations_extended =
|
||||
{
|
||||
name = "nominations",
|
||||
|
@ -51,6 +51,7 @@
|
||||
#include <sdktools>
|
||||
#include <multicolors>
|
||||
#include <PlayerManager>
|
||||
#include <nominations_extended>
|
||||
#include <rockthevote_extended>
|
||||
|
||||
#pragma semicolon 1
|
||||
@ -236,6 +237,7 @@ public void OnPluginEnd()
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
GetArrayString(g_NominateList[i], j, oldmap, PLATFORM_MAX_PATH);
|
||||
Call_PushString(oldmap);
|
||||
Call_PushCell(i);
|
||||
Call_Finish();
|
||||
}
|
||||
}
|
||||
@ -640,6 +642,7 @@ public void OnClientDisconnect(int client)
|
||||
char oldmap[PLATFORM_MAX_PATH];
|
||||
GetArrayString(g_NominateList[client], i, oldmap, PLATFORM_MAX_PATH);
|
||||
Call_PushString(oldmap);
|
||||
Call_PushCell(client);
|
||||
Call_Finish();
|
||||
}
|
||||
|
||||
@ -1021,6 +1024,11 @@ public Handle get_most_nominated_maps()
|
||||
Handle most_nominated_maps = CreateArray(arraySize);
|
||||
StringMap sm = new StringMap();
|
||||
|
||||
//november 2023 edit: now the leader can nominate one map per map played that can skip requirements: Expectation is the leader will want to lead the map.
|
||||
//if leaders abuse the feature they should simply be removed from the feature.
|
||||
char MapleaderNominatedMap[PLATFORM_MAX_PATH];
|
||||
GetMapleaderNominatedMap(MapleaderNominatedMap);
|
||||
|
||||
for (int i = 0; i < MaxClients; i++)
|
||||
{
|
||||
for (int j = 0; j < GetArraySize(g_NominateList[i]); j++)
|
||||
@ -1030,12 +1038,19 @@ public Handle get_most_nominated_maps()
|
||||
int nominate_count_for_particular_map = 0;
|
||||
sm.GetValue(map_iteration, nominate_count_for_particular_map);
|
||||
nominate_count_for_particular_map++;
|
||||
//if i is 0 its admin nominated map that must come into the vote
|
||||
if(!i)
|
||||
//if i is 0 its admin nominated map that must come into the vote.
|
||||
//if strequal the map was nominated by a leader and most be forced on the vote.
|
||||
if(!i || StrEqual(map_iteration, MapleaderNominatedMap, false))
|
||||
{
|
||||
nominate_count_for_particular_map = 999;
|
||||
}
|
||||
sm.SetValue(map_iteration, nominate_count_for_particular_map, true);
|
||||
|
||||
/* Notify Nominations that this map is now free */
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(map_iteration);
|
||||
Call_PushCell(i + 100); //differentiate between all other calls and the call invoked by get_most_nominated_maps()
|
||||
Call_Finish();
|
||||
}
|
||||
}
|
||||
static char map_[PLATFORM_MAX_PATH];
|
||||
@ -1245,27 +1260,9 @@ void InitiateVote(MapChange when, Handle inputlist=INVALID_HANDLE)
|
||||
|
||||
if(randomizeList == INVALID_HANDLE)
|
||||
AddMapItem(map);
|
||||
|
||||
RemoveStringFromArray(g_NextMapList, map);
|
||||
|
||||
/* Notify Nominations that this map is now free */
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(map);
|
||||
Call_Finish();
|
||||
}
|
||||
|
||||
/* Clear out the rest of the nominations array */
|
||||
for(int i = nominationsToAdd; i < nominateCount; i++)
|
||||
{
|
||||
//2023 edit: might need to run all g_NominateList[client] through this instead
|
||||
GetArrayString(most_nominated_maps, i, map, PLATFORM_MAX_PATH);
|
||||
/* These maps shouldn't be excluded from the vote as they weren't really nominated at all */
|
||||
|
||||
/* Notify Nominations that this map is now free */
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(map);
|
||||
Call_Finish();
|
||||
}
|
||||
|
||||
/* There should currently be 'nominationsToAdd' unique maps in the vote */
|
||||
|
||||
@ -1521,7 +1518,7 @@ public void Handler_VoteFinishedGeneric(char[] map,
|
||||
if(fraglimit)
|
||||
SetConVarInt(g_Cvar_Fraglimit, fraglimit + GetConVarInt(g_Cvar_ExtendFragStep));
|
||||
|
||||
CPrintToChatAll("[MCE] %t", "Current Map Extended", RoundToFloor((map_votes /num_votes)*100.0));
|
||||
PrintToChatAll("The current map has been extended. (Received %i%s of votes)", RoundToFloor((map_votes /num_votes)*100.0), "%");
|
||||
LogAction(-1, -1, "Voting for next map has finished. The current map has been extended.");
|
||||
CPrintToChatAll("[MCE] Available Extends: %d", GetConVarInt(g_Cvar_Extend) - g_Extends);
|
||||
|
||||
@ -1532,7 +1529,7 @@ public void Handler_VoteFinishedGeneric(char[] map,
|
||||
}
|
||||
else if(strcmp(map, VOTE_DONTCHANGE, false) == 0)
|
||||
{
|
||||
CPrintToChatAll("[MCE] %t", "Current Map Stays", RoundToFloor((map_votes /num_votes)*100.0));
|
||||
PrintToChatAll("Current map continues! The Vote has spoken! (Received %i%s of votes)", RoundToFloor((map_votes /num_votes)*100.0), "%");
|
||||
LogAction(-1, -1, "Voting for next map has finished. 'No Change' was the winner");
|
||||
|
||||
g_RunoffCount = 0;
|
||||
@ -2027,6 +2024,7 @@ NominateResult InternalNominateMap(char[] map, int owner)
|
||||
GetArrayString(g_NominateList[owner], 0, oldmap, PLATFORM_MAX_PATH);
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(oldmap);
|
||||
Call_PushCell(owner);
|
||||
Call_Finish();
|
||||
|
||||
RemoveFromArray(g_NominateList[owner], 0);
|
||||
@ -2079,6 +2077,7 @@ NominateResult InternalNominateMap(char[] map, int owner)
|
||||
GetArrayString(g_NominateList[owner], 0, oldmap, PLATFORM_MAX_PATH);
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(oldmap);
|
||||
Call_PushCell(owner);
|
||||
int owner_ = GetArrayCell(g_NominateOwners, 0);
|
||||
Call_Finish();
|
||||
|
||||
@ -2123,6 +2122,7 @@ bool InternalRemoveNominationByMap(char[] map)
|
||||
{
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(oldmap);
|
||||
Call_PushCell(client);
|
||||
Call_Finish();
|
||||
|
||||
int owner = GetArrayCell(g_NominateOwners, i);
|
||||
@ -2158,26 +2158,27 @@ public int Native_RemoveNominationByMap(Handle plugin, int numParams)
|
||||
|
||||
bool InternalRemoveNominationByOwner(int owner)
|
||||
{
|
||||
int index;
|
||||
int index;
|
||||
|
||||
if(owner && ((index = FindValueInArray(g_NominateOwners, owner)) != -1))
|
||||
{
|
||||
char oldmap[PLATFORM_MAX_PATH];
|
||||
GetArrayString(g_NominateList[owner], index, oldmap, PLATFORM_MAX_PATH);
|
||||
if(owner && ((index = FindValueInArray(g_NominateOwners, owner)) != -1))
|
||||
{
|
||||
char oldmap[PLATFORM_MAX_PATH];
|
||||
GetArrayString(g_NominateList[owner], index, oldmap, PLATFORM_MAX_PATH);
|
||||
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(oldmap);
|
||||
Call_Finish();
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(oldmap);
|
||||
Call_PushCell(owner);
|
||||
Call_Finish();
|
||||
|
||||
RemoveFromArray(g_NominateList[owner], index);
|
||||
RemoveFromArray(g_NominateList[owner], index);
|
||||
//maybe only do once or change g_NominateOwners
|
||||
RemoveFromArray(g_NominateOwners, index);
|
||||
g_NominateCount--;
|
||||
RemoveFromArray(g_NominateOwners, index);
|
||||
g_NominateCount--;
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
return false;
|
||||
}
|
||||
|
||||
/* native bool RemoveNominationByOwner(owner); */
|
||||
@ -2867,6 +2868,7 @@ void CheckMapRestrictions(bool time = false, bool players = false)
|
||||
{
|
||||
Call_StartForward(g_NominationsResetForward);
|
||||
Call_PushString(map);
|
||||
Call_PushCell(client);
|
||||
Call_Finish();
|
||||
}
|
||||
|
||||
|
@ -39,9 +39,10 @@
|
||||
#include <mapchooser>
|
||||
#include <mapchooser_extended>
|
||||
#include <multicolors>
|
||||
#include <leader>
|
||||
#include <basecomm>
|
||||
|
||||
#define MCE_VERSION "1.3.1"
|
||||
#define MCE_VERSION "1.4.1"
|
||||
|
||||
public Plugin myinfo =
|
||||
{
|
||||
@ -82,6 +83,8 @@ Handle g_Cvar_VIPTimeframeMaxTime = INVALID_HANDLE;
|
||||
|
||||
int g_Player_NominationDelay[MAXPLAYERS+1];
|
||||
int g_NominationDelay;
|
||||
int g_iMapleaderWhoNominatedMap = -1;
|
||||
char g_cMapLeaderNominatedMap[256];
|
||||
|
||||
//clients ignoring maps that are unavailable
|
||||
bool g_bClientsIgnoring[MAXPLAYERS + 1];
|
||||
@ -135,6 +138,8 @@ public void OnPluginStart()
|
||||
|
||||
public void OnMapStart()
|
||||
{
|
||||
Format(g_cMapLeaderNominatedMap, sizeof(g_cMapLeaderNominatedMap), "");
|
||||
g_iMapleaderWhoNominatedMap = -1;
|
||||
if (!g_dDatabase)
|
||||
{
|
||||
//we have too many dbs so i am just re-using racetimercss
|
||||
@ -259,6 +264,7 @@ public APLRes AskPluginLoad2(Handle hThis, bool bLate, char[] err, int iErrLen)
|
||||
CreateNative("PushMapsIntoNominationPool", Native_PushMapsIntoNominationPool);
|
||||
CreateNative("RemoveMapFromNominationPool", Native_RemoveMapFromNominationPool);
|
||||
CreateNative("RemoveMapsFromNominationPool", Native_RemoveMapsFromNominationPool);
|
||||
CreateNative("GetMapleaderNominatedMap", Native_GetMapleaderNominatedMap);
|
||||
|
||||
return APLRes_Success;
|
||||
}
|
||||
@ -362,17 +368,38 @@ void UpdateMapTrie()
|
||||
delete excludeMaps;
|
||||
}
|
||||
|
||||
public void OnNominationRemoved(const char[] map)
|
||||
public void OnNominationRemoved(const char[] map, int client)
|
||||
{
|
||||
int status;
|
||||
/* Is the map in our list? */
|
||||
if(!GetTrieValue(g_mapTrie, map, status))
|
||||
return;
|
||||
|
||||
int newclient = 0;
|
||||
//just differientiating between if nomination was removed because of starting vote or because of anything else possible.
|
||||
if (client > 100)
|
||||
{
|
||||
newclient = client - 100;
|
||||
}
|
||||
else
|
||||
{
|
||||
newclient = client;
|
||||
}
|
||||
if (newclient == g_iMapleaderWhoNominatedMap && StrEqual(map, g_cMapLeaderNominatedMap, false))
|
||||
{
|
||||
if (client > 100)
|
||||
{
|
||||
CPrintToChatAll("{darkorange}[UNLOZE Nominations] {white}The map leader {lightgreen}%N {white}nomination {red}%s {white}was forced into the mapvote.", newclient, map);
|
||||
}
|
||||
else
|
||||
{
|
||||
CPrintToChatAll("{darkorange}[UNLOZE Nominations] {white}The map leader {lightgreen}%N {white}has removed his Mapleader nomination {red}%s", newclient, map);
|
||||
}
|
||||
Format(g_cMapLeaderNominatedMap, sizeof(g_cMapLeaderNominatedMap), "");
|
||||
g_iMapleaderWhoNominatedMap = -1;
|
||||
}
|
||||
/* Was the map disabled due to being nominated */
|
||||
if((status & MAPSTATUS_EXCLUDE_NOMINATED) != MAPSTATUS_EXCLUDE_NOMINATED)
|
||||
return;
|
||||
|
||||
SetTrieValue(g_mapTrie, map, MAPSTATUS_ENABLED);
|
||||
}
|
||||
|
||||
@ -400,7 +427,7 @@ public Action Command_Addmap(int client, int args)
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
if(!CheckCommandAccess(client, "sm_nominate_ignore", ADMFLAG_KICK, true))
|
||||
if(!CheckCommandAccess(client, "sm_nominate_ignore", ADMFLAG_KICK, true) )
|
||||
{
|
||||
bool RestrictionsActive = AreRestrictionsActive();
|
||||
|
||||
@ -461,6 +488,7 @@ public Action Command_Addmap(int client, int args)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NominateResult result = NominateMap(mapname, true, 0);
|
||||
|
||||
if(result > Nominate_Replaced)
|
||||
@ -697,49 +725,60 @@ public Action Command_Nominate(int client, int args)
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
int Cooldown = GetMapCooldownTime(mapname);
|
||||
if(RestrictionsActive && Cooldown > GetTime())
|
||||
int mapLeader = Leader_CurrentLeader();
|
||||
//2023 November edit: one map nominated by mapleader will automatically go to the vote.
|
||||
if (client == mapLeader && StrEqual(g_cMapLeaderNominatedMap, ""))
|
||||
{
|
||||
int Seconds = Cooldown - GetTime();
|
||||
CPrintToChat(client, "[NE] %t", "Map Cooldown Time Error", Seconds / 3600, (Seconds % 3600) / 60);
|
||||
|
||||
return Plugin_Handled;
|
||||
CPrintToChatAll("{darkorange}[UNLOZE Nominations] {white}The map leader {lightgreen}%N {white}has nominated the map {red}%s{white}. The map will be in the next mapvote.", client, mapname);
|
||||
CPrintToChatAll("{lightblue}If the map is nextmap and the leader wont play it he will be removed from leader access.");
|
||||
Format(g_cMapLeaderNominatedMap, sizeof(g_cMapLeaderNominatedMap), mapname);
|
||||
g_iMapleaderWhoNominatedMap = client;
|
||||
}
|
||||
|
||||
bool VIPRestriction = GetMapVIPRestriction(mapname, client);
|
||||
if(RestrictionsActive && VIPRestriction)
|
||||
else
|
||||
{
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate VIP Error");
|
||||
int Cooldown = GetMapCooldownTime(mapname);
|
||||
if(RestrictionsActive && Cooldown > GetTime())
|
||||
{
|
||||
int Seconds = Cooldown - GetTime();
|
||||
CPrintToChat(client, "[NE] %t", "Map Cooldown Time Error", Seconds / 3600, (Seconds % 3600) / 60);
|
||||
|
||||
return Plugin_Handled;
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
bool VIPRestriction = GetMapVIPRestriction(mapname, client);
|
||||
if(RestrictionsActive && VIPRestriction)
|
||||
{
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate VIP Error");
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
int TimeRestriction = GetMapTimeRestriction(mapname);
|
||||
if(RestrictionsActive && TimeRestriction)
|
||||
{
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate Time Error", TimeRestriction / 60, TimeRestriction % 60);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
int AverageHourRestricted = GetAveragePlayerTimeOnServerMapRestriction(mapname);
|
||||
if (AverageHourRestricted > 0)
|
||||
{
|
||||
PrintToChat(client, "%s requires +%i hours average. Use sm_houravg to check average.", mapname, AverageHourRestricted);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
int PlayerRestriction = GetMapPlayerRestriction(mapname);
|
||||
if(RestrictionsActive && PlayerRestriction)
|
||||
{
|
||||
if(PlayerRestriction < 0)
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate MinPlayers Error", PlayerRestriction * -1);
|
||||
else
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate MaxPlayers Error", PlayerRestriction);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
}
|
||||
|
||||
int TimeRestriction = GetMapTimeRestriction(mapname);
|
||||
if(RestrictionsActive && TimeRestriction)
|
||||
{
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate Time Error", TimeRestriction / 60, TimeRestriction % 60);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
int AverageHourRestricted = GetAveragePlayerTimeOnServerMapRestriction(mapname);
|
||||
if (AverageHourRestricted > 0)
|
||||
{
|
||||
PrintToChat(client, "%s requires +%i hours average. Use sm_houravg to check average.", mapname, AverageHourRestricted);
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
int PlayerRestriction = GetMapPlayerRestriction(mapname);
|
||||
if(RestrictionsActive && PlayerRestriction)
|
||||
{
|
||||
if(PlayerRestriction < 0)
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate MinPlayers Error", PlayerRestriction * -1);
|
||||
else
|
||||
CPrintToChat(client, "[NE] %t", "Map Nominate MaxPlayers Error", PlayerRestriction);
|
||||
|
||||
return Plugin_Handled;
|
||||
}
|
||||
|
||||
NominateResult result = NominateMap(mapname, false, client);
|
||||
|
||||
if (result == Nominate_InvalidMap)
|
||||
@ -768,7 +807,9 @@ public Action Command_Nominate(int client, int args)
|
||||
if(result == Nominate_Added)
|
||||
PrintToChatAll("[NE] %t", "Map Nominated", name, mapname);
|
||||
else if(result == Nominate_Replaced)
|
||||
{
|
||||
PrintToChatAll("[NE] %t", "Map Nomination Changed", name, mapname);
|
||||
}
|
||||
|
||||
LogMessage("%s nominated %s", name, mapname);
|
||||
|
||||
@ -835,7 +876,15 @@ void AttemptNominate(int client, const char[] filter = "")
|
||||
Menu menu = g_MapMenu;
|
||||
menu = BuildMapMenu(filter, client);
|
||||
|
||||
SetMenuTitle(menu, "%T", "Nominate Title", client);
|
||||
int mapLeader = Leader_CurrentLeader();
|
||||
if (client == mapLeader && StrEqual(g_cMapLeaderNominatedMap, ""))
|
||||
{
|
||||
SetMenuTitle(menu, "Nominate Map as Mapleader:", client);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetMenuTitle(menu, "%T", "Nominate Title", client);
|
||||
}
|
||||
DisplayMenu(menu, client, MENU_TIME_FOREVER);
|
||||
}
|
||||
|
||||
@ -918,7 +967,8 @@ bool PopulateNominateListMenu(Menu menu, int client, const char[] filter = "")
|
||||
int owner = GetArrayCell(OwnerList, i);
|
||||
int nominate_count_for_particular_map = 0;
|
||||
sm.GetValue(map, nominate_count_for_particular_map);
|
||||
if(!owner)
|
||||
//if its console its admin nomination. if its g_iMapleaderWhoNominatedMap it was map nominated by leader, also has to be correct map out of 3.
|
||||
if(!owner || (owner == g_iMapleaderWhoNominatedMap && StrEqual(map, g_cMapLeaderNominatedMap)))
|
||||
{
|
||||
nominate_count_for_particular_map = 999;
|
||||
}
|
||||
@ -958,6 +1008,12 @@ bool PopulateNominateListMenu(Menu menu, int client, const char[] filter = "")
|
||||
|
||||
if(!owner)
|
||||
Format(display, sizeof(display), "%s (Admin)", display);
|
||||
else if (StrEqual(map, g_cMapLeaderNominatedMap))
|
||||
{
|
||||
char leadername[MAX_NAME_LENGTH];
|
||||
GetClientName(g_iMapleaderWhoNominatedMap, leadername, MAX_NAME_LENGTH);
|
||||
Format(display, sizeof(display), "%s (Mapleader %s)", display, leadername);
|
||||
}
|
||||
else
|
||||
Format(display, sizeof(display), "%s (%i %s)", display, nominate_count_for_particular_map, spelling);
|
||||
|
||||
@ -1094,7 +1150,7 @@ public int Handler_MapSelectMenu(Menu menu, MenuAction action, int param1, int p
|
||||
{
|
||||
case MenuAction_End:
|
||||
{
|
||||
if (menu != g_MapMenu)
|
||||
if (menu != g_MapMenu && menu != null)
|
||||
{
|
||||
delete menu;
|
||||
}
|
||||
@ -1130,7 +1186,16 @@ public int Handler_MapSelectMenu(Menu menu, MenuAction action, int param1, int p
|
||||
|
||||
GetClientName(param1, name, MAX_NAME_LENGTH);
|
||||
|
||||
if(AreRestrictionsActive() && (
|
||||
int mapLeader = Leader_CurrentLeader();
|
||||
//2023 November edit: one map nominated by mapleader will automatically go to the vote.
|
||||
if (param1 == mapLeader && StrEqual(g_cMapLeaderNominatedMap, ""))
|
||||
{
|
||||
CPrintToChatAll("{darkorange}[UNLOZE Nominations] {white}The map leader {lightgreen}%N {white}has nominated the map {red}%s{white}. The map will be in the next mapvote.", param1, map);
|
||||
CPrintToChatAll("{lightblue}If the map is nextmap and the leader wont play it he will be removed from leader access.");
|
||||
Format(g_cMapLeaderNominatedMap, sizeof(g_cMapLeaderNominatedMap), map);
|
||||
g_iMapleaderWhoNominatedMap = param1;
|
||||
}
|
||||
else if(AreRestrictionsActive() && (
|
||||
GetMapCooldownTime(map) > GetTime() ||
|
||||
GetMapTimeRestriction(map) ||
|
||||
GetMapPlayerRestriction(map) ||
|
||||
@ -1166,7 +1231,9 @@ public int Handler_MapSelectMenu(Menu menu, MenuAction action, int param1, int p
|
||||
if(result == Nominate_Added)
|
||||
PrintToChatAll("[NE] %t", "Map Nominated", name, map);
|
||||
else if(result == Nominate_Replaced)
|
||||
{
|
||||
PrintToChatAll("[NE] %t", "Map Nomination Changed", name, map);
|
||||
}
|
||||
|
||||
LogMessage("%s nominated %s", name, map);
|
||||
g_Player_NominationDelay[param1] = GetTime() + GetConVarInt(g_Cvar_NominateDelay);
|
||||
@ -1200,6 +1267,12 @@ public int Handler_MapSelectMenu(Menu menu, MenuAction action, int param1, int p
|
||||
}
|
||||
}
|
||||
|
||||
int mapLeader = Leader_CurrentLeader();
|
||||
if (param1 == mapLeader && StrEqual(g_cMapLeaderNominatedMap, ""))
|
||||
{
|
||||
return ITEMDRAW_DEFAULT;
|
||||
}
|
||||
|
||||
if(AreRestrictionsActive() && (
|
||||
GetMapCooldownTime(map) > GetTime() ||
|
||||
GetMapTimeRestriction(map) ||
|
||||
@ -1556,6 +1629,12 @@ public int Native_RemoveMapsFromNominationPool(Handle plugin, int numArgs)
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int Native_GetMapleaderNominatedMap(Handle plugin, int numArgs)
|
||||
{
|
||||
SetNativeString(1, g_cMapLeaderNominatedMap, sizeof(g_cMapLeaderNominatedMap), true);
|
||||
return 0;
|
||||
}
|
||||
|
||||
stock int GetVIPTimeRestriction()
|
||||
{
|
||||
if (!GetConVarBool(g_Cvar_VIPTimeframe))
|
||||
|
Loading…
Reference in New Issue
Block a user