Vote Menu
i want when 2 items from menu get same vote count the plugin will choose a random item from these 2. same if there was 3 items or more the plugin picks a random item from the 3 items.
PHP Code:
#include <amxmodx>
//This will hold the VoteMenu new gVoteMenu; //This will hold the votes for each option new gVotes[2]; //This determines if a vote is already happening new gVoting;
public plugin_init() { //Register a way to get to your vote... register_clcmd( "start_vote","StartVote" ); } public StartVote( id ) { //If there is already a vote, don't start another if ( gVoting ) { client_print( id, print_chat, "There is already a vote going." ); //We return PLUGIN_HANDLED so the person does not get Unknown Command in console return PLUGIN_HANDLED; }
//Reset vote counts from any previous votes gVotes[0] = gVotes[1] = 0; //Note that if you have more than 2 options, it would be better to use the line below: //arrayset( gVotes, 0, sizeof gVotes );
//Store the menu in the global gVoteMenu = menu_create( "\rLook at this Vote Menu!:", "menu_handler" );
//Add some vote options menu_additem( gVoteMenu, "Vote Option 1", "", 0 ); menu_additem( gVoteMenu, "Vote Option 2", "", 0 );
//We will need to create some variables so we can loop through all the players new players[32], pnum, tempid;
//Fill players with available players get_players( players, pnum );
//Start looping through all players to show the vote to for ( new i; i < pnum; i++ ) { //Save a tempid so we do not re-index tempid = players[i];
//Show the vote to this player menu_display( tempid, gVoteMenu, 0 );
//Increase how many players are voting gVoting++; }
//End the vote in 10 seconds set_task(10.0, "EndVote" );
return PLUGIN_HANDLED; } public menu_handler( id, menu, item ) { //If the menu was exited or if there is not a vote if ( item == MENU_EXIT || !gVoting ) { //Note were not destroying the menu return PLUGIN_HANDLED; }
//Increase the votes for what they selected gVotes[ item ]++;
//Note were not destroying the menu return PLUGIN_HANDLED; } public EndVote() { //If the first option recieved the most votes if ( gVotes[0] > gVotes[1] ) client_print(0, print_chat, "First option recieved most votes (%d )", gVotes[0] );
//Else if the second option recieved the most votes else if ( gVotes[0] < gVotes[1] ) client_print(0, print_chat, "Second option recieved most votes (%d )", gVotes[1] );
//Otherwise the vote tied else client_print(0, print_chat, "The vote tied at %d votes each.", gVotes[0] );
//Don't forget to destroy the menu now that we are completely done with it menu_destroy( gVoteMenu );
//Reset that no players are voting gVoting = 0; }
|