77#endif
88
99# define PLUGIN " Map Manager: Scheduler"
10- # define VERSION " 0.0.7 "
10+ # define VERSION " 0.0.8 "
1111# define AUTHOR " Mistrick"
1212
1313#pragma semicolon 1
1414
15+ #if ! defined client_disconnected
16+ # define client_disconnected client_disconnect
17+ #endif
18+
1519# define get_num (%0 ) get_pcvar_num(g_pCvars[%0 ])
1620# define set_num (%0 ,%1 ) set_pcvar_num(g_pCvars[%0 ],%1 )
1721# define get_float (%0 ) get_pcvar_float(g_pCvars[%0 ])
1822# define set_float (%0 ,%1 ) set_pcvar_float(g_pCvars[%0 ],%1 )
23+ # define get_string (%0 ,%1 ,%2 ) get_pcvar_string(g_pCvars[%0 ],%1 ,%2 )
1924
2025# define EVENT_SVC_INTERMISSION " 30"
2126
2227enum (+= 100 ) {
2328 TASK_CHECKTIME,
24- TASK_DELAYED_CHANGE
29+ TASK_DELAYED_CHANGE,
30+ TASK_CHANGE_TO_DEFAULT
2531};
2632
2733enum {
@@ -39,6 +45,8 @@ enum Cvars {
3945 LAST_ROUND,
4046 SECOND_VOTE,
4147 SECOND_VOTE_PERCENT,
48+ CHANGE_TO_DEFAULT,
49+ DEFAULT_MAP,
4250 EXTENDED_TYPE,
4351 EXTENDED_MAX,
4452 EXTENDED_TIME,
@@ -80,6 +88,9 @@ public plugin_init()
8088 g_pCvars[SECOND_VOTE] = register_cvar (" mapm_second_vote" , " 0" ); // 0 - disable, 1 - enable
8189 g_pCvars[SECOND_VOTE_PERCENT] = register_cvar (" mapm_second_vote_percent" , " 50" );
8290
91+ g_pCvars[CHANGE_TO_DEFAULT] = register_cvar (" mapm_change_to_default_map" , " 0" ); // minutes, 0 - disable
92+ g_pCvars[DEFAULT_MAP] = register_cvar (" mapm_default_map" , " de_dust2" );
93+
8394 g_pCvars[EXTENDED_TYPE] = register_cvar (" mapm_extended_type" , " 0" ); // 0 - minutes, 1 - rounds
8495 g_pCvars[EXTENDED_MAX] = register_cvar (" mapm_extended_map_max" , " 3" );
8596 g_pCvars[EXTENDED_TIME] = register_cvar (" mapm_extended_time" , " 15" ); // minutes
@@ -202,6 +213,35 @@ public clcmd_votemap()
202213 // Block default vote
203214 return PLUGIN_HANDLED;
204215}
216+ public client_putinserver (id)
217+ {
218+ if (! is_user_bot (id) && ! is_user_hltv (id)) {
219+ remove_task (TASK_CHANGE_TO_DEFAULT);
220+ }
221+ }
222+ public client_disconnect (id)
223+ {
224+ new Float: change_time = get_float (CHANGE_TO_DEFAULT);
225+ if (change_time > 0 .0 && ! get_players_num (id)) {
226+ set_task (change_time * 60 , " task_change_to_default" , TASK_CHANGE_TO_DEFAULT);
227+ }
228+ }
229+ public task_change_to_default ()
230+ {
231+ if (get_players_num ()) {
232+ return ;
233+ }
234+
235+ new default_map[MAPNAME_LENGTH]; get_string (DEFAULT_MAP, default_map, charsmax (default_map));
236+
237+ if (! is_map_valid (default_map)) {
238+ return ;
239+ }
240+
241+ log_amx (" map changed to default[%s ]" , default_map);
242+ set_pcvar_string (g_pCvars[NEXTMAP], default_map);
243+ intermission ();
244+ }
205245public task_checktime ()
206246{
207247 if (is_vote_started () || is_vote_finished () || get_float (TIMELIMIT) <= 0 .0 ) {
@@ -253,7 +293,7 @@ public event_newround()
253293 }
254294
255295 if (is_vote_finished () && (g_bChangeMapNextRound || get_num (LAST_ROUND))) {
256- new nextmap[MAPNAME_LENGTH]; get_pcvar_string (g_pCvars[ NEXTMAP] , nextmap, charsmax (nextmap));
296+ new nextmap[MAPNAME_LENGTH]; get_string ( NEXTMAP, nextmap, charsmax (nextmap));
257297 client_print_color (0 , print_team_default, " %s ^1 % L^3 %s ^1." , g_sPrefix, LANG_PLAYER, " MAPM_NEXTMAP" , nextmap);
258298 intermission ();
259299 }
@@ -278,7 +318,7 @@ public event_intermission()
278318}
279319public delayed_change ()
280320{
281- new nextmap[MAPNAME_LENGTH]; get_pcvar_string (g_pCvars[ NEXTMAP] , nextmap, charsmax (nextmap));
321+ new nextmap[MAPNAME_LENGTH]; get_string ( NEXTMAP, nextmap, charsmax (nextmap));
282322 set_float (CHATTIME, get_float (CHATTIME) - 1 .0 );
283323 server_cmd (" changelevel %s " , nextmap);
284324}
0 commit comments