Skip to content
This repository was archived by the owner on Oct 30, 2019. It is now read-only.

Commit 78b05d9

Browse files
CleversonCleverson
authored andcommitted
update pug_vote_map_enabled
Added support to mod choose a random nextmap instead of open a new votemap at pug end. Changed engine_changelevel to old server_cmd duo to possible segmentation fault at HLDS changelevel. Removed unecessary checks from PugEventEnd
1 parent ab797f0 commit 78b05d9

File tree

1 file changed

+37
-15
lines changed

1 file changed

+37
-15
lines changed

addons/amxmodx/scripting/PugMenus.sma

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public bool:g_bVoting;
1919

2020
new g_pVoteDelay;
2121
new g_pVotePercent;
22-
new g_pMapVoteEnabled;
22+
new g_pMapVoteType;
2323
new g_pMapVote;
2424
new g_pSameMap;
2525
new 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

208211
public 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

229257
public 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

239262
public 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

411433
public fnChangeMap(iMap)
412434
{
413-
engine_changelevel(g_sMapNames[iMap]);
435+
server_cmd("changelevel %s",g_sMapNames[iMap]);
414436
}
415437

416438
public fnStartTeamVote()

0 commit comments

Comments
 (0)