Tutorial: Como crear un menu de votacion(Basic Vote Menu)
Requerimientos: Saver hacer porlomenos el menu basico (Basic Menu)
PHP Code:
/*Ponemos el include necesario*/
#include <amxmodx>
/*Creamos las variables globales*/
new gVoteMenu; // Este lo usaremos para crear el menu
new gVotes[2]; /* Este array es donde pondremos la cantidad de votaciones posible
por ejemplo si queremos tener 3 opciones pondriamos gVotes[3], esta la
usaremos mas adelantes
*/
new gVoting; // Esta variable la usaremos para detectar si ya se esta votando o no
public plugin_init()
{
// Registramo el comando con el que se abrira el menu
register_clcmd( "abrir_menu","vote_menu");
}
public vote_menu(id)
{
// Aca Detectamos que si ya se esta botando no continua
if( gVoting )
{
// Un mensaje para avisar que ya se esta votando
client_print(id, print_chat, "Boludo ya empeso la votacion llegaste tarde");
return PLUGIN_HANDLED;
}
// Aca creamos el menu (ya lo saven del Basic Menu)
// si no lo saven tendran que aprenderlo con el Basic Menu
gVoteMenu = menu_create("\r Creamos Un vote menu :D", "menu_handler");
// Agregamos las opciones
menu_additem(gVoteMenu, "Opcion numero 1", "0", 0);
menu_additem(gVoteMenu, "Opcion numero 2", "1", 0);
// Esta variable nos servira para hacer el loop mas abajo
new tempid;
// Abrimos un loop
for( new i; i <= get_maxplayers() ; i++ )
{
// Guardamos un tempid para no hacer indexear de nuevo
// Tempid quiere decir evento de identificacion
tempid = players[i];
// Aca mostramos a los players el menu
menu_display(tempid, menu, 0);
// Aca acemos un post incremento para activar la variable
// y registrar que se esta votando ya
gVoting = true
}
// Aca llamamos a la funcion EndVote a los 10 segundos
// despues de abrirse el menu
set_task(10.0, "EndVote");
return PLUGIN_HANDLED;
}
public menu_handler(id, menu, item)
{
// Si no se esta votando no continua
if( item == MENU_EXIT || !gVoting ) return PLUGIN_HANDLED;
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
// Tomamos la opcion seleccionada por el user
new voteid = str_to_num(data);
// Acemos un incremento a las opciones a votar
// pero no es a toda la variable sino al numero de slot seleccionada
gVotes[voteid]++;
return PLUGIN_HANDLED;
}
/* En esta parte pondremos lo que susede si una opcion
gana o pierde
*/
public EndVote()
{
// Aqui si la primera gana prosigue
if( gVotes[0] > gVotes[1] )
client_print(0, print_chat, "Gano la primera opcion con (%d) votos", gVotes[0] );
// Y si gana la segunda opcion dira lo siguiente
else if( gVotes[0] > gVotes[1] )
client_print(0, print_chat, "Gano la segunda opcion con (%d) votos", gVotes[1] );
// Pero si no gana ninguna........
else
client_print(0, print_chat, "No han ganado ninguna :D");
// Aca destruimos (cerramos) el menu
menu_destroy(gVoteMenu);
// Reseteamos la variable para que despues se pueda
// votar de nuevo mas adelante
gVoting = 0;
}
/* Noten que cada numero del array de la variable "gVotes[]" es una opcion
asique si quieren hacer una votacion con 12 opciones tendran que hacer esto */
new opciones[12] // 12 opciones son ahora
/* Cada opcion quedaria asi */
opciones[0] // opcion nš 1
opciones[1] // opcion nš 2
opciones[2] // opcion nš 3
opciones[3] // opcion nš 4
opciones[4] // opcion nš 5
opciones[5] // opcion nš 6
opciones[6] // opcion nš 7
opciones[7] // opcion nš 8
opciones[8] // opcion nš 9
opciones[9] // opcion nš 10
opciones[10] // opcion nš 11
opciones[11] // opcion nš 12
Espero que le sirva de ayuda
PD: corrijanme si me equivoco
__________________