/* This plugin enables weapon restriction votes in Counter-Strike.
 * Must be loaded AFTER plugin_CS. 
 */
 
/* $Id: plugin_vote_restrict.sma,v 1.0 2001/04/06 yensid $ */
 
/* Should be compatible to new plugin_CS now. Untested! [WING] Black Knight */
 
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
 
/* Change this to whatever ratio of players need to vote for a setting to change it. */
#define RESTRICT_VOTE_RATIO 50
 
#define ACCESS_VOTE_RESTRICT 1
 
#define MAX_MENU_CHOICES 10
#define MAX_MENUS 10
 
new STRING_VERSION[MAX_DATA_LENGTH] = "2.50.0";
 
public HandleRestrictVote(WinningOption,HLWeapon,VoteCount,UserCount) {
	new strNumber[MAX_NUMBER_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	new Weapon[MAX_DATA_LENGTH];
	new Menu[MAX_MENUS];
	new MenuSelect[MAX_MENU_CHOICES];
	new Ratio = RESTRICT_VOTE_RATIO;
	new Cmd[MAX_DATA_LENGTH];
	convert_string(HLWeapon,Weapon,MAX_DATA_LENGTH);
 
	if (WinningOption == 1) {
		if (VoteCount >= Ratio*UserCount/100) {
			strbreak(Weapon, Menu, MenuSelect, MAX_TEXT_LENGTH);
			snprintf(Cmd, MAX_DATA_LENGTH, "%s %s", Menu, MenuSelect);
			plugin_exec("admin_restrict",Cmd);
			snprintf(Text, MAX_TEXT_LENGTH, "Weapon %s will be restricted due to vote.", Weapon);
			say(Text);
		} else {
			numtostr(Ratio*UserCount/100,strNumber);
			snprintf(Text, MAX_TEXT_LENGTH, "Winning vote was to restrict, but not enough votes for restriction (needed %s).", strNumber);
			say(Text);
		}
	} else {
		if (VoteCount >= Ratio*UserCount/100) {
			strbreak(Weapon, Menu, MenuSelect, MAX_TEXT_LENGTH);
			snprintf(Cmd, MAX_DATA_LENGTH, "%s %s", Menu, MenuSelect);
			plugin_exec("admin_unrestrict",Cmd);
			snprintf(Text, MAX_TEXT_LENGTH, "Weapon %s will be enabled due to vote.", Weapon);
			say(Text);
		} else {
			numtostr(Ratio*UserCount/100,strNumber);
			snprintf(Text, MAX_TEXT_LENGTH, "Winning vote was to enable, but not enough votes to change setting (needed %s).", strNumber);
			say(Text);
		}
	}
}
 
public admin_vote_restrict(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH]; 
	new Menu[MAX_MENUS]; 
	new Weapon[MAX_MENU_CHOICES]; 
	new Text[MAX_TEXT_LENGTH]; 
	new Msg[MAX_DATA_LENGTH];
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	log_command(User,Command,Data);	
	strbreak(Data,Menu,Weapon,MAX_TEXT_LENGTH); 
	new MenuNum=strtonum(Menu);
	new WeaponNum=strtonum(Weapon);
	if (vote_allowed()!=1) {
		selfmessage( "Vote not allowed at this time.");
		return PLUGIN_HANDLED;
	}
	if(MenuNum==1 && WeaponNum ==1) 
		strcpy(Text,"USP",MAX_TEXT_LENGTH); 
	else if(MenuNum==1 && WeaponNum ==2) 
		strcpy(Text,"Glock",MAX_TEXT_LENGTH); 
	else if(MenuNum==1 && WeaponNum ==3) 
		strcpy(Text,"DE",MAX_TEXT_LENGTH); 
	else if(MenuNum==1 && WeaponNum ==4) 
		strcpy(Text,"P228",MAX_TEXT_LENGTH); 
	else if(MenuNum==1 && WeaponNum ==5) 
		strcpy(Text,"Dual Berettas",MAX_TEXT_LENGTH);
	else if(MenuNum==1 && WeaponNum==6) 
		strcpy(Text,"Five-Seven",MAX_TEXT_LENGTH);
	else if(MenuNum==2 && WeaponNum ==1) 
		strcpy(Text,"Super90",MAX_TEXT_LENGTH);
	else if(MenuNum==2 && WeaponNum ==2) 
		strcpy(Text,"XM1014",MAX_TEXT_LENGTH); 
	else if(MenuNum==3 && WeaponNum ==1) 
		strcpy(Text,"MP5",MAX_TEXT_LENGTH); 
	else if(MenuNum==3 && WeaponNum ==2) 
		strcpy(Text,"TMP",MAX_TEXT_LENGTH);
	else if(MenuNum==3 && WeaponNum ==3) 
		strcpy(Text,"P90",MAX_TEXT_LENGTH); 
	else if(MenuNum==3 && WeaponNum ==4) 
		strcpy(Text,"Mac10",MAX_TEXT_LENGTH); 
	else if(MenuNum==3 && WeaponNum ==5) 
		strcpy(Text,"UMP",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==1) 
		strcpy(Text,"AK-47",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==2)
		strcpy(Text,"Sig 552",MAX_TEXT_LENGTH);
	else if(MenuNum==4 && WeaponNum ==3) 
		strcpy(Text,"M4A1",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==4) 
		strcpy(Text,"Aug",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==5) 
		strcpy(Text,"Scout",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==6) 
		strcpy(Text,"AWM/P",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==7) 
		strcpy(Text,"G3/SG1",MAX_TEXT_LENGTH); 
	else if(MenuNum==4 && WeaponNum ==8) 
		strcpy(Text,"Sig 550",MAX_TEXT_LENGTH);  
	else if(MenuNum==5 && WeaponNum ==1) 
		strcpy(Text,"Para",MAX_TEXT_LENGTH); 
	else if(MenuNum==8 && WeaponNum ==1) 
		strcpy(Text,"Kevlar",MAX_TEXT_LENGTH); 
	else if(MenuNum==8 && WeaponNum ==2) 
		strcpy(Text,"Helmet",MAX_TEXT_LENGTH); 
	else if(MenuNum==8 && WeaponNum ==3) 
		strcpy(Text,"Flashbang",MAX_TEXT_LENGTH); 
	else if(MenuNum==8 && WeaponNum ==4) 
		strcpy(Text,"HE Grenade",MAX_TEXT_LENGTH); 
	else if(MenuNum==8 && WeaponNum ==5) 
		strcpy(Text,"Smoke Grenade",MAX_TEXT_LENGTH); 
	else if(MenuNum==8 && WeaponNum ==7) 
		strcpy(Text,"Nightvision",MAX_TEXT_LENGTH); 
	if (Weapon[0]!=NULL_CHAR) { 
		snprintf(Msg, MAX_TEXT_LENGTH, "Restrict Weapon %i %i: %s?", MenuNum, WeaponNum, Text);
		vote(Msg,"Yes","No","HandleRestrictVote",Data); 
	} else { 
		selfmessage("Unparseable weapon: "); 
		selfmessage(Data); 
	} 
	return PLUGIN_HANDLED;
} 
 
public plugin_init() {
	plugin_registerinfo("Restrict Vote Plugin","Enables votes on restricting weapons.",STRING_VERSION);
	plugin_registercmd("admin_vote_restrict","admin_vote_restrict",ACCESS_VOTE_RESTRICT,"admin_vote_restrict <menu> <weapon> : Starts a vote to enable/restrict weapons.");
 
	return PLUGIN_CONTINUE;
}