/*  Contains all of the Frontline Force specific commands for AdminMod. 
    If you have any questions about the commands or usage, please refer to the 
    readme or contact me at SR71Goku@hotmail.com or ICQ: 146538715                       
*/
 
/*$Id: plugin_flf_common.sma,v 1.0 4/20/2002 SR71Goku Exp $*/
 
 
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
 
new STRING_VERSION[MAX_DATA_LENGTH] = "2.51.00";
 
#define ACCESS_DELAYROUND 4
#define ACCESS_FADETOBLACK 32
#define ACCESS_FLASHLIGHT 32
#define ACCESS_FOOTSTEPS 8192
#define ACCESS_GRENADES 8192
#define ACCESS_KILLERHEALTH 2
#define ACCESS_SPECTS 32
#define ACCESS_TEAMCHANGE 8192
#define ACCESS_WAVESPAWN 8192
 
 
public admin_allowkickvote(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_allow_kickvote");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_allow_kickvote","0");
    	} else {
       	execute_command(User,Command,"mp_allow_kickvote","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_allowicons(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_allowicons");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_allowicons","0");
    	} else {
       	execute_command(User,Command,"mp_allowicons","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_allowspects(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_allowspects");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_allowspects","0");
    	} else {
       	execute_command(User,Command,"mp_allowspects","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_autoidlekick(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_autoidlekick");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_autoidlekick","0");
    	} else {
       	execute_command(User,Command,"mp_autoidlekick","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_autobalance(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_autoteambalance");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_autoteambalance","0");
    	} else {
       	execute_command(User,Command,"mp_autoteambalance","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_delayround(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	execute_command(User,Command,"mp_delayround",Data);
	return PLUGIN_HANDLED;
}
 
public admin_fadetoblack(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_fadetoblack");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_fadetoblack","0");
    	} else {
       	execute_command(User,Command,"mp_fadetoblack","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_flashlight(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_flashlight");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_flashlight","0");
    	} else {
       	execute_command(User,Command,"mp_flashlight","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_footsteps(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_footsteps");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_footsteps","0");
    	} else {
       	execute_command(User,Command,"mp_footsteps","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_forcebalance(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_forcebalance");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_forcebalance","0");
    	} else {
       	execute_command(User,Command,"mp_forcebalance","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_friendlyfire(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_friendlyfire");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_friendlyfire","0");
    	} else {
       	execute_command(User,Command,"mp_friendlyfire","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_grenades(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_grenades");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_grenades","0");
    	} else {
       	execute_command(User,Command,"mp_grenades","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_grenadespam(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_grenadespam");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_grenadespam","0");
    	} else {
       	execute_command(User,Command,"mp_grenadespam","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_killerhealth(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_killerhealth");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_killerhealth","0");
    	} else {
       	execute_command(User,Command,"mp_killerhealth","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_roundlimit(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	execute_command(User,Command,"mp_roundlimit",Data);
	return PLUGIN_HANDLED;
}
 
public admin_spectchat(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
    	convert_string(HLData,Data,MAX_DATA_LENGTH);
    	convert_string(HLUserName,User,MAX_NAME_LENGTH);
    	Toggle = getvar("mp_spectchat");
    	if(Toggle == 1) {
        	execute_command(User,Command,"mp_spectchat","0");
    	} else {
       	execute_command(User,Command,"mp_spectchat","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_startmatch(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	execute_command(User,Command,"sv_startmatch",Data);
	return PLUGIN_HANDLED;
}
 
public admin_teamchange(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Toggle;
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	Toggle = getvar("mp_teamchange");
	if(Toggle == 1) {
		execute_command(User,Command,"mp_teamchange","0");
	} else {
		execute_command(User,Command,"mp_teamchange","1");
	}
	return PLUGIN_HANDLED;
}
 
public admin_wavespawn(HLCommand,HLData,HLUserName,UserIndex) {
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
	if( (strtonum(Data) < 0) || (strtonum(Data) > 3) ) {
		selfmessage("Value must be between 0 and 3");
	} else {
		execute_command(User,Command,"mp_wavespawn",Data);
	}
	return PLUGIN_HANDLED;
}
 
public plugin_init(){
	plugin_registerinfo("Frontline Force specific commands","Plugin provides all of the Frontline Force specific cvars.",STRING_VERSION);
 
	plugin_registercmd("admin_allowkickvote","admin_allowkickvote",ACCESS_KICK,"admin_allowkickvote : Toggles  the ability for players to vote people off of the server.");
	plugin_registercmd("admin_allowicons","admin_allowicons",ACCESS_FRIENDLY_FIRE,"admin_allowicons : Toggles ability of players to toggle the display of team icons.");
	plugin_registercmd("admin_allowspects","admin_allowspects",ACCESS_SPECTS,"admin_allowspects : Toggles ability for players to be spectators.");
	plugin_registercmd("admin_autoidlekick","admin_autoidlekick",ACCESS_KICK,"admin_autoidlekick : Toggles the auto kicking of idle players.");
	plugin_registercmd("admin_autobalance","admin_autobalance",ACCESS_TEAMCHANGE,"admin_autobalance : Toggles auto team balancing on and off.");
	plugin_registercmd("admin_delayround","admin_delayround",ACCESS_DELAYROUND,"admin_delayround <time> : Sets the ammount of time before the official round starts.");
	plugin_registercmd("admin_fadetoblack","admin_fadetoblack",ACCESS_FADETOBLACK,"admin_fadetoblack: Toggles fade-to-black on and off.");
	plugin_registercmd("admin_flashlight","admin_flashlight",ACCESS_FLASHLIGHT,"admin_flashlight: Toggles the use of the flashlight on and off.");
	plugin_registercmd("admin_footsteps","admin_footsteps",ACCESS_FOOTSTEPS,"admin_footsteps: Toggles footsteps on and off.");
	plugin_registercmd("admin_forcebalance","admin_forcebalance",ACCESS_TEAMCHANGE,"admin_forcebalance : Toggles forced team balance on and off.");
	plugin_registercmd("admin_friendlyfire","admin_friendlyfire",ACCESS_FRIENDLY_FIRE,"admin_friendlyfire : Toggles friendly fire on and off.");
	plugin_registercmd("admin_grenades","admin_grenades",ACCESS_GRENADES,"admin_grenades : Toggles the use of grenades on and off.");
	plugin_registercmd("admin_grenadespam","admin_grenadespam",ACCESS_GRENADES,"admin_grenadespam : Toggles the ability to grenade spam from spawn on and off.");
	plugin_registercmd("admin_killerhealth","admin_killerhealth",ACCESS_KILLERHEALTH,"admin_killerhealth : Toggles the showing of your killer's health when you die on and off.");
	plugin_registercmd("admin_roundlimit","admin_roundlimit",ACCESS_TIMELIMIT,"admin_roundlimit <data> : Set the number of wins till the round ends.");
	plugin_registercmd("admin_spectchat","admin_spectchat",ACCESS_SPECTS,"admin_spectchat : Toggles ability for spectators to speak on and off.");
	plugin_registercmd("admin_startmatch","admin_startmatch",ACCESS_TIMELIMIT,"admin_startmatch <data> : ^"Restarts^" the map without making other players reload hte map.");
	plugin_registercmd("admin_teamchange","admin_teamchange",ACCESS_TEAMCHANGE,"admin_teamchange : Toggles ability of players to switch teams after warm-up time.");
	plugin_registercmd("admin_wavespawn","admin_wavespawn",ACCESS_WAVESPAWN,"admin_wavespawn <data> : Sets the mode for players to spawn.  Can be 0-3.");
 
	return PLUGIN_CONTINUE;
}