/*	Admin_drop v0.2  by Eric Foard (efoar026@uwsp.edu) and Paul Omernik (pomer587@uwsp.edu)
	This plugin will teleport the subject to a location where they will be subject to fall damage.
 
	* Download latest admin_drop plugin from http://students.uwsp.edu/pomer587/cs/plugin_drop.sma
 
	** Admins must find suitable locations for maps not included in this script, and recompile.
 
	Commands:
		admin_drop <user>
 
	*** Special note:  The coordinates 0,0,0 are reserved, and should not be used as a destination location.
 
*/
/*
===================Insert the following code with appropriate map name and coordinates=======================================
 
			CheckMap = "<map_name>";
			if (streq(MapName,CheckMap)) {
				x = #n;
				y = #n;
				z = #n;
			}
*/
 
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
 
 
public plugin_init() 
{
	plugin_registercmd("admin_drop","admin_drop",ACCESS_IMMUNITY,"admin_drop <user>: Drops user to predefined location.");
 
	return PLUGIN_CONTINUE;
}
 
 
 
PlayFallScream() {
	new i;
	new iMaxPlayers = maxplayercount();
	new Name[MAX_NAME_LENGTH];
	new UserID;
	new WONID;
 
	if (getvar("admin_fx") != 0) {
		for (i = 1; i <= iMaxPlayers; i++) {
			if (playerinfo(i,Name,MAX_NAME_LENGTH,UserID,WONID) != 0) {
				playsound(Name, "ambience/fallscream.wav");
			}
		}
	}
}
 
 
public admin_drop(HLCommand,HLData,HLUserName,UserIndex) {
 
	new Command[MAX_COMMAND_LENGTH];
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Text[MAX_TEXT_LENGTH];
	new TargetName[MAX_NAME_LENGTH];
	new MapName[MAX_NAME_LENGTH];
	new CheckMap[MAX_NAME_LENGTH];
	new x = 0, y = 0, z = 0;
 
 
	convert_string(HLCommand,Command,MAX_COMMAND_LENGTH);
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_NAME_LENGTH);
 
	get_username(Data,TargetName,MAX_NAME_LENGTH);
 
	if (check_user(TargetName) == 1) {
/*Remove comment slashes to enable Admin immunity*/
		//if(check_immunity(TargetName)==1) {
		//	snprintf(Text, MAX_TEXT_LENGTH, "Laf. You can't drop '%s', you silly bear.", TargetName);
		//	say(Text);
		//} else {
			currentmap(MapName,MAX_NAME_LENGTH);
 
			CheckMap = "as_oilrig";
			if (streq(MapName,CheckMap)) {
				x = -508;
				y = -1620;
				z = -197;
			}
			CheckMap = "cs_747";
			if (streq(MapName,CheckMap)) {
				x = -118;
				y = -2736;
				z = 731;
			}
			CheckMap = "cs_assault";
			if (streq(MapName,CheckMap)) {
				x = 61;
				y = 1131;
				z = 603;
			}
			CheckMap = "cs_backalley";
			if (streq(MapName,CheckMap)) {
				x = 1340;
				y = 2241;
				z = 267;
			}
			CheckMap = "cs_italy";
			if (streq(MapName,CheckMap)) {
				x = -655;
				y = -1441;
				z = 475;
			}
			CheckMap = "cs_militia";
			if (streq(MapName,CheckMap)) {
				x = 248;
				y = -1493;
				z = 439;
			}
			CheckMap = "cs_siege";
			if (streq(MapName,CheckMap)) {
				x = -1026;
				y = 2364;
				z = 603;
			}
			CheckMap = "de_aztec";
			if (streq(MapName,CheckMap)) {
				x = 192;
				y = -604;
				z = 987;
			}
			CheckMap = "de_cbble";
			if (streq(MapName,CheckMap)) {
				x = -229;
				y = 2322;
				z = 347;
			}
			CheckMap = "de_dust";
			if (streq(MapName,CheckMap)) {
				x = -1055;
				y = 710;
				z = 187;
			}
			CheckMap = "de_dust2";
			if (streq(MapName,CheckMap)) {
				x = -434;
				y = 1381;
				z = 315;
			}
			CheckMap = "de_foption";
			if (streq(MapName,CheckMap)) {
				x = 100;
				y = 100;
				z = 519;
			}
			CheckMap = "de_jeepathon2k";
			if (streq(MapName,CheckMap)) {
				x = 1294;
				y = -2061;
				z = 987;
			}
			CheckMap = "de_prodigy";
			if (streq(MapName,CheckMap)) {
				x = 3463;
				y = -687;
				z = -427;
			}
			CheckMap = "de_rats";
			if (streq(MapName,CheckMap)) {
				x = -41;
				y = -219;
				z = 488;
			}
			CheckMap = "de_storm";
			if (streq(MapName,CheckMap)) {
				x = 70;
				y = 769;
				z = 227;
			}
			CheckMap = "de_survivor";
			if (streq(MapName,CheckMap)) {
				x = 842;
				y = 810;
				z = 251;
			}
			CheckMap = "de_vegas";
			if (streq(MapName,CheckMap)) {
				x = 2981;
				y = -3237;
				z = 323;
			}
			CheckMap = "de_vertigo";
			if (streq(MapName,CheckMap)) {
				x = -1761;
				y = 1062;
				z = -179;
			}
 
/*Insert new maps above this line*/
 
			if((x!=0)&&(y!=0)&&(z!=0)) {
				execclient(TargetName,"+duck");
				teleport(TargetName,x,y,z+200);
				PlayFallScream();
				teleport(TargetName,x,y,z);
				snprintf(Text, MAX_TEXT_LENGTH, "'%s' was thrown to the earth for attacking his fellow man!", TargetName);
				typesay(Text,5,255,0,0);
				execclient(TargetName,"-duck");
			} else {
				snprintf(Text, MAX_TEXT_LENGTH, "No coordinates found for '%s'.", MapName);
				selfmessage(Text);
			}
/*Remove comment slashes to enable Admin immunity*/
		//}
	} else {
		selfmessage("Unrecognized player: ");
		selfmessage(TargetName);
	}
	return PLUGIN_HANDLED;
}