Quantcast
Channel: Forum VeryGames
Viewing all articles
Browse latest Browse all 5196

Problème MapChooser5

$
0
0
Bonjour,
J'ai un petit problème lors de mon votemap avec e plugin MapCHooser5, lorsque les joueurs choisissent "extendmap" rien ne se passe comme is aucun vote n'avais été fait. Alors que si on choisi une autre catégorie, tout se passe bien.

Si quelqu'un peut m'aider ça serait sympa. Merci


Voilà le Script de mon MapChooser5
Citation:

#include <amxmodx>
#include <amxmisc>


#pragma semicolon 1


#define MAX_MAPS 128
#define SELECTMAPS 5
// SLECTYPES modify this with the number of categorie
#define SELECTTYPES 3


new g_mapName[MAX_MAPS][32];
new g_mapNums;


// new g_maptypeName[SELECTTYPES][32] = { "official map", "custom map", "fun map", "training map" };
new g_maptypeName[SELECTTYPES][32] = { "Map Officielles et Custom", "Map Aim et Fy", "Map Awp et Scout" };


// make all you want than categories
new officialmaps_file[] = "addons/amxmodx/configs/maps_official.ini";
new custommaps_file[] = "addons/amxmodx/configs/maps_aim.ini";
new funmaps_file[] = "addons/amxmodx/configs/maps_awp.ini";
// new trainingmaps_file[] = "addons/amxmodx/configs/maps_training.ini";


new g_nextName[SELECTMAPS];
new g_voteCount[SELECTMAPS+2];
new g_voteCountType[SELECTTYPES+2];
new g_mapVoteNum;
new g_teamScore[2];
new g_lastMap[32];


/* Pcvars */
new pcvar_ext_max, pcvar_ext_step, pcvar_timelimit, pcvar_vote_answr;


new g_coloredMenus;
new bool:g_selected = false;


public plugin_init( )
{
register_dictionary( "mapchooser5.txt" );
register_plugin( "Nextmap chooser", "1.0X", "OLO, KRoTaL" );
register_menucmd( register_menuid( "AMXx Choose nextmap type:" ), ( -1^( -1<<( SELECTTYPES+2 ) ) ), "countVoteType" );
register_menucmd( register_menuid( "AMXx Choose nextmap:" ), ( -1^(- 1<<( SELECTMAPS+2 ) ) ), "countVote" );
/* Pcvars */
pcvar_ext_max = register_cvar( "amx_extendmap_max", "90" );
pcvar_ext_step = register_cvar( "amx_extendmap_step", "15" );
pcvar_timelimit = get_cvar_pointer( "mp_timelimit" );
pcvar_vote_answr = get_cvar_pointer( "amx_vote_answers" );


if ( ( g_coloredMenus = colored_menus() ) != 0 )
register_event( "TeamScore", "team_score", "a" );


get_localinfo( "lastMap", g_lastMap, 31 );
set_localinfo( "lastMap", "" );


set_task( 15.0, "voteNextmapType", 987456, "", 0, "b" );
}


public checkVotesType( )
{
new b = 0;
for( new a = 0; a < 4; ++a )
if ( g_voteCountType[b] < g_voteCountType[a] )
b = a;
if ( g_voteCountType[SELECTTYPES] > g_voteCountType[b] )
{
new mapname[32];
get_mapname( mapname, 31 );
new Float:steptime = get_pcvar_float( pcvar_ext_step );
set_pcvar_float( pcvar_timelimit, get_pcvar_float( pcvar_timelimit ) + steptime );
client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOOSE_END_EXT", steptime );
log_amx( "Vote: Voting for the nextmap type finished. Map %s will be extended to next %.0f minutes", mapname , steptime );
return;
}
if ( g_voteCountType[b] && g_voteCountType[SELECTTYPES+1] <= g_voteCountType[b] )
{
switch( b )
{
// make all the case you want than categories
case 0: voteNextmap( officialmaps_file );
case 1: voteNextmap( custommaps_file );
case 2: voteNextmap( funmaps_file );
// case 3: voteNextmap( trainingmaps_file );


}
client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOOSE_END_TYPE", g_maptypeName[b] );
}
return;
}


public checkVotes( )
{
new b = 0;
for( new a = 0; a < g_mapVoteNum; ++a )
if ( g_voteCount[b] < g_voteCount[a] )
b = a;
if ( g_voteCount[b] && g_voteCount[SELECTMAPS+1] <= g_voteCount[b] )
set_cvar_string( "amx_nextmap", g_mapName[g_nextName[b]] );
new smap[32];
get_cvar_string( "amx_nextmap", smap, 31 ); // Used one time, no pcvar
switch( b )
{
case 0: client_cmd( 0, "spk ^"vox/level one access granted^"" );
case 1: client_cmd( 0, "spk ^"vox/level two access granted^"" );
case 2: client_cmd( 0, "spk ^"vox/level three access granted^"" );
case 3: client_cmd( 0, "spk ^"vox/level four access granted^"" );
case 4: client_cmd( 0, "spk ^"vox/level five access granted^"" );
}
client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOOSE_END_NEXT", smap );
log_amx( "Vote: Voting for the nextmap finished. The nextmap will be %s", smap );
}


public countVoteType( id, key )
{
if ( get_pcvar_float( pcvar_vote_answr ) )
{
new name[32];
get_user_name( id, name, 31 );
if ( key == SELECTTYPES )
client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOOSED_EXT", name );
else if ( key < SELECTTYPES )
client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOOSED", name, g_maptypeName[key] );
}
++g_voteCountType[key];
return PLUGIN_HANDLED;
}


public countVote( id, key )
{
if ( get_pcvar_float( pcvar_vote_answr ) )
{
new name[32];
get_user_name( id, name, 31 );
if ( key < SELECTMAPS )
client_print( 0, print_chat, "%L", LANG_PLAYER, "CHOOSED", name, g_mapName[g_nextName[key]] );
}
++g_voteCount[key];
return PLUGIN_HANDLED;
}


bool:isInMenu( id )
{
for( new a=0; a<g_mapVoteNum; ++a )
if ( id == g_nextName[a] )
return true;
return false;
}


public voteNextmapType( )
{
/* Checked only one time, no use to use pcvar */
new winlimit = get_cvar_num( "mp_winlimit" );
new maxrounds = get_cvar_num( "mp_maxrounds" );
if ( winlimit )
{
new c = winlimit - 2;
if ( ( c > g_teamScore[0] ) && ( c > g_teamScore[1] ) )
{
g_selected = false;
return;
}
}
else if ( maxrounds )
{
if ( ( maxrounds - 2 ) > ( g_teamScore[0] + g_teamScore[1] ) )
{
g_selected = false;
return;
}
}
else
{
new timeleft = get_timeleft( );
if ( timeleft < 1 || timeleft > 129 )
{
g_selected = false;
return;
}
}
if ( g_selected )
return;
g_selected = true;
new menu[512], mapsmenu[512], mkeys, pos;
new players[32], numplayers;
g_voteCountType[SELECTTYPES] = 0;
g_voteCountType[SELECTTYPES+1] = 0;
new mapname[32];
get_mapname( mapname, 31 );


// Build the maps entries and the valid keys (same for all players)
mkeys = ( 1<<SELECTTYPES+1 );
mapsmenu[0] = 0;
pos = 0;


for( new i = 0; i < SELECTTYPES; ++i )
{
pos += format( mapsmenu[pos], 511, "%d. %s^n", i+1, g_maptypeName[i] );
mkeys |= ( 1<<i );
g_voteCount[i] = 0;
}


mapsmenu[pos++]='^n';


if ( ( winlimit + maxrounds ) == 0 && ( get_pcvar_float( pcvar_timelimit ) < get_pcvar_float( pcvar_ext_max ) ) )
mkeys |= ( 1<<SELECTTYPES );


// Now build (translated) menu for each player and send it
get_players( players, numplayers );
new menu_tr_buf[128], menu_nc_tr_buf[128];
for( numplayers--; numplayers >= 0; numplayers-- )
{
format( menu_tr_buf, 127, "%L", players[numplayers], "CHOOSE_NEXT_TYPE" );
format( menu_nc_tr_buf, 127, "%L", players[numplayers], "CHOOSE_NC_NEXT_TYPE" );
pos = copy( menu, 511, g_coloredMenus ? menu_tr_buf : menu_nc_tr_buf );


pos += format( menu[pos], 511, "%s", mapsmenu );


if ( ( winlimit + maxrounds ) == 0 && ( get_pcvar_float( pcvar_timelimit ) < get_pcvar_float( pcvar_ext_max ) ) )
pos += format( menu[pos], 511, "%L", players[numplayers], "EXTEND_MAP", SELECTTYPES+1, mapname );


format( menu[pos], 511, "%L", players[numplayers], "NUTHIN", SELECTTYPES+2 );
show_menu( players[numplayers], mkeys, menu, 15, "AMXx Choose nextmap type:" );
}


set_task( 15.0, "checkVotesType" );
client_print( 0, print_chat, "%L", LANG_PLAYER, "TIME_TO_CHOOSE_TYPE" );
client_cmd( 0, "spk Gman/Gman_Choose2" );
log_amx( "Vote: Voting for the nextmap type started" );
}


public voteNextmap( filename[] )
{
loadSettings( filename );


new menu[512], mapsmenu[512], a, mkeys, pos;
new dmax = ( g_mapNums > SELECTMAPS ) ? SELECTMAPS : g_mapNums;
new players[32], numplayers;
g_voteCount[SELECTMAPS] = 0;
g_voteCount[SELECTMAPS+1] = 0;
new mapname[32];
get_mapname( mapname, 31 );


// Build the maps entries and the valid keys (same for all players)
mkeys = ( 1<<SELECTMAPS+1 );
mapsmenu[0] = 0;
pos = 0;
for( g_mapVoteNum = 0; g_mapVoteNum < dmax; ++g_mapVoteNum )
{
a=random_num( 0, g_mapNums - 1 );
while( isInMenu( a ) )
if ( ++a >= g_mapNums )
a = 0;
g_nextName[g_mapVoteNum] = a;
pos += format( mapsmenu[pos], 511, "%d. %s^n", g_mapVoteNum+1, g_mapName[a] );
mkeys |= ( 1<<g_mapVoteNum );
g_voteCount[g_mapVoteNum] = 0;
}
mapsmenu[pos++]='^n';


// Now build (translated) menu for each player and send it
get_players( players, numplayers );
new menu_tr_buf[128], menu_nc_tr_buf[128];
for( numplayers--; numplayers >= 0; numplayers-- )
{
format( menu_tr_buf, 127, "%L", players[numplayers], "CHOOSE_NEXT" );
format( menu_nc_tr_buf, 127, "%L", players[numplayers], "CHOOSE_NC_NEXT" );


pos = copy( menu, 511, g_coloredMenus ? menu_tr_buf : menu_nc_tr_buf );


pos += format( menu[pos], 511, "%s", mapsmenu );


format( menu[pos], 511, "%L", players[numplayers], "NUTHIN", SELECTMAPS+2 );
show_menu( players[numplayers], mkeys, menu, 15, "AMXx Choose nextmap:" );
}


set_task( 15.0, "checkVotes" );
client_print( 0, print_chat, "%L", LANG_PLAYER, "TIME_TO_CHOOSE_NEXT" );
client_cmd( 0, "spk Gman/Gman_Choose2" );
log_amx( "Vote: Voting for the nextmap started" );
}


loadSettings( filename[] )
{
if ( ! file_exists( filename ) )
return 0;


g_mapNums = 0;
new szText[32];
new a, pos = 0;
new currentMap[32];
get_mapname( currentMap, 31 );


while ( ( g_mapNums < MAX_MAPS ) && read_file( filename, pos++, szText, 31, a ) )
{
if ( szText[0] != ';'
&& parse( szText, g_mapName[g_mapNums] ,31 )
&& is_map_valid( g_mapName[g_mapNums] )
&& ! equali( g_mapName[g_mapNums], g_lastMap )
&& ! equali( g_mapName[g_mapNums], currentMap ) )
++g_mapNums;
}


return g_mapNums;
}


public team_score( )
{
new team[2];
read_data( 1, team, 1 );
g_teamScore[ ( team[0] == 'C' ) ? 0 : 1 ] = read_data( 2 );
}


public plugin_end( )
{
new current_map[32];
get_mapname( current_map, 31 );
set_localinfo( "lastMap", current_map );
}



Viewing all articles
Browse latest Browse all 5196

Trending Articles


Girasoles para colorear


Tagalog Quotes About Crush – Tagalog Love Quotes


OFW quotes : Pinoy Tagalog Quotes


Pamatay na Banat and Mga Patama Love Quotes


5 Tagalog Relationship Rules


INUMAN QUOTES


Re:Mutton Pies (lleechef)


FORECLOSURE OF REAL ESTATE MORTGAGE