From 8243f201fb5a0bb56ea0c68b0cf58a3023145110 Mon Sep 17 00:00:00 2001 From: Nordic Warrior Date: Mon, 6 Sep 2021 18:36:08 +0300 Subject: [PATCH 1/6] core: added CVar `mapm_extend_map_if_no_votes` ...which allows you to extend the current card if no one has voted. --- .../addons/amxmodx/configs/map_manager.cfg | 4 +++ .../addons/amxmodx/data/lang/mapmanager.txt | 6 +++-- .../amxmodx/scripting/map_manager_core.sma | 9 ++++++- .../scripting/map_manager_scheduler.sma | 26 +++++++++++++++---- 4 files changed, 37 insertions(+), 8 deletions(-) diff --git a/cstrike/addons/amxmodx/configs/map_manager.cfg b/cstrike/addons/amxmodx/configs/map_manager.cfg index b5b20a8..b455657 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_extend_map_if_no_votes "0" + // Scheduler diff --git a/cstrike/addons/amxmodx/data/lang/mapmanager.txt b/cstrike/addons/amxmodx/data/lang/mapmanager.txt index 9b9409d..a0d8757 100644 --- a/cstrike/addons/amxmodx/data/lang/mapmanager.txt +++ b/cstrike/addons/amxmodx/data/lang/mapmanager.txt @@ -42,7 +42,8 @@ MAPM_MENU_EXTEND = Extend MAPM_MENU_LEFT = Left MAPM_CHOSE_EXTEND = %s^1 has chosen to extend the current map. MAPM_CHOSE_MAP = %s^1 has chosen^3 %s^1. -MAPM_NOBODY_VOTE = Nobody voted. Next map is^3 %s^1. +MAPM_NOBODY_VOTE = Nobody voted. +MAPM_NEXTMAP_BY_VOTE = Next map is^3 %s^1. MAPM_LASTROUND = Last round. MAPM_MAP_CHANGE = Map will change in^3 %d MAPM_MAP_CHANGE_NEXTROUND = Map change will happen after this round. @@ -99,7 +100,8 @@ MAPM_MENU_EXTEND = Продлить MAPM_MENU_LEFT = Осталось MAPM_CHOSE_EXTEND = %s^1 выбрал продление карты. MAPM_CHOSE_MAP = %s^1 выбрал^3 %s^1. -MAPM_NOBODY_VOTE = Никто не голосовал. Следующей будет^3 %s^1. +MAPM_NOBODY_VOTE = Никто не голосовал. +MAPM_NEXTMAP_BY_VOTE = Следующей будет^3 %s^1. MAPM_LASTROUND = Это последний раунд. MAPM_MAP_CHANGE = Карта сменится через^3 %d MAPM_MAP_CHANGE_NEXTROUND = Карта сменится в следующем раунде. diff --git a/cstrike/addons/amxmodx/scripting/map_manager_core.sma b/cstrike/addons/amxmodx/scripting/map_manager_core.sma index 939167c..e786edd 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_core.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_core.sma @@ -51,7 +51,8 @@ enum Cvars { PREPARE_TIME, VOTE_TIME, VOTE_ITEM_OFFSET, - ONLY_EXTERNAL_VOTE_ITEMS + ONLY_EXTERNAL_VOTE_ITEMS, + EXTEND_MAP_IF_NO_VOTES }; new g_pCvars[Cvars]; @@ -102,6 +103,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[EXTEND_MAP_IF_NO_VOTES] = register_cvar("mapm_extend_map_if_no_votes", "0"); // 0 - disable, 1 - enable g_hForwards[MAPLIST_LOADED] = CreateMultiForward("mapm_maplist_loaded", ET_IGNORE, FP_CELL, FP_STRING); g_hForwards[MAPLIST_UNLOADED] = CreateMultiForward("mapm_maplist_unloaded", ET_IGNORE); @@ -686,6 +688,11 @@ finish_vote() } } else { + if(get_num(EXTEND_MAP_IF_NO_VOTES)) { + ExecuteForward(g_hForwards[VOTE_FINISHED], ret, g_sCurMap, g_iVoteType, g_iTotalVotes); + return; + } + max_vote = random_num(0, g_iVoteItems - 1); } diff --git a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma index 5ada955..fcdeb5e 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma @@ -59,7 +59,9 @@ enum Cvars { CHATTIME, FRAGLIMIT, FRAGSLEFT, - NEXTMAP + NEXTMAP, + + EXTEND_MAP_IF_NO_VOTES // core cvar }; new g_pCvars[Cvars]; @@ -107,6 +109,8 @@ public plugin_init() g_pCvars[FRAGLIMIT] = get_cvar_pointer("mp_fraglimit"); g_pCvars[FRAGSLEFT] = get_cvar_pointer("mp_fragsleft"); + g_pCvars[EXTEND_MAP_IF_NO_VOTES] = get_cvar_pointer("mapm_extend_map_if_no_votes"); + g_pCvars[NEXTMAP] = register_cvar("amx_nextmap", "", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY); @@ -502,6 +506,7 @@ public mapm_vote_finished(const map[], type, total_votes) new win_limit = get_num(WINLIMIT); new max_rounds = get_num(MAXROUNDS); + new extend_map_no_votes = get_num(EXTEND_MAP_IF_NO_VOTES); if(get_num(EXTENDED_TYPE) == EXTEND_ROUNDS && (win_limit || max_rounds)) { new rounds = get_num(EXTENDED_ROUNDS); @@ -512,12 +517,23 @@ public mapm_vote_finished(const map[], type, total_votes) if(max_rounds > 0) { set_num(MAXROUNDS, max_rounds + rounds); } - - client_print_color(0, print_team_default, "%s^1 %L %L.", g_sPrefix, LANG_PLAYER, "MAPM_MAP_EXTEND", rounds, LANG_PLAYER, "MAPM_ROUNDS"); + + if(!total_votes && extend_map_no_votes) { + client_print_color(0, print_team_default, "%s^1 %L %L %L.", g_sPrefix, LANG_PLAYER, "MAPM_NOBODY_VOTE", LANG_PLAYER, "MAPM_MAP_EXTEND", rounds, LANG_PLAYER, "MAPM_ROUNDS"); + } + else { + client_print_color(0, print_team_default, "%s^1 %L %L.", g_sPrefix, LANG_PLAYER, "MAPM_MAP_EXTEND", rounds, LANG_PLAYER, "MAPM_ROUNDS"); + } } else { new min = get_num(EXTENDED_TIME); - client_print_color(0, print_team_default, "%s^1 %L %L.", g_sPrefix, LANG_PLAYER, "MAPM_MAP_EXTEND", min, LANG_PLAYER, "MAPM_MINUTES"); + if(!total_votes && extend_map_no_votes) { + client_print_color(0, print_team_default, "%s^1 %L %L %L.", g_sPrefix, LANG_PLAYER, "MAPM_NOBODY_VOTE", LANG_PLAYER, "MAPM_MAP_EXTEND", min, LANG_PLAYER, "MAPM_MINUTES"); + } + else { + client_print_color(0, print_team_default, "%s^1 %L %L.", g_sPrefix, LANG_PLAYER, "MAPM_MAP_EXTEND", min, LANG_PLAYER, "MAPM_MINUTES"); + } + set_float(TIMELIMIT, get_float(TIMELIMIT) + float(min)); } @@ -529,7 +545,7 @@ public mapm_vote_finished(const map[], type, total_votes) // change map if(!total_votes) { - client_print_color(0, print_team_default, "%s^1 %L", g_sPrefix, LANG_PLAYER, "MAPM_NOBODY_VOTE", map); + client_print_color(0, print_team_default, "%s^1 %L %L", g_sPrefix, LANG_PLAYER, "MAPM_NOBODY_VOTE", LANG_PLAYER, "MAPM_NEXTMAP_BY_VOTE", map); } else { client_print_color(0, print_team_default, "%s^1 %L^3 %s^1.", g_sPrefix, LANG_PLAYER, "MAPM_NEXTMAP", map); } From 9419137c8ce71b31fc0f6d0ec2614073c3f17219 Mon Sep 17 00:00:00 2001 From: Nordic Warrior Date: Wed, 22 Sep 2021 09:25:16 +0300 Subject: [PATCH 2/6] core: revert chenges --- cstrike/addons/amxmodx/scripting/map_manager_core.sma | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/cstrike/addons/amxmodx/scripting/map_manager_core.sma b/cstrike/addons/amxmodx/scripting/map_manager_core.sma index e786edd..939167c 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_core.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_core.sma @@ -51,8 +51,7 @@ enum Cvars { PREPARE_TIME, VOTE_TIME, VOTE_ITEM_OFFSET, - ONLY_EXTERNAL_VOTE_ITEMS, - EXTEND_MAP_IF_NO_VOTES + ONLY_EXTERNAL_VOTE_ITEMS }; new g_pCvars[Cvars]; @@ -103,7 +102,6 @@ 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[EXTEND_MAP_IF_NO_VOTES] = register_cvar("mapm_extend_map_if_no_votes", "0"); // 0 - disable, 1 - enable g_hForwards[MAPLIST_LOADED] = CreateMultiForward("mapm_maplist_loaded", ET_IGNORE, FP_CELL, FP_STRING); g_hForwards[MAPLIST_UNLOADED] = CreateMultiForward("mapm_maplist_unloaded", ET_IGNORE); @@ -688,11 +686,6 @@ finish_vote() } } else { - if(get_num(EXTEND_MAP_IF_NO_VOTES)) { - ExecuteForward(g_hForwards[VOTE_FINISHED], ret, g_sCurMap, g_iVoteType, g_iTotalVotes); - return; - } - max_vote = random_num(0, g_iVoteItems - 1); } From 7ba74a4731d67f7966644e3206c12cb03578903c Mon Sep 17 00:00:00 2001 From: Nordic Warrior Date: Wed, 22 Sep 2021 09:29:38 +0300 Subject: [PATCH 3/6] scheduler: "extend map if no votes" logic now is here --- cstrike/addons/amxmodx/configs/map_manager.cfg | 8 ++++---- .../amxmodx/scripting/map_manager_scheduler.sma | 11 +++++------ 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/cstrike/addons/amxmodx/configs/map_manager.cfg b/cstrike/addons/amxmodx/configs/map_manager.cfg index b455657..72de6f6 100644 --- a/cstrike/addons/amxmodx/configs/map_manager.cfg +++ b/cstrike/addons/amxmodx/configs/map_manager.cfg @@ -44,10 +44,6 @@ mapm_vote_item_offset "0" // если вклчен аддон "Online Sorter" mapm_only_external_vote_items "0" -// Продляет текущую карту, если никто не голосовал. -// 0 - disable, 1 - enable -mapm_extend_map_if_no_votes "0" - // Scheduler @@ -106,6 +102,10 @@ mapm_extended_time "15" // rounds mapm_extended_rounds "3" +// Продляет текущую карту, если никто не голосовал. +// 0 - disable, 1 - enable +mapm_extend_map_if_no_votes "0" + // GUI diff --git a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma index fcdeb5e..0acdf89 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma @@ -60,8 +60,7 @@ enum Cvars { FRAGLIMIT, FRAGSLEFT, NEXTMAP, - - EXTEND_MAP_IF_NO_VOTES // core cvar + EXTEND_MAP_IF_NO_VOTES }; new g_pCvars[Cvars]; @@ -101,6 +100,7 @@ public plugin_init() g_pCvars[EXTENDED_MAX] = register_cvar("mapm_extended_map_max", "3"); g_pCvars[EXTENDED_TIME] = register_cvar("mapm_extended_time", "15"); // minutes g_pCvars[EXTENDED_ROUNDS] = register_cvar("mapm_extended_rounds", "3"); // rounds + g_pCvars[EXTEND_MAP_IF_NO_VOTES] = register_cvar("mapm_extend_map_if_no_votes", "0"); // 0 - disable, 1 - enable g_pCvars[MAXROUNDS] = get_cvar_pointer("mp_maxrounds"); g_pCvars[WINLIMIT] = get_cvar_pointer("mp_winlimit"); @@ -109,8 +109,6 @@ public plugin_init() g_pCvars[FRAGLIMIT] = get_cvar_pointer("mp_fraglimit"); g_pCvars[FRAGSLEFT] = get_cvar_pointer("mp_fragsleft"); - g_pCvars[EXTEND_MAP_IF_NO_VOTES] = get_cvar_pointer("mapm_extend_map_if_no_votes"); - g_pCvars[NEXTMAP] = register_cvar("amx_nextmap", "", FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY); @@ -500,13 +498,14 @@ public mapm_vote_finished(const map[], type, total_votes) } g_bVoteInNewRound = false; + new extend_map_no_votes = get_num(EXTEND_MAP_IF_NO_VOTES); + // map extended - if(equali(map, g_sCurMap)) { + if(equali(map, g_sCurMap) || (!total_votes && extend_map_no_votes)) { g_iExtendedNum++; new win_limit = get_num(WINLIMIT); new max_rounds = get_num(MAXROUNDS); - new extend_map_no_votes = get_num(EXTEND_MAP_IF_NO_VOTES); if(get_num(EXTENDED_TYPE) == EXTEND_ROUNDS && (win_limit || max_rounds)) { new rounds = get_num(EXTENDED_ROUNDS); From f60afab774cbb3adc567d102e865f933a08808b7 Mon Sep 17 00:00:00 2001 From: Nord1cWarr1or Date: Sun, 2 Jan 2022 14:12:20 +0300 Subject: [PATCH 4/6] Extending map if no votes is now depends on cvar `mapm_extended_map_max` --- cstrike/addons/amxmodx/configs/map_manager.cfg | 2 +- cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cstrike/addons/amxmodx/configs/map_manager.cfg b/cstrike/addons/amxmodx/configs/map_manager.cfg index 72de6f6..6c94752 100644 --- a/cstrike/addons/amxmodx/configs/map_manager.cfg +++ b/cstrike/addons/amxmodx/configs/map_manager.cfg @@ -102,7 +102,7 @@ mapm_extended_time "15" // rounds mapm_extended_rounds "3" -// Продляет текущую карту, если никто не голосовал. +// Продляет текущую карту, если никто не голосовал. Зависит от mapm_extended_map_max. // 0 - disable, 1 - enable mapm_extend_map_if_no_votes "0" diff --git a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma index 0acdf89..807133a 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma @@ -500,8 +500,10 @@ public mapm_vote_finished(const map[], type, total_votes) new extend_map_no_votes = get_num(EXTEND_MAP_IF_NO_VOTES); + new bool:bNeedExtend = bool:(!total_votes && (extend_map_no_votes && g_iExtendedNum < get_num(EXTENDED_MAX))); + // map extended - if(equali(map, g_sCurMap) || (!total_votes && extend_map_no_votes)) { + if(equali(map, g_sCurMap) || bNeedExtend) { g_iExtendedNum++; new win_limit = get_num(WINLIMIT); From fe4bff5f22cce33b3550273bb2feb280170ae787 Mon Sep 17 00:00:00 2001 From: Nord1cWarr1or Date: Wed, 5 Jan 2022 14:10:03 +0300 Subject: [PATCH 5/6] reworked --- cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma index 807133a..27f655a 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma @@ -500,10 +500,10 @@ public mapm_vote_finished(const map[], type, total_votes) new extend_map_no_votes = get_num(EXTEND_MAP_IF_NO_VOTES); - new bool:bNeedExtend = bool:(!total_votes && (extend_map_no_votes && g_iExtendedNum < get_num(EXTENDED_MAX))); + new bool:can_be_extend = bool:(equali(map, g_sCurMap) || !total_votes && extend_map_no_votes && g_iExtendedNum < get_num(EXTENDED_MAX)); // map extended - if(equali(map, g_sCurMap) || bNeedExtend) { + if(can_be_extend) { g_iExtendedNum++; new win_limit = get_num(WINLIMIT); From 5886071300f8ad548fd40abf6db793f69a96f0a3 Mon Sep 17 00:00:00 2001 From: Nord1cWarr1or Date: Wed, 5 Jan 2022 14:10:26 +0300 Subject: [PATCH 6/6] bump version --- cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma index 27f655a..ecb1bae 100644 --- a/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma +++ b/cstrike/addons/amxmodx/scripting/map_manager_scheduler.sma @@ -9,7 +9,7 @@ #endif #define PLUGIN "Map Manager: Scheduler" -#define VERSION "0.1.7" +#define VERSION "0.1.8" #define AUTHOR "Mistrick" #pragma semicolon 1