#include <a_samp>
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_RED 0xAA3333AA
new apdialog;
new healthdialog;
new armourdialog;
new skindialog;
new ChosenPlayer[MAX_PLAYERS];
new Muted[MAX_PLAYERS];
new Jailed[MAX_PLAYERS];
main()
{
	print("\n**********************************");
	print(" Admin Pannel By Butthead");
	print("**********************************\n");
}
public OnPlayerText(playerid, text[])
{
	if(Muted[playerid] == 1)
	{
		SendClientMessage(playerid,COLOR_RED,"У вас мут, вы не можете говорить!");
		return 0;
	}
	return 1;
}
public OnPlayerConnect(playerid)
{
	return 1;
}
public OnPlayerClickPlayer(playerid, clickedplayerid, source)
{
	if(IsPlayerAdmin(playerid))
	{
		new string[300];
		format(string,sizeof(string),"Бан\nКик\nУбить\nПодкинуть\nВзорвать\nТП к игроку\nТП игрока к себе\nМут\nСнять мут\nПосадить\nВыпустить\nСделать не убиваемым\nСделать убиваемым\nИзменить скин\nЗдоровье\nБроня");
		ShowPlayerDialog(playerid,apdialog,DIALOG_STYLE_LIST,"Выберетие опцию",string,"Использовать","Выйти");
		ChosenPlayer[playerid] = clickedplayerid;
	}
	return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
	new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z,Float:Angle; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid,Angle); GetPlayerPos(ChosenPlayer[playerid],PX,PY,PZ);
	new ClickedPlayerName[MAX_PLAYER_NAME],pName[MAX_PLAYER_NAME],string[128]; GetPlayerName(ChosenPlayer[playerid],ClickedPlayerName,24); GetPlayerName(playerid,pName,24);
	if(dialogid == apdialog && response)
		 {
		 	switch(listitem)
	    	{
		  	case 0://ban
		    {
		        Ban(ChosenPlayer[playerid]);
				format(string,128,"Администратор: %s Забанил игрока %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			case 1://kick
			{
				Kick(ChosenPlayer[playerid]);
				format(string,128,"Администратор: %s Кикнул игрока %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			case 2://kick
			{
				SetPlayerHealth(ChosenPlayer[playerid],0.0);
				format(string,128,"Администратор: %s Убил игрока %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			case 3://slap
			{
				SetPlayerPos(ChosenPlayer[playerid],PX,PY,PZ+10);
                format(string,128,"Администратор: %s Подкинул игрока %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			case 4://explode
			{
			    CreateExplosion(PX, PY, PZ, 12, 7);
			    format(string,128,"Администратор: %s Взорвал игрока %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			case 5://goto
			{
				SetPlayerPos(playerid,PX+1,PY,PZ);
			    format(string,128,"Вы телепортировались %s",ClickedPlayerName);
				SendClientMessage(playerid,0xFFFFFF,string);
			}
			case 6://get
			{
				SetPlayerPos(ChosenPlayer[playerid],X+1,Y,Z);
				format(string,128,"Вы телепортировали %s К себе",ClickedPlayerName);
				SendClientMessage(playerid,0xFFFFFF,string);
			}
			case 7://mute
			{
			if(Muted[ChosenPlayer[playerid]] == 0)
			{
				Muted[ChosenPlayer[playerid]] = 1;
				format(string,128,"Администратор: %s Поставил мут игроку %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			else
			{
			SendClientMessage(playerid,COLOR_RED,"У игрока уже стоит мут");
			}
			}
			case 8://unmute
			{
			if(Muted[ChosenPlayer[playerid]] == 1)
			{
				Muted[ChosenPlayer[playerid]] = 0;
				format(string,128,"Администратор: %s Снял мут с %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			else
			{
			SendClientMessage(playerid,COLOR_RED,"У игрока нету мута");
			}
			}
			case 9://jail
			{
   			if(Jailed[ChosenPlayer[playerid]] == 0)
			{
			    ResetPlayerWeapons(playerid);
			    SetPlayerPos(ChosenPlayer[playerid],197.6661,173.8179,1003.0234);
				SetPlayerInterior(ChosenPlayer[playerid],3);
				Jailed[ChosenPlayer[playerid]] = 1;
				format(string,128,"Администратор: %s Посадил %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			else
			{
			SendClientMessage(playerid,COLOR_RED,"Игрок уже посажен");
			}
			}
			case 10://unjail
			{
			if(Jailed[ChosenPlayer[playerid]] == 1)
			{
			    SetPlayerHealth(ChosenPlayer[playerid],0.0);
				Jailed[ChosenPlayer[playerid]] = 0;
				format(string,128,"Администратор: %s Выпустил %s",pName,ClickedPlayerName);
				SendClientMessageToAll(0xFFFFFF,string);
			}
			else
			{
			SendClientMessage(playerid,COLOR_RED,"Игрок не в тюрьме");
			}
			}
			case 11://make him unkillable
			{
			SetPlayerHealth(ChosenPlayer[playerid],1000);
			format(string,128,"%s Стал неубиваемым",ClickedPlayerName);
			SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
			}
			case 12://make him killable
			{
			SetPlayerHealth(ChosenPlayer[playerid],100.0);
			format(string,128,"%s Стал убиваемым",ClickedPlayerName);
			SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
			}
			case 13://setskin
			{
				ShowPlayerDialog(playerid,135,DIALOG_STYLE_INPUT,"Установите скин","Введите ID скина :","Выбрать","Отмена");
			}
			case 14://sethealth
			{
				ShowPlayerDialog(playerid,246,DIALOG_STYLE_INPUT,"Установите здоровье","Введите число ХП:","Выбрать","Отмена");
			}
			case 15://setarmour
			{
			    ShowPlayerDialog(playerid,035,DIALOG_STYLE_INPUT,"Установите Броню","Введите число Брони","Выбрать","Отмена");
			}
			}
			}
	if(dialogid == 135)
			{
				if(!response)
				{
					SendClientMessage(playerid,COLOR_RED,"Вы отменили");
				}
				if(response)
				{
		    	if(IsNumeric(inputtext))
			    {
				if(IsValidSkin(strval(inputtext)))
				{
					SetPlayerSkin(ChosenPlayer[playerid], strval(inputtext));
					format(string,128,"Администратор: %s Изменил скин %d",pName,strval(inputtext));
					SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
					new string2[128]; format(string2,128,"Вы изменили %s Скин игроку %d",ClickedPlayerName,strval(inputtext));
				}
				else
				{
					SendClientMessage(playerid,COLOR_RED,"Используйте ID от 1 -> 299:");
					SendClientMessage(playerid,COLOR_RED,"8,65,74,86,119,149,208,265,266,267,268,269,270,271,272,273,289");
					ShowPlayerDialog(playerid,skindialog,DIALOG_STYLE_INPUT,"Установите скин","Введите ID скина:","Выбрать","Отменить");
				}
				}
				else
				{
					SendClientMessage(playerid,0xFF0000,"Пожалуйста используйте номер");
					ShowPlayerDialog(playerid,skindialog,DIALOG_STYLE_INPUT,"Установите скин","Введите ID скина:","Выбрать","Отменить");
				}
		}
		}
	if(dialogid == 246)
	{
				if(!response)
				{
					SendClientMessage(playerid,COLOR_RED,"Вы отменили");
				}
				if(response)
				{
				if(IsNumeric(inputtext))
			    {
			    	SetPlayerHealth(ChosenPlayer[playerid],strval(inputtext));
					format(string,128,"Администратор: %s изменил здоровье %d",pName,strval(inputtext));
					SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
					new string2[128]; format(string2,128,"Вы изменили %s здоровье %d",ClickedPlayerName,strval(inputtext));
				}
				else
				{
				SendClientMessage(playerid,0xFF0000,"Пожалуйста введите число");
				ShowPlayerDialog(playerid,healthdialog,DIALOG_STYLE_INPUT,"Измениние ХП","Введите число ХП:","Выбрать","Отменить");
				}
				}
	}
	if(dialogid == 035)
	{
	    		if(!response)
				{
					SendClientMessage(playerid,COLOR_RED,"Вы отменили");
				}
				if(response)
				{
				if(IsNumeric(inputtext))
			    {
			    	SetPlayerArmour(ChosenPlayer[playerid],strval(inputtext));
					format(string,128,"Администратор: %s Изменил броню %d",pName,strval(inputtext));
					SendClientMessage(ChosenPlayer[playerid],COLOR_YELLOW,string);
					new string2[128]; format(string2,128,"Вы изменили %s уровень брони %d",ClickedPlayerName,strval(inputtext));
				}
				else
				{
			    SendClientMessage(playerid,0xFF0000,"Пожалуйста введите число");
			    ShowPlayerDialog(playerid,armourdialog,DIALOG_STYLE_INPUT,"Изменение Брони","Введите число Брони","Выбрать","Отменить");
			    }
			    }
			    }
    return 1;
	
}
stock IsNumeric(string[])
{
	for (new i = 0, j = strlen(string); i < j; i++)
	{
		if (string[i] > '9' || string[i] < '0') return 0;
	}
	return 1;
}
stock IsValidSkin(SkinID)
{
	if((SkinID == 0)||(SkinID == 7)||(SkinID >= 9 && SkinID <= 41)||(SkinID >= 43 && SkinID <= 64)||(SkinID >= 66 && SkinID <= 73)||(SkinID >= 75 && SkinID <= 85)||(SkinID >= 87 && SkinID <= 118)||(SkinID >= 120 && SkinID <= 148)||(SkinID >= 150 && SkinID <= 207)||(SkinID >= 209 && SkinID <= 264)||(SkinID >= 274 && SkinID <= 288)||(SkinID >= 290 && SkinID <= 299)) return true;
	else return false;
}
