@@ -19,7 +19,7 @@ public bool:g_bVoting;
1919
2020new g_pVoteDelay;
2121new g_pVotePercent;
22- new g_pMapVoteEnabled ;
22+ new g_pMapVoteType ;
2323new g_pMapVote;
2424new g_pSameMap;
2525new g_pShowScores;
@@ -70,7 +70,7 @@ public plugin_init()
7070
7171 g_pVoteDelay = create_cvar (" pug_vote_delay" ," 15.0" ,FCVAR_NONE," How long voting session goes on" );
7272 g_pVotePercent = create_cvar (" pug_vote_percent" ," 0.4" ,FCVAR_NONE," Difference between votes to determine a winner" );
73- g_pMapVoteEnabled = create_cvar (" pug_vote_map_enabled" ," 1" ,FCVAR_NONE," Active vote map in pug" );
73+ g_pMapVoteType = create_cvar (" pug_vote_map_enabled" ," 1" ,FCVAR_NONE," Active vote map in pug (0 = Disable, 1 = Enable, 2 = Change to a random map) " );
7474 g_pMapVote = create_cvar (" pug_vote_map" ," 1" ,FCVAR_NONE," Determine if current map will have the vote map (Not used at Pug config file)" );
7575 g_pSameMap = create_cvar (" pug_vote_map_same" ," 0" ,FCVAR_NONE," Add the current map at vote map menu" );
7676 g_pShowScores = create_cvar (" pug_show_scores" ," 0" ,FCVAR_NONE," Show scores after vote maps" );
@@ -186,7 +186,10 @@ fnLoadMaps(const sPatch[])
186186
187187 if ((sMap[0 ] != ' ;' ) && is_map_valid (sMap))
188188 {
189- if (! iSameMap && equali (sMap,sCurrent)) continue ;
189+ if (! iSameMap && equali (sMap,sCurrent))
190+ {
191+ continue ;
192+ }
190193
191194 copy (g_sMapNames[g_iMapCount],charsmax (g_sMapNames[]),sMap);
192195
@@ -207,9 +210,34 @@ fnLoadMaps(const sPatch[])
207210
208211public PugEventStart ()
209212{
210- if (get_pcvar_num (g_pMapVoteEnabled) && get_pcvar_num (g_pMapVote))
213+ new iVoteType = get_pcvar_num (g_pMapVoteType);
214+
215+ if (get_pcvar_num (g_pMapVote) && (iVoteType > 0 ))
211216 {
212- fnStartMapVote ();
217+ switch (get_pcvar_num (g_pMapVoteType))
218+ {
219+ case 1 :
220+ {
221+ fnStartMapVote ();
222+ }
223+ case 2 :
224+ {
225+ new szMap[32 ];
226+ get_mapname (szMap,charsmax (szMap));
227+
228+ new iMap = random_num (0 ,g_iMapCount);
229+
230+ while (equali (szMap,g_sMapNames[iMap]) || ! is_map_valid (g_sMapNames[iMap]))
231+ {
232+ iMap = random_num (0 ,g_iMapCount);
233+ }
234+
235+ set_pcvar_num (g_pMapVote,0 );
236+
237+ set_task (5 .0 ," fnChangeMap" ,iMap);
238+ client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_VOTEMAP_NEXTMAP" ,g_sMapNames[iMap]);
239+ }
240+ }
213241 }
214242 else
215243 {
@@ -222,18 +250,13 @@ public PugEventStart()
222250 else
223251 {
224252 PugChangeTeams (iEnforcement);
225- }
253+ }
226254 }
227255}
228256
229257public PugEventEnd ()
230258{
231- set_pcvar_num (g_pTeamEnforcement,0 );
232-
233- if (! get_pcvar_num (g_pMapVote))
234- {
235- set_pcvar_num (g_pMapVote,1 );
236- }
259+ set_pcvar_num (g_pMapVote,1 );
237260}
238261
239262public fnStartMapVote ()
@@ -397,20 +420,19 @@ fnVoteMapCount()
397420 }
398421
399422 set_task (5 .0 ," fnChangeMap" ,iWinner);
423+ client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_VOTEMAP_NEXTMAP" ,g_sMapNames[iWinner]);
400424 }
401425 else
402426 {
403427 set_task (3 .0 ," fnStartTeamVote" );
404428 }
405429
406- client_print_color (0 ,print_team_red," %s % L" ,g_sHead,LANG_SERVER," PUG_VOTEMAP_NEXTMAP" ,g_sMapNames[iWinner]);
407-
408430 return PLUGIN_HANDLED;
409431}
410432
411433public fnChangeMap (iMap)
412434{
413- engine_changelevel ( g_sMapNames[iMap]);
435+ server_cmd ( " changelevel %s " , g_sMapNames[iMap]);
414436}
415437
416438public fnStartTeamVote ()
0 commit comments