#include <amxmodx>
#include <amxmisc>


#define PLUGIN  "UcanBAN + UzaBAN"
#define VERSION "Kuralsiz Ailesi"
#define AUTHOR  "Persians Special Ban"

new const file[] = "addons/amxmodx/configs/yasakliListesi.ini";
new const server[] = "KG";

new str, txtuznlk


public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd("amx_ozelban", "AnaMenu")
	register_clcmd("amx_ucanban", "AnaMenu")
	register_clcmd("amx_uzaban", "AnaMenu")
	register_clcmd("ban", "AnaMenu" )
}

public client_connect(id)    
{
	new yasakli[64], oyuncuid[32], name[32]
	get_user_authid(id ,oyuncuid, 31 )
	get_user_name(id ,name, 31 )
	while( ( str = read_file( file, str, yasakli, 63, txtuznlk ) ) != 0 )
		if( equal( yasakli, oyuncuid ) )
	{
		sayyaz(0, "!g[%s] !y: !t%s !yyasakli oldugu icin sunucudan atildi! Yasakli ID= !g%s",server,name,oyuncuid)
		server_cmd("kick #%d ^"Yasakli oldugun icin sunucudan atildin^"",get_user_userid(id))
	}    
}



public AnaMenu(id) {
	if(!(get_user_flags(id) & ADMIN_RESERVATION))
	{
		RenkliYazi(id,"!g%s !n: !tUzgunum, !nYetkiniz Yeterli Degil.!", server)
		return PLUGIN_HANDLED	
	}
	{
	new menu = menu_create("\rKuralsiz Ailesi \y-> \rOzel Ban Sistemi \y<- ","AnaMenuHandle")
	
	menu_additem(menu , "    ---> KURALSIZBAN \r[\yServere Girisine Engel Koyar\r]", "1", 0)
	
	
	
	menu_setprop(menu,MPROP_EXITNAME,"Cikis ^n^n\yVersion: \r1.5 - KURALSIZ GAMING^n\yby \rODINN BEY");
	
	menu_setprop(menu,MPROP_EXIT,MEXIT_ALL);
	
	menu_display(id,menu)
	return PLUGIN_HANDLED
}
}
public AnaMenuHandle(id, menu, item) {
switch(item) {
	case 0: {
		farklibanmenu(id);
	}
	
}
menu_destroy(menu)
return PLUGIN_HANDLED
}


public farklibanmenu(id){

if(get_user_flags(id) & ADMIN_BAN)
{
	static opcion[64]
	
	formatex(opcion, charsmax(opcion),"\yUCANBAN icin oyuncu sec")
	new iMenu = menu_create(opcion, "farklibanmenudevam")
	
	new players[32], tempid
	new szName[32], szTempid[10]
	new pnum
	
	
	get_players(players, pnum)
	
	for( new i; i<pnum; i++ )
	{
		tempid = players[i]
		if(is_user_connected(tempid)  && !(get_user_flags(tempid) & ADMIN_BAN)){
			get_user_name(tempid, szName, 31)
			num_to_str(tempid, szTempid, 9)
			formatex(opcion, charsmax(opcion), "\w%s", szName)
			menu_additem(iMenu, opcion, szTempid, 0)
		}
		
	}
	
	menu_display(id, iMenu)
	
}
else
{
	RenkliYazi(id,"!t[!g%s!t]!n: Yetkiniz Yeterli Degil", server)
}	
}

public farklibanmenudevam(id, menu, item)
{
if( item == MENU_EXIT )
{
	menu_destroy(menu)
	return PLUGIN_HANDLED
}

new Data[6], Name[64]
new Access, Callback
menu_item_getinfo(menu, item, Access, Data,5, Name, 63, Callback)

new tempid = str_to_num(Data)


cmdFarkliBan(id,tempid)
menu_destroy(menu)
return PLUGIN_HANDLED
}


public cmdFarkliBan(id,banlanan)
{

	if (!banlanan)
	return PLUGIN_HANDLED 
	new authid[32]
	new userid = get_user_userid(banlanan)
	new address[32]
	new abuzer[70]	
	get_user_ip(banlanan, address, 31, 1)
	
	get_user_authid(banlanan, authid, 31)
	
	server_cmd("kick #%d ^"KuralsizBAN ile banlandiniz^";wait;banid 999999999999 %s;wait;writeid", userid, authid)
	
	server_cmd("wait;addip ^"9999999999999^" ^"%s^";wait;writeip", address)
	formatex(abuzer, charsmax(abuzer), file)	
	new abuzer1[300]	
	formatex(abuzer1, charsmax(abuzer1), "%s",authid);	
	write_file(abuzer, abuzer1)	
	RenkliYazi(id,"!t[!g%s!t]!n: !g^"%s^" !t isimli yetkili !g^"%s^" !t isimli oyuncuya !gKURALSIZ BAN ATTI",server ,isimver(id), isimver(banlanan))
	
	new szFile[50]
	new szDate[40]
	get_time("%Y-%m-%d", szDate, charsmax(szDate));
	formatex(szFile, charsmax(szFile), "addons/amxmodx/logs/%s-KURALSIZBAN.txt",szDate)
	new szTime[32],szLog[200]
	get_time( "%H:%M", szTime, charsmax(szTime))
	formatex(szLog, charsmax(szLog), "Admin: %s  Saat: %s  Banlanan: %s  Steamid: %s", isimver(id), szTime,isimver(banlanan),authid);
	write_file(szFile, szLog)
	
	return PLUGIN_HANDLED
}

public isimver(oyuncu){
	new isim[32]
	get_user_name(oyuncu, isim, 31)
	
	return isim;
}

stock sayyaz(const id, const string[], {Float, Sql, Resul,_}:...) {
	
	new msg[191], players[32], count = 1;
	vformat(msg, sizeof msg - 1, string, 3);
	
	replace_all(msg,190,"!g","^4");
	replace_all(msg,190,"!y","^1");
	replace_all(msg,190,"!t","^3");
	
	if(id)
		players[0] = id;
	else
		get_players(players,count,"ch");
	
	for (new i = 0 ; i < count ; i++)
	{
		if (is_user_connected(players[i]))
		{
			message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"),_, players[i]);
			write_byte(players[i]);
			write_string(msg);
			message_end();
		}		
	}
}


stock RenkliYazi(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191];
	vformat(msg, sizeof(msg) - 1, input, 3);
	
	replace_all(msg, sizeof(msg) - 1, "!n", "^x01"); 
	replace_all(msg, sizeof(msg) - 1, "!g", "^x04"); 
	replace_all(msg, sizeof(msg) - 1, "!t", "^x03"); 
	
	if(id) players[0] = id; else get_players(players, count, "ch"); {
		for(new i = 0; i < count; i++)
		{
			if(is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}