If they see in the hud shows the maps elected by the players and the number of votes that carries the map!
PHP Code:
#define MAX_MAPS 20
new pug_votemap_votes[MAX_MAPS]
new pug_votemap_name[MAX_MAPS][32]
new pug_votemap_count;
public try_load_votemap_menu()
{
// Rukia: Get our maps.ini
static filename[64]
get_configsdir( filename, 63 )
format( filename, 63, "%s/maps.ini", filename )
// Rukia: Otherwise, just use mapcycle
if(file_exists(filename))
{
load_votemap_menu(filename)
if(pug_votemap_count != 0) return;
}
copy(filename,63,"mapcycle.txt")
load_votemap_menu(filename)
}
public load_votemap_menu(filename[])
{
new file = fopen(filename,"rb")
static text[256], szDesc[48], num[10]
while( (pug_votemap_count < MAX_MAPS) && !feof(file) && fgets(file,text,255) )
{
// Rukia: Take out common comment conventions
if(text[0]==';') continue
if( (text[0]=='/') && (text[1]=='/') ) continue
// Rukia: Remove the newline character
text[strlen(text)] = '^0'
// Rukia: Get the map name and description out of what we read
strbreak(text,pug_votemap_name[pug_votemap_count],31,szDesc,47)
// Rukia: If the map is invalid, skip it
if( !is_map_valid( pug_votemap_name[pug_votemap_count] ) ) continue;
// Rukia: If there is no description (such as if we use mapcycle) then just use the first part of the map name
if(szDesc[0] == '^0') strtok(pug_votemap_name[pug_votemap_count],szDesc,47,"",0,'.',1)
// Rukia: The map number will be our index
formatex(num,9,"%i",pug_votemap_count)
// Rukia: Add the item into the menu and move on
menu_additem(pug_votemap_menu, pug_votemap_name[pug_votemap_count],num )
pug_votemap_count++;
}
fclose(file)
}
public cmd_votemap(id,level,cid)
{
if (!cmd_access(id, level, cid, 1) ) return pug_msg_tmp_empty(id,"PUG_CMD_NOTALLOWED")
votemap_start()
return PLUGIN_HANDLED;
}
public votemap_start()
{
if(pug_voting) { set_task(get_pcvar_float(pug_cvar_vote_time),"votemap_start",100 + pug_votemap_menu); return; }
pug_voting = 1;
arrayset(pug_voted,0,33)
arrayset(pug_votemap_votes,0,pug_votemap_count)
pug_display_menu_all(pug_votemap_menu)
client_print(0,print_chat,"",pug_header, LANG_PLAYER, "PUG_VOTE_START", "PUG map");
console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_START", "PUG map");
set_task(get_pcvar_float(pug_cvar_vote_time),"votemap_end",100 + pug_votemap_menu)
}
public votemap_end()
{
pug_cancel_menu()
pug_voting = 0;
remove_task ( 100 + pug_votemap_menu )
if(votemap_count()) voteteam_start();
}
public votemap_handle(id, menu, item)
{
if( item < 0 ) return PLUGIN_CONTINUE;
static access, callback
static cmd[3], name[32], cmdname[32]
menu_item_getinfo(menu, item, access, cmd,2,cmdname,31, callback);
pug_votemap_votes[str_to_num(cmd)]++;
get_user_name(id,name,31)
client_print(0,print_chat,"",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTED_FOR", name, cmdname);
pug_voted[id] = 1;
if(pug_should_stopvote() ) votemap_end()
return PLUGIN_HANDLED;
}
public votemap_count()
{
new winner, winner_votes, votes
for(new i = 0; i < pug_votemap_count; ++i)
{
votes = pug_votemap_votes[i]
if(votes > winner_votes) { winner = i; winner_votes = votes; }
else if(votes == winner_votes) if(random_num(0,1)) { winner = i; winner_votes = votes; }
}
if(pug_votemap_votes[winner] == 0)
{
set_task( 1.0 , "pug_votemap_change2" , random( pug_votemap_count ) );
}
new Float: tmp = float(pug_get_players()) * get_pcvar_float(pug_cvar_vote_perc)
if( pug_votemap_votes[winner] < floatround(tmp,floatround_floor) )
{
set_task( 1.0 , "pug_votemap_change2" , random( pug_votemap_count ) );
}
client_print(0,print_chat,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WIN", pug_votemap_name[winner]);
console_print(0,"%s %L",pug_header, LANG_PLAYER, "PUG_VOTE_WIN", pug_votemap_name[winner]);
pug_voting = 0;
votemap_noswitch = 1;
set_pcvar_num(pug_cvar_votemap_e,0)
message_begin(MSG_ALL, SVC_INTERMISSION)
message_end()
set_task(3.0,"pug_votemap_change",winner)
return PLUGIN_CONTINUE
}
public pug_votemap_change2( iMapIndex )
{
client_print( 0 , print_chat , "%s has been chosen randomly" , pug_votemap_name[ iMapIndex ] );
server_cmd( "changelevel %s" , pug_votemap_name[ iMapIndex ] );
}
public pug_votemap_change(winner)
{
server_cmd("changelevel %s",pug_votemap_name[winner]);
}