/** 
* Created by AMXX-Stuido
* User: ITenGriTR
* Date: 30.04.2020
* Time 00.50
*/
#include <amxmodx>
#include <nvault>

#pragma semicolon 1

/************************************************************************
-= Defines =-
************************************************************************/
#define iD_MaxPlayers	  32
#define iD_MaxClanUser	  50
#define sD_BasicTag       "WEBAilesi"

/************************************************************************
-= Natives =-
************************************************************************/
native nForwardLogin(iN_ID);                                               
native nForwardRegister(iN_ID);                                         
native nForwardExit(iN_ID);                                                   
native nChangePassword(iN_ID); 		             
native nGetUidByID(iN_ID);                                                     
native nIsUidOnline(iN_ID);                                                 
native nGetUidByName(sN_Data[]);                                     
native nIsValidUid(iN_UID); 		         
native nUidOnlineTime(iN_UID); 		         
native nUidLastLogin(iN_UID);                                            
native nUidLastName(iN_UID,sN_Data[],iN_Len);    
native nUidLastSteam(iN_UID,sN_Data[],iN_Len); 
native nUidGetUName(iN_UID,sN_Data[],iN_Len); 
native nUidGetUPass(iN_UID,sN_Data[],iN_Len);    
native nGetLastUid();                             
native nGetLoginFlag(iN_UID);      
native nSetLoginFlag(iN_UID,iN_Flags);                                     
native nSetUidStatus(iN_UID,iN_Status);                
native nGetUidStatus(iN_UID);       
native nCreateAccount(iN_ID,sN_UserName[],sN_UserPassword[]);  

/************************************************************************
-= Veriables =-
************************************************************************/
new iG_Vault,sG_ChatTag[64],sG_OnMenuTag[32],sG_UnderMenuTag[32],iG_ClanCreateAcces,sG_ServerIP[16],iG_Top10KlanID[11];
new sG_ClanCreateName[5][48],sG_ClanCreateDescription[5][64],iG_ClanCreateOptions[5],iG_ClanCreateSlots[5],iG_ClanCreateTime[5],iG_ClanUserSlot[iD_MaxPlayers+1];
new iG_Clan[iD_MaxPlayers+1],iG_Helper[iD_MaxPlayers+1],iG_Helper2[iD_MaxPlayers+1];

/************************************************************************
-= Registers =-
************************************************************************/
public plugin_init(){
	register_plugin
	("Klan Sistemi",
		"2.4",
		"Berk");

	register_clcmd("say /klan","pP_MainMenu");
	register_clcmd("klan_konsol","pP_MainMenu");
	register_clcmd("say /topklanlar","pP_ShowTopKlans");
	
	register_clcmd("Klan_KlanAdi","Klan_KlanAdiX");
	register_clcmd("Klan_KlanAciklamasi","Klan_KlanAciklamasiX");
	register_clcmd("Klan_Kodu","Klan_KoduX");
	
	new iL_Cvar = register_cvar("wa_ChatTag","!n[ !tWEBAilesi !n]");
	get_pcvar_string(iL_Cvar,sG_ChatTag,63);

	new iL_Cvar1 = register_cvar("wa_MenuUstTag","WEBAilesi");
	get_pcvar_string(iL_Cvar1,sG_OnMenuTag,31);

	new iL_Cvar2 = register_cvar("wa_MenuAltTag","WA");
	get_pcvar_string(iL_Cvar2,sG_UnderMenuTag,31);

	new iL_Cvar3 = register_cvar("wa_AdminKlan","0");
	iG_ClanCreateAcces = get_pcvar_num(iL_Cvar3);
	
	get_user_ip(0,sG_ServerIP,15,1);
}
/************************************************************************
-= Menus =-
************************************************************************/
public pP_MainMenu(iP_ID){
	if(nGetUidByID(iP_ID)){
		new iL_Menu = sCreateMenu("Ana Menu","pP_MainMenu_Prcs");
		if(!iG_Clan[iP_ID]){
			sMenuAddItem(iL_Menu,"Klan Olustur","1");
			sMenuAddItem(iL_Menu,"Klana Kodla Katil","2");
			sMenuAddItem(iL_Menu,"Klanlar Listesinden Katil","3");
			sMenuAddItem(iL_Menu,"TOP Klanlar","4");	
		}
		else{
			sMenuAddItem(iL_Menu,"Klan Oyunculari","5");
			sMenuAddItem(iL_Menu,"Klan Ayarlari","6");
			sMenuAddItem(iL_Menu,"Klan Islemleri","7");
			sMenuAddItem(iL_Menu,"Klan Basarimlari","8");
			sMenuAddItem(iL_Menu,"Klan Gecmisi","9");
			sMenuAddItem(iL_Menu,"Klan Bilgileri","10");
			sMenuAddItem(iL_Menu,"Klandan Ayril","11");
		}
		sMenuEnd(iP_ID,iL_Menu);
	}
	else{
		sColoredChat(iP_ID,"!gBunun icin hesabinin olmasi gerekiyor!n!");
	}
}
public pP_MainMenu_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	switch(iL_Item){
		case 1 : {
			if(iG_ClanCreateAcces && ~get_user_flags(iP_ID) & ADMIN_BAN){
				sColoredChat(iP_ID,"!gKlan olusturmak icin yetkiniz bulunmuyor!n!");
				return PLUGIN_CONTINUE;
			}
			new iL_FreeSlot = -1;
			for(new i; i < 5; i++){
				if(iG_ClanCreateSlots[i]){
					if(iG_ClanCreateTime[i] > get_systime()){
						iG_ClanCreateSlots[i] = 0;
						sG_ClanCreateName[i] = "";
						sG_ClanCreateDescription[i] = "";
						iG_ClanCreateOptions[i] = 0;
						iG_ClanCreateTime[i] = 0;
						iL_FreeSlot = i;
						break;
					}
					continue;
				}
				iL_FreeSlot = i;
				break;
			}
			if(iL_FreeSlot == -1){
				sColoredChat(iP_ID,"!gCok fazla oyuncu klan olusturuyor lutfen bekle!n!");
				return PLUGIN_CONTINUE;
			}
			iG_ClanCreateTime[iL_FreeSlot] = get_systime()+60;
			iG_ClanUserSlot[iP_ID] = iL_FreeSlot+1;
			pM_CreateClan(iP_ID);
		}
		case 2 : {
			client_cmd(iP_ID,"messagemode Klan_Kodu");
		}
		case 3 : {
			pM_AllClans(iP_ID);
		}
		case 4 : {
			pP_ShowTopKlans(iP_ID);
		}
		case 5 : {
			pM_ClanUsers(iP_ID);
		}
		case 6 : {
			pM_ClanSettings(iP_ID);
		}
		case 7 : {
			pM_ClanTransaction(iP_ID);
		}
		case 8 : {
			pM_ClanPerformances(iP_ID);
		}
		case 9 : {
			pM_ClanHistory(iP_ID);
		}
		case 10 : {
			pM_ClanInfo(iP_ID);
		}
		case 11 : {
			new iL_ClanID = iG_Clan[iP_ID],iL_Uid = nGetUidByID(iP_ID);
			new iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
			if(iL_Uid == iL_ClanOwnerUID){
				sColoredChat(iP_ID,"!gKlan kurucusu klandan ayrilamaz!n!");
				return PLUGIN_CONTINUE;
			}
			for(new i = 1; i < iD_MaxClanUser+1; i++){
				new iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
				if(!iL_UserUID){
					continue;
				}
				if(iL_UserUID == iL_Uid){
					sSetIntData("clan>%i>users>%i",0,iL_ClanID,i);
					sSetIntData("clan>%i>users>%i>register",0,iL_ClanID,i);
					sSetIntData("clan>%i>userscount",sGetIntData("clan>%i>userscount",iL_ClanID)-1,iL_ClanID);
					sSetIntData("user>%i>clanid",0,iL_UserUID);
					new iL_UserID = nIsUidOnline(iL_UserUID);
					if(iL_UserID){
						iG_Clan[iL_UserID] = 0;	
					}
					sColoredChat(iP_ID,"!gBasarili bir sekilde klandan ayrildiniz!n!");
					break;
				}	
			}		
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public plugin_natives(){
	register_native("nGetClanIDByID","nGetClanIDByIDX");
	register_native("nGetNameByCID","nGetNameByCIDX");
	register_native("nGetDescriptionByCID","nGetDescriptionByCIDX");
	register_native("nGetUserCountByCID","nGetUserCountByCIDX");
	register_native("nGetExpByCID","nGetExpByCIDX");
	register_native("nSetExpByCID","nSetExpByCIDX");
	register_native("nGetLevelByCID","nGetLevelByCIDX");
	register_native("nGetClanUserByCID","nGetClanUserByCIDX");
	register_native("nGetLastClanID","nGetLastClanIDX");
	register_native("nDeleteClanID","nDeleteClanIDX");
	register_native("nSetDescription","nSetDescriptionX");
	register_native("nSetClanName","nSetClanNameX");
	register_native("nClanCreate_MenuOpen","nClanCreate_MenuOpenX");
	register_native("nKlanaKodlaKatil","nKlanaKodlaKatilX");
	register_native("nKlanListesi","nKlanListesiX");
	register_native("nKlanUyeleri","nKlanUyeleriX");
	register_native("nKlanAyarlari","nKlanAyarlariX");
	register_native("nKlanIslemleri","nKlanIslemleriX");
	register_native("nKlanBasarimlari","nKlanBasarimlariX");
	register_native("nKlanGecmisi","nKlanGecmisiX");
	register_native("nKlanBilgileri","nKlanBilgileriX");
	register_native("nKlandanAyrilma","nKlandanAyrilmaX");
}
public nClanCreate_MenuOpenX(){
	new iP_ID = get_param(1);
	pE_ClanOlusturma_Start(iP_ID);
}
public nKlanaKodlaKatilX(){
	new iP_ID = get_param(1);
	pE_ClanaKodlaKatil(iP_ID);
}
public nKlanListesiX(){
	new iP_ID = get_param(1);
	pM_AllClans(iP_ID);
}
public nKlanUyeleriX(){
	new iP_ID = get_param(1);
	pM_ClanUsers(iP_ID);
}
public nKlanAyarlariX(){
	new iP_ID = get_param(1);
	pM_ClanSettings(iP_ID);
}
public nKlanIslemleriX(){
	new iP_ID = get_param(1);
	pM_ClanTransaction(iP_ID);
}
public nKlanBasarimlariX(){
	new iP_ID = get_param(1);
	pM_ClanPerformances(iP_ID);
}
public nKlanGecmisiX(){
	new iP_ID = get_param(1);
	pM_ClanHistory(iP_ID);
}
public nKlanBilgileriX(){
	new iP_ID = get_param(1);
	pM_ClanInfo(iP_ID);
}
public nKlandanAyrilmaX(){
	new iP_ID = get_param(1);
	pE_ClandanAyrilma(iP_ID);
}
public nSetDescriptionX(){
	new sL_Aciklama[55];
	new iL_ClanID = get_param(1);
	get_string(2,sL_Aciklama,54);
	sSetStrData("clan>%i>description",sL_Aciklama,iL_ClanID);
	return 1;
}
public nSetClanNameX(){
	new sL_Aciklama[55];
	new iL_ClanID = get_param(1);
	get_string(2,sL_Aciklama,54);
	sSetStrData("clan>%i>name",sL_Aciklama,iL_ClanID);
	return 1;
}
public pUserExit(iP_ID){
	iG_Clan[iP_ID] = 0;
	iG_ClanUserSlot[iP_ID] = 0;
}
public nDeleteClanIDX(){
	new iL_ID = get_param(1);
	new iL_ClanID = iL_ID,iL_UserUID,iL_UserID;
	sSetStrData("clan>%i>name","",iL_ClanID);
	sSetStrData("clan>%i>description","",iL_ClanID);
	sSetStrData("clan>%i>tag","",iL_ClanID);
	sSetIntData("clan>%i>options",0	,iL_ClanID);
	sSetIntData("clan>%i>createtime",0,iL_ClanID);
	sSetIntData("clan>%i>exp",0,iL_ClanID);
	sSetIntData("clan>%i>level",0,iL_ClanID);
	for(new i = 1; i < iD_MaxClanUser+1; i++){
		iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
		if(!iL_UserUID){
			continue;
		}
		sSetIntData("clan>%i>users>%i",0,iL_ClanID,i);
		sSetIntData("clan>%i>users>%i>register",0,iL_ClanID,i);
		sSetIntData("user>%i>clanid",0,iL_UserUID);
		iL_UserID = nIsUidOnline(iL_UserUID);
		if(iL_UserID){
			sColoredChat(iL_UserID,"!gBulundugun kapatildi!n!");
			iG_Clan[iL_UserID] = 0;
		}
	}
	sSetIntData("clan>%i>userscount",0,iL_ClanID);
	sSetIntData("clan>%i>owner",0,iL_ClanID);
	return 1;
}
public nGetLastClanIDX(){
	return pP_GetLastClanID();
}
public nGetClanIDByIDX(){
	new iL_ID = get_param(1);
	return iG_Clan[iL_ID];
}
public nGetNameByCIDX(){
	new iL_ClanID = get_param(1);
	new iL_Len = get_param(2);
	set_string(2,sGetStrData("clan>%i>name",iL_ClanID),iL_Len);	
}
public nGetDescriptionByCIDX(){
	new iL_ClanID = get_param(1);
	new iL_Len = get_param(2);
	set_string(2,sGetStrData("clan>%i>description",iL_ClanID),iL_Len);	
}
public nGetUserCountByCIDX(){
	new iL_ClanID = get_param(1);
	return sGetIntData("clan>%i>userscount",iL_ClanID);
}
public nGetExpByCIDX(){
	new iL_ClanID = get_param(1);
	return sGetIntData("clan>%i>exp",iL_ClanID);
}
public nSetExpByCIDX(){
	new iL_ClanID = get_param(1);
	new iL_ClanAmount = get_param(2);
	sSetIntData("clan>%i>exp",iL_ClanAmount,iL_ClanID);
}
public nGetLevelByCIDX(){
	new iL_ClanID = get_param(1);
	return sGetIntData("clan>%i>level",iL_ClanID);
}
public nGetClanUserByCIDX(){
	new iL_ClanID = get_param(1);
	new iL_UserID = get_param(2);
	return sGetIntData("clan>%i>users>%i",iL_ClanID,iL_UserID);	
}
public nGetClanUserRegByCIDX(){
	new iL_ClanID = get_param(1);
	new iL_UserID = get_param(2);
	return sGetIntData("clan>%i>users>%i>register",iL_ClanID,iL_UserID);	
}
public plugin_cfg(){
	iG_Vault = nvault_open("newClanSystem");
	new iL_LastBest,iL_LastBestPoint,iL_XpCount,iL_Top10Point[11],iL_LastClanID = pP_GetLastClanID();
	for(new i = 1; i < 11; i++){
		iL_LastBest = 0;
		iL_LastBestPoint = 0;
		for(new j = 1; j <= iL_LastClanID; j++){
			iL_XpCount = sGetIntData("clan>%i>exp",j);
			if(i == 1){
				if(iL_XpCount > iL_LastBestPoint){
					iL_LastBestPoint = iL_XpCount;
					iL_LastBest = j;
				}
			}
			else{
				if(iL_XpCount < iL_Top10Point[i-1]){
					if(iL_XpCount > iL_LastBestPoint){
						iL_LastBestPoint = iL_XpCount;
						iL_LastBest = j;
					}
				}
			}
		}
		iG_Top10KlanID[i] = iL_LastBest;
		iL_Top10Point[i] = iL_LastBestPoint;
	}
}
public plugin_end(){
	nvault_close(iG_Vault);
}
public pE_ClandanAyrilma(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID];
	if(iL_ClanID){
		new iL_Uid = nGetUidByID(iP_ID);
		new iL_UserUID;
		new iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
		if(iL_Uid == iL_ClanOwnerUID){
			sColoredChat(iP_ID,"!gKlan kurucusu klandan ayrilamaz!n!");
			return PLUGIN_CONTINUE;
		}
		for(new i = 1; i < iD_MaxClanUser+1; i++){
			iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
			if(!iL_UserUID){
				continue;
			}
			if(iL_UserUID == iL_Uid){
				sSetIntData("clan>%i>users>%i",0,iL_ClanID,i);
				sSetIntData("clan>%i>users>%i>register",0,iL_ClanID,i);
				sSetIntData("clan>%i>userscount",sGetIntData("clan>%i>userscount",iL_ClanID)-1,iL_ClanID);
				sSetIntData("user>%i>clanid",0,iL_UserUID);
				new iL_UserID = nIsUidOnline(iL_UserUID);
				if(iL_UserID){
					iG_Clan[iL_UserID] = 0;	
				}
				sColoredChat(iP_ID,"!gBasarili bir sekilde klandan ayrildiniz!n!");
				break;
			}	
		}		
	}
	return PLUGIN_CONTINUE;
}
public pE_ClanaKodlaKatil(iP_ID){
	client_cmd(iP_ID,"messagemode Klan_Kodu");
}
public pE_ClanOlusturma_Start(iP_ID){
	if(iG_Clan[iP_ID]){
		sColoredChat(iP_ID,"!gZaten klanin var!n!");
		return PLUGIN_CONTINUE;
	}
	if(iG_ClanCreateAcces && ~get_user_flags(iP_ID) & ADMIN_BAN){
		sColoredChat(iP_ID,"!gKlan olusturmak icin yetkiniz bulunmuyor!n!");
		return PLUGIN_CONTINUE;
	}
	new iL_FreeSlot = -1;
	for(new i; i < 5; i++){
		if(iG_ClanCreateSlots[i]){
			if(iG_ClanCreateTime[i] > get_systime()){
				iG_ClanCreateSlots[i] = 0;
				sG_ClanCreateName[i] = "";
				sG_ClanCreateDescription[i] = "";
				iG_ClanCreateOptions[i] = 0;
				iG_ClanCreateTime[i] = 0;
				iL_FreeSlot = i;
				break;
			}
			continue;
		}
		iL_FreeSlot = i;
		break;
	}
	if(iL_FreeSlot == -1){
		sColoredChat(iP_ID,"!gCok fazla oyuncu klan olusturuyor lutfen bekle!n!");
		return PLUGIN_CONTINUE;
	}
	iG_ClanCreateTime[iL_FreeSlot] = get_systime()+60;
	iG_ClanUserSlot[iP_ID] = iL_FreeSlot+1;
	pM_CreateClan(iP_ID);
	return PLUGIN_CONTINUE;
}
public Klan_KoduX(iP_ID){
	new sL_Message[10];
	read_args(sL_Message,9);
	remove_quotes(sL_Message);
	new iL_UserUID = nGetUidByID(iP_ID);
	if(!iL_UserUID){
		sColoredChat(iP_ID,"!gSenin yurudugun yolda ayak izim var!n!");
		return PLUGIN_CONTINUE;	
	}
	if(iG_Clan[iP_ID]){
		sColoredChat(iP_ID,"!gZaten bir klana sahipsiniz!n!");
		return PLUGIN_CONTINUE;		
	}
	new iL_ClanID = sGetIntData("tags>clantag>%s",sL_Message);
	if(!iL_ClanID){
		sColoredChat(iP_ID,"!gAradigniz sonuclara uygun klan bulunamadi!n!");
		return PLUGIN_CONTINUE;
	}
	new iL_ClanOptions = sGetIntData("clan>%i>options",iL_ClanID);
	if(~iL_ClanOptions & (1<<1)){
		sColoredChat(iP_ID,"!gAradigniz klana katilim kapatilmisn!");
		return PLUGIN_CONTINUE;
	}
	new iL_ClanUserCount = sGetIntData("clan>%i>userscount",iL_ClanID);
	if(iL_ClanUserCount+1 > iD_MaxClanUser){
		sColoredChat(iP_ID,"!gAradigniz klanda cok fazla oyuncu var!n!");
		return PLUGIN_CONTINUE;		
	}
	new iL_FindFreeSlot = pP_FindUserSlot(iL_ClanID),sL_UserName[32];
	sSetIntData("clan>%i>users>%i",iL_UserUID,iL_ClanID,iL_FindFreeSlot);
	sSetIntData("clan>%i>users>%i>register",get_systime(),iL_ClanID,iL_FindFreeSlot);
	sSetIntData("clan>%i>userscount",sGetIntData("clan>%i>userscount",iL_ClanID)+1,iL_ClanID);
	sSetIntData("user>%i>clanid",iL_ClanID,iL_UserUID);
	iG_Clan[iP_ID] = iL_ClanID;
	nUidGetUName(iL_UserUID,sL_UserName,31);
	pP_AddLogToClan(iL_ClanID,"%s adli uye klana katildi",sL_UserName);
	new iL_ClanUserUID,iL_ClanUserID;
	for(new i = 1; i < iD_MaxClanUser+1; i++){
		iL_ClanUserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
		if(!iL_ClanUserUID || iL_ClanUserUID == iP_ID){
			continue;
		}
		iL_ClanUserID = nIsUidOnline(iL_ClanUserUID);
		if(!iL_ClanUserID){
			continue;
		}
		sColoredChat(iL_ClanUserID,"!gBir dost !n[ !t%s !n] !gadli oyuncu klana katildin!n.",sGetUserName(iP_ID));
	}
	sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t%s !n] !gadli klana katildin!n.",sGetStrData("clan>%i>name",iL_ClanID));
	return PLUGIN_CONTINUE;
}
public pM_AllClans(iP_ID){
	if(iG_Clan[iP_ID]){
		sColoredChat(iP_ID,"!gSen suanda zaten bir klandasin!n!");
	}
	else {
		new iL_LastClanID = pP_GetLastClanID(),sL_ToStr[6];
		if(iL_LastClanID){
			new iL_Menu = sCreateMenu("Klana Katil","pM_AllClans_Prcs");
			for(new i = iL_LastClanID-1; i > 0; i-- ){
				if(~sGetIntData("clan>%i>options",i) & (1<<3)){
					continue;
				}
				num_to_str(i,sL_ToStr,5);
				sMenuAddItem(iL_Menu,"%s \d[\y%i\r/\y%i\d]",sL_ToStr,0,sGetStrData("clan>%i>name",i),sGetIntData("clan>%i>userscount",i),iD_MaxClanUser);
			}
			sMenuEnd(iP_ID,iL_Menu);
		}
		else{
			sColoredChat(iP_ID,"!gMalesefki hic bir klan bulunamadi!n!");
		}
	}
}
public pM_AllClans_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	iG_Helper[iP_ID] = iL_Item;
	pM_ClanDetail(iP_ID);
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;	
}
public pM_ClanDetail(iP_ID){
	new iL_ClanID = iG_Helper[iP_ID];
	new iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID),sL_UserName[32];
	nUidGetUName(iL_ClanOwnerUID,sL_UserName,31);
	new iL_Menu = sCreateMenu("Klan Detaylari","pM_ClanDetail_Prcs");
	sMenuAddItem(iL_Menu,"Klan Adi\w: \d[\y%s\d]","1",0,sGetStrData("clan>%i>name",iL_ClanID));
	sMenuAddItem(iL_Menu,"Klan Kurucusu\w: \d[\y%s\d]","1",0,sL_UserName);
	sMenuAddItem(iL_Menu,"Klan Uye Sayisi\w: \d[\y%i\d]","1",0,sGetIntData("clan>%i>userscount",iL_ClanID));
	sMenuAddItem(iL_Menu,"Klan Kurulus Tarihi\w: \d[\y%s Once\d]^n","1",0,sGetDifrenceTime(sGetIntData("clan>%i>createtime",iL_ClanID),get_systime()));
	sMenuAddItem(iL_Menu,"Klana Katil","2");
	sMenuAddItem(iL_Menu,"Klana Katilma","3");
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_ClanDetail_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	switch(iL_Item){
		case 1 : {
			pM_ClanDetail(iP_ID);
		}
		case 2 : {
			new iL_ClanID = iG_Helper[iP_ID];
			new iL_UserUID = nGetUidByID(iP_ID);
			if(iG_Clan[iP_ID]){
				sColoredChat(iP_ID,"!gZaten bir klana sahipsiniz!n!");
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;	
			}
			new iL_ClanOptions = sGetIntData("clan>%i>options",iL_ClanID);
			if(~iL_ClanOptions & (1<<1)){
				sColoredChat(iP_ID,"!gBelirtilen klana alimlar kapatilmisn!");
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			new iL_ClanUserCount = sGetIntData("clan>%i>userscount",iL_ClanID);
			if(iL_ClanUserCount+1 > iD_MaxClanUser){
				sColoredChat(iP_ID,"!gAradigniz klanda cok fazla oyuncu var!n!");
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;	
			}
			new iL_FindFreeSlot = pP_FindUserSlot(iL_ClanID),sL_UserName[32];
			sSetIntData("clan>%i>users>%i",iL_UserUID,iL_ClanID,iL_FindFreeSlot);
			sSetIntData("clan>%i>users>%i>register",get_systime(),iL_ClanID,iL_FindFreeSlot);
			sSetIntData("clan>%i>userscount",sGetIntData("clan>%i>userscount",iL_ClanID)+1,iL_ClanID);
			sSetIntData("user>%i>clanid",iL_ClanID,iL_UserUID);
			iG_Clan[iP_ID] = iL_ClanID;
			nUidGetUName(iL_UserUID,sL_UserName,31);
			pP_AddLogToClan(iL_ClanID,"%s adli uye klana katildi",sL_UserName);
			new iL_ClanUserUID,iL_ClanUserID;
			for(new i = 1; i < iD_MaxClanUser+1; i++){
				iL_ClanUserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
				if(!iL_ClanUserUID || iL_ClanUserUID == iP_ID){
					continue;
				}
				iL_ClanUserID = nIsUidOnline(iL_ClanUserUID);
				if(!iL_ClanUserID){
					continue;
				}
				sColoredChat(iL_ClanUserID,"!gBir dost !n[ !t%s !n] !gadli oyuncu klana katildin!n.",sGetUserName(iP_ID));
			}
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t%s !n] !gadli klana katildin!n.",sGetStrData("clan>%i>name",iL_ClanID));		
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_CreateClan(iP_ID){
	new iL_Menu = sCreateMenu("Klan Olustur","pM_CreateClan_Prcs");
	new iL_FreeSlotID = iG_ClanUserSlot[iP_ID]-1;
	sMenuAddItem(iL_Menu,"Klan Adi\w: \d[\y%s\d]","1",0,strlen(sG_ClanCreateName[iL_FreeSlotID]) ? sG_ClanCreateName[iL_FreeSlotID]:"Girilmedi");
	sMenuAddItem(iL_Menu,"Klan Aciklamasi\w: \d[\y%s\d]","2",0,strlen(sG_ClanCreateDescription[iL_FreeSlotID]) ? sG_ClanCreateDescription[iL_FreeSlotID]:"Girilmedi");
	sMenuAddItem(iL_Menu,"Klana Katilim\w: \d[\y%s\d]","3",0,iG_ClanCreateOptions[iL_FreeSlotID] & (1<<1) ? "Acik":"Kapali");
	sMenuAddItem(iL_Menu,"Klan Bilgileri\w: \d[\y%s\d]","4",0,iG_ClanCreateOptions[iL_FreeSlotID] & (1<<2) ? "Gozuksun":"Gozukmesin");
	sMenuAddItem(iL_Menu,"Klanlar Listesinde\w: \d[\y%s\d]^n","5",0,iG_ClanCreateOptions[iL_FreeSlotID] & (1<<3) ? "Gozuksun":"Gozukmesin");
	sMenuAddItem(iL_Menu,"Klani Olustur","6");
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_CreateClan_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	switch(iL_Item){
		case 1 : {
			client_cmd(iP_ID,"messagemode Klan_KlanAdi");
		}
		case 2 : {
			client_cmd(iP_ID,"messagemode Klan_KlanAciklamasi");
		}
		case 3 : {
			new iL_FreeSlotID = iG_ClanUserSlot[iP_ID]-1;
			if(iG_ClanCreateOptions[iL_FreeSlotID] & (1<<1)){
				iG_ClanCreateOptions[iL_FreeSlotID] &= ~(1<<1);
			}
			else{
				iG_ClanCreateOptions[iL_FreeSlotID] |= (1<<1);
			}
			pM_CreateClan(iP_ID);
		}
		case 4 : {
			new iL_FreeSlotID = iG_ClanUserSlot[iP_ID]-1;
			if(iG_ClanCreateOptions[iL_FreeSlotID] & (1<<2)){
				iG_ClanCreateOptions[iL_FreeSlotID] &= ~(1<<2);
			}
			else{
				iG_ClanCreateOptions[iL_FreeSlotID] |= (1<<2);
			}
			pM_CreateClan(iP_ID);			
		}
		case 5 : {
			new iL_FreeSlotID = iG_ClanUserSlot[iP_ID]-1;
			if(iG_ClanCreateOptions[iL_FreeSlotID] & (1<<3)){
				iG_ClanCreateOptions[iL_FreeSlotID] &= ~(1<<3);
			}
			else{
				iG_ClanCreateOptions[iL_FreeSlotID] |= (1<<3);
			}
			pM_CreateClan(iP_ID);			
		}
		case 6 : {
			new iL_FreeSlotID = iG_ClanUserSlot[iP_ID]-1;
			if(!strlen(iG_ClanCreateOptions[iL_FreeSlotID]) && !strlen(sG_ClanCreateDescription[iL_FreeSlotID])){
				sColoredChat(iP_ID,"!gTum bos alanlari doldurmaniz gerekiyor!n!");
				menu_destroy(iM_ID);
				return PLUGIN_CONTINUE;		
			}
			new iL_LastClanID = pP_GetLastClanID(),iL_UserUID = nGetUidByID(iP_ID),sL_TimeToStr[12],sL_StrToMd5[30],sL_UserName[32];
			pP_AddClanID();
			num_to_str(get_systime(),sL_TimeToStr,11);
			hash_string(sL_TimeToStr,Hash_Md5,sL_StrToMd5,29);
			sSubStr(sL_StrToMd5,6);
			sSetStrData("clan>%i>name",sG_ClanCreateName[iL_FreeSlotID],iL_LastClanID);
			sSetStrData("clan>%i>description",sG_ClanCreateDescription[iL_FreeSlotID],iL_LastClanID);
			sSetStrData("clan>%i>tag",sL_StrToMd5,iL_LastClanID);
			sSetIntData("clan>%i>options",iG_ClanCreateOptions[iL_FreeSlotID],iL_LastClanID);
			sSetIntData("clan>%i>createtime",get_systime(),iL_LastClanID);
			sSetIntData("clan>%i>exp",0,iL_LastClanID);
			sSetIntData("clan>%i>level",0,iL_LastClanID);
			sSetIntData("clan>%i>users>1",iL_UserUID,iL_LastClanID);
			sSetIntData("clan>%i>users>1>register",get_systime(),iL_LastClanID);
			sSetIntData("clan>%i>userscount",1,iL_LastClanID);
			sSetIntData("clan>%i>owner",iL_UserUID,iL_LastClanID);
			sSetIntData("tags>clantag>%s",iL_LastClanID,sL_StrToMd5);
			sSetIntData("user>%i>clanid",iL_LastClanID,iL_UserUID);
			iG_Clan[iP_ID] = iL_LastClanID;
			nUidGetUName(iL_UserUID,sL_UserName,31);
			pP_AddLogToClan(iL_LastClanID,"Klan %s tarafindan kuruldu",sL_UserName);
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t%s !n] !gadli klan kuruldu!n.",sG_ClanCreateName[iL_FreeSlotID]);
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public Klan_KlanAdiX(iP_ID){
	new iL_FreeSlotID = iG_ClanUserSlot[iP_ID];
	if(!iL_FreeSlotID){
		sColoredChat(iP_ID,"!gSenin yurudugun yolda ayak izim var!n!");
		return PLUGIN_CONTINUE;
	}
	new sL_Message[64];
	read_args(sL_Message,63);
	remove_quotes(sL_Message);
	iL_FreeSlotID -= 1;
	copy(sG_ClanCreateName[iL_FreeSlotID],63,sL_Message);
	pM_CreateClan(iP_ID);
	return PLUGIN_CONTINUE;
}
public Klan_KlanAciklamasiX(iP_ID){
	new iL_FreeSlotID = iG_ClanUserSlot[iP_ID];
	if(!iL_FreeSlotID){
		sColoredChat(iP_ID,"!gSenin yurudugun yolda ayak izim var!n!");
		return PLUGIN_CONTINUE;
	}
	new sL_Message[64];
	read_args(sL_Message,63);
	remove_quotes(sL_Message);
	iL_FreeSlotID -= 1;
	copy(sG_ClanCreateDescription[iL_FreeSlotID],63,sL_Message);
	pM_CreateClan(iP_ID);
	return PLUGIN_CONTINUE;
}
public pM_ClanUsers(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID];
	if(iL_ClanID){
		new iL_Menu = sCreateMenu("Klan Oyunculari","pM_ClanUsers_Prcs");
		new sL_ToStr[6],iL_UserUID,sL_Name[32];
		for(new i = 1; i < iD_MaxClanUser+1; i++){
			num_to_str(i,sL_ToStr,5);
			iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
			if(!iL_UserUID){
				continue;
			}
			nUidLastName(iL_UserUID,sL_Name,31);
			sMenuAddItem(iL_Menu,"%s \d[\yDURUM\w:%s\d]",sL_ToStr,0,sL_Name,nIsUidOnline(iL_UserUID) ? "\rAktif":"\rDeaktif");	
		}
		sMenuEnd(iP_ID,iL_Menu);
	}
	else {
		sColoredChat(iP_ID,"!gBir klanda degilsin!n!");	
	}
}
public pM_ClanUsers_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	iG_Helper[iP_ID] = iL_Item;
	if(iG_Helper2[iP_ID] & (1<<1)){
		iG_Helper2[iP_ID] &= ~(1<<1);
		pM_ConsentOwner(iP_ID);
	}
	else{
		pM_ClanUserDetail(iP_ID);
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;

}
public pM_ClanUserDetail(iP_ID){
	new iL_Menu = sCreateMenu("Klan Oyunculari","pM_ClanUserDetail_Prcs");
	new iL_ClanID = iG_Clan[iP_ID],iL_ClanUserID = iG_Helper[iP_ID],iL_UserUID,sL_Name[32],sL_UserName[32];
	iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,iL_ClanUserID);
	nUidLastName(iL_UserUID,sL_Name,31);
	nUidGetUName(iL_UserUID,sL_UserName,31);
	sMenuAddItem(iL_Menu,"Oyundaki Adi\w: \d[\y%s\d]","1",0,sL_Name);
	sMenuAddItem(iL_Menu,"Kullanici Adi\w: \d[\y%s\d]","1",0,sL_UserName);
	sMenuAddItem(iL_Menu,"Kullanici Yetkisi\w: \d[\y%s\d]","1",0,sGetIntData("clan>%i>owner",iL_ClanID) == iL_UserUID ? "Kurucu":"Uye");
	sMenuAddItem(iL_Menu,"Son Giris\w: \d[\y%s Once\d]","1",0,sGetDifrenceTime(nUidLastLogin(iL_UserUID),get_systime()));
	sMenuAddItem(iL_Menu,"Klana Katilim\w: \d[\y%s Once\d]^n","1",0,sGetDifrenceTime(sGetIntData("clan>%i>users>%i>register",iL_ClanID,iL_ClanUserID),get_systime()));
	sMenuAddItem(iL_Menu,"Klandan At","2");
	sMenuEnd(iP_ID,iL_Menu);	
}
public pM_ClanUserDetail_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	switch(iL_Item){
		case 1 : {
			pM_ClanUserDetail(iP_ID);
		}
		case 2 : {
			new iL_ClanID = iG_Clan[iP_ID],iL_ClanUserID = iG_Helper[iP_ID],iL_UserUID,iL_ClanOwnerUID;
			iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
			if(nGetUidByID(iP_ID) != iL_ClanOwnerUID){
				sColoredChat(iP_ID,"!gSadece klan kurucusu uyeyi klandan atabilir!n!");		
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,iL_ClanUserID);
			if(iL_UserUID == iL_ClanOwnerUID){
				sColoredChat(iP_ID,"!gSadece uyeler klandan atabilir!n, !gkuruculugunuzu devir edin!n!");		
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;				
			}
			sSetIntData("clan>%i>users>%i",0,iL_ClanID,iL_ClanUserID);
			sSetIntData("clan>%i>users>%i>register",0,iL_ClanID,iL_ClanUserID);
			sSetIntData("clan>%i>userscount",sGetIntData("clan>%i>userscount",iL_ClanID)-1,iL_ClanID);
			sSetIntData("user>%i>clanid",0,iL_UserUID);
			new iL_UserID = nIsUidOnline(iL_UserUID);
			if(iL_UserID){
				iG_Clan[iL_UserID] = 0;
				sColoredChat(iL_UserID,"!gHey!n, !n[ !t%s !n] !gadli klandan atildin!n.",sGetStrData("clan>%i>name",iL_ClanID));
			}
			new sL_UserName[32];
			nUidGetUName(iL_UserUID,sL_UserName,31);
			pP_AddLogToClan(iL_ClanID,"%s adli uye klandan atildi",sL_UserName);
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_ClanSettings(iP_ID){
	new iL_ClanOptions = sGetIntData("clan>%i>options",iG_Clan[iP_ID]);
	new iL_Menu = sCreateMenu("Klan Ayarlari","pM_ClanSettings_Prcs");
	sMenuAddItem(iL_Menu,"Klana Katilim\w: \d[\y%s\d]","1",0,iL_ClanOptions & (1<<1) ? "Acik":"Kapali");
	sMenuAddItem(iL_Menu,"Klan Bilgileri\w: \d[\y%s\d]","2",0,iL_ClanOptions & (1<<2) ? "Gozuksun":"Gozukmesin");
	sMenuAddItem(iL_Menu,"Klanlar Listesinde\w: \d[\y%s\d]","3",0,iL_ClanOptions & (1<<3) ? "Gozuksun":"Gozukmesin");
	sMenuEnd(iP_ID,iL_Menu);		
}
public pM_ClanSettings_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	new iL_ClanID = iG_Clan[iP_ID];
	new iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
	if(nGetUidByID(iP_ID) != iL_ClanOwnerUID){
		pM_ClanSettings(iP_ID);
		sColoredChat(iP_ID,"!gSadece klan kurucusu klan ayarlarini duzenleyebilir!n!");		
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	if(iL_Item){
		new sL_UserName[32];
		nUidGetUName(iL_ClanOwnerUID,sL_UserName,31);
		pP_AddLogToClan(iL_ClanID,"%s Adli kurucu klan ayarlarini duzenledi",sL_UserName);
	}
	new iL_ClanOptions = sGetIntData("clan>%i>options",iL_ClanID);
	switch(iL_Item){
		case 1 : {
			if(iL_ClanOptions & (1<<1)){
				iL_ClanOptions &= ~(1<<1);
			}
			else{
				iL_ClanOptions |= (1<<1);
			}
			sSetIntData("clan>%i>options",iL_ClanOptions,iL_ClanID);
			pM_ClanSettings(iP_ID);
		}
		case 2 : {
			if(iL_ClanOptions & (1<<1)){
				iL_ClanOptions &= ~(1<<1);
			}
			else{
				iL_ClanOptions |= (1<<1);
			}
			sSetIntData("clan>%i>options",iL_ClanOptions,iL_ClanID);
			pM_ClanSettings(iP_ID);
		}
		case 3 : {
			if(iL_ClanOptions & (1<<1)){
				iL_ClanOptions &= ~(1<<1);
			}
			else{
				iL_ClanOptions |= (1<<1);
			}
			sSetIntData("clan>%i>options",iL_ClanOptions,iL_ClanID);
			pM_ClanSettings(iP_ID);
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_ClanTransaction(iP_ID){
	new iL_Menu = sCreateMenu("Klan Bilgileri","pM_ClanTransaction_Prcs");
	sMenuAddItem(iL_Menu,"Klani Devret","1");
	sMenuAddItem(iL_Menu,"Klani Kapat","2");
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_ClanTransaction_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	new iL_ClanID = iG_Clan[iP_ID];
	new iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
	if(nGetUidByID(iP_ID) != iL_ClanOwnerUID){
		pM_ClanSettings(iP_ID);
		sColoredChat(iP_ID,"!gSadece klan kurucusu klan islemlerini yurutebilir!n!");		
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	switch(iL_Item){
		case 1 : {
			iG_Helper2[iP_ID] |= (1<<1);
			pM_ClanUsers(iP_ID);
		}
		case 2 : {
			pM_CloseClan(iP_ID);
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_ConsentOwner(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID],iL_ClanUserID = iG_Helper[iP_ID],iL_UserUID,iL_ClanOwnerUID,sL_Name[32],sL_UserName[32];
	iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,iL_ClanUserID);
	iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
	if(iL_ClanOwnerUID == iL_UserUID){
		sColoredChat(iP_ID,"!gKlani devretmek icin uye yetkisinde birini secmelisin!n!");		
		return PLUGIN_HANDLED;		
	}
	nUidLastName(iL_UserUID,sL_Name,31);
	nUidGetUName(iL_UserUID,sL_UserName,31);
	new iL_Menu = sCreateMenu("Klan Devir Islemi","pM_ConsentOwner_Prcs");
	sMenuAddItem(iL_Menu,"Klan Adi\w: \d[\y%s\d]","1",0,sGetStrData("clan>%i>name",iL_ClanID));
	sMenuAddItem(iL_Menu,"Oyundaki Adi\w: \d[\y%s\d]","1",0,sL_Name);
	sMenuAddItem(iL_Menu,"Kullanici Adi\w: \d[\y%s\d]","1",0,sL_UserName);
	sMenuAddItem(iL_Menu,"Klana Katilim\w: \d[\y%s Once\d]^n","1",0,sGetDifrenceTime(sGetIntData("clan>%i>users>%i>register",iL_ClanID,iL_ClanUserID),get_systime()));
	sMenuAddItem(iL_Menu,"\rKlani Devret","2");
	sMenuAddItem(iL_Menu,"Klani Devretme","3");
	sMenuEnd(iP_ID,iL_Menu);
	return PLUGIN_HANDLED;		
}
public pM_ConsentOwner_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	switch(iL_Item){
		case 1 : {
			pM_ConsentOwner(iP_ID);
		}
		case 2 : {
			new iL_ClanID = iG_Clan[iP_ID],iL_ClanUserID = iG_Helper[iP_ID],iL_UserUID,iL_ClanOwnerUID,sL_NewOwnerName[32],sL_OldOwnerName[32];
			iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,iL_ClanUserID);
			iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID);
			nUidGetUName(iL_UserUID,sL_NewOwnerName,31);
			nUidGetUName(iL_ClanOwnerUID,sL_OldOwnerName,31);
			sSetIntData("clan>%i>owner",iL_UserUID,iL_ClanID);
			sColoredChat(iP_ID,"!gKlan !n[ !t%s !n] !gadli kurucudan !n[ !t%s !n] !gadli yeni kurucuya devredildi!n.",sL_OldOwnerName,sL_NewOwnerName);
		}
		case 3 : {
			sColoredChat(iP_ID,"!gBasarili bir sekilde!n, !gklan devir islemi iptal edildi!n.");
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_CloseClan(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID];
	new iL_Menu = sCreateMenu("Klan Kapatma Islemi","pM_CloseClan_Prcs");
	sMenuAddItem(iL_Menu,"Klan Adi\w: \d[\y%s\d]^n","1",0,sGetStrData("clan>%i>name",iL_ClanID));
	sMenuAddItem(iL_Menu,"\rKlani Kapat","2");
	sMenuAddItem(iL_Menu,"Klani Kapatma","3");
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_CloseClan_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	switch(iL_Item){
		case 1 : {
			pM_CloseClan(iP_ID);
		}
		case 2 : {
			new iL_ClanID = iG_Clan[iP_ID],iL_UserUID,iL_UserID;
			sSetStrData("clan>%i>name","",iL_ClanID);
			sSetStrData("clan>%i>description","",iL_ClanID);
			sSetStrData("clan>%i>tag","",iL_ClanID);
			sSetIntData("clan>%i>options",0	,iL_ClanID);
			sSetIntData("clan>%i>createtime",0,iL_ClanID);
			sSetIntData("clan>%i>exp",0,iL_ClanID);
			sSetIntData("clan>%i>level",0,iL_ClanID);
			for(new i = 1; i < iD_MaxClanUser+1; i++){
				iL_UserUID = sGetIntData("clan>%i>users>%i",iL_ClanID,i);
				if(!iL_UserUID){
					continue;
				}
				sSetIntData("clan>%i>users>%i",0,iL_ClanID,i);
				sSetIntData("clan>%i>users>%i>register",0,iL_ClanID,i);
				sSetIntData("user>%i>clanid",0,iL_UserUID);
				iL_UserID = nIsUidOnline(iL_UserUID);
				if(iL_UserID){
					sColoredChat(iL_UserID,"!gBulundugun klan kurucusu tarafindan kapatildi!n!");
					iG_Clan[iL_UserID] = 0;
				}
			}
			sSetIntData("clan>%i>userscount",0,iL_ClanID);
			sSetIntData("clan>%i>owner",0,iL_ClanID);
			sColoredChat(iP_ID,"!gBasarili bir sekilde!n, !gklan kapatildi!n.");
		}
		case 3 : {
			sColoredChat(iP_ID,"!gBasarili bir sekilde!n, !gklan kapatilmasi iptal edildi!n.");
		}
	}
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_ClanPerformances(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID],iL_UserCount = sGetIntData("clan>%i>userscount",iL_ClanID),sL_Date[28];
	copy(sL_Date,27,sGetDifrenceTime(sGetIntData("clan>%i>createtime",iL_ClanID),get_systime()));
	new iL_Menu = sCreateMenu("Klan Basarimlari","pM_ClanPerformances_Prcs");
	sMenuAddItem(iL_Menu,"\yUyeSayisi\r: \d[\y%i\w/\y25\d]\w~\d[\y125\rXP\d]","1",0,iL_UserCount);
	sMenuAddItem(iL_Menu,"\yUyeSayisi\r: \d[\y%i\w/\y50\d]\w~\d[\y450\rXP\d]","2",0,iL_UserCount);
	sMenuAddItem(iL_Menu,"\yZamanYoneticisi\r: \d[\y%s\w/\y5 Gün\d]\w~\d[\y150\rXP\d]","3",0,sL_Date);
	sMenuAddItem(iL_Menu,"\yZamanYoneticisi\r: \d[\y%s\w/\y1 Ay\d]\w~\d[\y750\rXP\d]","4",0,sL_Date);
	sMenuAddItem(iL_Menu,"\yZamanYoneticisi\r: \d[\y%s\w/\y2 Ay\d]\w~\d[\y2500\rXP\d]","5",0,sL_Date);
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_ClanPerformances_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	new sL_Data[6],iL_Free;
	menu_item_getinfo(iM_ID,iM_Item,iL_Free,sL_Data,5,_,_,iL_Free);
	new iL_Item = str_to_num(sL_Data);
	new iL_ClanID = iG_Clan[iP_ID];
	if(sGetIntData("clan>%i>missions>%i>complate",iL_ClanID,iL_Item) == 1){
		sColoredChat(iP_ID,"!gBelirtilen basarim zaten alinmis!n!");
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	switch(iL_Item){
		case 1 : {
			new iL_UserCount = sGetIntData("clan>%i>userscount",iL_ClanID);
			if(iL_UserCount < 25){
				sColoredChat(iP_ID,"!gBelirtilen gorevin tamamlanmasi icin !n[!t%i!g/!t25!n] !gkadar olmali!n!",iL_UserCount);
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			sSetIntData("clan>%i>exp",sGetIntData("clan>%i>exp",iL_ClanID)+125,iL_ClanID);
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t25 Uye !n] !ggorevi tamamlandi!n.");
		}
		case 2 : {
			new iL_UserCount = sGetIntData("clan>%i>userscount",iL_ClanID);
			if(iL_UserCount < 50){
				sColoredChat(iP_ID,"!gBelirtilen gorevin tamamlanmasi icin !n[!t%i!g/!t50!n] !gkadar olmali!n!",iL_UserCount);
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			sSetIntData("clan>%i>exp",sGetIntData("clan>%i>exp",iL_ClanID)+450,iL_ClanID);
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t50 Uye !n] !ggorevi tamamlandi!n.");
		}
		case 3 : {
			new iL_CreatedTime = sGetIntData("clan>%i>createtime",iL_ClanID);
			new iL_TimeNow = get_systime();
			if(iL_TimeNow-iL_CreatedTime < 432000){
				sColoredChat(iP_ID,"!gBelirtilen gorevin tamamlanmasi icin !n[!t%s!g/!t5 Gun!n] !gkadar olmali!n!",sGetDifrenceTime(iL_CreatedTime,iL_TimeNow));
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			sSetIntData("clan>%i>exp",sGetIntData("clan>%i>exp",iL_ClanID)+150,iL_ClanID);
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t5 Gun !n] !ggorevi tamamlandi!n.");
		}
		case 4 : {
			new iL_CreatedTime = sGetIntData("clan>%i>createtime",iL_ClanID);
			new iL_TimeNow = get_systime();
			if(iL_TimeNow-iL_CreatedTime < 2592000){
				sColoredChat(iP_ID,"!gBelirtilen gorevin tamamlanmasi icin !n[!t%s!g/!t1 Ay!n] !gkadar olmali!n!",sGetDifrenceTime(iL_CreatedTime,iL_TimeNow));
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			sSetIntData("clan>%i>exp",sGetIntData("clan>%i>exp",iL_ClanID)+750,iL_ClanID);
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t1 Ay !n] !ggorevi tamamlandi!n.");
		}
		case 5 : {
			new iL_CreatedTime = sGetIntData("clan>%i>createtime",iL_ClanID);
			new iL_TimeNow = get_systime();
			if(iL_TimeNow-iL_CreatedTime < 5184000){
				sColoredChat(iP_ID,"!gBelirtilen gorevin tamamlanmasi icin !n[!t%s!g/!t2 Ay!n] !gkadar olmali!n!",sGetDifrenceTime(iL_CreatedTime,iL_TimeNow));
				menu_destroy(iM_ID);
				return PLUGIN_HANDLED;
			}
			sSetIntData("clan>%i>exp",sGetIntData("clan>%i>exp",iL_ClanID)+2500,iL_ClanID);
			sColoredChat(iP_ID,"!gBasarili bir sekilde !n[ !t2 Ay !n] !ggorevi tamamlandi!n.");
		}
	}
	sSetIntData("clan>%i>missions>%i>complate",1,iL_ClanID,iL_Item);
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_ClanHistory(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID],sL_Log[256],sL_Key[64],iL_LastClanLogID = pP_GetLastClanLog(iL_ClanID),iL_AltLogID = iL_LastClanLogID > 25 ? iL_LastClanLogID-25:0;
	new iL_Menu = sCreateMenu("Klan Gecmisi","pM_ClanHistory_Prcs");
	for(new i = iL_LastClanLogID; i > iL_AltLogID; i--){
		formatex(sL_Key,63,"clan>%i>log>%i>message",iL_ClanID,i);
		nvault_get(iG_Vault,sL_Key,sL_Log,255);
		sMenuAddItem(iL_Menu,"%s","1",0,sL_Log);
	}
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_ClanHistory_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	pM_ClanHistory(iP_ID);
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pM_ClanInfo(iP_ID){
	new iL_ClanID = iG_Clan[iP_ID];
	new iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_ClanID),sL_UserName[32];
	nUidGetUName(iL_ClanOwnerUID,sL_UserName,31);
	new iL_Menu = sCreateMenu("Klan Bilgileri","pM_ClanInfo_Prcs");
	sMenuAddItem(iL_Menu,"Klan Adi\w: \d[\y%s\d]","1",0,sGetStrData("clan>%i>name",iL_ClanID));
	sMenuAddItem(iL_Menu,"Klan Kurucusu\w: \d[\y%s\d]","1",0,sL_UserName);
	sMenuAddItem(iL_Menu,"Klan Kodu\w: \d[\y%s\d]","1",0,sGetStrData("clan>%i>tag",iL_ClanID));
	sMenuAddItem(iL_Menu,"Klan Uye Sayisi\w: \d[\y%i\d]","1",0,sGetIntData("clan>%i>userscount",iL_ClanID));
	sMenuAddItem(iL_Menu,"Klan Kurulus Tarihi\w: \d[\y%s Once\d]","1",0,sGetDifrenceTime(sGetIntData("clan>%i>createtime",iL_ClanID),get_systime()));
	sMenuAddItem(iL_Menu,"Klan Xp\w: \d[\y%i\d]","1",0,sGetIntData("clan>%i>exp",iL_ClanID));
	sMenuEnd(iP_ID,iL_Menu);
}
public pM_ClanInfo_Prcs(iP_ID,iM_ID,iM_Item){	
	if(iM_Item == MENU_EXIT){
		menu_destroy(iM_ID);
		return PLUGIN_HANDLED;
	}
	pM_ClanInfo(iP_ID);
	menu_destroy(iM_ID);
	return PLUGIN_HANDLED;
}
public pP_ShowTopKlans(iP_ID){
	new sL_Arg[2126],iL_Num;
	iL_Num += formatex(sL_Arg[iL_Num],2126-iL_Num,"<meta charset=UTF-8><style>body{background:#555;font-family:Arial}th{border-left:1px solid #ADADAD;border-top:1px solid #ADADAD}table{background:#3C3C3C;font-size:11px;color:#FFF;border-right:1px solid #ADADAD;border-bottom:1px solid #ADADAD;padding:3px}h2,h3{color:#FFF}#c{background:#FF9B00;color:#000}img{height:10px;background:#00E930;margin:0 3px}#r{height:10px;background:#B6423C}#clr{background:none;color:#FFF;font-size:20px;border:0}</style>");
	iL_Num += formatex(sL_Arg[iL_Num],2126-iL_Num,"<body><table width=100%% border=0 align=center cellpadding=0 cellspacing=1>");
	iL_Num += formatex(sL_Arg[iL_Num],2126-iL_Num,"<body><tr><th>#<th>Klan Adi<th>Klan Aciklamasi<th>Klan Oyunculari<th>Klan Kurcusu<th>Klan Kurulus Tarihi</tr>");
	new sL_Name[28],iL_TopID,iL_ClanOwnerUID;
	for(new i = 1; i < 11; i++){
		iL_TopID = iG_Top10KlanID[i];
		if(iL_TopID){
			iL_ClanOwnerUID = sGetIntData("clan>%i>owner",iL_TopID);
			nUidLastName(iL_ClanOwnerUID,sL_Name,27);
			if(i % 2 == 0){
				iL_Num += formatex(sL_Arg[iL_Num],2126-iL_Num,"<tr><th>%i<th>%s<th>%s<th>%i/%i<th>%s<th>%s</tr>",i,sGetStrData("clan>%i>name",iL_TopID),sGetStrData("clan>%i>description",iL_TopID),sGetIntData("clan>%i>userscount",iL_TopID),iD_MaxClanUser,sL_Name,sGetDifrenceTime(sGetIntData("clan>%i>createtime",iL_TopID),get_systime()));
			}
			else{
				iL_Num += formatex(sL_Arg[iL_Num],2126-iL_Num,"<tr id=c><th>%i<th>%s<th>%s<th>%i/%i<th>%s<th>%s</tr>",i,sGetStrData("clan>%i>name",iL_TopID),sGetStrData("clan>%i>description",iL_TopID),sGetIntData("clan>%i>userscount",iL_TopID),iD_MaxClanUser,sL_Name,sGetDifrenceTime(sGetIntData("clan>%i>createtime",iL_TopID),get_systime()));
			}
		}
	}
	iL_Num += formatex(sL_Arg[iL_Num],2126-iL_Num,"</table><br><center>Powered By WEBAilesi.COM</center>");
	show_motd(iP_ID,sL_Arg,"TOP10");
}
/************************************************************************
-= Helpers =-
************************************************************************/
public pUserLogged(iP_ID){
	new iL_ClanID =  sGetIntData("user>%i>clanid",nGetUidByID(iP_ID));
	if(iL_ClanID){
		new iL_ClanOptions = sGetIntData("clan>%i>options",iL_ClanID);
		iG_Clan[iP_ID] = iL_ClanID;
		if(iL_ClanOptions & (1<<2)){
			sColoredChat(0,"!t%s !gadli klanin oyuncusu olan !n[ !t%s !n] !ggiris yapti!n!",sGetStrData("clan>%i>name",iG_Clan[iP_ID]),sGetUserName(iP_ID));
		}
	}
}
public pUserRegistered(iP_ID){
	
}
public pUserLoggedMulti(iP_ID){
	
}
public pP_FindUserSlot(iP_ClanID){
	new iL_UserUID;
	for(new i = 1; i < iD_MaxClanUser+1; i++){
		iL_UserUID = sGetIntData("clan>%i>users>%i",iP_ClanID,i);
		if(!iL_UserUID){
			return i;
		}
	}
	return 0;
}
public pP_GetLastClanID(){
	new iL_ClanID = sGetIntData("clan>data>lastid");
	if(!iL_ClanID){
		iL_ClanID = 1;
	}
	return iL_ClanID;
}
public pP_AddClanID(){
	new iL_ClanID = sGetIntData("clan>data>lastid");
	if(!iL_ClanID){
		iL_ClanID = 2;
	}	
	else{
		iL_ClanID += 1;
	}
	sSetIntData("clan>data>lastid",iL_ClanID);
}
public pP_GetLastClanLog(iL_ClanID){
	new iL_LogID = sGetIntData("clan>%i>log>lastid",iL_ClanID);
	return iL_LogID;
}
public pP_AddLogToClan(iL_ClanID,sL_Message[],any:...){
	new sL_FixedData[128],sL_NewData[153],sL_Date[19];
	vformat(sL_FixedData,127,sL_Message,3);
	get_time("%d.%m.%Y",sL_Date,18);
	formatex(sL_NewData,152,"%s > %s",sL_Date,sL_FixedData);
	new iL_LogID = sGetIntData("clan>%i>log>lastid",iL_ClanID);
	iL_LogID += 1;
	sSetStrData("clan>%i>log>%i>message",sL_NewData,iL_ClanID,iL_LogID);
	sSetIntData("clan>%i>log>%i>time",get_systime(),iL_ClanID,iL_LogID);
	sSetIntData("clan>%i>log>lastid",iL_LogID,iL_ClanID);
}

/************************************************************************
-= Stocks =-
************************************************************************/
stock sGetIntData(const sS_Key[],any:...){
	new sL_FixedData[64];
	vformat(sL_FixedData,63,sS_Key,2);
	return nvault_get(iG_Vault,sL_FixedData);
}
stock sSetIntData(const sS_Key[],const iS_Data,any:...){
	new sL_FixedData[64],sL_NumToStr[48];
	vformat(sL_FixedData,63,sS_Key,3);
	num_to_str(iS_Data,sL_NumToStr,47);
	nvault_set(iG_Vault,sL_FixedData,sL_NumToStr);
}
stock sGetStrData(const sS_Key[],any:...){
	new sL_FixedData[64],sL_ReturnedData[256];
	vformat(sL_FixedData,63,sS_Key,2);
	nvault_get(iG_Vault,sL_FixedData,sL_ReturnedData,255);
	return sL_ReturnedData;
}
stock sSetStrData(const sS_Key[],const sS_Data[],any:...){
	new sL_FixedData[64];
	vformat(sL_FixedData,63,sS_Key,3);
	nvault_set(iG_Vault,sL_FixedData,sS_Data);
}
stock sRemoveData(const sS_Key[],any:...){
	new sL_FixedData[64];
	vformat(sL_FixedData,63,sS_Key,2);
	nvault_remove(iG_Vault,sL_FixedData);
}
stock sGetDifrenceTime(const iS_FirstTime,const iS_SecondTime){
	new iL_Difference = iS_SecondTime - iS_FirstTime,sL_ReturnedData[12];
	if(iL_Difference < 60){
		formatex(sL_ReturnedData,11,"Cok Az");
	}
	else if(iL_Difference < 3600){
		iL_Difference /= 60;
		formatex(sL_ReturnedData,11,"%i Dakika",iL_Difference);
	}
	else if(iL_Difference < 86400){
		iL_Difference /= 3600;
		formatex(sL_ReturnedData,11,"%i Saat",iL_Difference);
	}
	else{
		iL_Difference /= 86400;
		formatex(sL_ReturnedData,11,"%i Gun",iL_Difference);
	}
	return sL_ReturnedData;	
}
stock sCreateMenu(const sS_Title[],const sS_Handle[],any:...){
	new sL_NewTitle[256],sL_FixedTitle[256];
	vformat(sL_FixedTitle,255,sS_Title,3);
	formatex(sL_NewTitle,255,"\r[ \w%s \r] \y~\r> \y%s \d[\rPREMIUM\d]",sG_OnMenuTag,sL_FixedTitle);
	new iL_Menu = menu_create(sL_NewTitle,sS_Handle);
	return iL_Menu;
}
stock sMenuAddItem(iS_MenuID,const sS_ItemName[],const sS_ItemInfo[],iS_UseTag = 1,any:...){
	new sL_NewTitle[256],sL_FixedTitle[256];
	vformat(sL_FixedTitle,255,sS_ItemName,5);
	if(iS_UseTag == 1){
		formatex(sL_NewTitle,255,"\d[ \y%s \d] \r~\w> \w%s",sG_UnderMenuTag,sL_FixedTitle);
	}
	else{
		formatex(sL_NewTitle,255,"%s",sL_FixedTitle);
	}
	menu_additem(iS_MenuID,sL_NewTitle,sS_ItemInfo);
}
stock sMenuEnd(iS_ID,iS_MenuID,iS_IsSmall = 1,iS_CanExit = 1,iS_Page = 0){
	menu_setprop(iS_MenuID,MPROP_EXITNAME,"\rCikis");
	menu_setprop(iS_MenuID,MPROP_PERPAGE, iS_IsSmall ? 7:0 ); 
	menu_setprop(iS_MenuID,MPROP_EXIT,iS_CanExit ? MEXIT_ALL:MEXIT_NEVER);
	menu_display(iS_ID,iS_MenuID,iS_Page);	
}
stock sGetUserName(iS_ID){
	new sL_Name[32];
	if(is_user_connected(iS_ID)){
		get_user_name(iS_ID,sL_Name,31);
	}
	else{
		formatex(sL_Name,31,"Bilinmiyor");
	}
	return sL_Name;
}
stock sSubStr(sL_Ipnut[],const iL_From){
	copy(sL_Ipnut,iL_From,sL_Ipnut);
	return iL_From;
}
stock sColoredChat(iP_ID,const sL_Input[],any:...){
	new sL_Message[191],sL_FixedMessage[191];
	vformat(sL_Message,190,sL_Input,3);
	formatex(sL_FixedMessage,190,"%s %s",sG_ChatTag,sL_Message);
	replace_all(sL_FixedMessage,190,"!n","^x01"); 
	replace_all(sL_FixedMessage,190,"!g","^x04"); 
	replace_all(sL_FixedMessage,190,"!t","^x03"); 
	client_print_color(iP_ID,iP_ID,sL_FixedMessage);
}
