diff --git a/mapchooser_extended/scripting/nominations_extended.sp b/mapchooser_extended/scripting/nominations_extended.sp index e0db1d2f..5e434242 100755 --- a/mapchooser_extended/scripting/nominations_extended.sp +++ b/mapchooser_extended/scripting/nominations_extended.sp @@ -727,45 +727,77 @@ void AttemptAdminRemoveMap(int client, const char[] filter = "") bool PopulateNominateListMenu(Menu menu, int client, const char[] filter = "") { - int arraySize = ByteCountToCells(PLATFORM_MAX_PATH); - ArrayList MapList = CreateArray(arraySize); - ArrayList OwnerList = CreateArray(); + int arraySize = ByteCountToCells(PLATFORM_MAX_PATH); + ArrayList MapList = CreateArray(arraySize); + ArrayList OwnerList = CreateArray(); - GetNominatedMapList(MapList, OwnerList); - if(!GetArraySize(MapList)) - { - delete MapList; - delete OwnerList; - return false; - } + GetNominatedMapList(MapList, OwnerList); + if(!GetArraySize(MapList)) + { + delete MapList; + delete OwnerList; + return false; + } - static char map[PLATFORM_MAX_PATH]; - static char display[PLATFORM_MAX_PATH]; - for(int i = 0; i < GetArraySize(MapList); i++) - { - GetArrayString(MapList, i, map, sizeof(map)); + StringMap sm = new StringMap(); + static char map[PLATFORM_MAX_PATH]; + static char display[PLATFORM_MAX_PATH]; + for(int i = 0; i < GetArraySize(MapList); i++) + { + GetArrayString(MapList, i, map, sizeof(map)); - if(!filter[0] || StrContains(map, filter, false) != -1) - { - strcopy(display, sizeof(display), map); + if(!filter[0] || StrContains(map, filter, false) != -1) + { + int nominate_count_for_particular_map = 0; + sm.GetValue(map, nominate_count_for_particular_map); + nominate_count_for_particular_map++; + sm.SetValue(map, nominate_count_for_particular_map, true); + } + } + for(int i = 0; i < GetArraySize(MapList); i++) + { + GetArrayString(MapList, i, map, sizeof(map)); - bool VIPRestriction = GetMapVIPRestriction(map); - if((VIPRestriction) && AreRestrictionsActive()) - Format(display, sizeof(display), "%s (%T)", display, "VIP Nomination", client); + if(!filter[0] || StrContains(map, filter, false) != -1) + { + int nominate_count_for_particular_map = 0; + sm.GetValue(map, nominate_count_for_particular_map); + if (nominate_count_for_particular_map == -1) + { + //we already displayed vote count for this particular map + continue; + } + strcopy(display, sizeof(display), map); - int owner = GetArrayCell(OwnerList, i); - if(!owner) - Format(display, sizeof(display), "%s (Admin)", display); - else - Format(display, sizeof(display), "%s (%N)", display, owner); + bool VIPRestriction = GetMapVIPRestriction(map); + if((VIPRestriction) && AreRestrictionsActive()) + Format(display, sizeof(display), "%s (%T)", display, "VIP Nomination", client); - AddMenuItem(menu, map, display); - } - } + int owner = GetArrayCell(OwnerList, i); + char spelling[8]; + if (nominate_count_for_particular_map == 1) + { + Format(spelling, sizeof(spelling), "Vote"); + } + else + { + + Format(spelling, sizeof(spelling), "Votes"); + } + if(!owner) + Format(display, sizeof(display), "%s (Admin)", display); + else + Format(display, sizeof(display), "%s (%i %s)", display, nominate_count_for_particular_map, spelling); + nominate_count_for_particular_map = -1; + sm.SetValue(map, nominate_count_for_particular_map, true); + AddMenuItem(menu, map, display); + } + } - delete MapList; - delete OwnerList; - return true; + delete MapList; + delete OwnerList; + delete sm; + return true; } Menu BuildMapMenu(const char[] filter, int client)