diff --git a/cstrike/addons/amxmodx/configs/map_manager.cfg b/cstrike/addons/amxmodx/configs/map_manager.cfg index 79ed65f..d5fcc7b 100644 --- a/cstrike/addons/amxmodx/configs/map_manager.cfg +++ b/cstrike/addons/amxmodx/configs/map_manager.cfg @@ -44,6 +44,10 @@ mapm_vote_item_offset "0" // если вклчен аддон "Online Sorter" mapm_only_external_vote_items "0" +// Позволяет завершить голосование досрочно, если проголосовали все игроки. +// 0 - disable, 1 - enable +mapm_early_finish_vote "0" + // Scheduler diff --git a/cstrike/addons/amxmodx/data/lang/mapmanager.txt b/cstrike/addons/amxmodx/data/lang/mapmanager.txt index 60feb83..15251ca 100644 --- a/cstrike/addons/amxmodx/data/lang/mapmanager.txt +++ b/cstrike/addons/amxmodx/data/lang/mapmanager.txt @@ -43,6 +43,7 @@ MAPM_WINS = wins MAPM_VOTE_IN_NEXTROUND = Wait vote in next round. MAPM_SECOND_VOTE = Second vote. MAPM_CHANGELEVEL_NEXTROUND = Map will change in next round. +MAPM_EARLY_FINISH_VOTE = All players have voted, so we are ending voting^3 early^1. [ru] MAPM_VOTE_WILL_BEGIN = Голосование начнется в следующем раунде. @@ -89,3 +90,4 @@ MAPM_WINS = побед MAPM_VOTE_IN_NEXTROUND = Подождите, голосование начнется в следующем раунде. MAPM_SECOND_VOTE = Второе голосование. MAPM_CHANGELEVEL_NEXTROUND = Карта сменится в следующем раунде. +MAPM_EARLY_FINISH_VOTE = Проголосовали все игроки,^3 досрочно^1 завершаем голосование. diff --git a/cstrike/addons/amxmodx/scripting/map_manager_core.sma b/cstrike/addons/amxmodx/scripting/map_manager_core.sma index c2d8827..4cfb1a1 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_core.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_core.sma @@ -7,7 +7,7 @@ #endif #define PLUGIN "Map Manager: Core" -#define VERSION "3.1.3" +#define VERSION "3.1.4" #define AUTHOR "Mistrick" #pragma semicolon 1 @@ -52,7 +52,8 @@ enum Cvars { PREPARE_TIME, VOTE_TIME, VOTE_ITEM_OFFSET, - ONLY_EXTERNAL_VOTE_ITEMS + ONLY_EXTERNAL_VOTE_ITEMS, + EARLY_FINISH_VOTE }; new g_pCvars[Cvars]; @@ -89,6 +90,8 @@ new g_sPrefix[48]; new g_sDisplayedItemName[MAX_VOTELIST_SIZE + 1][MAPNAME_LENGTH * 2]; +new g_iPlayersNum; + public plugin_init() { register_plugin(PLUGIN, VERSION + VERSION_HASH, AUTHOR); @@ -105,6 +108,7 @@ public plugin_init() g_pCvars[VOTE_TIME] = register_cvar("mapm_vote_time", "10"); // seconds g_pCvars[VOTE_ITEM_OFFSET] = register_cvar("mapm_vote_item_offset", "0"); g_pCvars[ONLY_EXTERNAL_VOTE_ITEMS] = register_cvar("mapm_only_external_vote_items", "0"); + g_pCvars[EARLY_FINISH_VOTE] = register_cvar("mapm_early_finish_vote", "0"); g_hForwards[MAPLIST_LOADED] = CreateMultiForward("mapm_maplist_loaded", ET_IGNORE, FP_CELL, FP_STRING); g_hForwards[MAPLIST_UNLOADED] = CreateMultiForward("mapm_maplist_unloaded", ET_IGNORE); @@ -573,8 +577,8 @@ public countdown(taskid) g_iShowPercent = get_num(SHOW_PERCENT); g_bShowSelects = get_num(SHOW_SELECTS); - new players[32], pnum; get_players(players, pnum, "ch"); - for(new i, id; i < pnum; i++) { + new players[32]; get_players(players, g_iPlayersNum, "ch"); + for(new i, id; i < g_iPlayersNum; i++) { id = players[i]; if(!dont_show_result || g_iVoted[id] == NOT_VOTED) { show_votemenu(id); @@ -693,6 +697,11 @@ add_item_votes(item, value) { g_iVotes[item] += value; g_iTotalVotes += value; + + if(get_num(EARLY_FINISH_VOTE) && g_iTotalVotes == g_iPlayersNum) { + g_iTimer = 0; + client_print_color(0, print_team_default, "%s^1 %L", g_sPrefix, LANG_PLAYER, "MAPM_EARLY_FINISH_VOTE"); + } } finish_vote() {