Bugfix plugin problem with compile

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
lantimilan
Извън линия
Foreigner
Foreigner
Мнения: 424
Регистриран на: 29 Ное 2017, 22:49
Се отблагодари: 31 пъти
Получена благодарност: 3 пъти

Bugfix plugin problem with compile

Мнение от lantimilan » 26 Фев 2020, 09:01

Hello i find one plugin in google i download i change some thing in lang but i cant compile in my local, can you help somebody :

Код за потвърждение: Избери целия код

#include <amxmisc>
#include <fakemeta>
#pragma compress 1

#pragma semicolon 1

#if AMXX_VERSION_NUM < 182 
    #assert AMX Mod X v1.8.2 or later library required!
#endif

//offsets
const m_iMenu = 205;
const Menu_OFF = 0;
const Menu_ChooseAppearance = 3;

new const Version[]       = "1.0.4s-dev",
			 Build        = 98,
			 Date[]       = "10.12.2016",
			 PluginName[] = "ROM-Protect",
			 CfgFile[]    = "addons/amxmodx/configs/albania-bugfix.cfg",
			 LangFile[]   = "addons/amxmodx/data/lang/albania-bugfix.txt",
			 IniFile[]    = "addons/amxmodx/configs/albania-bugfix.ini",
			 LangType[]   = "%L",
			 NoLogInfo     = -1;

enum INFO
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID    
};

enum
{
    FM_TEAM_T = 1,
    FM_TEAM_CT,
    FM_TEAM_SPECTATOR
};

enum _:AdminLogin
{
	LoginPass[32],
	LoginAccess[32],
	LoginFlag[6]
}

#if !defined MAX_PLAYERS
	#define MAX_PLAYERS 32
#endif

#if AMXX_VERSION_NUM < 183	
	#define MAX_NAME_LENGTH 32
	new AdminNum;
	new bool:IsFlooding[MAX_PLAYERS+1];
	new Float:Flooding[MAX_PLAYERS+1] = {0.0, ...},
			  Flood[MAX_PLAYERS+1] = {0, ...};		  
	enum _:Colors 
	{
		DontChange,
		Red,
		Blue,
		Grey
	}
#endif

new Counter[MAX_PLAYERS+1], LogFile[128], ClSaidSameTh_Count[MAX_PLAYERS+1],
	bool:CorrectName[MAX_PLAYERS+1], bool:IsAdmin[MAX_PLAYERS+1], bool:FirstMsg[MAX_PLAYERS+1],
	bool:Gag[MAX_PLAYERS+1], bool:UnBlockedChat[MAX_PLAYERS+1];
new LastPass[MAX_PLAYERS+1][32], Capcha[MAX_PLAYERS+1][8];
new Trie:LoginName, Trie:DefaultRes;
new PreviousMessage[MAX_PLAYERS+1][192]; 
new bool:IsLangUsed, bool:AdminsReloaded;

new const AllBasicOnChatCommads[][] =
{
	"amx_say", "amx_csay", "amx_psay", "amx_tsay", "amx_chat", "say_team", 
	"say", "amx_gag", "amx_kick", "amx_ban", "amx_banip", "amx_nick", "amx_rcon"
};

new const AllAutobuyCommands[][] =
{
	"cl_autobuy",
	"cl_rebuy",
	"cl_setautobuy",
	"cl_setrebuy"
};

enum _:AllCvars
{
	autobuy_bug,
	utf8_bom,
	Tag,
	cmd_bug,
	spec_bug,
	fake_players,
	fake_players_limit,
	fake_players_type,
	fake_players_punish,
#if AMXX_VERSION_NUM < 183
	admin_chat_flood,
	admin_chat_flood_time,
#endif
	advertise,
	advertise_time,
	delete_custom_hpk,
	delete_vault,
	plug_warn,
	plug_log,
	admin_login,
	admin_login_file,
	admin_login_debug,
	color_bug,
	motdfile,
	anti_pause,
	anti_ban_class,
	info,
	xfakeplayer_spam,
	xfakeplayer_spam_maxchars,
	xfakeplayer_spam_maxsais,
	xfakeplayer_spam_type,
	xfakeplayer_spam_punish,
	xfakeplayer_spam_capcha,
	xfakeplayer_spam_capcha_word,
	protcvars,
	console_say
};

new const CvarName[AllCvars][] = 
{
	"al_autobuy_bug",
	"al_utf8_bom",
	"al_tag",
	"al_cmd_bug",
	"al_spec_bug",
	"al_fake_players",
	"al_fake_players_limit",
	"al_fake_players_type",
	"al_fake_players_punish",
#if AMXX_VERSION_NUM < 183
	"al_admin_chat_flood",
	"al_admin_chat_flood_time",
#endif
	"al_advertise",
	"al_advertise_time",
	"al_delete_custom_hpk",
	"al_delete_vault",
	"al_warn",
	"al_log",
	"al_admin_login",
	"al_admin_login_file",
	"al_admin_login_debug",
	"al_color_bug",
	"al_motdfile",
	"al_anti_pause",
	"al_anti_ban_class",
	"al_give_info",
	"al_xfakeplayer_spam",
	"al_xfakeplayer_spam_maxchars",
	"al_xfakeplayer_spam_maxsais",
	"al_xfakeplayer_spam_type",
	"al_xfakeplayer_spam_punish",
	"al_xfakeplayer_spam_capcha",
	"al_xfakeplayer_spam_capcha_word",
	"al_prot_cvars",
	"al_console_say"
};


#if AMXX_VERSION_NUM >= 183
	enum _:CvarRange
	{
		hasMinValue,
		minValue,
		hasMaxValue,
		maxValue
	}

	new const CvarLimits[AllCvars][CvarRange] = 
	{
		{ 1, 0, 1, 1 },     // al_autobuy_bug
		{ 1, 0, 1, 1 },     // al_utf8_bom
		{ 0, 0, 0, 0 },     // al_tag
		{ 1, 0, 1, 1 },     // al_cmd_bug
		{ 1, 0, 1, 1 },     // al_spec_bug
		{ 1, 0, 1, 1 },     // al_fake_players
		{ 1, 3, 1, 10 },    // al_fake_players_limit
		{ 1, 0, 1, 1 },     // al_fake_players_type
		{ 1, 5, 1, 10080 }, // al_fake_players_punish
		{ 1, 0, 1, 1 },     // al_advertise
		{ 1, 30, 1, 480 },  // al_advertise_time
		{ 1, 0, 1, 1 },     // al_delete_custom_hpk
		{ 1, 0, 1, 2 },     // al_delete_vault
		{ 1, 0, 1, 1 },     // al_warn
		{ 1, 0, 1, 1 },     // al_log
		{ 1, 0, 1, 1 },     // al_admin_login
		{ 0, 0, 0, 0 },     // al_admin_login_file
		{ 1, 0, 1, 1 },     // al_admin_login_debug
		{ 1, 0, 1, 1 },     // al_color_bug
		{ 1, 0, 1, 1 },     // al_motdfile
		{ 1, 0, 1, 1 },     // al_anti_pause
		{ 1, 0, 1, 4 },     // al_anti_ban_class
		{ 1, 0, 1, 1 },     // al_give_info
		{ 1, 0, 1, 2 },     // al_xfakeplayer_spam
		{ 1, 5, 1, 15 },    // al_xfakeplayer_spam_maxchars
		{ 1, 3, 0, 0 },     // al_xfakeplayer_spam_maxsais
		{ 1, 0, 1, 2 },     // al_xfakeplayer_spam_type
		{ 1, 5, 1, 10080 }, // al_xfakeplayer_spam_punish
		{ 1, 0, 1, 1 },     // al_xfakeplayer_spam_capcha
		{ 0, 0, 0, 0 },     // al_xfakeplayer_spam_capcha_word
		{ 1, 0, 1, 1 },     // al_prot_cvars
		{ 1, 0, 1, 1 }      // al_console_say
	};
#endif

new const CvarValue[AllCvars][] =
{
	"1",
	"1",	
	"*ALBANIA-Protect",
	"1",
	"1",
	"1",
	"5",
	"1",
	"10",
#if AMXX_VERSION_NUM < 183
	"1",
	"0.75",
#endif
	"1",
	"120",
	"1",
	"1",
	"1",
	"1",
	"1",
	"users_login.ini",
	"0",
	"1",
	"1",
	"1",
	"2",
	"1",
	"1",
	"12",
	"10",
	"2",
	"5",
	"0",
	"/chat",
	"1",
	"1"
};
	
new PluginCvar[AllCvars];

public plugin_precache()
{	
	registersPrecache();
	
	new CurentDate[15];
	get_localinfo("amxx_logs", LogFile, charsmax(LogFile));
	format(LogFile, charsmax(LogFile), "%s/%s", LogFile, PluginName);
	
	if ( !dir_exists(LogFile) )
	{
		mkdir(LogFile);
	}
	
	get_time("%d-%m-%Y", CurentDate, charsmax(CurentDate));
	format(LogFile, charsmax(LogFile), "%s/%s_%s.log", LogFile, PluginName, CurentDate);
	
	if ( !file_exists(LogFile) )
	{
		write_file(LogFile, "*Ketu ruhen te gjithe aktivitet e dyshimta qe jane zbuluar nga Albania BugFix.^n^n", -1);
	}
	
	if ( file_exists(CfgFile) )
	{
		server_cmd("exec %s", CfgFile);
	}
	
	set_task(5.0, "checkLang");
	set_task(10.0, "checkLangFile");
	set_task(15.0, "checkCfg");
}

public checkCfg()
{
	if ( !file_exists(CfgFile) )
	{
		WriteCfg(false);
	}
	else
	{
		new FilePointer = fopen(CfgFile, "rt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		new Text[121], CurrentVersion[64], bool:IsCurrentVersionUsed;
		formatex(CurrentVersion, charsmax(CurrentVersion), "Verzioni : %s. Modeli : %d. Data Verzionit : %s.", Version, Build, Date);
		
		while ( !feof(FilePointer) )
		{
			fgets(FilePointer, Text, charsmax(Text));
			
			if ( containi(Text, CurrentVersion) != -1 )
			{
				IsCurrentVersionUsed = true;
				break;
			}
		}
		fclose(FilePointer);
		
		if ( !IsCurrentVersionUsed )
		{
			WriteCfg(true);
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				new CvarString[32];
				getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
				logCommand(NoLogInfo, LangType, LANG_SERVER, "AL_UPDATE_CFG", CvarString);
			}
		}
	}
}

public checkLang()
{
	if ( !file_exists(LangFile) )
	{
		WriteLang(false);
	}
	else
	{
		IsLangUsed = false;
		new FilePointer = fopen(LangFile, "rt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		new Text[121], CurrentVersion[64], bool:IsCurrentVersionUsed;
		formatex(CurrentVersion, charsmax(CurrentVersion), "Verzioni : %s. Modeli : %d. Data Verzionit : %s.", Version, Build, Date);
		
		while ( !feof(FilePointer) )
		{
			fgets(FilePointer, Text, charsmax(Text));
			
			if ( contain(Text, CurrentVersion) != -1 )
			{
				IsCurrentVersionUsed = true;
				break;
			}
		}
		fclose(FilePointer);
		
		if ( !IsCurrentVersionUsed )
		{
			register_dictionary("albania-bugfix.txt");
			IsLangUsed = true;
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				new CvarString[32];
				getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
				logCommand(NoLogInfo, LangType, LANG_SERVER, "AL_UPDATE_LANG", CvarString);
			}
			WriteLang(true);
		}
	}
}

public checkLangFile()
{
	if (!IsLangUsed)
	{
		register_dictionary("albania-bugfix.txt");
	}
}

public plugin_init()
{
	registersInit();
	
	if ( getInteger(PluginCvar[advertise]) == 1 )
	{
		set_task(getFloat(PluginCvar[advertise_time]), "showAdvertise", _, _, _, "b", 0);
	}
	
	if ( getInteger(PluginCvar[utf8_bom]) == 1 )
	{
		DefaultRes = TrieCreate();
		TrieSetCell(DefaultRes, "de_storm.res", 1);
		TrieSetCell(DefaultRes, "default.res", 1);
		
		set_task(10.0, "cleanResFiles");
}

public client_connect(Index)
{
	if (getInteger(PluginCvar[cmd_bug]) == 1)
	{
		new Name[MAX_NAME_LENGTH];
		get_user_name(Index, Name, charsmax(Name));
		stringFilter(Name, charsmax(Name));
		set_user_info(Index, "name", Name);
	}
}

public client_authorized(Index)
{	
	new CvarString[32];
	if (getInteger(PluginCvar[fake_players]) == 1)
	{
		if ( clientUseSteamid(Index) )
		{
			query_client_cvar(Index, "fps_max", "checkBot");
		}
	
		new Players[MAX_PLAYERS], PlayersNum, Address[32], Address2[32];
		get_players(Players, PlayersNum, "c");
		for (new i = 0; i < PlayersNum; ++i)
		{
			get_user_ip(Index, Address, charsmax(Address), 1);
			get_user_ip(Players[i], Address2, charsmax(Address2), 1);
			if ( equal(Address, Address2) && !is_user_bot(Index) )
			{
				if ( ++Counter[Index] > getInteger(PluginCvar[fake_players_limit]) )
				{
					getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
					switch ( getInteger(PluginCvar[fake_players_type]) )
					{
						case 0:
						{
							new Limit[8];
							num_to_str(getInteger(PluginCvar[fake_players_limit]), Limit, charsmax(Limit));
							console_print(Index, LangType, LANG_PLAYER, "AL_FAKE_PLAYERS_KICK", CvarString, Limit);
							server_cmd("kick #%d ^"Ju jeni larguar nga serveri. Shiko console.^"", get_user_userid(Index));
						}
						case 1: 
						{
							new Punish[8];
							num_to_str(getInteger(PluginCvar[fake_players_punish]), Punish, charsmax(Punish));
							server_cmd("addip ^"%s^" ^"%s^";wait;writeip", Punish, Address);
							if ( getInteger(PluginCvar[plug_warn]) == 1 )
							{
								new CvarTag[32];
								copy(CvarTag, charsmax(CvarTag), CvarString);
								#if AMXX_VERSION_NUM < 183
									client_print_color(0, Grey, LangType, LANG_PLAYER, "AL_FAKE_PLAYERS", "^3", CvarTag, "^4", Address);
									client_print_color(0, Grey, LangType, LANG_PLAYER, "AL_FAKE_PLAYERS_PUNISH", "^3", CvarTag, "^4", Punish);
								#else
									client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "AL_FAKE_PLAYERS", CvarTag, Address);
									client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "AL_FAKE_PLAYERS_PUNISH", CvarTag, Punish);
								#endif
							}
							if ( getInteger(PluginCvar[plug_log]) == 1 )
							{
								logCommand(NoLogInfo, LangType, LANG_SERVER, "AL_FAKE_PLAYERS_LOG", CvarString, Address);
							}
						}
					}
					break;
				}
			}
		}
	}
	switch ( getInteger(PluginCvar[xfakeplayer_spam]))
	{
		case 1:
		{
			FirstMsg[Index] = true;
			Gag[Index] = false;
		}
		case 2:
		{
			if ( getInteger(PluginCvar[xfakeplayer_spam_capcha]) == 1 )
			{
				new const AllChars[] = 
				{
					'A','B','C','D','E','F','G','H',
					'I','J','K','L','M','N','O','P',
					'Q','R','S','T','U','V','W','X',
					'Y','Z','a','b','c','d','e','f',
					'g','h','i','j','k','l','m','n',
					'o','p','q','r','s','t','u','v',
					'w','x','y','z','0','1','2','3',
					'4','5','6','7','8','9'
				};
				const MatrixSize = sizeof AllChars;
				formatex(Capcha[Index], charsmax(Capcha[]), "%c%c%c%c", AllChars[random(MatrixSize)], AllChars[random(MatrixSize)], AllChars[random(MatrixSize)], AllChars[random(MatrixSize)]);
			}
			else
			{
				getString(PluginCvar[xfakeplayer_spam_capcha_word], CvarString, charsmax(CvarString));
				copy(Capcha[Index], charsmax(Capcha[]), CvarString);
			}
		}
	}
	
} 

#if AMXX_VERSION_NUM < 183
	public client_disconnect(Index)
#else
	public client_disconnected(Index)
#endif
{
	if ( getInteger(PluginCvar[fake_players]) == 1 )
	{
		Counter[Index] = 0;
	}
	if ( getInteger(PluginCvar[xfakeplayer_spam]) == 1 )
	{
		ClSaidSameTh_Count[Index] = 0;
	}
	else
	{
		UnBlockedChat[Index] = false;
	}
	if ( IsAdmin[Index] )
	{
		IsAdmin[Index] = false;
		remove_user_flags(Index);
	}
}

public plugin_end()
{
	switch ( getInteger(PluginCvar[delete_vault]) != 0 )
	{
		case 1:
		{
			write_file(getVaultDir(), "server_language en", -1);
		}
		case 2:
		{
			write_file(getVaultDir(), "server_language al", -1);
		}
	}
	
	if ( getInteger(PluginCvar[delete_custom_hpk]) == 1 )
	{
		new BaseDir[] = "/", DirPointer, File[32];
		
		DirPointer = open_dir(BaseDir, "", 0);
		
		while ( next_file(DirPointer, File, charsmax(File)) )
		{
			if ( File[0] == '.' )
			{
				continue;
			}
			
			if ( containi( File, "custom.hpk" ) != -1 )
			{
				delete_file(File);
				break;
			}
		}
		
		close_dir(DirPointer);
	}
}

public client_infochanged(Index)
{
	if ( !is_user_connected(Index) )
	{
		return;
	}
	
	new CmdBugCvarValue = getInteger(PluginCvar[cmd_bug]), AdminLoginCvarValue = getInteger(PluginCvar[admin_login]);
	if ( CmdBugCvarValue == 1 || AdminLoginCvarValue == 1)
	{
		new NewName[MAX_NAME_LENGTH], OldName[MAX_NAME_LENGTH];
		get_user_name(Index, OldName, charsmax(OldName));
		get_user_info(Index, "name", NewName, charsmax(NewName));
		
		if (equali(NewName, OldName))
		{
			return;
		}
	
		if ( CmdBugCvarValue == 1 )
		{
			stringFilter(NewName, charsmax(NewName));
			set_user_info(Index, "name", NewName);
		}
	
		if ( AdminLoginCvarValue == 1 && IsAdmin[Index] )
		{
			IsAdmin[Index] = false;
			remove_user_flags(Index);
		}
	}
	
	return;
}

public plugin_pause()
{
	if (getInteger(PluginCvar[anti_pause]) == 1)
	{
		new PluginName[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		if (getInteger(PluginCvar[plug_warn]) == 1)
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(0, Grey, LangType, LANG_PLAYER, "AL_PLUGIN_PAUSE", "^3", CvarString, "^4");
			#else
				client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "AL_PLUGIN_PAUSE", CvarString);
			#endif
		}
		
		if (getInteger(PluginCvar[plug_log]) == 1)
		{
			logCommand(NoLogInfo, LangType, LANG_SERVER, "AL_PLUGIN_PAUSE_LOG", CvarString, CvarString);
		}
		
		get_plugin(-1, PluginName, charsmax(PluginName));
		server_cmd("amxx unpause %s", PluginName);
	}
}

public cmdPass(Index)
{
	if ( getInteger(PluginCvar[admin_login]) != 1 )
	{
		return PLUGIN_HANDLED;
	}

	new Name[MAX_NAME_LENGTH], Password[32], CvarString[32];
	
	get_user_name(Index, Name, charsmax(Name));
	read_argv(1, Password, charsmax(Password));
	remove_quotes(Password);
	getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
	if (!Password[0])
	{
		#if AMXX_VERSION_NUM < 183
			client_print_color(Index, Grey, LangType, Index, "AL_ADMIN_WITHOUT_PASS", "^3", CvarString, "^4");
		#else
			client_print_color(Index, print_team_grey, LangType, Index, "AL_ADMIN_WITHOUT_PASS", CvarString);
		#endif
		console_print(Index, LangType, Index, "AL_ADMIN_WITHOUT_PASS_PRINT", CvarString);

		return PLUGIN_HANDLED;
	}

	loadAdminLogin();
	IsAdmin[Index] = false;
	if ( !getAccess(Index, Password, charsmax(Password)) )
	{
		return PLUGIN_HANDLED;
	}
	
	if (!IsAdmin[Index])
	{
		LastPass[Index][0] = EOS;
		if (!CorrectName[Index])
		{		
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "AL_ADMIN_WRONG_NAME", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "AL_ADMIN_WRONG_NAME", CvarString);
			#endif
			console_print(Index, LangType, Index, "AL_ADMIN_WRONG_NAME_PRINT", CvarString);
		}
		else
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "AL_ADMIN_WRONG_PASS", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "AL_ADMIN_WRONG_PASS", CvarString);
			#endif
			console_print(Index, LangType, Index, "AL_ADMIN_WRONG_PASS_PRINT", CvarString);
		}
	}
	else
	{
		if ( equal(LastPass[Index], Password) )
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "AL_ADMIN_ALREADY_LOADED", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "AL_ADMIN_ALREADY_LOADED", CvarString);
			#endif
			console_print(Index, LangType, Index, "AL_ADMIN_ALREADY_LOADED_PRINT", CvarString);
		}
		else
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "AL_ADMIN_LOADED", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "AL_ADMIN_LOADED", CvarString);
			#endif
			console_print(Index, LangType, Index, "AL_ADMIN_LOADED_PRINT", CvarString);

			IsAdmin[Index] = true;
		}
	}

	return PLUGIN_HANDLED;
}

#if AMXX_VERSION_NUM < 183
	public hookAdminChat(Index)
	{
		new Said[2];
		
		read_argv(1, Said, charsmax(Said));

		if (Said[0] != '@')
		{
			return PLUGIN_CONTINUE;
		}

		new Float:maxChat = get_pcvar_float(PluginCvar[admin_chat_flood_time]);

		if (maxChat && getInteger(PluginCvar[admin_chat_flood]) == 1)
		{
			new Float:NexTime = get_gametime();

			if (Flooding[Index] > NexTime)
			{
				if (Flood[Index] >= 3)
				{
					IsFlooding[Index] = true;
					set_task(1.0, "showAdminChatFloodWarning", Index);
					Flooding[Index] = NexTime + maxChat + 3.0;
					return PLUGIN_HANDLED;
				}
				++Flood[Index];
			}
			else
			{
				if (Flood[Index])
				{
					--Flood[Index];
				}
			}
			
			Flooding[Index] = NexTime + maxChat;
		}

		return PLUGIN_CONTINUE;
	}
#endif

#if AMXX_VERSION_NUM < 183
	public showAdminChatFloodWarning(Index)
	{
		if ( IsFlooding[Index] )
		{
			new CvarString[32];
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				client_print_color(Index, Grey, LangType, Index, "AL_ADMIN_CHAT_FLOOD", "^3", CvarString, "^4");
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_ADMIN_CHAT_FLOOD_LOG", CvarString);
			}
			
			IsFlooding[Index] = false;
		}
	}
#endif

public showAdvertise()
{
	new CvarString[32];
	getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
	
	#if AMXX_VERSION_NUM < 183
		client_print_color(0, Grey, LangType, LANG_PLAYER, "AL_ADVERTISE", "^3", CvarString, "^4", "^3", PluginName, "^4", "^3", Version, "^4");
	#else
		client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "AL_ADVERTISE", CvarString, PluginName, Version);
	#endif
}

public cleanResFiles() 
{ 
	new MapsDir[] = "maps"; 
	new const ResExt[] = ".res"; 
	new ResFile[64], Len; 
	new DirPointer = open_dir(MapsDir, ResFile, charsmax(ResFile)); 
	
	if ( !DirPointer )
	{
		return; 
	}
	
	new FullPathFileName[128];
	
	do 
	{ 
		Len = strlen(ResFile);
		
		if ( Len > 4 && equali(ResFile[Len-4], ResExt) ) 
		{ 
			if ( TrieKeyExists(DefaultRes, ResFile) ) 
			{
				continue;
			}
			
			formatex(FullPathFileName, charsmax(FullPathFileName), "%s/%s", MapsDir, ResFile); 
			write_file(FullPathFileName, "/////////////////////////////////////////////////////////////^n", 0); 
		} 
	} 
	while ( next_file(DirPointer, ResFile, charsmax(ResFile)) );
	
	close_dir(DirPointer);
} 


public reloadLogin(Index, level, cid) 
{
	AdminsReloaded = true;
	set_task(1.0, "reloadDelay");
}

public client_command(Index)
{
	if (getInteger(PluginCvar[spec_bug]) == 1)
	{	
		new Command[15];
		read_argv(0, Command, charsmax(Command));
		if (equali(Command, "joinclass") || (equali(Command, "menuselect") && get_pdata_int(Index, m_iMenu) == Menu_ChooseAppearance))
		{
			if (get_user_team(Index) == 3)
			{
				set_pdata_int(Index, m_iMenu, Menu_OFF);
				engclient_cmd(Index, "jointeam", "6");
				return PLUGIN_HANDLED;
			}
		}
	}
	
	if (AdminsReloaded)
	{
		reloadDelay();
	}

	return PLUGIN_CONTINUE;
}

public reloadDelay()
{
	if (!AdminsReloaded)
	{
		return;
	}
	new Players[MAX_PLAYERS], PlayersNum;
	
	get_players(Players, PlayersNum, "ch");
	
	for (new i = 0; i < PlayersNum; ++i)
	{
		if ( IsAdmin[Players[i]] )
		{
			getAccess(Players[i], LastPass[Players[i]], charsmax(LastPass[]));
		}
	}
	
	AdminsReloaded = false;
}

public cvarFunc(Index) 
{ 
	if ( !is_user_admin(Index) )
	{
		return PLUGIN_CONTINUE;
	}
		
	if ( getInteger(PluginCvar[motdfile]) == 1 )
	{
		new Cvar[32], Value[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString)); 
		
		read_argv(1, Cvar, charsmax(Cvar));
		read_argv(2, Value, charsmax(Value));
		
		if ( equali(Cvar, "motdfile") && contain(Value, ".ini") != -1 ) 
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "AL_MOTDFILE", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_MOTDFILE_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	if ( getInteger(PluginCvar[protcvars]) == 1 )
	{
		new Command[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString)); 
		
		read_argv(1, Command, charsmax(Command));
		
		if ( containi(Command, "al_") != -1 )
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "AL_PROTCVARS", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_PROTCVARS_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	return PLUGIN_CONTINUE; 
}

public rconFunc(Index) 
{ 
	if ( !is_user_admin(Index) )
	{
		return PLUGIN_CONTINUE;
	}
	
	if ( getInteger(PluginCvar[motdfile]) == 1 )
	{
		new Command[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		read_args(Command, charsmax(Command));
		
		if ( containi(Command, "motdfile") && contain(Command, ".ini") != -1 ) 
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "AL_MOTDFILE", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_MOTDFILE_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	if ( getInteger(PluginCvar[protcvars]) == 1 )
	{
		new Command[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		read_args(Command, charsmax(Command));
		
		if ( !equali(Command, "al_info") && containi(Command, "al_") != -1 )
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "AL_PROTCVARS", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_PROTCVARS_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	return PLUGIN_CONTINUE; 
}

public hookBanClassCommand(Index)
{ 
	if ( !is_user_admin(Index) )
	{
		return PLUGIN_CONTINUE;
	}
	
	new Value = getInteger(PluginCvar[anti_ban_class]);
	
	if ( Value > 0 )
	{
		new Ip[32], IpNum[4][3], NumStr[1];
		
		read_argv(1, Ip, charsmax(Ip));
		
		if ( containi( Ip, "STEAM") != -1 || containi( Ip, "VALVE") != -1 )
		{
			return PLUGIN_CONTINUE;
		}
		
		for	(new i = 0; i < 4; ++i)
		{
			split(Ip, IpNum[i], charsmax(IpNum[]), Ip, charsmax(Ip), ".");
		}
		
		Value = getInteger(PluginCvar[anti_ban_class]);
		
		if ( Value > 4 )
		{
			Value = 4;
		}
			
		num_to_str(Value, NumStr, charsmax(NumStr));
		
		new CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		switch (Value)
		{
			case 1:
			{
				if ( str_to_num(IpNum[0]) == 0 || str_to_num(IpNum[1]) == 0 || str_to_num(IpNum[2]) == 0 )
				{
					if (getInteger(PluginCvar[plug_warn]) == 1)
					{
						console_print(Index, LangType, Index, "AL_ANTI_BAN_CLASS", CvarString);
					}
					
					if (getInteger(PluginCvar[plug_log]) == 1)
					{
						logCommand(Index, LangType, LANG_SERVER, "AL_ANTI_ANY_BAN_CLASS_LOG", CvarString);
					}
					
					return PLUGIN_HANDLED;
				}
			}
			case 2:
			{
				if ( str_to_num(IpNum[0]) == 0 || str_to_num(IpNum[1]) == 0 )
				{
					if (getInteger(PluginCvar[plug_warn]) == 1)
					{
						console_print(Index, LangType, Index, "AL_ANTI_BAN_CLASS", CvarString);
					}
					
					if (getInteger(PluginCvar[plug_log]) == 1)
					{
						logCommand(Index, LangType, LANG_SERVER, "AL_ANTI_SOME_BAN_CLASS_LOG", CvarString, NumStr);
					}
					
					return PLUGIN_HANDLED;
				}
			}
			case 3:
			{
				if ( str_to_num(IpNum[0]) == 0 )
				{
					if (getInteger(PluginCvar[plug_warn]) == 1)
					{
						console_print(Index, LangType, Index, "AL_ANTI_BAN_CLASS", CvarString);
					}
					
					if (getInteger(PluginCvar[plug_log]) == 1)
					{
						logCommand(Index, LangType, LANG_SERVER, "AL_ANTI_SOME_BAN_CLASS_LOG", CvarString, NumStr);
					}
					
					return PLUGIN_HANDLED;
				}
			}
			default:
			{
				if (getInteger(PluginCvar[plug_warn]) == 1)
				{
					console_print(Index, LangType, Index, "AL_ANTI_BAN_CLASS", CvarString);
				}
				
				if (getInteger(PluginCvar[plug_log]) == 1)
				{
					logCommand(Index, LangType, LANG_SERVER, "AL_ANTI_SOME_BAN_CLASS_LOG", CvarString, NumStr);
				}
				
				return PLUGIN_HANDLED;
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public hookBasicOnChatCommand(Index)
{
	new ColorBugCvarValue = getInteger(PluginCvar[color_bug]), CmdBugCvarValue = getInteger(PluginCvar[cmd_bug]);
	if ( CmdBugCvarValue == 1 || ColorBugCvarValue == 1 )
	{
		new Said[192], bool:IsUsedCmdBug[MAX_PLAYERS+1], bool:IsUsedColorBug[MAX_PLAYERS+1];
		
		read_args(Said, charsmax(Said));
		
		for (new i = 0; i < sizeof Said ; ++i)
		{
			if ( CmdBugCvarValue == 1 && (Said[i] == '#' && isalpha(Said[i+1])) || (Said[i] == '%' && Said[i+1] == 's') )
			{
				IsUsedCmdBug[Index] = true;
				break;
			}
			if ( ColorBugCvarValue == 1 )
			{
				if ( Said[i] == '' || Said[i] == '' || Said[i] == '' )
				{
					IsUsedColorBug[Index] = true;
					break;
				}
			}
		}
		new WarnCvarValue = getInteger(PluginCvar[plug_warn]), LogCvarValue = getInteger(PluginCvar[plug_log]), CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		if ( IsUsedCmdBug[Index] )
		{
			if ( WarnCvarValue == 1 )
			{
				new CvarTag[32];
				copy(CvarTag, charsmax(CvarTag), CvarString);
				
				#if AMXX_VERSION_NUM < 183
					client_print_color( Index, Grey, LangType, Index, "AL_CMD_BUG", "^3", CvarTag, "^4");
				#else
					client_print_color( Index, print_team_grey, LangType, Index, "AL_CMD_BUG", CvarTag);
				#endif
				console_print(Index, LangType, Index, "AL_CMD_BUG_PRINT", CvarTag);
			}
			if ( LogCvarValue == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_CMD_BUG_LOG", CvarString);
			}
			IsUsedCmdBug[Index] = false;
			return PLUGIN_HANDLED;
		}
		if ( IsUsedColorBug[Index] )
		{
			if ( WarnCvarValue == 1 )
			{
				#if AMXX_VERSION_NUM < 183
					client_print_color( Index, Grey, LangType, Index, "AL_COLOR_BUG", "^3", CvarString, "^4");
				#else
					client_print_color( Index, print_team_grey, LangType, Index, "AL_COLOR_BUG", CvarString );
				#endif
			}
			if ( LogCvarValue == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "AL_COLOR_BUG_LOG", CvarString);
			}
			IsUsedColorBug[Index] = false;
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public checkBot(Index, const Var[], const Value[])
{
    if ( equal(Var, "fps_max") && Value[0] == 'B' )
    {
		new CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		if ( getInteger(PluginCvar[plug_log]) == 1 )
		{
			logCommand(Index, LangType, LANG_SERVER, "AL_FAKE_PLAYERS_DETECT_LOG", CvarString);
		}
		
		console_print(Index, LangType, Index, "AL_FAKE_PLAYERS_DETECT", CvarString);
		server_cmd("kick #%d ^"Ju jeni larguar nga serveri. Shiko ne console.^"", get_user_userid(Index));
    }
}

public CheckAutobuyBug(Index)		
{		
	new Command[512];
	new Count = read_argc();
	
	for (new i = 1; i <= Count; ++i)
	{		
		read_argv(i, Command, charsmax(Command));
		if ( getInteger(PluginCvar[autobuy_bug]) == 1 )
		{
			new CvarString[32];
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			if ( checkLong(Command, charsmax(Command)) )
			{		
				if ( getInteger(PluginCvar[plug_warn]) == 1 )
				{		
					#if AMXX_VERSION_NUM < 183		
						client_print_color( Index, Grey, LangType, Index, "AL_AUTOBUY", "^3", CvarString, "^4");		
					#else		
						client_print_color( Index, print_team_grey, LangType, Index, "AL_AUTOBUY", CvarString);
					#endif		
				}
			
				if ( getInteger( PluginCvar[plug_log] ) == 1 )
				{
					logCommand(Index, LangType, LANG_SERVER, "AL_AUTOBUY_LOG", CvarString);
				}
			
				return PLUGIN_HANDLED;		
			}
		}
	}
	
	return PLUGIN_CONTINUE;		
}

public giveClientInfo(Index)
{
	if ( getInteger(PluginCvar[info]) != 1 )
	{
		return PLUGIN_HANDLED;
	}
		
	console_print(Index, "^n^n^nVerzioni : %s. Modeli : %d. Data Verzionit : %s.", Version, Build, Date);
	#if AMXX_VERSION_NUM >= 183
		console_print(Index, "Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro" );
	#else
		console_print(Index, "Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro" );
	#endif
	console_print(Index, ""Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-IsFlooding-bug-fix-t28292.html");
	console_print(Index, "Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro.^n^n^n");
	
	return PLUGIN_HANDLED;
}

public giveServerInfo(Index)
{
	if ( getInteger(PluginCvar[info]) != 1 )
	{
		return PLUGIN_HANDLED;
	}
	
	server_print("^n^n^nVerzioni : %s. Modeli : %d. Data Verzionit : %s.", Version, Build, Date);
	server_print("Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro" );
	server_print("Link zyrtar : "Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-IsFlooding-bug-fix-t28292.html");
	server_print("Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro.");
	server_print("Deshironi ndihme : "Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-IsFlooding-bug-fix-t28292.html ^n");
	server_print("Ky plugin eshte i lire ndalohet keqperdorimi tij.");
	server_print("Plugin eshte krijuar ti ndihmoj serverat per siguri dhe mos te kene probleme te kesaj natyre.");
	server_print("Modifikimi i skedarit mund te behet nga te gjithe per ne gjuhen e tyre.");
	server_print("Copyright 2020-2025");
	
	return PLUGIN_HANDLED;
}

public hookChat(Index)
{
	new Said[192];
	read_args(Said, charsmax(Said));
	
	if ( getInteger(PluginCvar[console_say]) && checkForBinds(Index, Said) == PLUGIN_HANDLED)
	{
		return PLUGIN_HANDLED;
	}
	if (hookForXFakePlayerSpam(Index, Said) == PLUGIN_HANDLED)
	{
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE;
}

checkForBinds(Index, Said[])
{
	if(Said[0] != '^"')
	{
		static Trie:SafeCommands;
		if (SafeCommands == Invalid_Trie)
		{
			SafeCommands = TrieCreate();
			
			if (!file_exists(IniFile))
			{
				write_file(IniFile, "//Ketu do te shtohen komandat e chat te sigurta, njera pas tjetres :^n", 0);
				return PLUGIN_CONTINUE;
			}
			else
			{
				new FilePointer = fopen(IniFile, "rt");
		
				if (!FilePointer) 
				{
					return PLUGIN_CONTINUE;
				}
				
				new Text[121];
				
				while (!feof(FilePointer))
				{
					fgets(FilePointer, Text, charsmax(Text));
					trim(Text);
					
					if ((Text[0] == ';') || !Text[0] || ((Text[0] == '/') && (Text[1] == '/')))
					{
						continue;
					}
					
					strtolower(Text);
					TrieSetCell(SafeCommands, Text, 0);
				}
				fclose(FilePointer);
			}
			goto Valid;
		}
		else
		{
			Valid:
			strtolower(Said);
			if (TrieKeyExists(SafeCommands, Said))
			{
				return PLUGIN_CONTINUE;
			}
			
			new CvarString[32];
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, LANG_PLAYER, "AL_BIND_SPAM", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "AL_BIND_SPAM", CvarString);
			#endif
			return PLUGIN_HANDLED;
		}
		return PLUGIN_CONTINUE;
	}
   
	return PLUGIN_CONTINUE;
}

hookForXFakePlayerSpam(Index, Said[])
{
	new xFakePlayerCvarValue = getInteger(PluginCvar[xfakeplayer_spam]), CvarString[32];
	if (is_user_admin(Index))
	{
		if ( FirstMsg[Index] && xFakePlayerCvarValue == 1 )
		{
			FirstMsg[Index] = false;
		}
		return PLUGIN_CONTINUE;
	}
	getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
	switch( xFakePlayerCvarValue )
	{
		case 1 :
		{
			if (Gag[Index])
			{
				return PLUGIN_HANDLED;
			}
			
			remove_quotes(Said);
	
			if ( strlen(Said) <= getInteger(PluginCvar[xfakeplayer_spam_maxchars])+1 )
			{	
				if ( FirstMsg[Index] )
				{
					FirstMsg[Index] = false;
				}
				return PLUGIN_CONTINUE;
			}
			else
			{
				if ( FirstMsg[Index] )
				{
					FirstMsg[Index] = false;
					ClSaidSameTh_Count[Index]++;
					copy(PreviousMessage[Index], charsmax(PreviousMessage[]), Said);
					return PLUGIN_HANDLED;
				}
			}
	
			if ( ClSaidSameTh_Count[Index]++ > 0 )
			{
				if ( equal(Said, PreviousMessage[Index]) )
				{
					if ( getInteger(PluginCvar[plug_warn]) == 1 )
					{
						#if AMXX_VERSION_NUM < 183
							client_print_color(Index, Grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM_WARN", "^3", CvarString, "^4");
						#else
							client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM_WARN", CvarString);
						#endif
					}		
			
					if ( ClSaidSameTh_Count[Index] >= getInteger(PluginCvar[xfakeplayer_spam_maxsais]) )
					{
						new Address[32];
						get_user_ip(Index, Address, charsmax(Address), 1);
						switch ( getInteger(PluginCvar[xfakeplayer_spam_type]) )
						{
							case 0 :
							{
								#if AMXX_VERSION_NUM < 183
									client_print_color(Index, Grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM_GAG", "^3", CvarString, "^4");
								#else
									client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM_GAG", CvarString);
								#endif
								Gag[Index] = true;
								return PLUGIN_HANDLED; 
							}
							case 1 :
							{
								if ( getInteger(PluginCvar[plug_warn]) == 1 )
								{
									console_print(Index, LangType, Index, "AL_XFAKE_PLAYERS_SPAM_KICK", CvarString);
									server_cmd("kick #%d ^"Ju u larguat nga serveri. Shiko ne console.^"", get_user_userid(Index));
								}
								else
								{
									server_cmd("kick #%d", get_user_userid(Index));
								}
							}
							default :
							{
								new Punish[8];
					
								num_to_str(getInteger(PluginCvar[xfakeplayer_spam_punish]), Punish, charsmax(Punish));
		
								if ( getInteger(PluginCvar[plug_warn]) == 1 )
								{
									new CvarTag[32];
									copy(CvarTag, charsmax(CvarTag), CvarString);
							
									#if AMXX_VERSION_NUM < 183
										client_print_color(0, Grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM", "^3", CvarTag, "^4", Address);
										client_print_color(0, Grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM_PUNISH", "^3", CvarTag, "^4", Punish);
									#else
										client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM", CvarTag, Address);
										client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_SPAM_PUNISH", CvarTag, Punish);
									#endif
					
									console_print(Index, LangType, Index, "AL_XFAKE_PLAYERS_SPAM_BAN", CvarString, Punish);
								}
						
								server_cmd("addip ^"%s^" ^"%s^";wait;writeip", Punish, Address);
							}
						}
				
						if ( getInteger(PluginCvar[plug_log]) == 1 )
						{
							logCommand(NoLogInfo, LangType, LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_LOG", CvarString, Address);
						}
					}
				
					return PLUGIN_HANDLED;
				}
				else
				{
					ClSaidSameTh_Count[Index] = 0;
				}
			}
		}
		case 2:
		{
			remove_quotes(Said);
			if ( !UnBlockedChat[Index] )
			{
				if (equal(Said, Capcha[Index]))
				{
					UnBlockedChat[Index] = true;
					#if AMXX_VERSION_NUM < 183
						client_print_color(Index, Grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT", "^3", CvarString, "^4");
					#else
						client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT", CvarString);
					#endif
					return PLUGIN_HANDLED;
				}
				else
				{	
					#if AMXX_VERSION_NUM < 183
						client_print_color(Index, Grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_CAPCHA", "^3", CvarString, "^4", "^3", Capcha[Index], "^4");
					#else
						client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "AL_XFAKE_PLAYERS_CAPCHA", CvarString, Capcha[Index]);
					#endif
					return PLUGIN_HANDLED;
				}
			}
		}
		default :
		{
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

public delayforSavingLastPass(UserPass[], Index)
{
	copy(LastPass[Index], charsmax(LastPass[]), UserPass);
}

bool:getAccess(Index, UserPass[], len)
{
	new UserName[MAX_NAME_LENGTH], CvarString[32];

	get_user_name(Index, UserName, charsmax(UserName));
	
	if (!(get_user_flags(Index) & ADMIN_RESERVATION))
	{
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		#if AMXX_VERSION_NUM < 183
			client_print_color(Index, Grey, LangType, LANG_PLAYER, "AL_ADMIN_HASNT_SLOT", "^3", CvarString, "^4");
		#else
			client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "AL_ADMIN_HASNT_SLOT", CvarString);
		#endif
		return false;
	}
	
	strtolower(UserName);
#if AMXX_VERSION_NUM < 183
	for (new i = 0; i < AdminNum; ++i)
#else
	for (new i = 0; i < TrieGetSize(LoginName); ++i)
#endif
	{
		if ( TrieKeyExists(LoginName, UserName) )
		{
			CorrectName[Index] = true;
		}
		else
		{
			CorrectName[Index] = false;
			continue;
		}
		new TempData[AdminLogin];
		TrieGetArray(LoginName, UserName, TempData, charsmax(TempData));
		
		if ( equal(TempData[LoginFlag], "f") && CorrectName[Index] )
		{
			if ( equal(TempData[LoginPass], UserPass) || IsAdmin[Index] )
			{
				new Access = read_flags(TempData[LoginAccess]);
				remove_user_flags(Index);
				set_user_flags(Index, Access);
				IsAdmin[Index] = true;
				set_task(0.1, "delayforSavingLastPass", Index, UserPass, len);
			}
			
			break;
		}
	}
	
	return true;
}

public loadAdminLogin()
{
	new Path[64], CvarString[32];
	
	get_localinfo("amxx_configsdir", Path, charsmax(Path));
	getString(PluginCvar[admin_login_file], CvarString, charsmax(CvarString));
	format(Path, charsmax(Path), "%s/%s", Path, CvarString);
	
	if ( !file_exists(Path) )
	{
		new FilePointer = fopen(Path, "wt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		if ( getInteger(PluginCvar[plug_log]) == 1 )
		{
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			logCommand(NoLogInfo, LangType, LANG_SERVER, "AL_FILE_NOT_FOUND", CvarString, Path);
		}
		
		fputs(FilePointer, "; Ketu do te shenohen adminat e sigurt.^n");
		fputs(FilePointer, "; Shembull shtimi adminit : ^"emri^" ^"fjalekalimi^" ^"akceset^" ^"f^"^n");
		
		fclose(FilePointer);
	}
	else
	{
		new FilePointer = fopen(Path, "rt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		if (LoginName == Invalid_Trie)
		{
			LoginName = TrieCreate();
		}
		TrieClear(LoginName);
		
		#if AMXX_VERSION_NUM < 183
			AdminNum = 0;
		#endif
		
		new Text[121], Name[MAX_NAME_LENGTH], Password[32], Access[26], Flags[6], TempData[AdminLogin];
		
		while (!feof(FilePointer))
		{
			fgets(FilePointer, Text, charsmax(Text));

			trim(Text);
		
			if ( (Text[0] == ';') || !Text[0] || ((Text[0] == '/') && (Text[1] == '/')) )
			{
				continue;
			}
		
			if (parse(Text, Name, charsmax(Name), TempData[LoginPass], charsmax(TempData[LoginPass]), 
							TempData[LoginAccess], charsmax(TempData[LoginAccess]), TempData[LoginFlag], charsmax(TempData[LoginFlag])) != 4)
			{
				continue;
			}
		
			strtolower(Name);
			TrieSetArray(LoginName, Name, TempData, charsmax(TempData));
		
			#if AMXX_VERSION_NUM < 183
				++AdminNum;
			#endif
		
			if (getInteger(PluginCvar[admin_login_debug]) == 1)
			{
				server_print(LangType, LANG_SERVER, "AL_ADMIN_DEBUG", Name, Password, Access, Flags);
			}
		}
		
		fclose(FilePointer);
	}

	
}

logCommand(Index, const StandardMessage[], any:...)
{
	new LogMessage[256], Time[32], MapName[64];
	
	get_time(" %H:%M:%S ", Time, charsmax(Time));
	vformat(LogMessage, charsmax(LogMessage), StandardMessage, 3);
	get_mapname(MapName, charsmax(MapName));
	format(LogMessage, charsmax(LogMessage), "L %s|%s| %s", Time, MapName, LogMessage);
	
	if (Index != NoLogInfo)
	{
		new String[32];
		get_user_name(Index, String, charsmax(String));
		#if AMXX_VERSION_NUM < 183
			replace_all(LogMessage, charsmax(LogMessage), "$name$", String);
		#else
			replace_string(LogMessage, charsmax(LogMessage), "$name$", String);
		#endif
			
		get_user_ip(Index, String, charsmax(String), any:true);
		#if AMXX_VERSION_NUM < 183
			replace_all(LogMessage, charsmax(LogMessage), "$ip$", String);
		#else
			replace_string(LogMessage, charsmax(LogMessage), "$ip$", String);
		#endif
			
		if (Index)
		{
			get_user_authid(Index, String, charsmax(String));
		}
		else
		{
			copy(String, charsmax(String), "SERVER");
		}
		#if AMXX_VERSION_NUM < 183
			replace_all(LogMessage, charsmax(LogMessage), "$authid$", String);
		#else
			replace_string(LogMessage, charsmax(LogMessage), "$authid$", String);
		#endif
	}
	
	server_print(LogMessage);
	write_file(LogFile, LogMessage, -1);
}

getString(Cvar, Buffer[], Len)
{
	get_pcvar_string(Cvar, Buffer, Len);
}

getInteger(Cvar)
{
	return get_pcvar_num(Cvar);
}

Float:getFloat(Cvar)
{	
	return get_pcvar_float(Cvar);
} 

registersPrecache()
{
	if (getHldsVersion() < 6027)
	{
		#if AMXX_VERSION_NUM >= 183
			PluginCvar[autobuy_bug] = create_cvar("al_autobuy_bug" ,"1", _, _, true, 0.0, true, 1.0);
			PluginCvar[utf8_bom] = create_cvar("al_utf8_bom", "0", _, _, true, 0.0, true, 1.0);
		#else
			PluginCvar[autobuy_bug] = register_cvar("al_autobuy_bug", "1");
			PluginCvar[utf8_bom] = register_cvar("al_utf8_bom", "0");
		#endif
	}
	else
	{
		#if AMXX_VERSION_NUM >= 183
			PluginCvar[autobuy_bug] = create_cvar("al_autobuy_bug" ,"0", _, _, true, 0.0, true, 1.0);
			PluginCvar[utf8_bom] = create_cvar("al_utf8_bom", "1", _, _, true, 0.0, true, 1.0);
		#else
			PluginCvar[autobuy_bug] = register_cvar("al_autobuy_bug", "0");
			PluginCvar[utf8_bom] = register_cvar("al_utf8_bom", "1");
		#endif
	}
	
	for (new i = 2; i < AllCvars; i++)
	{
		#if AMXX_VERSION_NUM >= 183
			PluginCvar[i] = create_cvar(CvarName[i] ,CvarValue[i], _, _, bool:CvarLimits[i][hasMinValue], float(CvarLimits[i][minValue]),
									  bool:CvarLimits[i][hasMaxValue], float(CvarLimits[i][maxValue]));
		#else
			PluginCvar[i] = register_cvar(CvarName[i] ,CvarValue[i]);
		#endif
	}
}

registersInit()
{
	register_plugin(PluginName, Version, "lspublic.com");
	register_cvar("AL_BugFix", Version, FCVAR_SERVER | FCVAR_SPONLY);
	
	register_clcmd("say", "hookChat");
	register_clcmd("say_team", "hookChat");
	
	for (new i = 0; i < sizeof AllBasicOnChatCommads; ++i)
	{
		register_concmd(AllBasicOnChatCommads[i], "hookBasicOnChatCommand");	
	
	}
	
	#if AMXX_VERSION_NUM < 183
		register_clcmd("say_team", "hookAdminChat");
	#endif
	
	if (getHldsVersion() < 6027)
	{
		for (new i = 0; i < sizeof AllAutobuyCommands; ++i)
		{
			register_clcmd(AllAutobuyCommands[i], "CheckAutobuyBug");
		}
	}
	
	if ( find_plugin_byfile("advanced_bans.amxx") != -1 ) 
		register_concmd("amx_addban", "hookBanClassCommand");
	
	register_concmd("amx_reloadadmins", "reloadLogin");	
	register_concmd("amx_cvar", "cvarFunc");
	register_clcmd("amx_rcon", "rconFunc");
	register_clcmd("login", "cmdPass");
	register_clcmd("al_info", "giveClientInfo");
	register_srvcmd("al_info", "giveServerInfo");
}

public stringFilter(String[], Len)
{
	for (new i = 0; String[i] != 0; ++i)
	{
		if ((String[i] == '#' || String[i] == '+') && isalpha(String[i+1]))
		{
			format(String[i+1], Len, " %s", String[i+1]);
		}
	}
}

bool:clientUseSteamid(Index) 
{	
	new AuthID[35]; 
	get_user_authid(Index, AuthID, charsmax(AuthID) );
	
	return (contain(AuthID , ":") != -1 && containi(AuthID , "STEAM") != -1) ? true : false; 
}

getHldsVersion()
{
	new VersionPonter, VersionString[24], Pos;
	new const VersionSizeNum = 4;
   
	VersionPonter = get_cvar_pointer("sv_version");
	get_pcvar_string(VersionPonter, VersionString, charsmax(VersionString));
	Pos = strlen(VersionString) - VersionSizeNum;
	format(VersionString, VersionSizeNum, "%s", VersionString[Pos]);
	
	return str_to_num(VersionString);
}

bool:checkLong(cCommand[], Len)
{
	new mCommand[512];
	
	while (strlen(mCommand))
	{
		strtok(cCommand, mCommand, charsmax(mCommand), cCommand, Len , ' ', 1);
		if ( strlen( mCommand ) > 31 )
		{
			return true;
		}
	}
	
	return false;
}

getVaultDir()
{
	new BaseDir[128];
	
	get_basedir(BaseDir, charsmax(BaseDir));
	format(BaseDir, charsmax(BaseDir), "%s/data/vault.ini", BaseDir);
	
	if ( file_exists(BaseDir) )
	{
		delete_file(BaseDir);	
	}
	
	return BaseDir;
}

WriteCfg( bool:exist )
{	
	new FilePointer = fopen(CfgFile, "wt"), CvarString[32];
	
	if ( !FilePointer ) 
	{
		return;
	}
	
	writeSignature(FilePointer);
	
	fputs(FilePointer, "// Kontrolloni nese CFG jane ekzekutuar me sukses.^n");
	fputs(FilePointer, "echo ^"*ALBANIA-Protect : Skedari albania-bugfix.cfg eshte gjetur. Ka filluar te mbroj serverin.^"^n^n");
	fputs(FilePointer, "// Cvar      : al_cmd_bug^n");
	fputs(FilePointer, "// Fund      : Shiko biseden dhe gjeni problemet ^"client overflow^" te cilat demtojn lojtaret.^n");
	fputs(FilePointer, "// Ndikim    : Serveri nuk merr asgje, por lojtaret po ^"quit^" pavaresisht se qfare klienti perdor serveri mbet i zbrazet.^n");
	fputs(FilePointer, "// Nota      : -^n");
	fputs(FilePointer, "// Perditesim    : Verzioni 5.0-AL&RKS, plugin mbron serverin nga bug cmd '#'. Plugin po bllokon tani '#' dhe '%' ne chat dhe '#' ne emer.^n");
	fputs(FilePointer, "// Perditesim    : Verzioni 5.0-AL&RKS, plugini behet me e zgjuar, dhe vetem do te bllokoje perdorimet e mundshme te ketij problemi, pra karakteret '#' si '%' mund te perdoren por jo ne te gjitha rastet.^n");
	fputs(FilePointer, "// Perditesim    : Verzioni 5.0-AL&RKS, plugin largon gabim nga karakteret '+' ne emer, ky qe perpiqet te ngaterroje lojtaret ose administratoret (emri i lojtarit nuk shfaqet ne menute).^n");
	fputs(FilePointer, "// Perditesim    : Verzioni 5.0-AL&RKS, Plugini kontrollon gjithashtu komandat themelore qq mund te japin mesazhe chat (sh: amx_say, amx_psay, etc.), eshte e pranishme ne gjitha komandat adminchat.amxx.^n");
	fputs(FilePointer, "// Perditesim    : Verzioni 5.0-AL&RKS, plugini behet me e bute me lojtaret dhe nuk do te zevendesoje me karakteret '#' si '+' me nje hapesire ne emer, por do te vendose nje hapesire pas tyre.^n");
	fputs(FilePointer, "// Vlera 0:  Funksioni eshte i çaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1:  Sulmet jane te bllokuara. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_cmd_bug ^"%d^"^n^n", getInteger(PluginCvar[cmd_bug]));
	}
	else
	{
		fputs(FilePointer, "al_cmd_bug ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_spec_bug^n");
	fputs(FilePointer, "// Fund      : Ndiqni aktivitetin e lojtareve dhe ndaloni se ndryshuari ekipin te spektatori nese ata kane hapur zgjedhjen e menuse se modelit, per te ndaluar specifikimin.^n");
	fputs(FilePointer, "// Ndikim    : Serveri fiket nese ju e pranoni kete Bug.^n");
	fputs(FilePointer, "// Perditesim    : Duke filluar me versionin 5.0-AL&RKS, shtojca nuk ben gabime, keshtu qe nuk do te behen zbulime false.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte i çaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Sulmet jane te bllokuara. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_spec_bug ^"%d^"^n^n", getInteger(PluginCvar[spec_bug]));
	}
	else
	{
		fputs(FilePointer, "al_spec_bug ^"1^"^n^n");
	}

	#if AMXX_VERSION_NUM < 183
		fputs(FilePointer, "// Cvar      : al_admin_chat_flood^n");
		fputs(FilePointer, "// Fund      : Ndiqni aktivitetin e lojtareve qe perdorin biseden e administratorit, nese njerezit perpiqen te permbytin kete bisede ata jane te detyruar.^n");
		fputs(FilePointer, "// Ndikim    : Serveri nuk vuan nga asgje, vetem nese ^"admin chat^"(U@) une jame larguar per shkak : ^"Reliable channel overflowed^".^n");
		fputs(FilePointer, "// Nota      : Kjo veçori eshte e disponueshme vetem per serveret me AMXX 1.8.1 ose AMXX 1.8.2 .^n");
		fputs(FilePointer, "// Vlera 0: Funksioni eshte i çaktivizuar.^n");
		fputs(FilePointer, "// Vlera 1: Sulmet jane te bllokuara. [Default]^n");
		if (exist)
		{
			fprintf(FilePointer, "al_admin_chat_flood ^"%d^"^n", getInteger(PluginCvar[admin_chat_flood]));
		}
		else
		{
			fputs(FilePointer, "al_admin_chat_flood ^"1^"^n^n");  
		}
		
		fputs(FilePointer, "// Cvar      : al_admin_chat_flood_time (Aktivizohe vetem nese ^"al_admin_chat_flood^" eshte vendosur ne 1)^n");
		fputs(FilePointer, "// Perdorimi : Kufizon kohen maksimale te dergimit te disa mesazheve nga i njejti klient ne biseden e administratorit, duke bllokuar keshtu sulmet e tipit. ^"chat overflow^".^n");
		fputs(FilePointer, "// Nota      : Rekomandohet te mos ndryshoni vleren standarde te cvares, ne menyre qe mbrojtja te funksionoje siç duhet.^n");
		if (exist)
		{
			fprintf(FilePointer, "al_admin_chat_flood_time ^"%.2f^"^n", getFloat(PluginCvar[admin_chat_flood_time]));
		}
		else
		{
			fputs(FilePointer, "al_admin_chat_flood_time ^"0.75^"^n^n");
		}
	#endif
		
	fputs(FilePointer, "// Cvar      : al_autobuy_bug^n");		
	fputs(FilePointer, "// Fund      : Ndiqni komandat autobuy / rebuy, dhe nese behen dyshues, ato ndalen.^n");		
	fputs(FilePointer, "// Ndikimi    : Serveri rrezohet nese ju e pranoni kete gabim ose Bug.^n");		
	fputs(FilePointer, "// Nota      : Serveret e motorit HLDS 6xxx nuk jane me te prekshem nga ky problem.^n");		
	fputs(FilePointer, "// Vlera 0: Funksioni eshte i çaktivizuar.^n");		
	fputs(FilePointer, "// Vlera 1: Sulmet jane te bllokuara. [Default]^n");		
	if (exist)		
	{		
		fprintf(FilePointer, "al_autobuy_bug ^"%d^"^n^n", getInteger(PluginCvar[autobuy_bug]));
	}		
	else
	{
		if (getHldsVersion() < 6027)
		{
			fputs(FilePointer, "al_autobuy_bug ^"1^"^n^n");
		}
		else
		{
			fputs(FilePointer, "al_autobuy_bug ^"0^"^n^n");
		}
	}	
	
	fputs(FilePointer, "// Cvar      : al_fake_players^n");
	fputs(FilePointer, "// Fund      : Ajo gjurmon njerezit e lidhur me serverin dhe nderhyn kur numri i njerezve me te njejtin IP tejkalon ate te vendosur ne kuadratin al_fake_players_limit.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri mund te mbahet ne vend (bota qe pret qe keta lojtare te vdesin, por ata nuk do te bejne), dhe lojtaret e vdekur do te lene serverin.^n");
	fputs(FilePointer, "// Nota      : Nese ka disa njerez qe ndajne te njejten lidhje interneti, ato mund të ndalohen (N minuta), ne kete rast ngrini : al_fake_players_limit ose ndalet al_fake_players.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte i çaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Sulmet jane te bllokuara, keni marre banned 30 min. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_fake_players ^"%d^"^n^n", getInteger(PluginCvar[fake_players]));
	}
	else
	{
		fputs(FilePointer, "al_fake_players ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_fake_players_limit (Aktivizohet vetem kur eshte cvar ^"al_fake_players^" ne 1)^n");
	fputs(FilePointer, "// Perdorimi : Kufizon numrin maksimal te njerezve ne te njejten IP, duke bllokuar keshtu sulmet e lojtareve te rreme.^n");
	fputs(FilePointer, "// Nota      : Rekomandohet te mos jete me e ulet se vlera ^"3^".^n");
	if (exist)
	{
		fprintf(FilePointer, "al_fake_players_limit ^"%d^"^n^n", getInteger(PluginCvar[fake_players_limit]));
	}
	else
	{
		fputs(FilePointer, "al_fake_players_limit ^"5^"^n^n");
	} 
	
	fputs(FilePointer, "// Cvar      : al_fake_players_type (Aktivizohet vetem kur eshte cvar ^"al_fake_players^" ne 1)^n");
	fputs(FilePointer, "// Perdorimi : Zgjedhni llojin e mbrojtjes ndaj lojtareve te rreme.^n");
	fputs(FilePointer, "// Nota      : Nese ka shum lojtare me te njejten IP, vendosni nje limit ^"1^".^n");
	fputs(FilePointer, "// Vlera 0: Nese ka shum lojtar me te njejten IP, lojtari ri do te largohet automatikisht nga serveri.^n");
	fputs(FilePointer, "// Vlera 1: Nese ka shum lojtar me te njejten IP, lojtari ri do te merr banned. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_fake_players_type ^"%d^"^n^n", getInteger(PluginCvar[fake_players_type]));
	}
	else
	{
		fputs(FilePointer, "al_fake_players_type ^"1^"^n^n");
	} 
	
	fputs(FilePointer, "// Cvar      : al_fake_players_punish  Aktivizohet kur eshte cvar ^"al_fake_players_type^" tek 1)^n");
	fputs(FilePointer, "// Perdorimi : Ajo bllokon IP-ne e sulmuesit per nje periudhe kohe, te matur ne minuta.^n");
	fputs(FilePointer, "// Nota      : Ne ju rekomandojme qe te mos vendosni nje vlere shume te larte, sepse ne rast te nje zbulimi te pasakte, lojtaret e servereve mund te duhet te vuajne.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_fake_players_punish ^"%d^"^n^n", getInteger(PluginCvar[fake_players_punish]));
	}
	else
	{
		fputs(FilePointer, "al_fake_players_punish ^"10^"^n^n");
	} 
	
	fputs(FilePointer, "// Cvar      : al_delete_custom_hpk");
	fputs(FilePointer, "// Fund      : Ne fund te qdo harte skedari custom.hpk do te fshihet.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri mund te pesoj problemi kur nderrohet harta, mund te zgjate deri 60 sekonda.^n");
	fputs(FilePointer, "// Nota      : Gabim ^"GABIM: nuk mund te hapet custom.hpk^" mund te injorohet sepse nuk ndikon ne server asgje.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Skedari fshihet. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_delete_custom_hpk ^"%d^"^n^n", getInteger(PluginCvar[delete_custom_hpk]));
	}
	else
	{
		fputs(FilePointer, "al_delete_custom_hpk ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_delete_vault^n");
	fputs(FilePointer, "// Fund      : Ne fund te qdo harte skedari vault.ini do te fshihet.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri mund te pesoj problemi kur nderrohet harta, mund te zgjate deri 60 sekonda.^n");
	fputs(FilePointer, "// Nota      : Nese ruani te dhena ne kete skedar (^"vault.ini^"), vendos cvar ne vleren ^"0^".^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte i ndalur.^n");
	fputs(FilePointer, "// Vlera 1: Skedari fshihet dhe vendoset ^"server_language en^" ne vault.ini. [Default]^n");
	fputs(FilePointer, "// Vlera 2: Skedari fshihet dhe vendoset ^"server_language ro^" ne vault.ini.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_delete_vault ^"%d^"^n^n", getInteger(PluginCvar[delete_vault]));
	}
	else
	{
		fputs(FilePointer, "al_delete_vault ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_advertise^n");
	fputs(FilePointer, "// Efekti     : Shfaq mesazhin ku tregon se serveri juaj mbrohet nga Albania-BugFix.^n");
	fputs(FilePointer, "// Nota      : Mesazhi mund te modifikohet tek skedari LANG. (^"data/lang/albania-bugfix.txt^")^n");
	fputs(FilePointer, "// Vlera 0: Mesazhi nuk do te shfaqet.^n");
	fputs(FilePointer, "// Vlera 1: Mesazhi do te jete aktiv dhe do te shfaqet. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_advertise ^"%d^"^n^n", getInteger(PluginCvar[advertise]));
	}
	else
	{
		fputs(FilePointer, "al_advertise ^"1^"^n^n");
	}

	fputs(FilePointer, "// Cvar      : al_advertise_time (Aktivizohet kur cvar eshte ^"al_advertise^" tek 1)^n");
	fputs(FilePointer, "// Perdorimi : Vendos mesazhi te shfaqe nje here ne N sekonda.^n");
	fputs(FilePointer, "// Nota      : Rekomandohet te vendoset qdo 3-4 minutat sepse shpesh mundet me kriju probleme pra spam.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_advertise_time ^"%d^"^n^n", getInteger(PluginCvar[advertise_time]));
	}
	else
	{
		fputs(FilePointer, "al_advertise_time ^"120^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_warn^n");
	fputs(FilePointer, "// Efekti     : Shfaq mesazhet qe njoftojne klientet duke u perpjekur te prishin aktivitetin normal te serverit.^n");
	fputs(FilePointer, "// Nota      : Mesazhi mund te modifikohet tek skedari LANG. (^"data/lang/albania-bugfix.txt^")^n");
	fputs(FilePointer, "// Vlera 0: Mesazhi eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Mesazhi eshte aktiv dhe do te shfaqet. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_warn ^"%d^"^n^n", getInteger(PluginCvar[plug_warn]));
	}
	else
	{
		fputs(FilePointer, "al_warn ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_log");
	fputs(FilePointer, "// Efekti     : Lejon plugini te regjistroj aktivitetin e saj ne server pjes pjes.^n");
	fputs(FilePointer, "// Nota      : Nese fillon kjo do te shfaqet edhe tek consola tek klienti.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni eshte aktiv.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_log ^"%d^"^n^n", getInteger(PluginCvar[plug_log]));
	}
	else
	{
		fputs(FilePointer, "al_log ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_admi_login");
	fputs(FilePointer, "// Fund      : Lejon vertetimin e administratoreve me komande ^ "fjalekalimin hyrese ^" ne tastiere (nuk kerkon setinfo)^n");
	fputs(FilePointer, "// Ndikimi    : Fjalekalimet e administratorit jane shume te lehta per tu vjedhur, mjafton te futesh vetem ne nje server dhe fjalekalimi yt nuk eshte me i sigurt.^n");
	fputs(FilePointer, "// Nota      : Adminat shtohen normalisht ^"emri^" ^"fjalekalimi^" ^"akceset^" ^"f^".^n");
	fputs(FilePointer, "// Perditesimi    : Duke filluar me versionin 5.0-AL-RKS, komanda ne chat! Hyrja ose / hyrja zhduket sepse nuk eshte perdorur.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni eshte aktiv. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_admin_login ^"%d^"^n^n", getInteger(PluginCvar[admin_login]));
	}
	else
	{
		fputs(FilePointer, "al_admin_login ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_admin_login_file (Aktivizohet kur cvar eshte ^"al_admin_login^" tek 1)^n");
	fputs(FilePointer, "// Efekti     : Zgjedhni skedarin nga i cili admini lexon listen akceseve ^"f^"^n");
	fputs(FilePointer, "// Nota      : Preferohet te mos mbivendoset me skedarin e administratoreve "normale", perndryshe disa prej administratoreve te mbrojtur mund te ngarkohen nga shtojca themelore, duke krijuar bezdi..^n");
	if (exist)
	{
		getString(PluginCvar[admin_login_file], CvarString, charsmax(CvarString));
		fprintf(FilePointer, "al_admin_login_file ^"%s^"^n^n", CvarString);
	}
	else
	{
		fputs(FilePointer, "al_admin_login_file ^"users_login.ini^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_admin_login_debug (Aktivizohet kur cvar eshte ^"al_admin_login^" tek 1)^n");
	fputs(FilePointer, "// Efekti     : Nese administratori nuk ngarkon sakte, ai do te shtype ne tastieren e serverit argumentet e leximit (emri - fjalekalimi - hyrja - flamuri).^n");
	fputs(FilePointer, "// Nota      : Nese funksioni eshte filluar, ai mund te krijoje vonese, qellimi i tij eshte vetem te kontrolloni nese administratori eshte vendosur sakte.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar. [Default]^n");
	fputs(FilePointer, "// Vlera 1: Argumentet do te shkruhen ne console.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_admin_login_debug ^"%d^"^n^n", getInteger(PluginCvar[admin_login_debug]));
	}
	else
	{
		fputs(FilePointer, "al_admin_login_debug ^"0^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_utf8_bom^n");
	fputs(FilePointer, "// Fund      : Kontrolloni secilen skedar .res ne harta, dhe nese gjen gjurme UTF8-BOM, do t'i heqe ato.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri eshte prish : Host_Error: PF_precache_generic_I: Bad string.^n");
	fputs(FilePointer, "// Nota      : Gabimi shfaqet vetem tek HLDS 6***.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Dosja eshte dekontaminuar. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_utf8_bom ^"%d^"^n^n", getInteger(PluginCvar[utf8_bom]));
	}
	else
	{
		if (getHldsVersion() >= 6027)
		{
			fputs(FilePointer, "al_utf8_bom ^"1^"^n^n");
		}
		else
		{
			fputs(FilePointer, "al_utf8_bom ^"0^"^n^n");
		}
	}	
	
	fputs(FilePointer, "// Cvar      : al_tag^n");
	fputs(FilePointer, "// Perdorimi : Vendosni etiketen. (Emri tij)^n");
	fputs(FilePointer, "// Nota      : Mundesisht emri i etiketes nuk duhet te kaloje 32 karaktere, perndryshe nuk do te shfaqet siç duhet ne chat.^n");
	fputs(FilePointer, "// Perditesimi    : Ne verzionin e ri, plugini ju mundeson shum gjera te mira.^n");
	if (exist)
	{
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		fprintf(FilePointer, "al_tag ^"%s^"^n^n", CvarString);
	}
	else
	{
		fputs(FilePointer, "al_tag ^"*ALBANIA-Protect^"^n^n");	
	}
	
	fputs(FilePointer, "// Cvar      : al_color_bug^n");
	fputs(FilePointer, "// Fund      : Ndiqni biseden dhe vendosni per te metat me ngjyra qe paralajmerojnë lojtaret dhe administratoret.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri nuk veren asgje, por lojtaret ose administratoret do te alarmohen per ngjyrat e perdorura nga nje prej klienteve.^n");
	fputs(FilePointer, "// Nota      : Nese nuk ndikoheni nga ky bug, rekomandohet te nderpritet funksioni.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Bug eshte bllokuar. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_color_bug ^"%d^"^n^n", getInteger(PluginCvar[color_bug]));
	}
	else
	{
		fputs(FilePointer, "al_color_bug ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_motdfile^n");
	fputs(FilePointer, "// Fund      : Gjurmon veprimtarine e administratoreve permes komandes amx_cvar dhe perpiqet te ndaloje modifikimin e motorit cvar ne nje skedar .ini.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri nuk vjedh asgje, por administratori qe perdor kete shfrytezim mund tëe vjedhe te dhena te rendesishme nga serveri, siç eshte lista e administratoreve, lista e pluginsave, etj..^n");
	fputs(FilePointer, "// Nota      : Se shpejti, do te perdoret nje algoritem shume me i mire dhe me i drejte, por vetem per AMXX 1.8.3 .^n");
	fputs(FilePointer, "// Perditesimi    : Ne verzionin e ri plugin do te ndaloje vjedhjen e amx_rcon.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Bug eshte bllokuar. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_motdfile ^"%d^"^n^n", getInteger(PluginCvar[motdfile]));
	}
	else
	{
		fputs(FilePointer, "al_motdfile ^"1^"^n^n");	
	}
	
	fputs(FilePointer, "// Cvar      : al_anti_pause^n");
	fputs(FilePointer, "// Fund      : Nga kjo rrjedh se plugini i mbrojtjes ^ "ALBANIA-Protect ^" nuk mund te hidhet ne prishje nga nje sulmues.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri nuk mbrohet me nga plugini, i cili eshte e ekspozuar ndaj shfrytezimeve te shumta.^n");
	fputs(FilePointer, "// Nota      : Nese doni te çaktivizoni pluginin, rekomandohet qe ta vendosni kete vlere ne ^"0^".^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Bug eshte bllokuar. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_anti_pause ^"%d^"^n^n", getInteger(PluginCvar[anti_pause]));
	}
	else
	{
		fputs(FilePointer, "al_anti_pause ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_anti_ban_class^n");
	fputs(FilePointer, "// Fund      : Ndiqni aktivitetin e fillimit te amx_addban, ne menyre qe te mos ndaloni shume klasa ip.^n");
	fputs(FilePointer, "// Ndikimi    : Serveri nuk vuan nga asgje, por nese ka para ne klase, shume lojtare nuk do te jene ne gjendje te lidhen me serverin.^n");
	fputs(FilePointer, "// Nota      : Funksioni ndjek vetem komanden amx_addban.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni do te bllokoje komanden nese zbulon ndalimin ne nje klase IP.^n");
	fputs(FilePointer, "// Vlera 2: Funksioni do te bllokoje komanden nese zbulon ndalimin ne dy klase IP. [Default]^n");
	fputs(FilePointer, "// Vlera 3: Funksioni do te bllokoje komanden nese zbulon ndalimin ne tre klase IP.^n");
	fputs(FilePointer, "// Vlera 4: Funksioni do te bllokoje komanden nese zbulon ndalimin ne kater klase IP.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_anti_ban_class ^"%d^"^n^n", getInteger(PluginCvar[anti_ban_class]));
	}
	else
	{
		fputs(FilePointer, "al_anti_ban_class ^"2^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_give_info^n");
	fputs(FilePointer, "// Fund      : Serveri do t'i dergoje informacion perdoruesit ne lidhje me pluginin.^n");
	fputs(FilePointer, "// Ndikimi    : Kur dikush shkruan ^ "al_info ^" ne tastiere, informacioni do te dorezohet (gjithashtu ne tastiere).^n");
	fputs(FilePointer, "// Nota      : Nese mesazhi transmetohet permes tastieres se serverit, ai do te marre disa informacione shtese.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni eshte aktiv. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_give_info ^"%d^"^n^n", getInteger(PluginCvar[info]));
	}
	else
	{
		fputs(FilePointer, "al_give_info ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam^n");
	fputs(FilePointer, "// Fund      : Ajo bllokon sulme te mundshme , te cilat synojne te reklamojne servere te caktuar ne 2 menyra.^n");
	fputs(FilePointer, "// Ndikimi    : Bots reklamojne ne serverat e tjere, duke merzitur lojtaret / stafin e serverit.^n");
	fputs(FilePointer, "// Nota      : Nese nje lojtar shkruan mesazhin e pare me te gjate se karakteret N (N = vlera e cvar al_xfakeplayer_spam_maxchars), ai do te bllokohet nga plugini. (Nese shtojca ka vleren 1)^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Plugini do te mbroje serverin tuaj duke ndaluar fjalet e para ne chat, duke ndjekur theniet e keqija nese ato jane te njejta, do ta ndeshkoje ate klient (Perdorni kutite me poshte) [Default]^n");
	fputs(FilePointer, "// Vlera 2: Plugini do te ndaloje çdo klient te shkruaje ne bisede derisa te fute nje kod capcha ne bisede. (kodi parazgjedhur ose kodi i rastit, kjo eshte e vendosur ne cv al_xfakeplayer_spam_capcha)^n");
	if (exist)
	{
		fprintf(FilePointer, "al_xfakeplayer_spam ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam]));
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam_maxchars (Aktivizohet kur cvar eshte ^"al_xfakeplayer_spam^" tek 1)^n");
	fputs(FilePointer, "// Perdorimi : Zgjidhni numrin maksimal te karaktereve qe nje lojtar mund te shkruaj ne menyre qe te mos kontrollohet dhe anulohet.^n");
	fputs(FilePointer, "// Nota      : Vemendje, numri i karaktereve nuk duhet te kaloje 15 karaktere, perndryshe mbrojtja do te jete e panevojshme.^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni eshte aktivizuar. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_xfakeplayer_spam_maxchars ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_maxchars]));
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam_maxchars ^"12^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam_maxsais (Aktivizohet kur cvar eshte ^"al_xfakeplayer_spam^" tek 1)^n");
	fputs(FilePointer, "// Perdorimi : Zgjidhni numrin e mesazheve identike te derguara derisa IP te marre banned.^n");
	fputs(FilePointer, "// Nota      : Vemendje, numri i mesazheve identike te derguara nuk duhet te jete me pak se 3, perndryshe mbrojtja mund te ndaloje disa lojtare.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_xfakeplayer_spam_maxsais ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_maxsais]));
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam_maxsais ^"10^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam_type (Aktivizohet kur cvar eshte ^"al_xfakeplayer_spam^" tek 1)^n");
	fputs(FilePointer, "// Perdorimi : Zgjedhni llojin e mbrojtjes ndaj xfake-player.^n");
	fputs(FilePointer, "// Nota      : Vemendje, nese cvar eshte vendosur ne ^ "0 ^", xfake-player do te vazhdoje te mbetet ne server.^n");
	fputs(FilePointer, "// Vlera 0: Lojtari nuk mund te flas.^n");
	fputs(FilePointer, "// Vlera 1: Lojtari do te largohet nga serveri.^n");
	fputs(FilePointer, "// Vlera 2: Lojtari do te marr banned per vleren e vendosur tek cvar al_xfakeplayer_spam_punish. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_xfakeplayer_spam_type ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_type]));
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam_type ^"2^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam_punish (Aktivizohet kur cvar eshte ^"al_xfakeplayer_spam_type^" tek 2)^n");
	fputs(FilePointer, "// Perdorimi : Ajo bllokon IP-ne e sulmuesit per nje periudhe kohe, te matur ne minuta.^n");
	fputs(FilePointer, "// Nota      : Rekomandohet te mos vendosni nje vlere shume te larte per kete varg, ne rast te zbulimit te rreme, lojtari mund te vuaje.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_xfakeplayer_spam_punish ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_punish]));
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam_punish ^"5^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam_capcha (Aktivizohet kur cvar eshte ^"al_xfakeplayer_spam_type^" tek 2)^n");
	fputs(FilePointer, "// Perdorimi : Mos lejoni qe klientet ne server te perdorin biseden derisa te shkruajne nje kod specifik ne chat.^n");
	fputs(FilePointer, "// Nota      : Nese keni nje server me shume kliente te huaj, vlera rekomandohet te jete 0.^n");
	fputs(FilePointer, "// Vlera 0: Biseda do te zhbllokohet nga nje kod i paracaktuar. (ne vargun al_xfakeplayer_spam_capcha_word) [Default]^n");
	fputs(FilePointer, "// Vlera 1: Biseda do te zhbllokohet nga nje kod i rastesishem.^n");
	if (exist)
	{
		fprintf(FilePointer, "al_xfakeplayer_spam_capcha ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_capcha]));
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam_capcha ^"0^"^n^n");
	}	
	
	fputs(FilePointer, "// Cvar      : al_xfakeplayer_spam_capcha_word (Aktivizohet kur cvar eshte ^"al_xfakeplayer_spam_capcha^" tek 0)^n");
	fputs(FilePointer, "// Perdorimi : Vendosni nje kod te paracaktuar dhe duke shkruar kodin ne bisede nga klienti, ^n");
	fputs(FilePointer, "// Nota      : Mundesisht kodi nuk permban shume karaktere, disa kliente urrejne te shkruajne kode te gjata mbi 5 karaktere.^n");
	fputs(FilePointer, "// Perditesimi    : Tek verzioni ri ju mund te gjeni shum gjera te nevojshme per serverin tuaj.^n");
	if (exist)
	{
		getString(PluginCvar[xfakeplayer_spam_capcha_word], CvarString, charsmax(CvarString));
		fprintf(FilePointer, "al_xfakeplayer_spam_capcha_word ^"%s^"^n^n", CvarString);
	}
	else
	{
		fputs(FilePointer, "al_xfakeplayer_spam_capcha_word ^"/chat^"^n^n");	
	}
	
	fputs(FilePointer, "// Cvar      : al_prot_cvars^n");
	fputs(FilePointer, "// Fund      : Parandalon kuartet nga ndryshimi i kesaj plugini. Lejimi i tyre te ndryshon vetem nga tastiera e serverit ose nga konfiguruesi.^n");
	fputs(FilePointer, "// Ndikimi    : Mbrojtja mund te preket dhe te humb serveri sigurimin.^n");
	fputs(FilePointer, "// Nota      : Nese doni te ndryshoni vlerat ne hyrje te administratorit, cvar do te duhet te vendoset ne vleren ^"0^".^n");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni eshte aktiv. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_prot_cvars ^"%d^"^n^n", getInteger(PluginCvar[protcvars]));
	}
	else
	{
		fputs(FilePointer, "al_prot_cvars ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : al_console_say^n");
	fputs(FilePointer, "// Fund      : Ajo parandalon dergimin e mesazheve nga tastiera, duke bllokuar keshtu lidhjet.^n");
	fputs(FilePointer, "// Ndikimi    : Ndalon spam dhe disa reklama tjera.^n");
	fputs(FilePointer, "// Nota      : Nese doni te shtoni fjale qe perfaqesojne perjashtime per kete funksion, fjalet duhet te shkruhen ne skedarin "albania-bugfix.ini^".^n");
	fputs(FilePointer, "// Nota      : Kjo mbrojtje nuk eshte perfekte mirepo nje filtrim sado pak per te ju ndihmuar ;).");
	fputs(FilePointer, "// Vlera 0: Funksioni eshte qaktivizuar.^n");
	fputs(FilePointer, "// Vlera 1: Funksioni eshte aktiv. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "al_console_say ^"%d^"^n^n", getInteger(PluginCvar[console_say]));
	}
	else
	{
		fputs(FilePointer, "al_console_say ^"1^"^n^n");
	}
	

	fclose(FilePointer);
}

WriteLang( bool:exist )
{
	if (exist)
	{		
		new Line[512], FilePointer = fopen(LangFile, "wt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		#if AMXX_VERSION_NUM < 183
			writeSignature(FilePointer);
		#else
			writeSignature(FilePointer, true);
		#endif
		
		fputs(FilePointer, "[en]^n^n");
		
		formatex(Line, charsmax(Line), "AL_UPDATE_CFG = %L^n", LANG_SERVER, "AL_UPDATE_CFG", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_UPDATE_CFG = %s : Perditesova skedarin CFG: albania-bugfix.cfg.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_UPDATE_LANG = %L^n", LANG_SERVER, "AL_UPDATE_LANG", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_UPDATE_LANG = %s : Ne kemi aktualizuar skedarin LANG: albania-bugfix.txt.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_FAKE_PLAYERS = %s%s : %sNe kemi verejtur shum njerez me te njejten IP : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
			
			formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS_PUNISH = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS_PUNISH", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_FAKE_PLAYERS_PUNISH = %s%s : %s IP morri banned %s minuta per te mos ndikuar ne loje.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}		
		#else
			formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_FAKE_PLAYERS = ^^3%s : ^^4Ne kemi verejtur shum njerez me te njejten IP : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
				
			formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS_PUNISH = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS_PUNISH", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_FAKE_PLAYERS_PUNISH = ^^3%s : ^^4IP morri banned %s minuta per te mos ndikuar ne loje.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS_LOG = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS_LOG", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_FAKE_PLAYERS_LOG = %s : Eshte zbuluar nje sulm ^"xFake-Players^" nga IP-te : %s .^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS_KICK = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS_KICK", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_FAKE_PLAYERS_KICK = %s : Ju nuk mund te regjistroheni ne server, pasi ka akoma %s lojtar me te njejten IP si tuajat.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}		
			
		formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS_DETECT = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS_DETECT", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_FAKE_PLAYERS_DETECT = %s : Ju jeni larguar sepse jeni nje klient i rreme. Ju lutemi perdorni nje Steam tjeter.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "AL_FAKE_PLAYERS_DETECT_LOG = %L^n", LANG_SERVER, "AL_FAKE_PLAYERS_DETECT_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_FAKE_PLAYERS_DETECT_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] si i dyshuar per ^"xFake-Players^" ose ^"xSpammer^".^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_PLUGIN_PAUSE = %L^n", LANG_SERVER, "AL_PLUGIN_PAUSE", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_PLUGIN_PAUSE = %s%s : %sNa vjen keq, por per ndonje arsye, ky plugin nuk mund te ndalet/pauzohet.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_PLUGIN_PAUSE = %L^n", LANG_SERVER, "AL_PLUGIN_PAUSE", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_PLUGIN_PAUSE = ^^3%s : ^^4Na vjen keq, por per ndonje arsye, ky plugin nuk mund te ndalet/pauzohet.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_PLUGIN_PAUSE_LOG = %L^n", LANG_SERVER, "AL_PLUGIN_PAUSE_LOG", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_PLUGIN_PAUSE_LOG = %s : Eshte bere nje perpjekje per te ndaluar pluginin e mbrojtjes %s. Operacioni u bllokua.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183 
			formatex(Line, charsmax(Line), "AL_ADMIN_WRONG_NAME = %L^n", LANG_SERVER, "AL_ADMIN_WRONG_NAME", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_WRONG_NAME = %s%s : %sAsnje administrator nuk e gjeti kete pseudonim.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADMIN_WRONG_NAME = %L^n", LANG_SERVER, "AL_ADMIN_WRONG_NAME", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_WRONG_NAME = ^^3%s : ^^4Asnje administrator nuk e gjeti kete pseudonim.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_ADMIN_WRONG_NAME_PRINT = %L^n", LANG_SERVER, "AL_ADMIN_WRONG_NAME_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ADMIN_WRONG_NAME_PRINT = %s : Asnje administrator nuk e gjeti kete pseudonim.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADMIN_WRONG_PASS = %L^n", LANG_SERVER, "AL_ADMIN_WRONG_PASS", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_WRONG_PASS = %s%s : %s Fjalekalimi qe keni shkruar nuk eshte i sakte.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADMIN_WRONG_PASS = %L^n", LANG_SERVER, "AL_ADMIN_WRONG_PASS", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_WRONG_PASS = ^^3%s : ^^4Fjalekalimi qe keni shkruar nuk eshte i sakte.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_ADMIN_WRONG_PASS_PRINT = %L^n", LANG_SERVER, "AL_ADMIN_WRONG_PASS_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ADMIN_WRONG_PASS_PRINT = %s : Fjalekalimi qe keni shkruar nuk eshte i sakte.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADMIN_LOADED = %L^n", LANG_SERVER, "AL_ADMIN_LOADED", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_LOADED = %s%s : %sAdministratori juaj eshte ngarkuar.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADMIN_LOADED = %L^n", LANG_SERVER, "AL_ADMIN_LOADED", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_LOADED = ^^3%s : ^^4Administratori juaj eshte ngarkuar.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_ADMIN_LOADED_PRINT = %L^n", LANG_SERVER, "AL_ADMIN_LOADED_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ADMIN_LOADED_PRINT = %s : Administratori juaj eshte ngarkuar.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADMIN_ALREADY_LOADED = %L^n", LANG_SERVER, "AL_ADMIN_ALREADY_LOADED", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_ALREADY_LOADED = %s%s : %sAdministratori juaj eshte i ngarkuar tashme.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADMIN_ALREADY_LOADED = %L^n", LANG_SERVER, "AL_ADMIN_ALREADY_LOADED", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_ALREADY_LOADED = ^^3%s : ^^4Administratori juaj eshte i ngarkuar tashme.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_ADMIN_ALREADY_LOADED_PRINT = %L^n", LANG_SERVER, "AL_ADMIN_ALREADY_LOADED_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ADMIN_ALREADY_LOADED_PRINT = %s : Administratori juaj eshte i ngarkuar tashme.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}


		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADMIN_WITHOUT_PASS = %L^n", LANG_SERVER, "AL_ADMIN_WITHOUT_PASS", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_WITHOUT_PASS = %s%s : %sJu nuk keni futur nje fjalekalim, komanda eshte shkruar ne tastiere si me poshte: kyqja ^"fjalekalimi juaj^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADMIN_WITHOUT_PASS = %L^n", LANG_SERVER, "AL_ADMIN_WITHOUT_PASS", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_WITHOUT_PASS = ^^3%s : ^^4Ju nuk keni futur nje fjalekalim, komanda eshte shkruar ne tastiere si me poshte: kyqja ^"fjalekalimi juaj^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADMIN_HASNT_SLOT = %L^n", LANG_SERVER, "AL_ADMIN_HASNT_SLOT", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_HASNT_SLOT = %s%s : %sJu nuk mund te ngarkoni administratorin tuaj nese nuk keni nje vend.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADMIN_HASNT_SLOT = %L^n", LANG_SERVER, "AL_ADMIN_HASNT_SLOT", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_HASNT_SLOT = ^^3%s : ^^4Ju nuk mund te ngarkoni administratorin tuaj nese nuk keni nje vend.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_ADMIN_WITHOUT_PASS_PRINT = %L^n", LANG_SERVER, "AL_ADMIN_WITHOUT_PASS_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ADMIN_WITHOUT_PASS_PRINT = %s : Ju nuk keni futur nje fjalekalim, komanda eshte shkruar ne tastiere si me poshte: kyqja ^"fjalekalimi juaj^".^n");
		}
		else
		{
			fputs(FilePointer, Line); 
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_CMD_BUG = %L^n", LANG_SERVER, "AL_CMD_BUG", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_CMD_BUG = %s%s : %sKarakteret e ndaluara jane verejtur ne tekstin qe keni derguar. Mesazhi juaj eshte fshire.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_CMD_BUG = %L^n", LANG_SERVER, "AL_CMD_BUG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_CMD_BUG = ^^3%s : ^^4Karakteret e ndaluara jane verejtur ne tekstin qe keni derguar. Mesazhi juaj eshte fshire.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif	 
		
		formatex(Line, charsmax(Line), "AL_CMD_BUG_LOG = %L^n", LANG_SERVER, "AL_CMD_BUG_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_CMD_BUG_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke perpjekur te perdorte ^"CMD_BUG^" te demtoj funksionimin serverit.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "AL_CMD_BUG_PRINT = %L^n", LANG_SERVER, "AL_CMD_BUG_PRINT", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_CMD_BUG_PRINT = %s : Karakteret e ndaluara jane verejtur ne tekstin qe keni derguar. Mesazhi juaj eshte fshire.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
	
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_COLOR_BUG = %L^n", LANG_SERVER, "AL_COLOR_BUG", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_COLOR_BUG = %s%s : %sKarakteret e ndaluara jane verejtur ne tekstin qe keni derguar. Mesazhi juaj eshte fshire.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_COLOR_BUG = %L^n", LANG_SERVER, "AL_COLOR_BUG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_COLOR_BUG = ^^3%s : ^^4Karakteret e ndaluara jane verejtur ne tekstin qe keni derguar. Mesazhi juaj eshte fshire.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_COLOR_BUG_LOG = %L^n", LANG_SERVER, "AL_COLOR_BUG_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			
			fputs(FilePointer, "AL_COLOR_BUG_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke perpjekur te perdorte ^"COLOR_BUG^" per te paralajmeruar lojtaret dhe adminet.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "AL_COLOR_BUG_PRINT = %L^n", LANG_SERVER, "AL_COLOR_BUG_PRINT", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_COLOR_BUG_PRINT = %s : Karakteret e ndaluara jane verejtur ne tekstin qe keni derguar. Mesazhi juaj eshte fshire.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_SPEC_BUG = %L^n", LANG_SERVER, "AL_SPEC_BUG", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_SPEC_BUG = %s%s : %sJu bete nje veprim te dyshimte, keshtu qe une ju transferova te ekipi i meparshem.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_SPEC_BUG = %L^n", LANG_SERVER, "AL_SPEC_BUG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_SPEC_BUG = ^^3%s : ^^4Ju bete nje veprim te dyshimte, keshtu qe une ju transferova te ekipi i meparshem.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_SPEC_BUG_LOG = %L^n", LANG_SERVER, "AL_SPEC_BUG_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_SPEC_BUG_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke perpjekur te perdorte ^"SPEC_BUG^" per te demtuar funksionimin serverit.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADMIN_CHAT_FLOOD = %L^n", LANG_SERVER, "AL_ADMIN_CHAT_FLOOD", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_CHAT_FLOOD = %s%s : %sNje bisede e vogel Flooding u mor nga ju. Mesazhet qe ju dergoni do te filtrohen.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}

			formatex(Line, charsmax(Line), "AL_ADMIN_CHAT_FLOOD_LOG = %L^n", LANG_SERVER, "AL_ADMIN_CHAT_FLOOD_LOG", "^%s", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADMIN_CHAT_FLOOD_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke perpjekur te perdorte ^"ADMIN_CHAT_FLOOD^" eshte larguar nga admini serverit.^n");	
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_AUTOBUY = %L^n", LANG_SERVER, "AL_AUTOBUY", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_AUTOBUY = %s%s : %sKomanda qe keni derguar ka vlera te dyshimta, keshtu qe une e bllokova.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_AUTOBUY = %L^n", LANG_SERVER, "AL_AUTOBUY", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_AUTOBUY = ^^3%s : ^^4Komanda qe keni derguar ka vlera te dyshimta, keshtu qe une e bllokova.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_AUTOBUY_LOG = %L^n", LANG_SERVER, "AL_AUTOBUY_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_AUTOBUY_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke perpjekur te perdorte ^"AUTOBUY_BUG^" per te demtuar funksionimin e serverit.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_FILE_NOT_FOUND = %L^n", LANG_SERVER, "AL_FILE_NOT_FOUND", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_FILE_NOT_FOUND = %s : Dosja %s nuk ekziston.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "AL_ADMIN_DEBUG = %L^n", LANG_SERVER, "AL_ADMIN_DEBUG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ADMIN_DEBUG = Emri : %s - Fjalekalimi : %s - Akceset : %s - Flag : %s^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "AL_MOTDFILE = %L^n", LANG_SERVER, "AL_MOTDFILE", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_MOTDFILE = %s : Nje mase e dyshimte u zbulua nga ana juaj, porosia juaj u bllokua.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "AL_MOTDFILE_LOG = %L^n", LANG_SERVER, "AL_MOTDFILE_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_MOTDFILE_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke u perpjekur te perdorte ^"motdfile^" per te vjedhur informacione nga serveri.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_ADVERTISE = %L^n", LANG_SERVER, "AL_ADVERTISE", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADVERTISE = %s%s :%s Ky server kontrollohet dhe mbrohet nga %s%s%s verzioni %s%s%s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_ADVERTISE = %L^n", LANG_SERVER, "AL_ADVERTISE", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_ADVERTISE = ^^4%s :^^1 Ky server kontrollohet dhe mbrohet nga ^^4%s^^1 verzioni ^^4%s^^1 .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_ANTI_BAN_CLASS = %L^n", LANG_SERVER, "AL_ANTI_BAN_CLASS", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ANTI_BAN_CLASS = %s : Shume ndalime u zbuluan ne klasen IP, porosia juaj u bllokua.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_ANTI_ANY_BAN_CLASS_LOG = %L^n", LANG_SERVER, "AL_ANTI_ANY_BAN_CLASS_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_ANTI_ANY_BAN_CLASS_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke u perpjekur te banned IP.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_ANTI_SOME_BAN_CLASS_LOG = %L^n", LANG_SERVER, "AL_ANTI_SOME_BAN_CLASS_LOG", "^%s", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, Line);
		}
		else
		{
			fputs(FilePointer, "AL_ANTI_SOME_BAN_CLASS_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] duke u perpjekur te banned %s klasen IP.^n");	
		}
		
		formatex(Line, charsmax(Line), "AL_AUTO_UPDATE_SUCCEED = %L^n", LANG_SERVER, "AL_AUTO_UPDATE_SUCCEED", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_AUTO_UPDATE_SUCCEED = %s : Plugini u perditesua automatikisht.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_AUTO_UPDATE_FAILED = %L^n", LANG_SERVER, "AL_AUTO_UPDATE_FAILED", "^%s"); 
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_AUTO_UPDATE_FAILED = %s : Gabim ne shkarkim ndodhi, plugini nuk mund te perditesohej.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_WARN = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_WARN", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_WARN = %s%s : %sMesazhi juaj eshte fshire per te hequr nje perpjekje ^"BOT SPAM^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_WARN = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_WARN", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_WARN = ^^3%s : ^^4Mesazhi juaj eshte fshire per te hequr nje perpjekje ^"BOT SPAM^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM = %s%s : %sEshte bere perpjekje per ^"BOT SPAM^" nga IP : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
			
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_PUNISH = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_PUNISH", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_PUNISH = %s%s : %sIP morri banned %s minuta per te mos ndikuar ne loje.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}		
		#else
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM = ^^3%s : ^^4Eshte bere perpjekje per ^"BOT SPAM^" nga IP : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
				
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_PUNISH = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_PUNISH", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_PUNISH = ^^3%s : ^^4IP morri banned %s minuta per te mos ndikuar ne loje.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_BAN = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_BAN", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_BAN = %s : Ju u zbuluat si nje bot xfake_player, keshtu qe ju morret banned per %s minuta.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_KICK = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_KICK", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_KICK = %s : Eshte zbuluar per perdorim xfake_player, tani eshte larguar nga serveri.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_GAG = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_GAG", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_GAG = %s%s : %sJu jeni zbuluar si nje bot xfake_player, nuk do te keni me mundesi te perdorni chat derisa te rilidhni.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_GAG = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_GAG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_GAG = ^^3%s : ^^4Ju jeni zbuluar si nje bot xfake_player, nuk do te keni me mundesi te perdorni chat derisa te rilidhni.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_SPAM_LOG = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_SPAM_LOG", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_LOG = %s : Eshte zbuluar nje ^"BOT SPAM^" tek IP : %s .^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT = %s%s : %sJu e futet capcha sakte, tani do te keni mundesi te perdorni biseden.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT = ^^3%s : ^^4Ju e futet capcha sakte, tani do te keni mundesi te perdorni biseden.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_CAPCHA = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_CAPCHA", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_CAPCHA = %s%s : %sPer te perdorur biseden shkruajeni kodin vijues : %s%s%s.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_XFAKE_PLAYERS_CAPCHA = %L^n", LANG_SERVER, "AL_XFAKE_PLAYERS_CAPCHA", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_XFAKE_PLAYERS_CAPCHA = ^^3%s : ^^4Per te perdorur biseden shkruajeni kodin vijues : ^^3%s^^4.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "AL_BIND_SPAM = %L^n", LANG_SERVER, "AL_BIND_SPAM", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_BIND_SPAM = %s%s : %sNuk ju lejohet te dergoni mesazhe permes consoles !^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "AL_BIND_SPAM = %L^n", LANG_SERVER, "AL_BIND_SPAM", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "AL_BIND_SPAM = ^^3%s : ^^4Nuk ju lejohet te dergoni mesazhe permes consoles !.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif

		
		formatex(Line, charsmax(Line), "AL_PROTCVARS = %L^n", LANG_SERVER, "AL_PROTCVARS", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_PROTCVARS = %s : Kopjet e cvar dhe gjerat tjera jane te ndaluar nuk mund te vjedhen.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "AL_PROTCVARS_LOG = %L^n", LANG_SERVER, "AL_PROTCVARS_LOG", "^%s", "^%s", "^%s", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "AL_PROTCVARS_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] qe u perpoqen te ndryshojne kuartet e pluginit se rezerves, keto mund te ndryshohen vetem nga skedari i konfigurimit.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		fclose(FilePointer);
	}
	else
	{
		new FilePointer = fopen(LangFile, "wt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		#if AMXX_VERSION_NUM < 183
			writeSignature(FilePointer);
		#else
			writeSignature(FilePointer, true);
		#endif
		
		fputs(FilePointer, "[en]^n^n");
		fputs(FilePointer, "AL_UPDATE_CFG = %s : Perditesoni te dhenat tek CFG : albania-bugfix.cfg.^n");
		fputs(FilePointer, "AL_UPDATE_LANG = %s : Perditesoni gjuhen tek : albania-bugfix.txt.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_FAKE_PLAYERS = %s%s : %sNe kemi verejtur shum lojtar ne IP : %s .^n");
			fputs(FilePointer, "AL_FAKE_PLAYERS_PUNISH = %s%s : %sIP morri banned per %s minuta per te mos ndikuar ne loje.^n");
		#else
			fputs(FilePointer, "AL_FAKE_PLAYERS = ^^3%s : ^^4Ne kemi verejtur shum lojtar ne IP : %s .^n");
			fputs(FilePointer, "AL_FAKE_PLAYERS_PUNISH = ^^3%s :^^4 IP morri banned per %s minuta per te mos ndikuar ne loje.^n");
		#endif
		
		fputs(FilePointer, "AL_FAKE_PLAYERS_LOG = %s : Eshte zbuluar nje sulm ^"xFake-Players^" nga IP : %s .^n");
		fputs(FilePointer, "AL_FAKE_PLAYERS_KICK = %s : Ju nuk mund te regjistrohi ne server, sepse ka akoma lojtar %s qe perdorin IP sikurse tuajat.^n");
		
		fputs(FilePointer, "AL_FAKE_PLAYERS_DETECT = %s : Ju jeni larguar nga serveri sepse jeni lojtar i rrem, perdorni ndonje Steam Origjinal.^n");
		fputs(FilePointer, "AL_FAKE_PLAYERS_DETECT_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] si i dyshuar per ^"xFake-Players^" ose si ^"xSpammer^".^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_PLUGIN_PAUSE = %s%s : %sNa vjen keq, pa ndonje arsye ky plugin nuk mund te ndalet.^n");
		#else
			fputs(FilePointer, "AL_PLUGIN_PAUSE = ^^3%s : ^^4Na vjen keq, pa ndonje arsye ky plugin nuk mund te ndalet.^n");
		#endif
		
		fputs(FilePointer, "AL_PLUGIN_PAUSE_LOG = %s : Beri perpjekje per te ndaluar pluginin %s. Operacioni eshte bllokuar.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_WRONG_NAME = %s%s : %sAsnje admin nuk eshte gjetur me kete pseudonim.^n");
		#else
			fputs(FilePointer, "AL_ADMIN_WRONG_NAME = ^^3%s : ^^4Asnje admin nuk eshte gjetur me kete pseudonim.^n");
		#endif
		
		fputs(FilePointer, "AL_ADMIN_WRONG_NAME_PRINT = %s : Asnje admin nuk eshte gjetur me kete pseudonim.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_WRONG_PASS = %s%s : %sFjalekalimi qe keni shkruar nuk eshte i sakte.^n");
		#else
			fputs(FilePointer, "AL_ADMIN_WRONG_PASS = ^^3%s : ^^4Fjalekalimi qe keni shkruar nuk eshte i sakte.^n");
		#endif
		
		fputs(FilePointer, "AL_ADMIN_WRONG_PASS_PRINT = %s : Fjalekalimi qe keni shkruar nuk eshte i sakte.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_LOADED = %s%s : %sAdmini juaj eshte ngarkuar.^n");
		#else
			fputs(FilePointer, "AL_ADMIN_LOADED = ^^3%s : ^^4Admini juaj eshte ngarkuar.^n");
		#endif
		
		fputs(FilePointer, "AL_ADMIN_LOADED_PRINT = %s : Admini juaj eshte ngarkuar.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_ALREADY_LOADED = %s%s : %sAdmini juaj eshte ngarkuar tashme.^n");
		#else
			fputs(FilePointer, "AL_ADMIN_ALREADY_LOADED = ^^3%s : ^^4Admini juaj eshte ngarkuar tashme.^n");
		#endif
		
		fputs(FilePointer, "AL_ADMIN_ALREADY_LOADED_PRINT = %s : Admini juaj eshte ngarkuar tashme.^n");

		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_WITHOUT_PASS = %s%s : %sJu nuk keni shkruar ndonje fjalekalim, komanda eshte futur si kjo : kyqja ^"fjalekalimi juaj^".^n");
		#else
			fputs(FilePointer, "AL_ADMIN_WITHOUT_PASS = ^^3%s : ^^4Ju nuk keni shkruar ndonje fjalekalim, komanda eshte futur si kjo : kyqja ^"fjalekalimi juaj^".^n");
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_HASNT_SLOT = %s%s : %sJu nuk mund te ngarkoni adminin tuaj nese nuk keni ndonje vend.^n");
		#else
			fputs(FilePointer, "AL_ADMIN_HASNT_SLOT = ^^3%s : ^^4Ju nuk mund te ngarkoni adminin tuaj nese nuk keni ndonje vend.^n");
		#endif 
		
		fputs(FilePointer, "AL_ADMIN_WITHOUT_PASS_PRINT = %s : Ju nuk keni shkruar ndonje fjalekalim, komanda eshte futur si kjo : kyqja ^"fjalekalimi juaj^".^n");

		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_CMD_BUG = %s%s : %sKaraktere te dyshimta u vezhguan ne tekstin qe derguat. Mesazhi juaj eshte fshire.^n");
		#else
			fputs(FilePointer, "AL_CMD_BUG = ^^3%s : ^^4Karaktere te dyshimta u vezhguan ne tekstin qe derguat. Mesazhi juaj eshte fshire.^n");
		#endif 
		
		fputs(FilePointer, "AL_CMD_BUG_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te perdorte ^"CMD_BUG^" per te demtuar funksionimin e serverit.^n");
		fputs(FilePointer, "AL_CMD_BUG_PRINT = %s : Karaktere te dyshimta u vezhguan ne tekstin qe derguat. Mesazhi juaj eshte fshire.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_COLOR_BUG = %s%s : %sKaraktere te dyshimta u vezhguan ne tekstin qe derguat. Mesazhi juaj eshte fshire.^n");
		#else
			fputs(FilePointer, "AL_COLOR_BUG = ^^3%s : ^^4Karaktere te dyshimta u vezhguan ne tekstin qe derguat. Mesazhi juaj eshte fshire.^n");
		#endif
		
		fputs(FilePointer, "AL_COLOR_BUG_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te perdorte ^"COLOR_BUG^" per te paralajmeruar lojtaret dhe adminat.^n");
		fputs(FilePointer, "AL_COLOR_BUG_PRINT = %s : Karaktere te dyshimta u vezhguan ne tekstin qe derguat. Mesazhi juaj eshte fshire.^n");		
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_SPEC_BUG = %s%s : %sJu keni bere nje veprim te dyshimt dhe ju derguam te ekipi meparshem.^n");
		#else
			fputs(FilePointer, "AL_SPEC_BUG = ^^3%s : ^^4Ju keni bere nje veprim te dyshimt dhe ju derguam te ekipi meparshem.^n");
		#endif
		
		fputs(FilePointer, "AL_SPEC_BUG_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te perdorte ^"SPEC_BUG^" per te demtuar funksionimin e serverit.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADMIN_CHAT_FLOOD = %s%s : %sNje bised eshte dyshuar si Flooding nga ju. Mesazhet nga ju do te filtrohen.^n");
			fputs(FilePointer, "AL_ADMIN_CHAT_FLOOD_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te perdorte ^"ADMIN_CHAT_FLOOD^" per te fshire adminat nga serveri.^n");	
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_AUTOBUY = %s%s : %sKomandat qe derguat jane te dyshimta dhe jane bllokuar.^n");
		#else
			fputs(FilePointer, "AL_AUTOBUY = ^^3%s : ^^4Komandat qe derguat jane te dyshimta dhe jane bllokuar.^n");
		#endif
		
		fputs(FilePointer, "AL_AUTOBUY_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te perdorte ^"AUTOBUY_BUG^" per te prishur funksionimin e serverit.^n");
		
		fputs(FilePointer, "AL_FILE_NOT_FOUND = %s : Skedari %s nuk ekziston.^n");
		
		fputs(FilePointer, "AL_ADMIN_DEBUG = Emri : %s - Fjalekalimi : %s - Akceset : %s - Flamujt : %s^n");
		
		fputs(FilePointer, "AL_MOTDFILE = %s : Disa informacione te dyshimta jane zbuluar nga ju, komanda juaj eshte ndaluar.^n");
		fputs(FilePointer, "AL_MOTDFILE_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te perdorte ^"motdfile^" per te keqperdorur kete server.^n");		
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_ADVERTISE = %s%s :%s Serveri kontrollohet dhe mbrohet nga plugini %s%s%s verzioni %s%s%s .^n");
		#else
			fputs(FilePointer, "AL_ADVERTISE = ^^4%s :^^1 Serveri kontrollohet dhe mbrohet nga plugini ^^4%s^^1 verzioni ^^4%s^^1 .^n");
		#endif
		
		fputs(FilePointer, "AL_ANTI_BAN_CLASS = %s : Shum bannede u zbuluan ne IP, komanda juaj eshte ndaluar.^n");
		fputs(FilePointer, "AL_ANTI_ANY_BAN_CLASS_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te ndalonte IP.^n");	
		fputs(FilePointer, "AL_ANTI_SOME_BAN_CLASS_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] eshte perpjekur te ndalonte me shum se %s klasa IP.^n");

		fputs(FilePointer, "AL_AUTO_UPDATE_SUCCEED = %s : Plugin plotesohet automatikisht.^n");	
		fputs(FilePointer, "AL_AUTO_UPDATE_FAILED = %s : Gabim ne shkarkim ndodhi dhe plugini nuk mund te perditesohej.^n");	
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_WARN = %s%s : %sMesazhi juaj eshte fshire per te hequr perpjekjen ^"BOT SPAM^".^n");
		#else
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_WARN = ^^3%s : ^^4Mesazhi juaj eshte fshire per te hequr perpjekjen ^"BOT SPAM^".^n");
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM = %s%s : %sBeri perpjekje per ^"BOT SPAM^" nga IP : %s .^n");
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_PUNISH = %s%s : %sIIP morri banned per %s minuta per te mos ndikuar ne loje.^n");
		#else
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM = ^^3%s : ^^4Beri perpjekje per ^"BOT SPAM^" nga IP : %s .^n");
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_PUNISH = ^^3%s : ^^4IP morri banned per %s minuta per te mos ndikuar ne loje.^n");
		#endif
		
		fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_BAN = %s : Ju jeni zbuluar si nje xfake-lojtar dhe tani do te merrni banned per %s minuta.^n");
		fputs(FilePointer,"AL_XFAKE_PLAYERS_SPAM_KICK = %s : Ju jeni zbuluar si nje xfake-lojtar dhe tani do te largoheni nga serveri.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_GAG = %s%s : %sJu jeni zbuluar si xfake lojtar, nuk mund te perdorni chatin deri ne rikonektim.^n");
		#else
			fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_GAG = ^^3%s : ^^4Ju jeni zbuluar si xfake lojtar, nuk mund te perdorni chatin deri ne rikonektim.^n");
		#endif
		
		fputs(FilePointer, "AL_XFAKE_PLAYERS_SPAM_LOG = %s : Eshte zbuluar nje sulme ^"BOT SPAM^" nga IP-te : %s .^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT = %s%s : %sJu e futet kodin sakte, tani mund ta perdorni chat.^n");
		#else
			fputs(FilePointer, "AL_XFAKE_PLAYERS_ALLOW_USE_CHAT = ^^3%s : ^^4Ju e futet kodin sakte, tani mund ta perdorni chat.^n");
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_XFAKE_PLAYERS_CAPCHA = %s%s : %sPer te perdorur chatin shkruani kodin vijues : %s%s%s.^n");
		#else
			fputs(FilePointer, "AL_XFAKE_PLAYERS_CAPCHA = ^^3%s : ^^4Per te perdorur chatin shkruani kodin vijues : ^^3%s^^4.^n");
		#endif
		
		fputs(FilePointer, "AL_PROTCVARS = %s : Kopjet e shtojces jane te mbrojtura nuk do te funksionoje.^n");
		fputs(FilePointer, "AL_PROTCVARS_LOG = %s : Eshte zbuluar ^"$name$^" [ $authid$ | $ip$ ] te ndryshoj te dhenat e disa informacioneve keto mund te ndryshohen vetem nga skedari kryesor.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "AL_BIND_SPAM = %s%s : %sNuk mund te dergoni mesazh permes console !.^n");
		#else
			fputs(FilePointer, "AL_BIND_SPAM = ^^3%s : ^^4Nuk mund te dergoni mesazhe permes console !^n");
		#endif
		
		fclose(FilePointer);
	}
	
	register_dictionary("albania-bugfix.txt");
	IsLangUsed = true;
}
#if AMXX_VERSION_NUM < 183
	writeSignature(FilePointer)
#else
	writeSignature(FilePointer, bool:isLangFile = false)
#endif
{
	fputs(FilePointer, "// *ALBANIA System BugFix");
	fputs(FilePointer, "// Plugin per Anti-Flooding/Bug-fix mbrojtje te serverit. ^n");
	fprintf(FilePointer, "// Verzioni : %s. Modeli : %d. Data Verzionit : %s.^n", Version, Build, Date); 
	fputs(FilePointer, "// Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro^n");
	fputs(FilePointer, "// Nese keni nevoj per ndihme pyeti tek - luxor^n");
	fputs(FilePointer, "// Link forum  :"Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-IsFlooding-bug-fix-t28292.html^n");
	fputs(FilePointer, "// Link kodit : "Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-IsFlooding-bug-fix-t28292.html^n");
	#if AMXX_VERSION_NUM >= 183
		if ( isLangFile )
		{
			fputs(FilePointer, "^n// Ngjyrat : ^^1 - Ngjyra zgjedhur nga lojtari.^n");
			fputs(FilePointer, "//          ^^3 - Ngjyra Gri.^n");
			fputs(FilePointer, "//          ^^4 - Ngjyra Jeshile.^n");
		}
	#endif
	fputs(FilePointer, "^n^n^n");
}

#if AMXX_VERSION_NUM < 183
// header client_print_color.inc

stock const g_szTeamName[Colors][] = 
{
	"UNASSIGNED",
	"TERRORIST",
	"CT",
	"SPECTATOR"
};

stock client_print_color(Index, iColor=DontChange, const szMsg[], any:...)
{
	// check if Index is different from 0
	if( Index && !is_user_connected(Index) )
	{
		return 0;
	}

	if( iColor > Grey )
	{
		iColor = DontChange;
	}

	new szMessage[192];
	if( iColor == DontChange )
	{
		szMessage[0] = 0x04;
	}
	else
	{
		szMessage[0] = 0x03;
	}

	new iParams = numargs();
	// Specific player code
	if(Index)
	{
		if( iParams == 3 )
		{
			copy(szMessage[1], charsmax(szMessage)-1, szMsg);
		}
		else
		{
			vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
		}

		if( iColor )
		{
			new szTeam[11]; // store current team so we can restore it
			get_user_team(Index, szTeam, charsmax(szTeam));

			// set Index TeamInfo in consequence
			// so SayText msg gonna show the right color
			Send_TeamInfo(Index, Index, g_szTeamName[iColor]);

			// Send the message
			Send_SayText(Index, Index, szMessage);

			// restore TeamInfo
			Send_TeamInfo(Index, Index, szTeam);
		}
		else
		{
			Send_SayText(Index, Index, szMessage);
		}
	} 

	// Send message to all players
	else
	{
		// Figure out if at least 1 player is connected
		// so we don't send useless message if not
		// and we gonna use that player as team reference (aka SayText message sender) for color change
		new iPlayers[32], iNum;
		get_players(iPlayers, iNum, "ch");
		if( !iNum )
		{
			return 0;
		}

		new iFool = iPlayers[0];

		new iMlNumber, i, j;
		new Array:aStoreML = ArrayCreate();
		if( iParams >= 5 ) // ML can be used
		{
			for(j=4; j<iParams; j++)
			{
				// retrieve original param value and check if it's LANG_PLAYER value
				if( getarg(j) == LANG_PLAYER )
				{
					i=0;
					// as LANG_PLAYER == -1, check if next parm string is a registered language translation
					while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {}
					if( GetLangTransKey(szMessage) != TransKey_Bad )
					{
						// Store that arg as LANG_PLAYER so we can alter it later
						ArrayPushCell(aStoreML, j++);

						// Update ML array saire so we'll know 1st if ML is used,
						// 2nd how many args we have to alterate
						iMlNumber++;
					}
				}
			}
		}

		// If arraysize == 0, ML is not used
		// we can only send 1 MSG_BROADCAST message
		if( !iMlNumber )
		{
			if( iParams == 3 )
			{
				copy(szMessage[1], charsmax(szMessage)-1, szMsg);
			}
			else
			{
				vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
			}

			if( iColor )
			{
				new szTeam[11];
				get_user_team(iFool, szTeam, charsmax(szTeam));
				Send_TeamInfo(0, iFool, g_szTeamName[iColor]);
				Send_SayText(0, iFool, szMessage);
				Send_TeamInfo(0, iFool, szTeam);
			}
			else
			{
				Send_SayText(0, iFool, szMessage);
			}
		}

		// ML is used, we need to loop through all players,
		// format text and send a MSG_ONE_UNRELIABLE SayText message
		else
		{
			new szTeam[11], szFakeTeam[10];
			
			if( iColor )
			{
				get_user_team(iFool, szTeam, charsmax(szTeam));
				copy(szFakeTeam, charsmax(szFakeTeam), g_szTeamName[iColor]);
			}

			for( i = 0; i < iNum; i++ )
			{
				Index = iPlayers[i];

				for(j=0; j<iMlNumber; j++)
				{
					// Set all LANG_PLAYER args to player index ( = Index )
					// so we can format the text for that specific player
					setarg(ArrayGetCell(aStoreML, j), _, Index);
				}

				// format string for specific player
				vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);

				if( iColor )
				{
					Send_TeamInfo(Index, iFool, szFakeTeam);
					Send_SayText(Index, iFool, szMessage);
					Send_TeamInfo(Index, iFool, szTeam);
				}
				else
				{
					Send_SayText(Index, iFool, szMessage);
				}
			}
			ArrayDestroy(aStoreML);
		}
	}
	return 1;
}

stock Send_TeamInfo(iReceiver, iPlayerId, szTeam[])
{
	static iTeamInfo = 0;
	if( !iTeamInfo )
	{
		iTeamInfo = get_user_msgid("TeamInfo");
	}
	message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player=iReceiver);
	write_byte(iPlayerId);
	write_string(szTeam);
	message_end();
}

stock Send_SayText(iReceiver, iPlayerId, szMessage[])
{
	static iSayText = 0;
	if( !iSayText )
	{
		iSayText = get_user_msgid("SayText");
	}
	message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player=iReceiver);
	write_byte(iPlayerId);
	write_string(szMessage);
	message_end();
}

stock register_dictionary_colored(const filename[])
{
	if( !register_dictionary(filename) )
	{
		return 0;
	}

	new szFileName[256];
	get_localinfo("amxx_datadir", szFileName, charsmax(szFileName));
	format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename);
	new fp = fopen(szFileName, "rt");
	if( !fp )
	{
		log_amx("Deshtoi te hapet %s", szFileName);
		return 0;
	}

	new szBuffer[512], szLang[3], szKey[64], szTranslation[256], TransKey:iKey;

	while( !feof(fp) )
	{
		fgets(fp, szBuffer, charsmax(szBuffer));
		trim(szBuffer);

		if( szBuffer[0] == '[' )
		{
			strtok(szBuffer[1], szLang, charsmax(szLang), szBuffer, 1, ']');
		}
		else if( szBuffer[0] )
		{
			strbreak(szBuffer, szKey, charsmax(szKey), szTranslation, charsmax(szTranslation));
			iKey = GetLangTransKey(szKey);
			if( iKey != TransKey_Bad )
			{
				while( replace(szTranslation, charsmax(szTranslation), "!g", "^4") ){}
				while( replace(szTranslation, charsmax(szTranslation), "!t", "^3") ){}
				while( replace(szTranslation, charsmax(szTranslation), "!n", "^1") ){}
				AddTranslation(szLang, iKey, szTranslation[2]);
			}
		}
	}
	
	fclose(fp);
	return 1;
}

#endif
[/code[

Аватар
mi0
Извън линия
AMXX Скриптър
AMXX Скриптър
Мнения: 534
Регистриран на: 09 Дек 2016, 22:02
Се отблагодари: 97 пъти
Получена благодарност: 120 пъти
Обратна връзка:

Bugfix plugin problem with compile

Мнение от mi0 » 26 Фев 2020, 19:36

Can you please share the output you get when you try to compile it?
aka kurdokoleno
Catch Mod - 87.121.112.232:27021

Аватар
lantimilan
Извън линия
Foreigner
Foreigner
Мнения: 424
Регистриран на: 29 Ное 2017, 22:49
Се отблагодари: 31 пъти
Получена благодарност: 3 пъти

Bugfix plugin problem with compile

Мнение от lantimilan » 26 Фев 2020, 19:46

mi0 написа: 26 Фев 2020, 19:36 Can you please share the output you get when you try to compile it?
Yes sure this, sorry i cant size to see all : http://prntscr.com/r835yr

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Bugfix plugin problem with compile

Мнение от OciXCrom » 26 Фев 2020, 21:00

If the original plugin works, better post that one and explain what you've changed. You probably deleted some closing brackets and broke the entire code. I see many weird things in there - probably something went wrong when copying.

Аватар
lantimilan
Извън линия
Foreigner
Foreigner
Мнения: 424
Регистриран на: 29 Ное 2017, 22:49
Се отблагодари: 31 пъти
Получена благодарност: 3 пъти

Bugfix plugin problem with compile

Мнение от lantimilan » 26 Фев 2020, 22:22

just i change lang nothing other its not my plugins its free source in google

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Bugfix plugin problem with compile

Мнение от OciXCrom » 27 Фев 2020, 20:36

Post the original code.

Аватар
lantimilan
Извън линия
Foreigner
Foreigner
Мнения: 424
Регистриран на: 29 Ное 2017, 22:49
Се отблагодари: 31 пъти
Получена благодарност: 3 пъти

Bugfix plugin problem with compile

Мнение от lantimilan » 27 Фев 2020, 22:07

Код за потвърждение: Избери целия код

#include <amxmisc>
#include <fakemeta>

#pragma semicolon 1

#if AMXX_VERSION_NUM < 182 
    #assert AMX Mod X v1.8.2 or later library required!
#endif

//offsets
const m_iMenu = 205;
const Menu_OFF = 0;
const Menu_ChooseAppearance = 3;

new const Version[]       = "1.0.4s-dev",
			 Build        = 98,
			 Date[]       = "10.12.2016",
			 PluginName[] = "ROM-Protect",
			 CfgFile[]    = "addons/amxmodx/configs/rom_protect.cfg",
			 LangFile[]   = "addons/amxmodx/data/lang/rom_protect.txt",
			 IniFile[]    = "addons/amxmodx/configs/rom_protect.ini",
			 LangType[]   = "%L",
			 NoLogInfo     = -1;

enum INFO
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID    
};

enum
{
    FM_TEAM_T = 1,
    FM_TEAM_CT,
    FM_TEAM_SPECTATOR
};

enum _:AdminLogin
{
	LoginPass[32],
	LoginAccess[32],
	LoginFlag[6]
}

#if !defined MAX_PLAYERS
	#define MAX_PLAYERS 32
#endif

#if AMXX_VERSION_NUM < 183	
	#define MAX_NAME_LENGTH 32
	new AdminNum;
	new bool:IsFlooding[MAX_PLAYERS+1];
	new Float:Flooding[MAX_PLAYERS+1] = {0.0, ...},
			  Flood[MAX_PLAYERS+1] = {0, ...};		  
	enum _:Colors 
	{
		DontChange,
		Red,
		Blue,
		Grey
	}
#endif

new Counter[MAX_PLAYERS+1], LogFile[128], ClSaidSameTh_Count[MAX_PLAYERS+1],
	bool:CorrectName[MAX_PLAYERS+1], bool:IsAdmin[MAX_PLAYERS+1], bool:FirstMsg[MAX_PLAYERS+1],
	bool:Gag[MAX_PLAYERS+1], bool:UnBlockedChat[MAX_PLAYERS+1];
new LastPass[MAX_PLAYERS+1][32], Capcha[MAX_PLAYERS+1][8];
new Trie:LoginName, Trie:DefaultRes;
new PreviousMessage[MAX_PLAYERS+1][192]; // declarat global pentru a evita eroarea "Run time error 3: stack error"
new bool:IsLangUsed, bool:AdminsReloaded;

new const AllBasicOnChatCommads[][] =
{
	"amx_say", "amx_csay", "amx_psay", "amx_tsay", "amx_chat", "say_team", 
	"say", "amx_gag", "amx_kick", "amx_ban", "amx_banip", "amx_nick", "amx_rcon"
};

new const AllAutobuyCommands[][] =
{
	"cl_autobuy",
	"cl_rebuy",
	"cl_setautobuy",
	"cl_setrebuy"
};

enum _:AllCvars
{
	autobuy_bug,
	utf8_bom,
	Tag,
	cmd_bug,
	spec_bug,
	fake_players,
	fake_players_limit,
	fake_players_type,
	fake_players_punish,
#if AMXX_VERSION_NUM < 183
	admin_chat_flood,
	admin_chat_flood_time,
#endif
	advertise,
	advertise_time,
	delete_custom_hpk,
	delete_vault,
	plug_warn,
	plug_log,
	admin_login,
	admin_login_file,
	admin_login_debug,
	color_bug,
	motdfile,
	anti_pause,
	anti_ban_class,
	info,
	xfakeplayer_spam,
	xfakeplayer_spam_maxchars,
	xfakeplayer_spam_maxsais,
	xfakeplayer_spam_type,
	xfakeplayer_spam_punish,
	xfakeplayer_spam_capcha,
	xfakeplayer_spam_capcha_word,
	protcvars,
	console_say
};

new const CvarName[AllCvars][] = 
{
	"rom_autobuy_bug",
	"rom_utf8_bom",
	"rom_tag",
	"rom_cmd_bug",
	"rom_spec_bug",
	"rom_fake_players",
	"rom_fake_players_limit",
	"rom_fake_players_type",
	"rom_fake_players_punish",
#if AMXX_VERSION_NUM < 183
	"rom_admin_chat_flood",
	"rom_admin_chat_flood_time",
#endif
	"rom_advertise",
	"rom_advertise_time",
	"rom_delete_custom_hpk",
	"rom_delete_vault",
	"rom_warn",
	"rom_log",
	"rom_admin_login",
	"rom_admin_login_file",
	"rom_admin_login_debug",
	"rom_color_bug",
	"rom_motdfile",
	"rom_anti_pause",
	"rom_anti_ban_class",
	"rom_give_info",
	"rom_xfakeplayer_spam",
	"rom_xfakeplayer_spam_maxchars",
	"rom_xfakeplayer_spam_maxsais",
	"rom_xfakeplayer_spam_type",
	"rom_xfakeplayer_spam_punish",
	"rom_xfakeplayer_spam_capcha",
	"rom_xfakeplayer_spam_capcha_word",
	"rom_prot_cvars",
	"rom_console_say"
};


#if AMXX_VERSION_NUM >= 183
	enum _:CvarRange
	{
		hasMinValue,
		minValue,
		hasMaxValue,
		maxValue
	}

	new const CvarLimits[AllCvars][CvarRange] = 
	{
		{ 1, 0, 1, 1 },     // rom_autobuy_bug
		{ 1, 0, 1, 1 },     // rom_utf8_bom
		{ 0, 0, 0, 0 },     // rom_tag
		{ 1, 0, 1, 1 },     // rom_cmd_bug
		{ 1, 0, 1, 1 },     // rom_spec_bug
		{ 1, 0, 1, 1 },     // rom_fake_players
		{ 1, 3, 1, 10 },    // rom_fake_players_limit
		{ 1, 0, 1, 1 },     // rom_fake_players_type
		{ 1, 5, 1, 10080 }, // rom_fake_players_punish
		{ 1, 0, 1, 1 },     // rom_advertise
		{ 1, 30, 1, 480 },  // rom_advertise_time
		{ 1, 0, 1, 1 },     // rom_delete_custom_hpk
		{ 1, 0, 1, 2 },     // rom_delete_vault
		{ 1, 0, 1, 1 },     // rom_warn
		{ 1, 0, 1, 1 },     // rom_log
		{ 1, 0, 1, 1 },     // rom_admin_login
		{ 0, 0, 0, 0 },     // rom_admin_login_file
		{ 1, 0, 1, 1 },     // rom_admin_login_debug
		{ 1, 0, 1, 1 },     // rom_color_bug
		{ 1, 0, 1, 1 },     // rom_motdfile
		{ 1, 0, 1, 1 },     // rom_anti_pause
		{ 1, 0, 1, 4 },     // rom_anti_ban_class
		{ 1, 0, 1, 1 },     // rom_give_info
		{ 1, 0, 1, 2 },     // rom_xfakeplayer_spam
		{ 1, 5, 1, 15 },    // rom_xfakeplayer_spam_maxchars
		{ 1, 3, 0, 0 },     // rom_xfakeplayer_spam_maxsais
		{ 1, 0, 1, 2 },     // rom_xfakeplayer_spam_type
		{ 1, 5, 1, 10080 }, // rom_xfakeplayer_spam_punish
		{ 1, 0, 1, 1 },     // rom_xfakeplayer_spam_capcha
		{ 0, 0, 0, 0 },     // rom_xfakeplayer_spam_capcha_word
		{ 1, 0, 1, 1 },     // rom_prot_cvars
		{ 1, 0, 1, 1 }      // rom_console_say
	};
#endif

new const CvarValue[AllCvars][] =
{
	"1",
	"1",	
	"*ROM-Protect",
	"1",
	"1",
	"1",
	"5",
	"1",
	"10",
#if AMXX_VERSION_NUM < 183
	"1",
	"0.75",
#endif
	"1",
	"120",
	"1",
	"1",
	"1",
	"1",
	"1",
	"users_login.ini",
	"0",
	"1",
	"1",
	"1",
	"2",
	"1",
	"1",
	"12",
	"10",
	"2",
	"5",
	"0",
	"/chat",
	"1",
	"1"
};
	
new PluginCvar[AllCvars];

public plugin_precache()
{	
	registersPrecache();
	
	new CurentDate[15];
	get_localinfo("amxx_logs", LogFile, charsmax(LogFile));
	format(LogFile, charsmax(LogFile), "%s/%s", LogFile, PluginName);
	
	if ( !dir_exists(LogFile) )
	{
		mkdir(LogFile);
	}
	
	get_time("%d-%m-%Y", CurentDate, charsmax(CurentDate));
	format(LogFile, charsmax(LogFile), "%s/%s_%s.log", LogFile, PluginName, CurentDate);
	
	if ( !file_exists(LogFile) )
	{
		write_file(LogFile, "*Aici este salvata activitatea suspecta a fiecarui jucator.^n^n", -1);
	}
	
	if ( file_exists(CfgFile) )
	{
		server_cmd("exec %s", CfgFile);
	}
	
	set_task(5.0, "checkLang");
	set_task(10.0, "checkLangFile");
	set_task(15.0, "checkCfg");
}

public checkCfg()
{
	if ( !file_exists(CfgFile) )
	{
		WriteCfg(false);
	}
	else
	{
		new FilePointer = fopen(CfgFile, "rt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		new Text[121], CurrentVersion[64], bool:IsCurrentVersionUsed;
		formatex(CurrentVersion, charsmax(CurrentVersion), "Versiunea : %s. Bulid : %d. Data lansarii versiunii : %s.", Version, Build, Date);
		
		while ( !feof(FilePointer) )
		{
			fgets(FilePointer, Text, charsmax(Text));
			
			if ( containi(Text, CurrentVersion) != -1 )
			{
				IsCurrentVersionUsed = true;
				break;
			}
		}
		fclose(FilePointer);
		
		if ( !IsCurrentVersionUsed )
		{
			WriteCfg(true);
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				new CvarString[32];
				getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
				logCommand(NoLogInfo, LangType, LANG_SERVER, "ROM_UPDATE_CFG", CvarString);
			}
		}
	}
}

public checkLang()
{
	if ( !file_exists(LangFile) )
	{
		WriteLang(false);
	}
	else
	{
		IsLangUsed = false;
		new FilePointer = fopen(LangFile, "rt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		new Text[121], CurrentVersion[64], bool:IsCurrentVersionUsed;
		formatex(CurrentVersion, charsmax(CurrentVersion), "Versiunea : %s. Bulid : %d. Data lansarii versiunii : %s.", Version, Build, Date);
		
		while ( !feof(FilePointer) )
		{
			fgets(FilePointer, Text, charsmax(Text));
			
			if ( contain(Text, CurrentVersion) != -1 )
			{
				IsCurrentVersionUsed = true;
				break;
			}
		}
		fclose(FilePointer);
		
		if ( !IsCurrentVersionUsed )
		{
			register_dictionary("rom_protect.txt");
			IsLangUsed = true;
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				new CvarString[32];
				getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
				logCommand(NoLogInfo, LangType, LANG_SERVER, "ROM_UPDATE_LANG", CvarString);
			}
			WriteLang(true);
		}
	}
}

public checkLangFile()
{
	if (!IsLangUsed)
	{
		register_dictionary("rom_protect.txt");
	}
}

public plugin_init()
{
	registersInit();
	
	if ( getInteger(PluginCvar[advertise]) == 1 )
	{
		set_task(getFloat(PluginCvar[advertise_time]), "showAdvertise", _, _, _, "b", 0);
	}
	
	if ( getInteger(PluginCvar[utf8_bom]) == 1 )
	{
		DefaultRes = TrieCreate();
		TrieSetCell(DefaultRes, "de_storm.res", 1);
		TrieSetCell(DefaultRes, "default.res", 1);
		
		set_task(10.0, "cleanResFiles");
	}
}

public client_connect(Index)
{
	if (getInteger(PluginCvar[cmd_bug]) == 1)
	{
		new Name[MAX_NAME_LENGTH];
		get_user_name(Index, Name, charsmax(Name));
		stringFilter(Name, charsmax(Name));
		set_user_info(Index, "name", Name);
	}
}

public client_authorized(Index)
{	
	new CvarString[32];
	if (getInteger(PluginCvar[fake_players]) == 1)
	{
		if ( clientUseSteamid(Index) )
		{
			query_client_cvar(Index, "fps_max", "checkBot");
		}
	
		new Players[MAX_PLAYERS], PlayersNum, Address[32], Address2[32];
		get_players(Players, PlayersNum, "c");
		for (new i = 0; i < PlayersNum; ++i)
		{
			get_user_ip(Index, Address, charsmax(Address), 1);
			get_user_ip(Players[i], Address2, charsmax(Address2), 1);
			if ( equal(Address, Address2) && !is_user_bot(Index) )
			{
				if ( ++Counter[Index] > getInteger(PluginCvar[fake_players_limit]) )
				{
					getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
					switch ( getInteger(PluginCvar[fake_players_type]) )
					{
						case 0:
						{
							new Limit[8];
							num_to_str(getInteger(PluginCvar[fake_players_limit]), Limit, charsmax(Limit));
							console_print(Index, LangType, LANG_PLAYER, "ROM_FAKE_PLAYERS_KICK", CvarString, Limit);
							server_cmd("kick #%d ^"You got kicked. Check console.^"", get_user_userid(Index));
						}
						case 1: 
						{
							new Punish[8];
							num_to_str(getInteger(PluginCvar[fake_players_punish]), Punish, charsmax(Punish));
							server_cmd("addip ^"%s^" ^"%s^";wait;writeip", Punish, Address);
							if ( getInteger(PluginCvar[plug_warn]) == 1 )
							{
								new CvarTag[32];
								copy(CvarTag, charsmax(CvarTag), CvarString);
								#if AMXX_VERSION_NUM < 183
									client_print_color(0, Grey, LangType, LANG_PLAYER, "ROM_FAKE_PLAYERS", "^3", CvarTag, "^4", Address);
									client_print_color(0, Grey, LangType, LANG_PLAYER, "ROM_FAKE_PLAYERS_PUNISH", "^3", CvarTag, "^4", Punish);
								#else
									client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "ROM_FAKE_PLAYERS", CvarTag, Address);
									client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "ROM_FAKE_PLAYERS_PUNISH", CvarTag, Punish);
								#endif
							}
							if ( getInteger(PluginCvar[plug_log]) == 1 )
							{
								logCommand(NoLogInfo, LangType, LANG_SERVER, "ROM_FAKE_PLAYERS_LOG", CvarString, Address);
							}
						}
					}
					break;
				}
			}
		}
	}
	switch ( getInteger(PluginCvar[xfakeplayer_spam]))
	{
		case 1:
		{
			FirstMsg[Index] = true;
			Gag[Index] = false;
		}
		case 2:
		{
			if ( getInteger(PluginCvar[xfakeplayer_spam_capcha]) == 1 )
			{
				new const AllChars[] = 
				{
					'A','B','C','D','E','F','G','H',
					'I','J','K','L','M','N','O','P',
					'Q','R','S','T','U','V','W','X',
					'Y','Z','a','b','c','d','e','f',
					'g','h','i','j','k','l','m','n',
					'o','p','q','r','s','t','u','v',
					'w','x','y','z','0','1','2','3',
					'4','5','6','7','8','9'
				};
				const MatrixSize = sizeof AllChars;
				formatex(Capcha[Index], charsmax(Capcha[]), "%c%c%c%c", AllChars[random(MatrixSize)], AllChars[random(MatrixSize)], AllChars[random(MatrixSize)], AllChars[random(MatrixSize)]);
			}
			else
			{
				getString(PluginCvar[xfakeplayer_spam_capcha_word], CvarString, charsmax(CvarString));
				copy(Capcha[Index], charsmax(Capcha[]), CvarString);
			}
		}
	}
	
} 

#if AMXX_VERSION_NUM < 183
	public client_disconnect(Index)
#else
	public client_disconnected(Index)
#endif
{
	if ( getInteger(PluginCvar[fake_players]) == 1 )
	{
		Counter[Index] = 0;
	}
	if ( getInteger(PluginCvar[xfakeplayer_spam]) == 1 )
	{
		ClSaidSameTh_Count[Index] = 0;
	}
	else
	{
		UnBlockedChat[Index] = false;
	}
	if ( IsAdmin[Index] )
	{
		IsAdmin[Index] = false;
		remove_user_flags(Index);
	}
}

public plugin_end()
{
	switch ( getInteger(PluginCvar[delete_vault]) != 0 )
	{
		case 1:
		{
			write_file(getVaultDir(), "server_language en", -1);
		}
		case 2:
		{
			write_file(getVaultDir(), "server_language ro", -1);
		}
	}
	
	if ( getInteger(PluginCvar[delete_custom_hpk]) == 1 )
	{
		new BaseDir[] = "/", DirPointer, File[32];
		
		DirPointer = open_dir(BaseDir, "", 0);
		
		while ( next_file(DirPointer, File, charsmax(File)) )
		{
			if ( File[0] == '.' )
			{
				continue;
			}
			
			if ( containi( File, "custom.hpk" ) != -1 )
			{
				delete_file(File);
				break;
			}
		}
		
		close_dir(DirPointer);
	}
}

public client_infochanged(Index)
{
	if ( !is_user_connected(Index) )
	{
		return;
	}
	
	new CmdBugCvarValue = getInteger(PluginCvar[cmd_bug]), AdminLoginCvarValue = getInteger(PluginCvar[admin_login]);
	if ( CmdBugCvarValue == 1 || AdminLoginCvarValue == 1)
	{
		new NewName[MAX_NAME_LENGTH], OldName[MAX_NAME_LENGTH];
		get_user_name(Index, OldName, charsmax(OldName));
		get_user_info(Index, "name", NewName, charsmax(NewName));
		
		if (equali(NewName, OldName))
		{
			return;
		}
	
		if ( CmdBugCvarValue == 1 )
		{
			stringFilter(NewName, charsmax(NewName));
			set_user_info(Index, "name", NewName);
		}
	
		if ( AdminLoginCvarValue == 1 && IsAdmin[Index] )
		{
			IsAdmin[Index] = false;
			remove_user_flags(Index);
		}
	}
	
	return;
}

public plugin_pause()
{
	if (getInteger(PluginCvar[anti_pause]) == 1)
	{
		new PluginName[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		if (getInteger(PluginCvar[plug_warn]) == 1)
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(0, Grey, LangType, LANG_PLAYER, "ROM_PLUGIN_PAUSE", "^3", CvarString, "^4");
			#else
				client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "ROM_PLUGIN_PAUSE", CvarString);
			#endif
		}
		
		if (getInteger(PluginCvar[plug_log]) == 1)
		{
			logCommand(NoLogInfo, LangType, LANG_SERVER, "ROM_PLUGIN_PAUSE_LOG", CvarString, CvarString);
		}
		
		get_plugin(-1, PluginName, charsmax(PluginName));
		server_cmd("amxx unpause %s", PluginName);
	}
}

public cmdPass(Index)
{
	if ( getInteger(PluginCvar[admin_login]) != 1 )
	{
		return PLUGIN_HANDLED;
	}

	new Name[MAX_NAME_LENGTH], Password[32], CvarString[32];
	
	get_user_name(Index, Name, charsmax(Name));
	read_argv(1, Password, charsmax(Password));
	remove_quotes(Password);
	getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
	if (!Password[0])
	{
		#if AMXX_VERSION_NUM < 183
			client_print_color(Index, Grey, LangType, Index, "ROM_ADMIN_WITHOUT_PASS", "^3", CvarString, "^4");
		#else
			client_print_color(Index, print_team_grey, LangType, Index, "ROM_ADMIN_WITHOUT_PASS", CvarString);
		#endif
		console_print(Index, LangType, Index, "ROM_ADMIN_WITHOUT_PASS_PRINT", CvarString);

		return PLUGIN_HANDLED;
	}

	loadAdminLogin();
	IsAdmin[Index] = false;
	if ( !getAccess(Index, Password, charsmax(Password)) )
	{
		return PLUGIN_HANDLED;
	}
	
	if (!IsAdmin[Index])
	{
		LastPass[Index][0] = EOS;
		if (!CorrectName[Index])
		{		
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "ROM_ADMIN_WRONG_NAME", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "ROM_ADMIN_WRONG_NAME", CvarString);
			#endif
			console_print(Index, LangType, Index, "ROM_ADMIN_WRONG_NAME_PRINT", CvarString);
		}
		else
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "ROM_ADMIN_WRONG_PASS", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "ROM_ADMIN_WRONG_PASS", CvarString);
			#endif
			console_print(Index, LangType, Index, "ROM_ADMIN_WRONG_PASS_PRINT", CvarString);
		}
	}
	else
	{
		if ( equal(LastPass[Index], Password) )
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "ROM_ADMIN_ALREADY_LOADED", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "ROM_ADMIN_ALREADY_LOADED", CvarString);
			#endif
			console_print(Index, LangType, Index, "ROM_ADMIN_ALREADY_LOADED_PRINT", CvarString);
		}
		else
		{
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, Index, "ROM_ADMIN_LOADED", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, Index, "ROM_ADMIN_LOADED", CvarString);
			#endif
			console_print(Index, LangType, Index, "ROM_ADMIN_LOADED_PRINT", CvarString);

			IsAdmin[Index] = true;
		}
	}

	return PLUGIN_HANDLED;
}

#if AMXX_VERSION_NUM < 183
	public hookAdminChat(Index)
	{
		new Said[2];
		
		read_argv(1, Said, charsmax(Said));

		if (Said[0] != '@')
		{
			return PLUGIN_CONTINUE;
		}

		new Float:maxChat = get_pcvar_float(PluginCvar[admin_chat_flood_time]);

		if (maxChat && getInteger(PluginCvar[admin_chat_flood]) == 1)
		{
			new Float:NexTime = get_gametime();

			if (Flooding[Index] > NexTime)
			{
				if (Flood[Index] >= 3)
				{
					IsFlooding[Index] = true;
					set_task(1.0, "showAdminChatFloodWarning", Index);
					Flooding[Index] = NexTime + maxChat + 3.0;
					return PLUGIN_HANDLED;
				}
				++Flood[Index];
			}
			else
			{
				if (Flood[Index])
				{
					--Flood[Index];
				}
			}
			
			Flooding[Index] = NexTime + maxChat;
		}

		return PLUGIN_CONTINUE;
	}
#endif

#if AMXX_VERSION_NUM < 183
	public showAdminChatFloodWarning(Index)
	{
		if ( IsFlooding[Index] )
		{
			new CvarString[32];
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				client_print_color(Index, Grey, LangType, Index, "ROM_ADMIN_CHAT_FLOOD", "^3", CvarString, "^4");
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_ADMIN_CHAT_FLOOD_LOG", CvarString);
			}
			
			IsFlooding[Index] = false;
		}
	}
#endif

public showAdvertise()
{
	new CvarString[32];
	getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
	
	#if AMXX_VERSION_NUM < 183
		client_print_color(0, Grey, LangType, LANG_PLAYER, "ROM_ADVERTISE", "^3", CvarString, "^4", "^3", PluginName, "^4", "^3", Version, "^4");
	#else
		client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "ROM_ADVERTISE", CvarString, PluginName, Version);
	#endif
}

public cleanResFiles() 
{ 
	new MapsDir[] = "maps"; 
	new const ResExt[] = ".res"; 
	new ResFile[64], Len; 
	new DirPointer = open_dir(MapsDir, ResFile, charsmax(ResFile)); 
	
	if ( !DirPointer )
	{
		return; 
	}
	
	new FullPathFileName[128];
	
	do 
	{ 
		Len = strlen(ResFile);
		
		if ( Len > 4 && equali(ResFile[Len-4], ResExt) ) 
		{ 
			if ( TrieKeyExists(DefaultRes, ResFile) ) 
			{
				continue;
			}
			
			formatex(FullPathFileName, charsmax(FullPathFileName), "%s/%s", MapsDir, ResFile); 
			write_file(FullPathFileName, "/////////////////////////////////////////////////////////////^n", 0); 
		} 
	} 
	while ( next_file(DirPointer, ResFile, charsmax(ResFile)) );
	
	close_dir(DirPointer);
} 


public reloadLogin(Index, level, cid) 
{
	AdminsReloaded = true;
	set_task(1.0, "reloadDelay");
}

public client_command(Index)
{
	if (getInteger(PluginCvar[spec_bug]) == 1)
	{	
		new Command[15];
		read_argv(0, Command, charsmax(Command));
		if (equali(Command, "joinclass") || (equali(Command, "menuselect") && get_pdata_int(Index, m_iMenu) == Menu_ChooseAppearance))
		{
			if (get_user_team(Index) == 3)
			{
				set_pdata_int(Index, m_iMenu, Menu_OFF);
				engclient_cmd(Index, "jointeam", "6");
				return PLUGIN_HANDLED;
			}
		}
	}
	
	if (AdminsReloaded)
	{
		reloadDelay();
	}

	return PLUGIN_CONTINUE;
}

public reloadDelay()
{
	if (!AdminsReloaded)
	{
		return;
	}
	new Players[MAX_PLAYERS], PlayersNum;
	
	get_players(Players, PlayersNum, "ch");
	
	for (new i = 0; i < PlayersNum; ++i)
	{
		if ( IsAdmin[Players[i]] )
		{
			getAccess(Players[i], LastPass[Players[i]], charsmax(LastPass[]));
		}
	}
	
	AdminsReloaded = false;
}

public cvarFunc(Index) 
{ 
	if ( !is_user_admin(Index) )
	{
		return PLUGIN_CONTINUE;
	}
		
	if ( getInteger(PluginCvar[motdfile]) == 1 )
	{
		new Cvar[32], Value[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString)); 
		
		read_argv(1, Cvar, charsmax(Cvar));
		read_argv(2, Value, charsmax(Value));
		
		if ( equali(Cvar, "motdfile") && contain(Value, ".ini") != -1 ) 
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "ROM_MOTDFILE", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_MOTDFILE_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	if ( getInteger(PluginCvar[protcvars]) == 1 )
	{
		new Command[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString)); 
		
		read_argv(1, Command, charsmax(Command));
		
		if ( containi(Command, "rom_") != -1 )
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "ROM_PROTCVARS", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_PROTCVARS_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	return PLUGIN_CONTINUE; 
}

public rconFunc(Index) 
{ 
	if ( !is_user_admin(Index) )
	{
		return PLUGIN_CONTINUE;
	}
	
	if ( getInteger(PluginCvar[motdfile]) == 1 )
	{
		new Command[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		read_args(Command, charsmax(Command));
		
		if ( containi(Command, "motdfile") && contain(Command, ".ini") != -1 ) 
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "ROM_MOTDFILE", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_MOTDFILE_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	if ( getInteger(PluginCvar[protcvars]) == 1 )
	{
		new Command[32], CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		read_args(Command, charsmax(Command));
		
		if ( !equali(Command, "rom_info") && containi(Command, "rom_") != -1 )
		{
			if ( getInteger(PluginCvar[plug_warn]) == 1 )
			{
				console_print(Index, LangType, Index, "ROM_PROTCVARS", CvarString);
			}
			
			if ( getInteger(PluginCvar[plug_log]) == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_PROTCVARS_LOG", CvarString);
			}
			
			return PLUGIN_HANDLED; 
		}
	}
	
	return PLUGIN_CONTINUE; 
}

public hookBanClassCommand(Index)
{ 
	if ( !is_user_admin(Index) )
	{
		return PLUGIN_CONTINUE;
	}
	
	new Value = getInteger(PluginCvar[anti_ban_class]);
	
	if ( Value > 0 )
	{
		new Ip[32], IpNum[4][3], NumStr[1];
		
		read_argv(1, Ip, charsmax(Ip));
		
		if ( containi( Ip, "STEAM") != -1 || containi( Ip, "VALVE") != -1 )
		{
			return PLUGIN_CONTINUE;
		}
		
		for	(new i = 0; i < 4; ++i)
		{
			split(Ip, IpNum[i], charsmax(IpNum[]), Ip, charsmax(Ip), ".");
		}
		
		Value = getInteger(PluginCvar[anti_ban_class]);
		
		if ( Value > 4 )
		{
			Value = 4;
		}
			
		num_to_str(Value, NumStr, charsmax(NumStr));
		
		new CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		
		switch (Value)
		{
			case 1:
			{
				if ( str_to_num(IpNum[0]) == 0 || str_to_num(IpNum[1]) == 0 || str_to_num(IpNum[2]) == 0 )
				{
					if (getInteger(PluginCvar[plug_warn]) == 1)
					{
						console_print(Index, LangType, Index, "ROM_ANTI_BAN_CLASS", CvarString);
					}
					
					if (getInteger(PluginCvar[plug_log]) == 1)
					{
						logCommand(Index, LangType, LANG_SERVER, "ROM_ANTI_ANY_BAN_CLASS_LOG", CvarString);
					}
					
					return PLUGIN_HANDLED;
				}
			}
			case 2:
			{
				if ( str_to_num(IpNum[0]) == 0 || str_to_num(IpNum[1]) == 0 )
				{
					if (getInteger(PluginCvar[plug_warn]) == 1)
					{
						console_print(Index, LangType, Index, "ROM_ANTI_BAN_CLASS", CvarString);
					}
					
					if (getInteger(PluginCvar[plug_log]) == 1)
					{
						logCommand(Index, LangType, LANG_SERVER, "ROM_ANTI_SOME_BAN_CLASS_LOG", CvarString, NumStr);
					}
					
					return PLUGIN_HANDLED;
				}
			}
			case 3:
			{
				if ( str_to_num(IpNum[0]) == 0 )
				{
					if (getInteger(PluginCvar[plug_warn]) == 1)
					{
						console_print(Index, LangType, Index, "ROM_ANTI_BAN_CLASS", CvarString);
					}
					
					if (getInteger(PluginCvar[plug_log]) == 1)
					{
						logCommand(Index, LangType, LANG_SERVER, "ROM_ANTI_SOME_BAN_CLASS_LOG", CvarString, NumStr);
					}
					
					return PLUGIN_HANDLED;
				}
			}
			default:
			{
				if (getInteger(PluginCvar[plug_warn]) == 1)
				{
					console_print(Index, LangType, Index, "ROM_ANTI_BAN_CLASS", CvarString);
				}
				
				if (getInteger(PluginCvar[plug_log]) == 1)
				{
					logCommand(Index, LangType, LANG_SERVER, "ROM_ANTI_SOME_BAN_CLASS_LOG", CvarString, NumStr);
				}
				
				return PLUGIN_HANDLED;
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public hookBasicOnChatCommand(Index)
{
	new ColorBugCvarValue = getInteger(PluginCvar[color_bug]), CmdBugCvarValue = getInteger(PluginCvar[cmd_bug]);
	if ( CmdBugCvarValue == 1 || ColorBugCvarValue == 1 )
	{
		new Said[192], bool:IsUsedCmdBug[MAX_PLAYERS+1], bool:IsUsedColorBug[MAX_PLAYERS+1];
		
		read_args(Said, charsmax(Said));
		
		for (new i = 0; i < sizeof Said ; ++i)
		{
			if ( CmdBugCvarValue == 1 && (Said[i] == '#' && isalpha(Said[i+1])) || (Said[i] == '%' && Said[i+1] == 's') )
			{
				IsUsedCmdBug[Index] = true;
				break;
			}
			if ( ColorBugCvarValue == 1 )
			{
				if ( Said[i] == '' || Said[i] == '' || Said[i] == '' )
				{
					IsUsedColorBug[Index] = true;
					break;
				}
			}
		}
		new WarnCvarValue = getInteger(PluginCvar[plug_warn]), LogCvarValue = getInteger(PluginCvar[plug_log]), CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		if ( IsUsedCmdBug[Index] )
		{
			if ( WarnCvarValue == 1 )
			{
				new CvarTag[32];
				copy(CvarTag, charsmax(CvarTag), CvarString);
				
				#if AMXX_VERSION_NUM < 183
					client_print_color( Index, Grey, LangType, Index, "ROM_CMD_BUG", "^3", CvarTag, "^4");
				#else
					client_print_color( Index, print_team_grey, LangType, Index, "ROM_CMD_BUG", CvarTag);
				#endif
				console_print(Index, LangType, Index, "ROM_CMD_BUG_PRINT", CvarTag);
			}
			if ( LogCvarValue == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_CMD_BUG_LOG", CvarString);
			}
			IsUsedCmdBug[Index] = false;
			return PLUGIN_HANDLED;
		}
		if ( IsUsedColorBug[Index] )
		{
			if ( WarnCvarValue == 1 )
			{
				#if AMXX_VERSION_NUM < 183
					client_print_color( Index, Grey, LangType, Index, "ROM_COLOR_BUG", "^3", CvarString, "^4");
				#else
					client_print_color( Index, print_team_grey, LangType, Index, "ROM_COLOR_BUG", CvarString );
				#endif
			}
			if ( LogCvarValue == 1 )
			{
				logCommand(Index, LangType, LANG_SERVER, "ROM_COLOR_BUG_LOG", CvarString);
			}
			IsUsedColorBug[Index] = false;
			return PLUGIN_HANDLED;
		}
	}
	return PLUGIN_CONTINUE;
}

public checkBot(Index, const Var[], const Value[])
{
    if ( equal(Var, "fps_max") && Value[0] == 'B' )
    {
		new CvarString[32];
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		if ( getInteger(PluginCvar[plug_log]) == 1 )
		{
			logCommand(Index, LangType, LANG_SERVER, "ROM_FAKE_PLAYERS_DETECT_LOG", CvarString);
		}
		
		console_print(Index, LangType, Index, "ROM_FAKE_PLAYERS_DETECT", CvarString);
		server_cmd("kick #%d ^"You got kicked. Check console.^"", get_user_userid(Index));
    }
}

public CheckAutobuyBug(Index)		
{		
	new Command[512];
	new Count = read_argc();
	
	for (new i = 1; i <= Count; ++i)
	{		
		read_argv(i, Command, charsmax(Command));
		if ( getInteger(PluginCvar[autobuy_bug]) == 1 )
		{
			new CvarString[32];
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			if ( checkLong(Command, charsmax(Command)) )
			{		
				if ( getInteger(PluginCvar[plug_warn]) == 1 )
				{		
					#if AMXX_VERSION_NUM < 183		
						client_print_color( Index, Grey, LangType, Index, "ROM_AUTOBUY", "^3", CvarString, "^4");		
					#else		
						client_print_color( Index, print_team_grey, LangType, Index, "ROM_AUTOBUY", CvarString);
					#endif		
				}
			
				if ( getInteger( PluginCvar[plug_log] ) == 1 )
				{
					logCommand(Index, LangType, LANG_SERVER, "ROM_AUTOBUY_LOG", CvarString);
				}
			
				return PLUGIN_HANDLED;		
			}
		}
	}
	
	return PLUGIN_CONTINUE;		
}

public giveClientInfo(Index)
{
	if ( getInteger(PluginCvar[info]) != 1 )
	{
		return PLUGIN_HANDLED;
	}
		
	console_print(Index, "^n^n^nVersiune curenta : %s. Build : %d. Data lansarii versiunii : %s.", Version, Build, Date);
	#if AMXX_VERSION_NUM >= 183
		console_print(Index, "Autor : VrînceanAlex.lüxor. Comunitatea : FioriGinal.Ro" );
	#else
		console_print(Index, "Autor : VrinceanAlex.luxor. Comunitatea : FioriGinal.Ro" );
	#endif
	console_print(Index, "Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-IsFlooding-bug-fix-t28292.html");
	console_print(Index, "Contact : luxxxoor (Steam) / alex.vrincean (Skype).^n^n^n");
	
	return PLUGIN_HANDLED;
}

public giveServerInfo(Index)
{
	if ( getInteger(PluginCvar[info]) != 1 )
	{
		return PLUGIN_HANDLED;
	}
	
	server_print("^n^n^nVersiune curenta : %s. Build : %d. Data lansarii versiunii : %s.", Version, Build, Date);
	server_print("Autor : luxor # Dr.Fio & DR2.IND. Comunitatea : FioriGinal.Ro" );
	server_print("Link oficial : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-flood-bug-fix-t28292.html");
	server_print("Contact : luxxxoor (Steam) / alex.vrincean (Skype).");
	server_print("Sursa in dezvoltare : https://github.com/luxxxoor/ROM-Protect ^n");
	server_print("Acest plugin este unul OpenSource ! Este interzisa copierea/vinderea lui pentru a obtine bani.");
	server_print("Plugin-ul se afla in plina dezvoltare si este menit sa ofere un minim de siguranta serverelor care nu provin de la firme de host scumpe, care sa comfere siguranta serverelor.");
	server_print("Clientii pot edita plugin-ul dupa bunul lor plac, fie din fisierul configurator si fisier lang, fie direct din sursa acestuia.");
	server_print("Copyright 2014-2016");
	
	return PLUGIN_HANDLED;
}

public hookChat(Index)
{
	new Said[192];
	read_args(Said, charsmax(Said));
	
	if ( getInteger(PluginCvar[console_say]) && checkForBinds(Index, Said) == PLUGIN_HANDLED)
	{
		return PLUGIN_HANDLED;
	}
	if (hookForXFakePlayerSpam(Index, Said) == PLUGIN_HANDLED)
	{
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE;
}

checkForBinds(Index, Said[])
{
	if(Said[0] != '^"')
	{
		static Trie:SafeCommands;
		if (SafeCommands == Invalid_Trie)
		{
			SafeCommands = TrieCreate();
			
			if (!file_exists(IniFile))
			{
				write_file(IniFile, "//Aici vor fi adaugate comenzile de chat considerate safe, una sub alta :^n", 0);
				return PLUGIN_CONTINUE;
			}
			else
			{
				new FilePointer = fopen(IniFile, "rt");
		
				if (!FilePointer) 
				{
					return PLUGIN_CONTINUE;
				}
				
				new Text[121];
				
				while (!feof(FilePointer))
				{
					fgets(FilePointer, Text, charsmax(Text));
					trim(Text);
					
					if ((Text[0] == ';') || !Text[0] || ((Text[0] == '/') && (Text[1] == '/')))
					{
						continue;
					}
					
					strtolower(Text);
					TrieSetCell(SafeCommands, Text, 0);
				}
				fclose(FilePointer);
			}
			goto Valid;
		}
		else
		{
			Valid:
			strtolower(Said);
			if (TrieKeyExists(SafeCommands, Said))
			{
				return PLUGIN_CONTINUE;
			}
			
			new CvarString[32];
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			#if AMXX_VERSION_NUM < 183
				client_print_color(Index, Grey, LangType, LANG_PLAYER, "ROM_BIND_SPAM", "^3", CvarString, "^4");
			#else
				client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "ROM_BIND_SPAM", CvarString);
			#endif
			return PLUGIN_HANDLED;
		}
		return PLUGIN_CONTINUE;
	}
   
	return PLUGIN_CONTINUE;
}

hookForXFakePlayerSpam(Index, Said[])
{
	new xFakePlayerCvarValue = getInteger(PluginCvar[xfakeplayer_spam]), CvarString[32];
	if (is_user_admin(Index))
	{
		if ( FirstMsg[Index] && xFakePlayerCvarValue == 1 )
		{
			FirstMsg[Index] = false;
		}
		return PLUGIN_CONTINUE;
	}
	getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
	switch( xFakePlayerCvarValue )
	{
		case 1 :
		{
			if (Gag[Index])
			{
				return PLUGIN_HANDLED;
			}
			
			remove_quotes(Said);
	
			if ( strlen(Said) <= getInteger(PluginCvar[xfakeplayer_spam_maxchars])+1 )
			{	
				if ( FirstMsg[Index] )
				{
					FirstMsg[Index] = false;
				}
				return PLUGIN_CONTINUE;
			}
			else
			{
				if ( FirstMsg[Index] )
				{
					FirstMsg[Index] = false;
					ClSaidSameTh_Count[Index]++;
					copy(PreviousMessage[Index], charsmax(PreviousMessage[]), Said);
					return PLUGIN_HANDLED;
				}
			}
	
			if ( ClSaidSameTh_Count[Index]++ > 0 )
			{
				if ( equal(Said, PreviousMessage[Index]) )
				{
					if ( getInteger(PluginCvar[plug_warn]) == 1 )
					{
						#if AMXX_VERSION_NUM < 183
							client_print_color(Index, Grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM_WARN", "^3", CvarString, "^4");
						#else
							client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM_WARN", CvarString);
						#endif
					}		
			
					if ( ClSaidSameTh_Count[Index] >= getInteger(PluginCvar[xfakeplayer_spam_maxsais]) )
					{
						new Address[32];
						get_user_ip(Index, Address, charsmax(Address), 1);
						switch ( getInteger(PluginCvar[xfakeplayer_spam_type]) )
						{
							case 0 :
							{
								#if AMXX_VERSION_NUM < 183
									client_print_color(Index, Grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM_GAG", "^3", CvarString, "^4");
								#else
									client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM_GAG", CvarString);
								#endif
								Gag[Index] = true;
								return PLUGIN_HANDLED; 
							}
							case 1 :
							{
								if ( getInteger(PluginCvar[plug_warn]) == 1 )
								{
									console_print(Index, LangType, Index, "ROM_XFAKE_PLAYERS_SPAM_KICK", CvarString);
									server_cmd("kick #%d ^"You got kicked. Check console.^"", get_user_userid(Index));
								}
								else
								{
									server_cmd("kick #%d", get_user_userid(Index));
								}
							}
							default :
							{
								new Punish[8];
					
								num_to_str(getInteger(PluginCvar[xfakeplayer_spam_punish]), Punish, charsmax(Punish));
		
								if ( getInteger(PluginCvar[plug_warn]) == 1 )
								{
									new CvarTag[32];
									copy(CvarTag, charsmax(CvarTag), CvarString);
							
									#if AMXX_VERSION_NUM < 183
										client_print_color(0, Grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM", "^3", CvarTag, "^4", Address);
										client_print_color(0, Grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM_PUNISH", "^3", CvarTag, "^4", Punish);
									#else
										client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM", CvarTag, Address);
										client_print_color(0, print_team_grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_SPAM_PUNISH", CvarTag, Punish);
									#endif
					
									console_print(Index, LangType, Index, "ROM_XFAKE_PLAYERS_SPAM_BAN", CvarString, Punish);
								}
						
								server_cmd("addip ^"%s^" ^"%s^";wait;writeip", Punish, Address);
							}
						}
				
						if ( getInteger(PluginCvar[plug_log]) == 1 )
						{
							logCommand(NoLogInfo, LangType, LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_LOG", CvarString, Address);
						}
					}
				
					return PLUGIN_HANDLED;
				}
				else
				{
					ClSaidSameTh_Count[Index] = 0;
				}
			}
		}
		case 2:
		{
			remove_quotes(Said);
			if ( !UnBlockedChat[Index] )
			{
				if (equal(Said, Capcha[Index]))
				{
					UnBlockedChat[Index] = true;
					#if AMXX_VERSION_NUM < 183
						client_print_color(Index, Grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT", "^3", CvarString, "^4");
					#else
						client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT", CvarString);
					#endif
					return PLUGIN_HANDLED;
				}
				else
				{	
					#if AMXX_VERSION_NUM < 183
						client_print_color(Index, Grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_CAPCHA", "^3", CvarString, "^4", "^3", Capcha[Index], "^4");
					#else
						client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "ROM_XFAKE_PLAYERS_CAPCHA", CvarString, Capcha[Index]);
					#endif
					return PLUGIN_HANDLED;
				}
			}
		}
		default :
		{
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

public delayforSavingLastPass(UserPass[], Index)
{
	copy(LastPass[Index], charsmax(LastPass[]), UserPass);
}

bool:getAccess(Index, UserPass[], len)
{
	new UserName[MAX_NAME_LENGTH], CvarString[32];

	get_user_name(Index, UserName, charsmax(UserName));
	
	if (!(get_user_flags(Index) & ADMIN_RESERVATION))
	{
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		#if AMXX_VERSION_NUM < 183
			client_print_color(Index, Grey, LangType, LANG_PLAYER, "ROM_ADMIN_HASNT_SLOT", "^3", CvarString, "^4");
		#else
			client_print_color(Index, print_team_grey, LangType, LANG_PLAYER, "ROM_ADMIN_HASNT_SLOT", CvarString);
		#endif
		return false;
	}
	
	strtolower(UserName);
#if AMXX_VERSION_NUM < 183
	for (new i = 0; i < AdminNum; ++i)
#else
	for (new i = 0; i < TrieGetSize(LoginName); ++i)
#endif
	{
		if ( TrieKeyExists(LoginName, UserName) )
		{
			CorrectName[Index] = true;
		}
		else
		{
			CorrectName[Index] = false;
			continue;
		}
		new TempData[AdminLogin];
		TrieGetArray(LoginName, UserName, TempData, charsmax(TempData));
		
		if ( equal(TempData[LoginFlag], "f") && CorrectName[Index] )
		{
			if ( equal(TempData[LoginPass], UserPass) || IsAdmin[Index] )
			{
				new Access = read_flags(TempData[LoginAccess]);
				remove_user_flags(Index);
				set_user_flags(Index, Access);
				IsAdmin[Index] = true;
				set_task(0.1, "delayforSavingLastPass", Index, UserPass, len);
			}
			
			break;
		}
	}
	
	return true;
}

public loadAdminLogin()
{
	new Path[64], CvarString[32];
	
	get_localinfo("amxx_configsdir", Path, charsmax(Path));
	getString(PluginCvar[admin_login_file], CvarString, charsmax(CvarString));
	format(Path, charsmax(Path), "%s/%s", Path, CvarString);
	
	if ( !file_exists(Path) )
	{
		new FilePointer = fopen(Path, "wt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		if ( getInteger(PluginCvar[plug_log]) == 1 )
		{
			getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
			logCommand(NoLogInfo, LangType, LANG_SERVER, "ROM_FILE_NOT_FOUND", CvarString, Path);
		}
		
		fputs(FilePointer, "; Aici vor fi inregistrate adminele protejate.^n");
		fputs(FilePointer, "; Exemplu de adaugare admin : ^"nume^" ^"parola^" ^"acces^" ^"f^"^n");
		
		fclose(FilePointer);
	}
	else
	{
		new FilePointer = fopen(Path, "rt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		if (LoginName == Invalid_Trie)
		{
			LoginName = TrieCreate();
		}
		TrieClear(LoginName);
		
		#if AMXX_VERSION_NUM < 183
			AdminNum = 0;
		#endif
		
		new Text[121], Name[MAX_NAME_LENGTH], Password[32], Access[26], Flags[6], TempData[AdminLogin];
		
		while (!feof(FilePointer))
		{
			fgets(FilePointer, Text, charsmax(Text));

			trim(Text);
		
			if ( (Text[0] == ';') || !Text[0] || ((Text[0] == '/') && (Text[1] == '/')) )
			{
				continue;
			}
		
			if (parse(Text, Name, charsmax(Name), TempData[LoginPass], charsmax(TempData[LoginPass]), 
							TempData[LoginAccess], charsmax(TempData[LoginAccess]), TempData[LoginFlag], charsmax(TempData[LoginFlag])) != 4)
			{
				continue;
			}
		
			strtolower(Name);
			TrieSetArray(LoginName, Name, TempData, charsmax(TempData));
		
			#if AMXX_VERSION_NUM < 183
				++AdminNum;
			#endif
		
			if (getInteger(PluginCvar[admin_login_debug]) == 1)
			{
				server_print(LangType, LANG_SERVER, "ROM_ADMIN_DEBUG", Name, Password, Access, Flags);
			}
		}
		
		fclose(FilePointer);
	}

	
}

logCommand(Index, const StandardMessage[], any:...)
{
	new LogMessage[256], Time[32], MapName[64];
	
	get_time(" %H:%M:%S ", Time, charsmax(Time));
	vformat(LogMessage, charsmax(LogMessage), StandardMessage, 3);
	get_mapname(MapName, charsmax(MapName));
	format(LogMessage, charsmax(LogMessage), "L %s|%s| %s", Time, MapName, LogMessage);
	
	if (Index != NoLogInfo)
	{
		new String[32];
		get_user_name(Index, String, charsmax(String));
		#if AMXX_VERSION_NUM < 183
			replace_all(LogMessage, charsmax(LogMessage), "$name$", String);
		#else
			replace_string(LogMessage, charsmax(LogMessage), "$name$", String);
		#endif
			
		get_user_ip(Index, String, charsmax(String), any:true);
		#if AMXX_VERSION_NUM < 183
			replace_all(LogMessage, charsmax(LogMessage), "$ip$", String);
		#else
			replace_string(LogMessage, charsmax(LogMessage), "$ip$", String);
		#endif
			
		if (Index)
		{
			get_user_authid(Index, String, charsmax(String));
		}
		else
		{
			copy(String, charsmax(String), "SERVER");
		}
		#if AMXX_VERSION_NUM < 183
			replace_all(LogMessage, charsmax(LogMessage), "$authid$", String);
		#else
			replace_string(LogMessage, charsmax(LogMessage), "$authid$", String);
		#endif
	}
	
	server_print(LogMessage);
	write_file(LogFile, LogMessage, -1);
}

getString(Cvar, Buffer[], Len)
{
	get_pcvar_string(Cvar, Buffer, Len);
}

getInteger(Cvar)
{
	return get_pcvar_num(Cvar);
}

Float:getFloat(Cvar)
{	
	return get_pcvar_float(Cvar);
} 

registersPrecache()
{
	if (getHldsVersion() < 6027)
	{
		#if AMXX_VERSION_NUM >= 183
			PluginCvar[autobuy_bug] = create_cvar("rom_autobuy_bug" ,"1", _, _, true, 0.0, true, 1.0);
			PluginCvar[utf8_bom] = create_cvar("rom_utf8_bom", "0", _, _, true, 0.0, true, 1.0);
		#else
			PluginCvar[autobuy_bug] = register_cvar("rom_autobuy_bug", "1");
			PluginCvar[utf8_bom] = register_cvar("rom_utf8_bom", "0");
		#endif
	}
	else
	{
		#if AMXX_VERSION_NUM >= 183
			PluginCvar[autobuy_bug] = create_cvar("rom_autobuy_bug" ,"0", _, _, true, 0.0, true, 1.0);
			PluginCvar[utf8_bom] = create_cvar("rom_utf8_bom", "1", _, _, true, 0.0, true, 1.0);
		#else
			PluginCvar[autobuy_bug] = register_cvar("rom_autobuy_bug", "0");
			PluginCvar[utf8_bom] = register_cvar("rom_utf8_bom", "1");
		#endif
	}
	
	for (new i = 2; i < AllCvars; i++)
	{
		#if AMXX_VERSION_NUM >= 183
			PluginCvar[i] = create_cvar(CvarName[i] ,CvarValue[i], _, _, bool:CvarLimits[i][hasMinValue], float(CvarLimits[i][minValue]),
									  bool:CvarLimits[i][hasMaxValue], float(CvarLimits[i][maxValue]));
		#else
			PluginCvar[i] = register_cvar(CvarName[i] ,CvarValue[i]);
		#endif
	}
}

registersInit()
{
	register_plugin(PluginName, Version, "FioriGinal.Ro");
	register_cvar("rom_protect", Version, FCVAR_SERVER | FCVAR_SPONLY);
	
	register_clcmd("say", "hookChat");
	register_clcmd("say_team", "hookChat");
	
	for (new i = 0; i < sizeof AllBasicOnChatCommads; ++i)
	{
		register_concmd(AllBasicOnChatCommads[i], "hookBasicOnChatCommand");	
	
	}
	
	#if AMXX_VERSION_NUM < 183
		register_clcmd("say_team", "hookAdminChat");
	#endif
	
	if (getHldsVersion() < 6027)
	{
		for (new i = 0; i < sizeof AllAutobuyCommands; ++i)
		{
			register_clcmd(AllAutobuyCommands[i], "CheckAutobuyBug");
		}
	}
	
	if ( find_plugin_byfile("advanced_bans.amxx") != -1 ) // in cazul in care acest plugin va fi detectat, serverul nu va mai avea nevoie de aceasta protectie
		register_concmd("amx_addban", "hookBanClassCommand");
	
	register_concmd("amx_reloadadmins", "reloadLogin");	
	register_concmd("amx_cvar", "cvarFunc");
	register_clcmd("amx_rcon", "rconFunc");
	register_clcmd("login", "cmdPass");
	register_clcmd("rom_info", "giveClientInfo");
	register_srvcmd("rom_info", "giveServerInfo");
}

public stringFilter(String[], Len)
{
	for (new i = 0; String[i] != 0; ++i)
	{
		if ((String[i] == '#' || String[i] == '+') && isalpha(String[i+1]))
		{
			format(String[i+1], Len, " %s", String[i+1]);
		}
	}
}

bool:clientUseSteamid(Index) 
{	
	new AuthID[35]; 
	get_user_authid(Index, AuthID, charsmax(AuthID) );
	
	return (contain(AuthID , ":") != -1 && containi(AuthID , "STEAM") != -1) ? true : false; 
}

getHldsVersion()
{
	new VersionPonter, VersionString[24], Pos;
	new const VersionSizeNum = 4;
   
	VersionPonter = get_cvar_pointer("sv_version");
	get_pcvar_string(VersionPonter, VersionString, charsmax(VersionString));
	Pos = strlen(VersionString) - VersionSizeNum;
	format(VersionString, VersionSizeNum, "%s", VersionString[Pos]);
	
	return str_to_num(VersionString);
}

bool:checkLong(cCommand[], Len)
{
	new mCommand[512];
	
	while (strlen(mCommand))
	{
		strtok(cCommand, mCommand, charsmax(mCommand), cCommand, Len , ' ', 1);
		if ( strlen( mCommand ) > 31 )
		{
			return true;
		}
	}
	
	return false;
}

getVaultDir()
{
	new BaseDir[128];
	
	get_basedir(BaseDir, charsmax(BaseDir));
	format(BaseDir, charsmax(BaseDir), "%s/data/vault.ini", BaseDir);
	
	if ( file_exists(BaseDir) )
	{
		delete_file(BaseDir);	
	}
	
	return BaseDir;
}

WriteCfg( bool:exist )
{	
	new FilePointer = fopen(CfgFile, "wt"), CvarString[32];
	
	if ( !FilePointer ) 
	{
		return;
	}
	
	writeSignature(FilePointer);
	
	fputs(FilePointer, "// Verificare daca CFG-ul a fost executat cu succes.^n");
	fputs(FilePointer, "echo ^"*ROM-Protect : Fisierul rom_protect.cfg a fost gasit. Incep protejarea serverului.^"^n^n");
	fputs(FilePointer, "// Cvar      : rom_cmd_bug^n");
	fputs(FilePointer, "// Scop      : Urmareste chat-ul si opeste bugurile de tip ^"client overflow^" care dau crush client-elor jucatorilor.^n");
	fputs(FilePointer, "// Impact    : Serverul nu pateste nimic, insa playerii acestuia primesc ^"quit^" indiferent de ce client folosesc, iar serverul ramane gol.^n");
	fputs(FilePointer, "// Nota      : -^n");
	fputs(FilePointer, "// Update    : Incepand cu versiunea 1.0.1s, plugin-ul protejeaza serverele si de noul cmd-bug bazat pe caracterul '#'. Plugin-ul blocheaza de acum '#' si '%' in chat si '#' in nume.^n");
	fputs(FilePointer, "// Update    : Incepand cu versiunea 1.0.3a, plugin-ul devine mai inteligent, si va bloca doar posibilele folosiri ale acestui bug, astfel incat caracterele '#' si '%' vor putea fi folosite, insa nu in toate cazurile.^n");
	fputs(FilePointer, "// Update    : Incepand cu versiunea 1.0.3s, plugin-ul inlatura si bugul provotat de caracterul '+' in nume, acesta incercand sa deruteze playerii sau adminii (nu apare numele jucatorului in meniuri).^n");
	fputs(FilePointer, "// Update    : Incepand cu versiunea 1.0.4b, plugin-ul verifica si comenzile de baza care pot elibera mesaje in chat (ex: amx_say, amx_psay, etc.), adica toate comenzile prezente in adminchat.amxx.^n");
	fputs(FilePointer, "// Update    : Incepand cu versiunea 1.0.4f, plugin-ul devine mai indulgent cu jucatorii, si nu va mai inlocui caractere '#' si '+' cu un spatiu din nume, ci va pune un spatiu dupa acestea.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Atacul este blocat. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_cmd_bug ^"%d^"^n^n", getInteger(PluginCvar[cmd_bug]));
	}
	else
	{
		fputs(FilePointer, "rom_cmd_bug ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_spec_bug^n");
	fputs(FilePointer, "// Scop      : Urmareste activitatea jucatorilor si opreste schimbarea echipei la spectator daca acestia au deschis meniul de selectare al modelului, pentru a opri specbug.^n");
	fputs(FilePointer, "// Impact    : Serverul primeste crash in momentul in care se apeleaza la acest bug.^n");
	fputs(FilePointer, "// Update    : Incepand cu versiunea 1.0.4s, plugin-ul nu mai face greseli, astfel incat nu se vor mai face detectii false.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Atacul este blocat. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_spec_bug ^"%d^"^n^n", getInteger(PluginCvar[spec_bug]));
	}
	else
	{
		fputs(FilePointer, "rom_spec_bug ^"1^"^n^n");
	}

	#if AMXX_VERSION_NUM < 183
		fputs(FilePointer, "// Cvar      : rom_admin_chat_flood^n");
		fputs(FilePointer, "// Scop      : Urmareste activitatea jucatorilor care folosesc chat-ul adminilor, daca persoanele incearca sa flood-eze acest chat sunt opriti fortat.^n");
		fputs(FilePointer, "// Impact    : Serverul nu pateste nimic, insa cei cu acces la ^"admin chat^"(U@) primesc kick cu motivul : ^"Reliable channel overflowed^".^n");
		fputs(FilePointer, "// Nota      : Acesta functie este disponibila doar pentru serverele cu AMXX 1.8.1 sau AMXX 1.8.2 .^n");
		fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
		fputs(FilePointer, "// Valoarea 1: Atacul este blocat. [Default]^n");
		if (exist)
		{
			fprintf(FilePointer, "rom_admin_chat_flood ^"%d^"^n", getInteger(PluginCvar[admin_chat_flood]));
		}
		else
		{
			fputs(FilePointer, "rom_admin_chat_flood ^"1^"^n^n");  
		}
		
		fputs(FilePointer, "// Cvar      : rom_admin_chat_flood_time (Activat numai in cazul in care cvarul ^"rom_admin_chat_flood^" este setat pe 1)^n");
		fputs(FilePointer, "// Utilizare : Limiteaza timpul maxim de trimitere al mai multor mesaje de catre acelasi cleint in chat-ul adminilor, blocand astfel atacurile tip ^"chat overflow^".^n");
		fputs(FilePointer, "// Nota      : Este recomandat sa nu se modifice valoarea standard a cvar-ului, pentru ca protectia sa functioneze corect.^n");
		if (exist)
		{
			fprintf(FilePointer, "rom_admin_chat_flood_time ^"%.2f^"^n", getFloat(PluginCvar[admin_chat_flood_time]));
		}
		else
		{
			fputs(FilePointer, "rom_admin_chat_flood_time ^"0.75^"^n^n");
		}
	#endif
		
	fputs(FilePointer, "// Cvar      : rom_autobuy_bug^n");		
	fputs(FilePointer, "// Scop      : Urmareste comenzile de tip autobuy/rebuy, iar daca acestea devin suspecte sunt oprite.^n");		
	fputs(FilePointer, "// Impact    : Serverul primeste crash in momentul in care se apeleaza la acest bug.^n");		
	fputs(FilePointer, "// Nota      : Serverele cu engine HLDS 6xxx nu mai sunt vulnerabile la acest bug.^n");		
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");		
	fputs(FilePointer, "// Valoarea 1: Atacul este blocat. [Default]^n");		
	if (exist)		
	{		
		fprintf(FilePointer, "rom_autobuy_bug ^"%d^"^n^n", getInteger(PluginCvar[autobuy_bug]));
	}		
	else
	{
		if (getHldsVersion() < 6027)
		{
			fputs(FilePointer, "rom_autobuy_bug ^"1^"^n^n");
		}
		else
		{
			fputs(FilePointer, "rom_autobuy_bug ^"0^"^n^n");
		}
	}	
	
	fputs(FilePointer, "// Cvar      : rom_fake_players^n");
	fputs(FilePointer, "// Scop      : Urmareste persoanele conectate pe server si intervine atunci cand numarul persoanelor cu acelasi ip il depaseste pe cel setat in cvarul rom_fake_players_limit.^n");
	fputs(FilePointer, "// Impact    : Serverul poate sa fie tinut in loc (lumea asteptand dupa acesti jucatori sa moara, insa acestia nu o vor face), iar jucatorii morti vor parasi serverul.^n");
	fputs(FilePointer, "// Nota      : Daca sunt mai multe persoane care impart aceasi legatura de internet pot fi banate (N minute), in acest caz ridicati cvarul : rom_fake_players_limit sau opriti rom_fake_players.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Atacul este blocat prin ban 30 minute. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_fake_players ^"%d^"^n^n", getInteger(PluginCvar[fake_players]));
	}
	else
	{
		fputs(FilePointer, "rom_fake_players ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_fake_players_limit (Activat numai in cazul in care cvarul ^"rom_fake_players^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Limiteaza numarul maxim de persoane de pe acelasi IP, blocand astfel atacurile tip fake-player.^n");
	fputs(FilePointer, "// Nota      : Se recomanda ca acest cvar sa nu fie scazut sub valoarea ^"3^".^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_fake_players_limit ^"%d^"^n^n", getInteger(PluginCvar[fake_players_limit]));
	}
	else
	{
		fputs(FilePointer, "rom_fake_players_limit ^"5^"^n^n");
	} 
	
	fputs(FilePointer, "// Cvar      : rom_fake_players_type (Activat numai in cazul in care cvarul ^"rom_fake_players^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Selecteaza tipul de protectie impotriva fake-player-ilor.^n");
	fputs(FilePointer, "// Nota      : In cazul in care sunt prea multi jucatori de pe acelasi ip, setati acest cvar pe valoarea ^"1^".^n");
	fputs(FilePointer, "// Valoarea 0: Daca sunt prea multi jucatori de pe acelasi ip, cei noi intrati vor primi kick.^n");
	fputs(FilePointer, "// Valoarea 1: Daca sunt prea multi jucatori de pe acelasi ip, acestia vor primi ban. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_fake_players_type ^"%d^"^n^n", getInteger(PluginCvar[fake_players_type]));
	}
	else
	{
		fputs(FilePointer, "rom_fake_players_type ^"1^"^n^n");
	} 
	
	fputs(FilePointer, "// Cvar      : rom_fake_players_punish  Activat numai in cazul in care cvarul ^"rom_fake_players_type^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Blocheaza ip-ul atacatorului pentru un interval de timp, masurat in minute.^n");
	fputs(FilePointer, "// Nota      : Recomandam sa nu setati o valoarea prea mare, deoarece in cazul unei detectari eronate jucatorii serverului pot avea de suferit.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_fake_players_punish ^"%d^"^n^n", getInteger(PluginCvar[fake_players_punish]));
	}
	else
	{
		fputs(FilePointer, "rom_fake_players_punish ^"10^"^n^n");
	} 
	
	fputs(FilePointer, "// Cvar      : rom_delete_custom_hpk");
	fputs(FilePointer, "// Scop      : La finalul fiecarei harti, se va sterge fisierul custom.hpk.^n");
	fputs(FilePointer, "// Impact    : Serverul experimenteaza probleme la schimbarea hartii, aceasta putand sa dureze si pana la 60secunde.^n");
	fputs(FilePointer, "// Nota      : Eroarea ^"ERROR: couldn't open custom.hpk^" poate fi ignorata, deoarece ea nu afecteaza serverul in nici un mod.^n");
	fputs(FilePointer, "// Valoarea 0: Functie este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Fisierul este sters. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_delete_custom_hpk ^"%d^"^n^n", getInteger(PluginCvar[delete_custom_hpk]));
	}
	else
	{
		fputs(FilePointer, "rom_delete_custom_hpk ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_delete_vault^n");
	fputs(FilePointer, "// Scop      : La finalul fiecarei harti, se va sterge fisierul vault.ini.^n");
	fputs(FilePointer, "// Impact    : Serverul experimenteaza probleme la schimbarea hartii, aceasta putand sa dureze si pana la 60secunde.^n");
	fputs(FilePointer, "// Nota      : In cazul in care salvati anumite date in acest fisier (^"vault.ini^"), setati cvar-ul pe valoarea ^"0^".^n");
	fputs(FilePointer, "// Valoarea 0: Functie este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Fisierul este sters si e setat ^"server_language en^" in vault.ini. [Default]^n");
	fputs(FilePointer, "// Valoarea 2: Fisierul este sters si e setat ^"server_language ro^" in vault.ini.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_delete_vault ^"%d^"^n^n", getInteger(PluginCvar[delete_vault]));
	}
	else
	{
		fputs(FilePointer, "rom_delete_vault ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_advertise^n");
	fputs(FilePointer, "// Efect     : Afiseaza un mesaj prin care anunta clientii ca serverul este protejat de *ROM-Protect.^n");
	fputs(FilePointer, "// Nota      : Mesajul poate fi modificat din fisierul LANG. (^"data/lang/rom_protect.txt^")^n");
	fputs(FilePointer, "// Valoarea 0: Mesajele sunt dezactivate.^n");
	fputs(FilePointer, "// Valoarea 1: Mesajele sunt activate. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_advertise ^"%d^"^n^n", getInteger(PluginCvar[advertise]));
	}
	else
	{
		fputs(FilePointer, "rom_advertise ^"1^"^n^n");
	}

	fputs(FilePointer, "// Cvar      : rom_advertise_time (Activat numai in cazul in care cvarul ^"rom_advertise^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Seteaza ca mesajul sa apara o data la N secunde.^n");
	fputs(FilePointer, "// Nota      : Se recomanda sa nu setati acest cvar pe o valoare prea mica, altfel mesajul va face spam in chat.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_advertise_time ^"%d^"^n^n", getInteger(PluginCvar[advertise_time]));
	}
	else
	{
		fputs(FilePointer, "rom_advertise_time ^"120^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_warn^n");
	fputs(FilePointer, "// Efect     : Afiseaza mesaje prin care anunta clientii care incearca sa distube activitatea normala a serverului.^n");
	fputs(FilePointer, "// Nota      : Mesajele pot fi modificate din fisierul LANG. (^"data/lang/rom_protect.txt^")^n");
	fputs(FilePointer, "// Valoarea 0: Mesajele sunt dezactivate.^n");
	fputs(FilePointer, "// Valoarea 1: Mesajele sunt activate. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_warn ^"%d^"^n^n", getInteger(PluginCvar[plug_warn]));
	}
	else
	{
		fputs(FilePointer, "rom_warn ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_log");
	fputs(FilePointer, "// Efect     : Permite pluginului sa inregistreze activiatatea sa (in log-uri separate).^n");
	fputs(FilePointer, "// Nota      : Daca acest cvar este pornit, in consola serverlui vor fi printate mesajele intiparite in log.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia este activata.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_log ^"%d^"^n^n", getInteger(PluginCvar[plug_log]));
	}
	else
	{
		fputs(FilePointer, "rom_log ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_admi_login");
	fputs(FilePointer, "// Scop      : Permite autentificarea adminilor prin comanda ^"login parola^" in consola (nu necesita setinfo)^n");
	fputs(FilePointer, "// Impact    : Parolele adminilor sunt foarte usor de furat, e destul doar sa intri pe un server iar parola ta nu mai este in sigurata.^n");
	fputs(FilePointer, "// Nota      : Adminurile se adauga normal ^"nume^" ^"parola^" ^"acces^" ^"f^".^n");
	fputs(FilePointer, "// Update    : Incepand de la versiunea 1.0.3a, comanda in chat !login sau /login dispare, deoarece nu era folosita.^n");
	fputs(FilePointer, "// Valoarea 0: Functie este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia este activata. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_admin_login ^"%d^"^n^n", getInteger(PluginCvar[admin_login]));
	}
	else
	{
		fputs(FilePointer, "rom_admin_login ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_admin_login_file (Activat numai in cazul in care cvarul ^"rom_admin_login^" este setat pe 1)^n");
	fputs(FilePointer, "// Efect     : Selecteaza fisierul de unde sa fie citite adminele cu flag ^"f^"^n");
	fputs(FilePointer, "// Nota      : De preferat sa nu se suprapuna cu fisierul de adminurile ^"normale^", altfel unele din adminele protejate pot fi incarcate de plugin-ul de baza, creeand neplaceri.^n");
	if (exist)
	{
		getString(PluginCvar[admin_login_file], CvarString, charsmax(CvarString));
		fprintf(FilePointer, "rom_admin_login_file ^"%s^"^n^n", CvarString);
	}
	else
	{
		fputs(FilePointer, "rom_admin_login_file ^"users_login.ini^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_admin_login_debug (Activat numai in cazul in care cvarul ^"rom_admin_login^" este setat pe 1)^n");
	fputs(FilePointer, "// Efect     : In cazul in care adminurile nu se incarca corect acesta va printa in consola serverului argumentele citite (nume - parola - acces - flag).^n");
	fputs(FilePointer, "// Nota      : Daca funtia este pornita, poate crea lag, scopul ei este doar de a verifica daca adminurile sunt puse corect.^n");
	fputs(FilePointer, "// Valoarea 0: Functie este dezactivata. [Default]^n");
	fputs(FilePointer, "// Valoarea 1: Argumentele sunt printate in consola.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_admin_login_debug ^"%d^"^n^n", getInteger(PluginCvar[admin_login_debug]));
	}
	else
	{
		fputs(FilePointer, "rom_admin_login_debug ^"0^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_utf8_bom^n");
	fputs(FilePointer, "// Scop      : Verifica fiecare fisier .res in maps, si daca descopera urme UTF8-BOM le elimina.^n");
	fputs(FilePointer, "// Impact    : Serverul da crash cu eroarea : Host_Error: PF_precache_generic_I: Bad string.^n");
	fputs(FilePointer, "// Nota      : Eroarea apare doar la versiunile de HLDS 6***.^n");
	fputs(FilePointer, "// Valoarea 0: Functie este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Fisierul este decontaminat. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_utf8_bom ^"%d^"^n^n", getInteger(PluginCvar[utf8_bom]));
	}
	else
	{
		if (getHldsVersion() >= 6027)
		{
			fputs(FilePointer, "rom_utf8_bom ^"1^"^n^n");
		}
		else
		{
			fputs(FilePointer, "rom_utf8_bom ^"0^"^n^n");
		}
	}	
	
	fputs(FilePointer, "// Cvar      : rom_tag^n");
	fputs(FilePointer, "// Utilizare : Seteaza tag-ul pluginului. (Numele acestuia)^n");
	fputs(FilePointer, "// Nota      : De preferat numele tag-ului sa nu depaseasca 32 de caractere, altfel acesta nu va aparea cum trebuie in chat.^n");
	fputs(FilePointer, "// Update    : Incepand de la versiunea 1.0.2s, plugin-ul *ROM-Protect devine mult mai primitor si te lasa chiar sa ii schimbi numele.^n");
	if (exist)
	{
		getString(PluginCvar[Tag], CvarString, charsmax(CvarString));
		fprintf(FilePointer, "rom_tag ^"%s^"^n^n", CvarString);
	}
	else
	{
		fputs(FilePointer, "rom_tag ^"*ROM-Protect^"^n^n");	
	}
	
	fputs(FilePointer, "// Cvar      : rom_color_bug^n");
	fputs(FilePointer, "// Scop      : Urmareste chatul si opeste bugurile de tip color-bug care alerteaza playerii si adminii.^n");
	fputs(FilePointer, "// Impact    : Serverul nu pateste nimic, insa playerii sau adminii vor fi alertati de culorile folosite de unul din clienti.^n");
	fputs(FilePointer, "// Nota      : Daca nu sunteti afectati de acest bug, se recomanda oprirea functiei.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Bug-ul este blocat. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_color_bug ^"%d^"^n^n", getInteger(PluginCvar[color_bug]));
	}
	else
	{
		fputs(FilePointer, "rom_color_bug ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_motdfile^n");
	fputs(FilePointer, "// Scop      : Urmareste activitatea adminilor prin comanda amx_cvar si incearca sa opreasca modificare cvarului motdfile intr-un fisier .ini.^n");
	fputs(FilePointer, "// Impact    : Serverul nu pateste nimic, insa adminul care foloseste acest exploit poate fura date importante din server, precum lista de admini, lista de pluginuri etc.^n");
	fputs(FilePointer, "// Nota      : In curand, se va folosi un algoritm mult mai bun si mai corect, insa doar pentru AMXX 1.8.3 .^n");
	fputs(FilePointer, "// Update    : Incepand de la versiunea 1.0.4f, plugin-ul va bloca acest furt de informatii si prin comadna amx_rcon.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Bug-ul este blocat. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_motdfile ^"%d^"^n^n", getInteger(PluginCvar[motdfile]));
	}
	else
	{
		fputs(FilePointer, "rom_motdfile ^"1^"^n^n");	
	}
	
	fputs(FilePointer, "// Cvar      : rom_anti_pause^n");
	fputs(FilePointer, "// Scop      : Urmareste ca plugin-ul de protectie ^"ROM-Protect^" sa nu poata fi pus pe pauza de catre un raufacator.^n");
	fputs(FilePointer, "// Impact    : Serverul nu mai este protejat de plugin, acesta fiind expus la mai multe exploituri.^n");
	fputs(FilePointer, "// Nota      : Daca doriti sa puteti dezactiva plugin-ul, este recomadat sa setati acest cvar pe valoarea ^"0^".^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Bug-ul este blocat. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_anti_pause ^"%d^"^n^n", getInteger(PluginCvar[anti_pause]));
	}
	else
	{
		fputs(FilePointer, "rom_anti_pause ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_anti_ban_class^n");
	fputs(FilePointer, "// Scop      : Urmareste activitatea comezii amx_addban, astfel incat sa nu se poata da ban pe mai multe clase ip.^n");
	fputs(FilePointer, "// Impact    : Serverul nu pateste nimic, insa daca se dau ban-uri pe clasa, foarte multi jucatori nu se vor mai putea conecta la server.^n");
	fputs(FilePointer, "// Nota      : Functia nu urmareste decat comanda amx_addban.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia va bloca comanda daca detecteaza ban-ul pe o clasa de ip.^n");
	fputs(FilePointer, "// Valoarea 2: Functia va bloca comanda daca detecteaza ban-ul pe doua clase de ip. [Default]^n");
	fputs(FilePointer, "// Valoarea 3: Functia va bloca comanda daca detecteaza ban-ul pe trei clase de ip.^n");
	fputs(FilePointer, "// Valoarea 4: Functia va bloca comanda daca detecteaza ban-ul pe toate clasele de ip.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_anti_ban_class ^"%d^"^n^n", getInteger(PluginCvar[anti_ban_class]));
	}
	else
	{
		fputs(FilePointer, "rom_anti_ban_class ^"2^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_give_info^n");
	fputs(FilePointer, "// Scop      : Serverul va trimite utilizatorului informatii despre plugin.^n");
	fputs(FilePointer, "// Impact    : Cand cineva va scrie ^"rom_info^" in consola, ii vor fi livrate informatiile (tot in consola).^n");
	fputs(FilePointer, "// Nota      : Daca mesajul este transmis prin intermediul consolei serverului, acesta va primi cateva informatii suplimentare.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia este activata. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_give_info ^"%d^"^n^n", getInteger(PluginCvar[info]));
	}
	else
	{
		fputs(FilePointer, "rom_give_info ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam^n");
	fputs(FilePointer, "// Scop      : Blocheaza posibilele tentative de atacuri de boti, care au scop sa faca reclama la anumite servere in 2 modalitati.^n");
	fputs(FilePointer, "// Impact    : Botii fac reclama la alte servere, enervand jucatorii/staff-ul serverului.^n");
	fputs(FilePointer, "// Nota      : Daca un jucator scrie primul mesaj mai lung de N caractere (N = valoarea cvar-ului rom_xfakeplayer_spam_maxchars), acesta va fi blocat de catre plugin. (In cazul in care pluginul are valoarea 1)^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Pluginul va protejat serverul prin interzicerea primului say in chat, urmarind uratoarele say-uri daca sunt la fel, acesta va pedepsi acel client (Foloseste cvarurile de mai jos) [Default]^n");
	fputs(FilePointer, "// Valoarea 2: Pluginul va interzice oricarui client sa scrie in chat pana cand nu va introduce un cod capcha in chat. (cod prestabilit sau cod la intamplare, asta se seteaza la cvar-ul rom_xfakeplayer_spam_capcha)^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_xfakeplayer_spam ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam]));
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam_maxchars (Activat numai in cazul in care cvarul ^"rom_xfakeplayer_spam^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Selecteaza numarul maxim de caractere care il poate scrie un jucator pentru ca acesta sa nu fie verificat si anulat.^n");
	fputs(FilePointer, "// Nota      : Atentie, numarul de caractere trebuie sa nu fie mai mare de 15 caractere, altfel protectia va fi inutila.^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia este activata. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_xfakeplayer_spam_maxchars ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_maxchars]));
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam_maxchars ^"12^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam_maxsais (Activat numai in cazul in care cvarul ^"rom_xfakeplayer_spam^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Selecteaza numarul mesajelor identice trimise pana cand ip-ul sa primeasca ban.^n");
	fputs(FilePointer, "// Nota      : Atentie, numarul de mesaje identice trimise trebuie sa nu fie mai mic de 3, altfel protectia s-ar putea sa baneze unii jucatori.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_xfakeplayer_spam_maxsais ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_maxsais]));
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam_maxsais ^"10^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam_type (Activat numai in cazul in care cvarul ^"rom_xfakeplayer_spam^" este setat pe 1)^n");
	fputs(FilePointer, "// Utilizare : Selecteaza tipul de protectie impotriva botilor xfake-player.^n");
	fputs(FilePointer, "// Nota      : Atentie, daca cvar-ul este setat pe valoarea ^"0^", jucatorii xfake-player vor continua sa ramana pe server.^n");
	fputs(FilePointer, "// Valoarea 0: Jucatorul nu va mai putea vorbi.^n");
	fputs(FilePointer, "// Valoarea 1: Jucatorul va primi kick.^n");
	fputs(FilePointer, "// Valoarea 2: Jucatorul va primi ban pentru o valoare setata in cvar-ul rom_xfakeplayer_spam_punish. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_xfakeplayer_spam_type ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_type]));
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam_type ^"2^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam_punish (Activat numai in cazul in care cvarul ^"rom_xfakeplayer_spam_type^" este setat pe 2)^n");
	fputs(FilePointer, "// Utilizare : Blocheaza ip-ul atacatorului pentru un interval de timp, masurat in minute.^n");
	fputs(FilePointer, "// Nota      : Se recomanda sa nu se seteze o valoare prea mare pentru acest cvar, in cazul unei detectari false, jucatorul poate avea de suferit.^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_xfakeplayer_spam_punish ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_punish]));
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam_punish ^"5^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam_capcha (Activat numai in cazul in care cvarul ^"rom_xfakeplayer_spam_type^" este setat pe 2)^n");
	fputs(FilePointer, "// Utilizare : Nu lasa clientii de pe server sa foloseasca chat-ul pana nu scriu in chat un anumit cod.^n");
	fputs(FilePointer, "// Nota      : Daca aveti un server cu multi clienti straini, se recomanda valoarea 0.^n");
	fputs(FilePointer, "// Valoarea 0: Chat-ul se va debloca printr-un cod prestabilit. (in cvarul rom_xfakeplayer_spam_capcha_word) [Default]^n");
	fputs(FilePointer, "// Valoarea 1: Chat-ul se va debloca printr-un cod la intamplare (random).^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_xfakeplayer_spam_capcha ^"%d^"^n^n", getInteger(PluginCvar[xfakeplayer_spam_capcha]));
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam_capcha ^"0^"^n^n");
	}	
	
	fputs(FilePointer, "// Cvar      : rom_xfakeplayer_spam_capcha_word (Activat numai in cazul in care cvarul ^"rom_xfakeplayer_spam_capcha^" este setat pe 0)^n");
	fputs(FilePointer, "// Utilizare : Seteaza un cod prestabilit, iar prin scrierea codului in chat de catre client, ^n");
	fputs(FilePointer, "// Nota      : De preferat codul sa nu contina prea multe caractere, unii clienti urasc sa scrie coduri lungi de pste 5 caractere.^n");
	fputs(FilePointer, "// Update    : Incepand de la versiunea 1.0.2s, plugin-ul *ROM-Protect devine mult mai primitor si te lasa chiar sa ii schimbi numele.^n");
	if (exist)
	{
		getString(PluginCvar[xfakeplayer_spam_capcha_word], CvarString, charsmax(CvarString));
		fprintf(FilePointer, "rom_xfakeplayer_spam_capcha_word ^"%s^"^n^n", CvarString);
	}
	else
	{
		fputs(FilePointer, "rom_xfakeplayer_spam_capcha_word ^"/chat^"^n^n");	
	}
	
	fputs(FilePointer, "// Cvar      : rom_prot_cvars^n");
	fputs(FilePointer, "// Scop      : Impiedica schimbarea cvar-elor acestui plugin. Permitand schimbarea lor doar din consola serverului sau din configurator.^n");
	fputs(FilePointer, "// Impact    : Protectiile pot fi afectate, iar serverul este pus in pericol.^n");
	fputs(FilePointer, "// Nota      : Daca doriti sa puteti schimba valorile din accesul de admin, cvar-ul va trebui setat pe valoarea ^"0^".^n");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia este activata. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_prot_cvars ^"%d^"^n^n", getInteger(PluginCvar[protcvars]));
	}
	else
	{
		fputs(FilePointer, "rom_prot_cvars ^"1^"^n^n");
	}
	
	fputs(FilePointer, "// Cvar      : rom_console_say^n");
	fputs(FilePointer, "// Scop      : Impiedica trimiterea mesajelor din consola, blocand astfel bindurile.^n");
	fputs(FilePointer, "// Impact    : Opreste spam-ul si de ce nu, unele reclame.^n");
	fputs(FilePointer, "// Nota      : Daca doriti sa adaugati cuvinte care sa reprezinte exceptii pentru acesta functie cuvintele trebuiesc scrise in fisierul ^"rom_protect.ini^".^n");
	fputs(FilePointer, "// Nota      : Aceasta protectie nu este perfecta, ci doar un filtu. Se poate trece usor de ea.");
	fputs(FilePointer, "// Valoarea 0: Functia este dezactivata.^n");
	fputs(FilePointer, "// Valoarea 1: Functia este activata. [Default]^n");
	if (exist)
	{
		fprintf(FilePointer, "rom_console_say ^"%d^"^n^n", getInteger(PluginCvar[console_say]));
	}
	else
	{
		fputs(FilePointer, "rom_console_say ^"1^"^n^n");
	}
	

	fclose(FilePointer);
}

WriteLang( bool:exist )
{
	if (exist)
	{		
		new Line[512], FilePointer = fopen(LangFile, "wt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		#if AMXX_VERSION_NUM < 183
			writeSignature(FilePointer);
		#else
			writeSignature(FilePointer, true);
		#endif
		
		fputs(FilePointer, "[en]^n^n");
		
		formatex(Line, charsmax(Line), "ROM_UPDATE_CFG = %L^n", LANG_SERVER, "ROM_UPDATE_CFG", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_UPDATE_CFG = %s : Am actualizat fisierul CFG : rom_protect.cfg.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_UPDATE_LANG = %L^n", LANG_SERVER, "ROM_UPDATE_LANG", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_UPDATE_LANG = %s : Am actualizat fisierul LANG : rom_protect.txt.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_FAKE_PLAYERS = %s%s : %sS-a observat un numar prea mare de persoane de pe ip-ul : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
			
			formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS_PUNISH = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS_PUNISH", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_FAKE_PLAYERS_PUNISH = %s%s : %sIp-ul a primit ban %s minute pentru a nu afecta jocul.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}		
		#else
			formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_FAKE_PLAYERS = ^^3%s : ^^4S-a observat un numar prea mare de persoane de pe ip-ul : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
				
			formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS_PUNISH = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS_PUNISH", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_FAKE_PLAYERS_PUNISH = ^^3%s : ^^4Ip-ul a primit ban %s minute pentru a nu afecta jocul.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS_LOG = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS_LOG", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_FAKE_PLAYERS_LOG = %s : S-a depistat un atac de ^"xFake-Players^" de la IP-ul : %s .^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS_KICK = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS_KICK", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_FAKE_PLAYERS_KICK = %s : Nu poti intra pe server, deoarece sunt inca %s jucatori cu acelasi ip-ul ca al tau.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}		
			
		formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS_DETECT = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS_DETECT", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_FAKE_PLAYERS_DETECT = %s : Ai primit kick deoarece deoarece esti suspect de fake-client. Te rugam sa folosesti alt client.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "ROM_FAKE_PLAYERS_DETECT_LOG = %L^n", LANG_SERVER, "ROM_FAKE_PLAYERS_DETECT_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_FAKE_PLAYERS_DETECT_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca suspect de ^"xFake-Players^" sau ^"xSpammer^".^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_PLUGIN_PAUSE = %L^n", LANG_SERVER, "ROM_PLUGIN_PAUSE", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_PLUGIN_PAUSE = %s%s : %sNe pare rau, dar din anumite motive, acest plugin nu poate fi pus pe pauza.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_PLUGIN_PAUSE = %L^n", LANG_SERVER, "ROM_PLUGIN_PAUSE", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_PLUGIN_PAUSE = ^^3%s : ^^4Ne pare rau, dar din anumite motive, acest plugin nu poate fi pus pe pauza.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_PLUGIN_PAUSE_LOG = %L^n", LANG_SERVER, "ROM_PLUGIN_PAUSE_LOG", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_PLUGIN_PAUSE_LOG = %s : S-a depistat o incercare a opririi pluginului de protectie %s. Operatiune a fost blocata.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183 
			formatex(Line, charsmax(Line), "ROM_ADMIN_WRONG_NAME = %L^n", LANG_SERVER, "ROM_ADMIN_WRONG_NAME", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_WRONG_NAME = %s%s : %sNu s-a gasit nici un admin care sa poarte acest nickname.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADMIN_WRONG_NAME = %L^n", LANG_SERVER, "ROM_ADMIN_WRONG_NAME", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_WRONG_NAME = ^^3%s : ^^4Nu s-a gasit nici un admin care sa poarte acest nickname.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_ADMIN_WRONG_NAME_PRINT = %L^n", LANG_SERVER, "ROM_ADMIN_WRONG_NAME_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ADMIN_WRONG_NAME_PRINT = %s : Nu s-a gasit nici un admin care sa poarte acest nickname.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADMIN_WRONG_PASS = %L^n", LANG_SERVER, "ROM_ADMIN_WRONG_PASS", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_WRONG_PASS = %s%s : %sParola introdusa de tine este incorecta.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADMIN_WRONG_PASS = %L^n", LANG_SERVER, "ROM_ADMIN_WRONG_PASS", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_WRONG_PASS = ^^3%s : ^^4Parola introdusa de tine este incorecta.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_ADMIN_WRONG_PASS_PRINT = %L^n", LANG_SERVER, "ROM_ADMIN_WRONG_PASS_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ADMIN_WRONG_PASS_PRINT = %s : Parola introdusa de tine este incorecta.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADMIN_LOADED = %L^n", LANG_SERVER, "ROM_ADMIN_LOADED", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_LOADED = %s%s : %sAdmin-ul tau a fost incarcat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADMIN_LOADED = %L^n", LANG_SERVER, "ROM_ADMIN_LOADED", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_LOADED = ^^3%s : ^^4Admin-ul tau a fost incarcat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_ADMIN_LOADED_PRINT = %L^n", LANG_SERVER, "ROM_ADMIN_LOADED_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ADMIN_LOADED_PRINT = %s : Admin-ul tau a fost incarcat.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADMIN_ALREADY_LOADED = %L^n", LANG_SERVER, "ROM_ADMIN_ALREADY_LOADED", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_ALREADY_LOADED = %s%s : %sAdmin-ul tau este deja incarcat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADMIN_ALREADY_LOADED = %L^n", LANG_SERVER, "ROM_ADMIN_ALREADY_LOADED", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_ALREADY_LOADED = ^^3%s : ^^4Admin-ul tau este deja incarcat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_ADMIN_ALREADY_LOADED_PRINT = %L^n", LANG_SERVER, "ROM_ADMIN_ALREADY_LOADED_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ADMIN_ALREADY_LOADED_PRINT = %s : Admin-ul tau este deja incarcat.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}


		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADMIN_WITHOUT_PASS = %L^n", LANG_SERVER, "ROM_ADMIN_WITHOUT_PASS", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_WITHOUT_PASS = %s%s : %sNu ai introdus nici o parola, comanda se scris in consola astfel : login ^"parola ta^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADMIN_WITHOUT_PASS = %L^n", LANG_SERVER, "ROM_ADMIN_WITHOUT_PASS", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_WITHOUT_PASS = ^^3%s : ^^4Nu ai introdus nici o parola, comanda se scris in consola astfel : login ^"parola ta^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADMIN_HASNT_SLOT = %L^n", LANG_SERVER, "ROM_ADMIN_HASNT_SLOT", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_HASNT_SLOT = %s%s : %sNu iti poti incarca adminul daca nu ai slot.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADMIN_HASNT_SLOT = %L^n", LANG_SERVER, "ROM_ADMIN_HASNT_SLOT", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_HASNT_SLOT = ^^3%s : ^^4Nu iti poti incarca adminul daca nu ai slot.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_ADMIN_WITHOUT_PASS_PRINT = %L^n", LANG_SERVER, "ROM_ADMIN_WITHOUT_PASS_PRINT", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ADMIN_WITHOUT_PASS_PRINT = %s : Nu ai introdus nici o parola, comanda se scris in consola astfel : login ^"parola ta^".^n");
		}
		else
		{
			fputs(FilePointer, Line); 
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_CMD_BUG = %L^n", LANG_SERVER, "ROM_CMD_BUG", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_CMD_BUG = %s%s : %sS-au observat caractere interzise in textul trimis de tine. Mesajul tau a fost eliminat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_CMD_BUG = %L^n", LANG_SERVER, "ROM_CMD_BUG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_CMD_BUG = ^^3%s : ^^4S-au observat caractere interzise in textul trimis de tine. Mesajul tau a fost eliminat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif	 
		
		formatex(Line, charsmax(Line), "ROM_CMD_BUG_LOG = %L^n", LANG_SERVER, "ROM_CMD_BUG_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_CMD_BUG_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"CMD_BUG^" ca sa strice buna functionare a serverului.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "ROM_CMD_BUG_PRINT = %L^n", LANG_SERVER, "ROM_CMD_BUG_PRINT", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_CMD_BUG_PRINT = %s : S-au observat caractere interzise in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
	
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_COLOR_BUG = %L^n", LANG_SERVER, "ROM_COLOR_BUG", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_COLOR_BUG = %s%s : %sS-au observat caractere suspecte in textul trimis de tine. Mesajul tau a fost eliminat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_COLOR_BUG = %L^n", LANG_SERVER, "ROM_COLOR_BUG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_COLOR_BUG = ^^3%s : ^^4S-au observat caractere suspecte in textul trimis de tine. Mesajul tau a fost eliminat.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_COLOR_BUG_LOG = %L^n", LANG_SERVER, "ROM_COLOR_BUG_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			
			fputs(FilePointer, "ROM_COLOR_BUG_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"COLOR_BUG^" ca sa alerteze playerii sau adminii.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "ROM_COLOR_BUG_PRINT = %L^n", LANG_SERVER, "ROM_COLOR_BUG_PRINT", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_COLOR_BUG_PRINT = %s : S-au observat caractere suspecte in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_SPEC_BUG = %L^n", LANG_SERVER, "ROM_SPEC_BUG", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_SPEC_BUG = %s%s : %sAi facut o miscare suspecta asa ca te-am mutat la echipa precedenta.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_SPEC_BUG = %L^n", LANG_SERVER, "ROM_SPEC_BUG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_SPEC_BUG = ^^3%s : ^^4Ai facut o miscare suspecta asa ca te-am mutat la echipa precedenta.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_SPEC_BUG_LOG = %L^n", LANG_SERVER, "ROM_SPEC_BUG_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_SPEC_BUG_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"SPEC_BUG^" ca sa strice buna functionare a serverului.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADMIN_CHAT_FLOOD = %L^n", LANG_SERVER, "ROM_ADMIN_CHAT_FLOOD", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_CHAT_FLOOD = %s%s : %sS-a observat un mic IsFlooding la chat primit din partea ta. Mesajele trimise de tine vor fi filtrate.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}

			formatex(Line, charsmax(Line), "ROM_ADMIN_CHAT_FLOOD_LOG = %L^n", LANG_SERVER, "ROM_ADMIN_CHAT_FLOOD_LOG", "^%s", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADMIN_CHAT_FLOOD_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"ADMIN_CHAT_FLOOD^" ca sa dea kick adminilor de pe server.^n");	
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_AUTOBUY = %L^n", LANG_SERVER, "ROM_AUTOBUY", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_AUTOBUY = %s%s : %sComanda trimisa de tine are valori suspecte, asa ca am blocat-o.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_AUTOBUY = %L^n", LANG_SERVER, "ROM_AUTOBUY", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_AUTOBUY = ^^3%s : ^^4Comanda trimisa de tine are valori suspecte, asa ca am blocat-o.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_AUTOBUY_LOG = %L^n", LANG_SERVER, "ROM_AUTOBUY_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_AUTOBUY_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"AUTOBUY_BUG^" ca sa strice buna functionare a serverului.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_FILE_NOT_FOUND = %L^n", LANG_SERVER, "ROM_FILE_NOT_FOUND", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_FILE_NOT_FOUND = %s : Fisierul %s nu exista.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "ROM_ADMIN_DEBUG = %L^n", LANG_SERVER, "ROM_ADMIN_DEBUG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ADMIN_DEBUG = Nume : %s - Parola : %s - Acces : %s - Flag : %s^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "ROM_MOTDFILE = %L^n", LANG_SERVER, "ROM_MOTDFILE", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_MOTDFILE = %s : S-a detectat o miscare suspecta din partea ta, comanda ta a fost blocata.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		formatex(Line, charsmax(Line), "ROM_MOTDFILE_LOG = %L^n", LANG_SERVER, "ROM_MOTDFILE_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_MOTDFILE_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca cvar-ul ^"motdfile^" ca sa fure informatii din acest server.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
			
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_ADVERTISE = %L^n", LANG_SERVER, "ROM_ADVERTISE", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADVERTISE = %s%s :%s Acest server este supravegheat de plugin-ul de protectie %s%s%s versiunea %s%s%s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_ADVERTISE = %L^n", LANG_SERVER, "ROM_ADVERTISE", "^%s", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_ADVERTISE = ^^3%s :^^4 Acest server este supravegheat de plugin-ul de protectie ^^3%s^^4 versiunea ^^3%s^^4 .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_ANTI_BAN_CLASS = %L^n", LANG_SERVER, "ROM_ANTI_BAN_CLASS", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ANTI_BAN_CLASS = %s : S-au detectat un numar prea mare de ban-uri pe clasa de ip, comanda ta a fost blocata.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_ANTI_ANY_BAN_CLASS_LOG = %L^n", LANG_SERVER, "ROM_ANTI_ANY_BAN_CLASS_LOG", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_ANTI_ANY_BAN_CLASS_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa dea ban pe clasa de ip.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_ANTI_SOME_BAN_CLASS_LOG = %L^n", LANG_SERVER, "ROM_ANTI_SOME_BAN_CLASS_LOG", "^%s", "^%s", "^%s", "^%s", "^%s" );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, Line);
		}
		else
		{
			fputs(FilePointer, "ROM_ANTI_SOME_BAN_CLASS_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa dea ban pe mai mult de %s clase de ip.^n");	
		}
		
		formatex(Line, charsmax(Line), "ROM_AUTO_UPDATE_SUCCEED = %L^n", LANG_SERVER, "ROM_AUTO_UPDATE_SUCCEED", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_AUTO_UPDATE_SUCCEED = %s : S-a efectuat auto-actualizarea pluginului.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_AUTO_UPDATE_FAILED = %L^n", LANG_SERVER, "ROM_AUTO_UPDATE_FAILED", "^%s"); 
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_AUTO_UPDATE_FAILED = %s : S-a intampinat o eroare la descarcare, iar plugin-ul nu s-a putut auto-actualiza.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_WARN = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_WARN", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_WARN = %s%s : %sMesajul tau a fost eliminat pentru a elimina o tentativa de ^"BOT SPAM^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_WARN = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_WARN", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_WARN = ^^3%s : ^^4Mesajul tau a fost eliminat pentru a elimina o tentativa de ^"BOT SPAM^".^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM = %s%s : %sS-a depistat o tentativa de ^"BOT SPAM^" de la ip-ul : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
			
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_PUNISH = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_PUNISH", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_PUNISH = %s%s : %sIp-ul a primit ban %s minute pentru a nu afecta jocul.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}		
		#else
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM", "^%s", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM = ^^3%s : ^^4S-a depistat o tentativa de ^"BOT SPAM^" de la ip-ul : %s .^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
				
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_PUNISH = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_PUNISH", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_PUNISH = ^^3%s : ^^4Ip-ul a primit ban %s minute pentru a nu afecta jocul.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_BAN = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_BAN", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_BAN = %s : Ai fost detectat ca fiind un bot xfake_player, asa ca ai fost banat pentru %s minute.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_KICK = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_KICK", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_KICK = %s : Ai fost detectat ca fiind un bot xfake_player, asa ca ai primit kick.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_GAG = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_GAG", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_GAG = %s%s : %sAi fost detectat ca fiind un bot xfake_player, nu vei mai putea folosi chat-ul pana nu te vei reconecta.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_GAG = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_GAG", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_GAG = ^^3%s : ^^4Ai fost detectat ca fiind un bot xfake_player, nu vei mai putea folosi chat-ul pana nu te vei reconecta.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_SPAM_LOG = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_SPAM_LOG", "^%s", "^%s"  );
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_LOG = %s : S-a depistat un atac de ^"BOT SPAM^" de la IP-ul : %s .^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT = %s%s : %sAi introdus capcha-ul corect, acum vei putea folosi chat-ul.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT", "^%s" );
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT = ^^3%s : ^^4Ai introdus capcha-ul corect, acum vei putea folosi chat-ul.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_CAPCHA = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_CAPCHA", "^%s", "^%s", "^%s", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_CAPCHA = %s%s : %sPentru a folosi chat-ul scrie urmatorul cod : %s%s%s.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_XFAKE_PLAYERS_CAPCHA = %L^n", LANG_SERVER, "ROM_XFAKE_PLAYERS_CAPCHA", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_XFAKE_PLAYERS_CAPCHA = ^^3%s : ^^4Pentru a folosi chat-ul scrie urmatorul cod : ^^3%s^^4.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif
		
		
		#if AMXX_VERSION_NUM < 183
			formatex(Line, charsmax(Line), "ROM_BIND_SPAM = %L^n", LANG_SERVER, "ROM_BIND_SPAM", "^%s", "^%s", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_BIND_SPAM = %s%s : %sNu ai voie sa trimiti mesaje prin intermediul consolei !^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#else
			formatex(Line, charsmax(Line), "ROM_BIND_SPAM = %L^n", LANG_SERVER, "ROM_BIND_SPAM", "^%s");
			if ( contain(Line, "ML_NOTFOUND") != -1 )
			{
				fputs(FilePointer, "ROM_BIND_SPAM = ^^3%s : ^^4Nu ai voie sa trimiti mesaje prin intermediul consolei !.^n");
			}
			else
			{
				fputs(FilePointer, Line);
			}
		#endif

		
		formatex(Line, charsmax(Line), "ROM_PROTCVARS = %L^n", LANG_SERVER, "ROM_PROTCVARS", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_PROTCVARS = %s : Cvar-ururile acestui plugin sunt protejate, comanda ta nu a avut efect.^n");
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		formatex(Line, charsmax(Line), "ROM_PROTCVARS_LOG = %L^n", LANG_SERVER, "ROM_PROTCVARS_LOG", "^%s", "^%s", "^%s", "^%s");
		if ( contain(Line, "ML_NOTFOUND") != -1 )
		{
			fputs(FilePointer, "ROM_PROTCVARS_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa schimbe cvar-urile pluginului de protectie, astea pot fi schimbate doar din fisierul configurator.^n");	
		}
		else
		{
			fputs(FilePointer, Line);
		}
		
		fclose(FilePointer);
	}
	else
	{
		new FilePointer = fopen(LangFile, "wt");
		
		if ( !FilePointer ) 
		{
			return;
		}
		
		#if AMXX_VERSION_NUM < 183
			writeSignature(FilePointer);
		#else
			writeSignature(FilePointer, true);
		#endif
		
		fputs(FilePointer, "[en]^n^n");
		fputs(FilePointer, "ROM_UPDATE_CFG = %s : Am actualizat fisierul CFG : rom_protect.cfg.^n");
		fputs(FilePointer, "ROM_UPDATE_LANG = %s : Am actualizat fisierul LANG : rom_protect.txt.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_FAKE_PLAYERS = %s%s : %sS-a observat un numar prea mare de persoane de pe ip-ul : %s .^n");
			fputs(FilePointer, "ROM_FAKE_PLAYERS_PUNISH = %s%s : %sIp-ul a primit ban %s minute pentru a nu afecta jocul.^n");
		#else
			fputs(FilePointer, "ROM_FAKE_PLAYERS = ^^3%s : ^^4S-a observat un numar prea mare de persoane de pe ip-ul : %s .^n");
			fputs(FilePointer, "ROM_FAKE_PLAYERS_PUNISH = ^^3%s :^^4 Ip-ul a primit ban %s minute pentru a nu afecta jocul.^n");
		#endif
		
		fputs(FilePointer, "ROM_FAKE_PLAYERS_LOG = %s : S-a depistat un atac de ^"xFake-Players^" de la IP-ul : %s .^n");
		fputs(FilePointer, "ROM_FAKE_PLAYERS_KICK = %s : Nu poti intra pe server, deoarece sunt inca %s jucatori cu acelasi ip-ul ca al tau.^n");
		
		fputs(FilePointer, "ROM_FAKE_PLAYERS_DETECT = %s : Ai primit kick deoarece deoarece esti suspect de fake-client. Te rugam sa folosesti alt client.^n");
		fputs(FilePointer, "ROM_FAKE_PLAYERS_DETECT_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca suspect de ^"xFake-Players^" sau ^"xSpammer^".^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_PLUGIN_PAUSE = %s%s : %sNe pare rau, dar din anumite motive, acest plugin nu poate fi pus pe pauza.^n");
		#else
			fputs(FilePointer, "ROM_PLUGIN_PAUSE = ^^3%s : ^^4Ne pare rau, dar din anumite motive, acest plugin nu poate fi pus pe pauza.^n");
		#endif
		
		fputs(FilePointer, "ROM_PLUGIN_PAUSE_LOG = %s : S-a depistat o incercare a opririi pluginului de protectie %s. Operatiune a fost blocata.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_WRONG_NAME = %s%s : %sNu s-a gasit nici un admin care sa poarte acest nickname.^n");
		#else
			fputs(FilePointer, "ROM_ADMIN_WRONG_NAME = ^^3%s : ^^4Nu s-a gasit nici un admin care sa poarte acest nickname.^n");
		#endif
		
		fputs(FilePointer, "ROM_ADMIN_WRONG_NAME_PRINT = %s : Nu s-a gasit nici un admin care sa poarte acest nickname.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_WRONG_PASS = %s%s : %sParola introdusa de tine este incorecta.^n");
		#else
			fputs(FilePointer, "ROM_ADMIN_WRONG_PASS = ^^3%s : ^^4Parola introdusa de tine este incorecta.^n");
		#endif
		
		fputs(FilePointer, "ROM_ADMIN_WRONG_PASS_PRINT = %s : Parola introdusa de tine este incorecta.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_LOADED = %s%s : %sAdmin-ul tau a fost incarcat.^n");
		#else
			fputs(FilePointer, "ROM_ADMIN_LOADED = ^^3%s : ^^4Admin-ul tau a fost incarcat.^n");
		#endif
		
		fputs(FilePointer, "ROM_ADMIN_LOADED_PRINT = %s : Admin-ul tau a fost incarcat.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_ALREADY_LOADED = %s%s : %sAdmin-ul tau este deja incarcat.^n");
		#else
			fputs(FilePointer, "ROM_ADMIN_ALREADY_LOADED = ^^3%s : ^^4Admin-ul tau este deja incarcat.^n");
		#endif
		
		fputs(FilePointer, "ROM_ADMIN_ALREADY_LOADED_PRINT = %s : Admin-ul tau este deja incarcat.^n");

		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_WITHOUT_PASS = %s%s : %sNu ai introdus nici o parola, comanda se scris in consola astfel : login ^"parola ta^".^n");
		#else
			fputs(FilePointer, "ROM_ADMIN_WITHOUT_PASS = ^^3%s : ^^4Nu ai introdus nici o parola, comanda se scris in consola astfel : login ^"parola ta^".^n");
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_HASNT_SLOT = %s%s : %sNu iti poti incarca adminul daca nu ai slot.^n");
		#else
			fputs(FilePointer, "ROM_ADMIN_HASNT_SLOT = ^^3%s : ^^4Nu iti poti incarca adminul daca nu ai slot.^n");
		#endif 
		
		fputs(FilePointer, "ROM_ADMIN_WITHOUT_PASS_PRINT = %s : Nu ai introdus nici o parola, comanda se scris in consola astfel : login ^"parola ta^".^n");

		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_CMD_BUG = %s%s : %sS-au observat caractere interzise in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		#else
			fputs(FilePointer, "ROM_CMD_BUG = ^^3%s : ^^4S-au observat caractere interzise in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		#endif 
		
		fputs(FilePointer, "ROM_CMD_BUG_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"CMD_BUG^" ca sa strice buna functionare a serverului.^n");
		fputs(FilePointer, "ROM_CMD_BUG_PRINT = %s : S-au observat caractere interzise in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_COLOR_BUG = %s%s : %sS-au observat caractere suspecte in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		#else
			fputs(FilePointer, "ROM_COLOR_BUG = ^^3%s : ^^4S-au observat caractere suspecte in textul trimis de tine. Mesajul tau a fost eliminat.^n");
		#endif
		
		fputs(FilePointer, "ROM_COLOR_BUG_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"COLOR_BUG^" ca sa alerteze playerii sau adminii.^n");
		fputs(FilePointer, "ROM_COLOR_BUG_PRINT = %s : S-au observat caractere suspecte in textul trimis de tine. Mesajul tau a fost eliminat.^n");		
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_SPEC_BUG = %s%s : %sAi facut o miscare suspecta asa ca te-am mutat la echipa precedenta.^n");
		#else
			fputs(FilePointer, "ROM_SPEC_BUG = ^^3%s : ^^4Ai facut o miscare suspecta asa ca te-am mutat la echipa precedenta.^n");
		#endif
		
		fputs(FilePointer, "ROM_SPEC_BUG_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"SPEC_BUG^" ca sa strice buna functionare a serverului.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADMIN_CHAT_FLOOD = %s%s : %sS-a observat un mic IsFlooding la chat primit din partea ta. Mesajele trimise de tine vor fi filtrate.^n");
			fputs(FilePointer, "ROM_ADMIN_CHAT_FLOOD_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"ADMIN_CHAT_FLOOD^" ca sa dea kick adminilor de pe server.^n");	
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_AUTOBUY = %s%s : %sComanda trimisa de tine are valori suspecte, asa ca am blocat-o.^n");
		#else
			fputs(FilePointer, "ROM_AUTOBUY = ^^3%s : ^^4Comanda trimisa de tine are valori suspecte, asa ca am blocat-o.^n");
		#endif
		
		fputs(FilePointer, "ROM_AUTOBUY_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca ^"AUTOBUY_BUG^" ca sa strice buna functionare a serverului.^n");
		
		fputs(FilePointer, "ROM_FILE_NOT_FOUND = %s : Fisierul %s nu exista.^n");
		
		fputs(FilePointer, "ROM_ADMIN_DEBUG = Nume : %s - Parola : %s - Acces : %s - Flag : %s^n");
		
		fputs(FilePointer, "ROM_MOTDFILE = %s : S-a detectat o miscare suspecta din partea ta, comanda ta a fost blocata.^n");
		fputs(FilePointer, "ROM_MOTDFILE_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa foloseasca cvar-ul ^"motdfile^" ca sa fure informatii din acest server.^n");		
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_ADVERTISE = %s%s :%s Acest server este supravegheat de plugin-ul de protectie %s%s%s versiunea %s%s%s .^n");
		#else
			fputs(FilePointer, "ROM_ADVERTISE = ^^3%s :^^4 Acest server este supravegheat de plugin-ul de protectie ^^3%s^^4 versiunea ^^3%s^^4 .^n");
		#endif
		
		fputs(FilePointer, "ROM_ANTI_BAN_CLASS = %s : S-au detectat u numar prea mare de ban-uri pe clasa de ip, comanda ta a fost blocata.^n");
		fputs(FilePointer, "ROM_ANTI_ANY_BAN_CLASS_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa dea ban pe clasa de ip.^n");	
		fputs(FilePointer, "ROM_ANTI_SOME_BAN_CLASS_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa dea ban pe mai mult de %s clase de ip.^n");

		fputs(FilePointer, "ROM_AUTO_UPDATE_SUCCEED = %s : S-a efectuat auto-actualizarea pluginului.^n");	
		fputs(FilePointer, "ROM_AUTO_UPDATE_FAILED = %s : S-a intampinat o eroare la descarcare, iar plugin-ul nu s-a putut auto-actualiza.^n");	
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_WARN = %s%s : %sMesajul tau a fost eliminat pentru a elimina o tentativa de ^"BOT SPAM^".^n");
		#else
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_WARN = ^^3%s : ^^4Mesajul tau a fost eliminat pentru a elimina o tentativa de ^"BOT SPAM^".^n");
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM = %s%s : %sS-a depistat o tentativa de ^"BOT SPAM^" de la ip-ul : %s .^n");
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_PUNISH = %s%s : %sIp-ul a primit ban %s minute pentru a nu afecta jocul.^n");
		#else
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM = ^^3%s : ^^4S-a depistat o tentativa de ^"BOT SPAM^" de la ip-ul : %s .^n");
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_PUNISH = ^^3%s : ^^4Ip-ul a primit ban %s minute pentru a nu afecta jocul.^n");
		#endif
		
		fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_BAN = %s : Ai fost detectat ca fiind un bot xfake_player, asa ca ai fost banat pentru %s minute.^n");
		fputs(FilePointer,"ROM_XFAKE_PLAYERS_SPAM_KICK = %s : Ai fost detectat ca fiind un bot xfake_player, asa ca ai primit kick.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_GAG = %s%s : %sAi fost detectat ca fiind un bot xfake_player, nu vei mai putea folosi chat-ul pana nu te vei reconecta.^n");
		#else
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_GAG = ^^3%s : ^^4Ai fost detectat ca fiind un bot xfake_player, nu vei mai putea folosi chat-ul pana nu te vei reconecta.^n");
		#endif
		
		fputs(FilePointer, "ROM_XFAKE_PLAYERS_SPAM_LOG = %s : S-a depistat un atac de ^"BOT SPAM^" de la IP-ul : %s .^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT = %s%s : %sAi introdus capcha-ul corect, acum vei putea folosi chat-ul.^n");
		#else
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_ALLOW_USE_CHAT = ^^3%s : ^^4Ai introdus capcha-ul corect, acum vei putea folosi chat-ul.^n");
		#endif
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_CAPCHA = %s%s : %sPentru a folosi chat-ul scrie urmatorul cod : %s%s%s.^n");
		#else
			fputs(FilePointer, "ROM_XFAKE_PLAYERS_CAPCHA = ^^3%s : ^^4Pentru a folosi chat-ul scrie urmatorul cod : ^^3%s^^4.^n");
		#endif
		
		fputs(FilePointer, "ROM_PROTCVARS = %s : Cvar-ururile acestui plugin sunt protejate, comanda ta nu a avut efect.^n");
		fputs(FilePointer, "ROM_PROTCVARS_LOG = %s : L-am detectat pe ^"$name$^" [ $authid$ | $ip$ ] ca a incercat sa schimbe cvar-urile pluginului de protectie, astea pot fi schimbate doar din fisierul configurator.^n");
		
		#if AMXX_VERSION_NUM < 183
			fputs(FilePointer, "ROM_BIND_SPAM = %s%s : %sNu ai voie sa trimiti mesaje prin intermediul consolei !.^n");
		#else
			fputs(FilePointer, "ROM_BIND_SPAM = ^^3%s : ^^4Nu ai voie sa trimiti mesaje prin intermediul consolei !^n");
		#endif
		
		fclose(FilePointer);
	}
	
	register_dictionary("rom_protect.txt");
	IsLangUsed = true;
}
#if AMXX_VERSION_NUM < 183
	writeSignature(FilePointer)
#else
	writeSignature(FilePointer, bool:isLangFile = false)
#endif
{
	fputs(FilePointer, "// *ROM-Protect");
	fputs(FilePointer, "// Plugin OpenSource anti-IsFlooding/bug-fix pentru orice server. ^n");
	fprintf(FilePointer, "// Versiunea : %s. Bulid : %d. Data lansarii versiunii : %s.^n", Version, Build, Date); 
	fputs(FilePointer, "// Autor : lüxor # Dr.Fio & DR2.IND (+ eNd.) - SteamID (contact) : luxxxoor^n");
	fputs(FilePointer, "// O productie FioriGinal.ro - site : www.fioriginal.ro^n");
	fputs(FilePointer, "// Link forum de dezvoltare : http://forum.fioriginal.ro/amxmodx-plugins-pluginuri/rom-protect-anti-flood-bug-fix-t28292.html^n");
	fputs(FilePointer, "// Link sursa : https://github.com/luxxxoor/ROM-Protect^n");
	#if AMXX_VERSION_NUM >= 183
		if ( isLangFile )
		{
			fputs(FilePointer, "^n// Colori : ^^1 - Culoarea aleasa de jucator cu con_color.^n");
			fputs(FilePointer, "//          ^^3 - Culoare gri.^n");
			fputs(FilePointer, "//          ^^4 - Culoare verde.^n");
		}
	#endif
	fputs(FilePointer, "^n^n^n");
}

#if AMXX_VERSION_NUM < 183
// header client_print_color.inc

/* Fun functions
*
* by Numb
*
* This file is provided as is (no warranties).
*/

stock const g_szTeamName[Colors][] = 
{
	"UNASSIGNED",
	"TERRORIST",
	"CT",
	"SPECTATOR"
};

stock client_print_color(Index, iColor=DontChange, const szMsg[], any:...)
{
	// check if Index is different from 0
	if( Index && !is_user_connected(Index) )
	{
		return 0;
	}

	if( iColor > Grey )
	{
		iColor = DontChange;
	}

	new szMessage[192];
	if( iColor == DontChange )
	{
		szMessage[0] = 0x04;
	}
	else
	{
		szMessage[0] = 0x03;
	}

	new iParams = numargs();
	// Specific player code
	if(Index)
	{
		if( iParams == 3 )
		{
			copy(szMessage[1], charsmax(szMessage)-1, szMsg);
		}
		else
		{
			vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
		}

		if( iColor )
		{
			new szTeam[11]; // store current team so we can restore it
			get_user_team(Index, szTeam, charsmax(szTeam));

			// set Index TeamInfo in consequence
			// so SayText msg gonna show the right color
			Send_TeamInfo(Index, Index, g_szTeamName[iColor]);

			// Send the message
			Send_SayText(Index, Index, szMessage);

			// restore TeamInfo
			Send_TeamInfo(Index, Index, szTeam);
		}
		else
		{
			Send_SayText(Index, Index, szMessage);
		}
	} 

	// Send message to all players
	else
	{
		// Figure out if at least 1 player is connected
		// so we don't send useless message if not
		// and we gonna use that player as team reference (aka SayText message sender) for color change
		new iPlayers[32], iNum;
		get_players(iPlayers, iNum, "ch");
		if( !iNum )
		{
			return 0;
		}

		new iFool = iPlayers[0];

		new iMlNumber, i, j;
		new Array:aStoreML = ArrayCreate();
		if( iParams >= 5 ) // ML can be used
		{
			for(j=4; j<iParams; j++)
			{
				// retrieve original param value and check if it's LANG_PLAYER value
				if( getarg(j) == LANG_PLAYER )
				{
					i=0;
					// as LANG_PLAYER == -1, check if next parm string is a registered language translation
					while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {}
					if( GetLangTransKey(szMessage) != TransKey_Bad )
					{
						// Store that arg as LANG_PLAYER so we can alter it later
						ArrayPushCell(aStoreML, j++);

						// Update ML array saire so we'll know 1st if ML is used,
						// 2nd how many args we have to alterate
						iMlNumber++;
					}
				}
			}
		}

		// If arraysize == 0, ML is not used
		// we can only send 1 MSG_BROADCAST message
		if( !iMlNumber )
		{
			if( iParams == 3 )
			{
				copy(szMessage[1], charsmax(szMessage)-1, szMsg);
			}
			else
			{
				vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);
			}

			if( iColor )
			{
				new szTeam[11];
				get_user_team(iFool, szTeam, charsmax(szTeam));
				Send_TeamInfo(0, iFool, g_szTeamName[iColor]);
				Send_SayText(0, iFool, szMessage);
				Send_TeamInfo(0, iFool, szTeam);
			}
			else
			{
				Send_SayText(0, iFool, szMessage);
			}
		}

		// ML is used, we need to loop through all players,
		// format text and send a MSG_ONE_UNRELIABLE SayText message
		else
		{
			new szTeam[11], szFakeTeam[10];
			
			if( iColor )
			{
				get_user_team(iFool, szTeam, charsmax(szTeam));
				copy(szFakeTeam, charsmax(szFakeTeam), g_szTeamName[iColor]);
			}

			for( i = 0; i < iNum; i++ )
			{
				Index = iPlayers[i];

				for(j=0; j<iMlNumber; j++)
				{
					// Set all LANG_PLAYER args to player index ( = Index )
					// so we can format the text for that specific player
					setarg(ArrayGetCell(aStoreML, j), _, Index);
				}

				// format string for specific player
				vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4);

				if( iColor )
				{
					Send_TeamInfo(Index, iFool, szFakeTeam);
					Send_SayText(Index, iFool, szMessage);
					Send_TeamInfo(Index, iFool, szTeam);
				}
				else
				{
					Send_SayText(Index, iFool, szMessage);
				}
			}
			ArrayDestroy(aStoreML);
		}
	}
	return 1;
}

stock Send_TeamInfo(iReceiver, iPlayerId, szTeam[])
{
	static iTeamInfo = 0;
	if( !iTeamInfo )
	{
		iTeamInfo = get_user_msgid("TeamInfo");
	}
	message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iTeamInfo, .player=iReceiver);
	write_byte(iPlayerId);
	write_string(szTeam);
	message_end();
}

stock Send_SayText(iReceiver, iPlayerId, szMessage[])
{
	static iSayText = 0;
	if( !iSayText )
	{
		iSayText = get_user_msgid("SayText");
	}
	message_begin(iReceiver ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, iSayText, .player=iReceiver);
	write_byte(iPlayerId);
	write_string(szMessage);
	message_end();
}

stock register_dictionary_colored(const filename[])
{
	if( !register_dictionary(filename) )
	{
		return 0;
	}

	new szFileName[256];
	get_localinfo("amxx_datadir", szFileName, charsmax(szFileName));
	format(szFileName, charsmax(szFileName), "%s/lang/%s", szFileName, filename);
	new fp = fopen(szFileName, "rt");
	if( !fp )
	{
		log_amx("Failed to open %s", szFileName);
		return 0;
	}

	new szBuffer[512], szLang[3], szKey[64], szTranslation[256], TransKey:iKey;

	while( !feof(fp) )
	{
		fgets(fp, szBuffer, charsmax(szBuffer));
		trim(szBuffer);

		if( szBuffer[0] == '[' )
		{
			strtok(szBuffer[1], szLang, charsmax(szLang), szBuffer, 1, ']');
		}
		else if( szBuffer[0] )
		{
			strbreak(szBuffer, szKey, charsmax(szKey), szTranslation, charsmax(szTranslation));
			iKey = GetLangTransKey(szKey);
			if( iKey != TransKey_Bad )
			{
				while( replace(szTranslation, charsmax(szTranslation), "!g", "^4") ){}
				while( replace(szTranslation, charsmax(szTranslation), "!t", "^3") ){}
				while( replace(szTranslation, charsmax(szTranslation), "!n", "^1") ){}
				AddTranslation(szLang, iKey, szTranslation[2]);
			}
		}
	}
	
	fclose(fp);
	return 1;
}

#endif

/*
*	 Contribuitori :
* SkillartzHD : -  Metoda anti-pause plugin.
*               -  Metoda anti-xfake-player si anti-xspammer.
*               -  Metoda auto-update plugin.
* COOPER :      -  Idee adaugare LANG si ajutor la introducerea acesteia in plugin.
* StefaN@CSX :  -  Gasire si reparare eroare parametrii la functia anti-xFake-Players.
* eNd :         -  Ajustat cod cu o noua metoda de inregistrare a cvarurilor.
* 001 :         -  Idee adaugare cvar rom_xfakeplayer_spam_type.
* HamletEagle : -  Distribuire tutorial despre noul tip de citire/scriere al fisierelor.
*               -  Cod pentru solutia spec bug.
* JaiLBreaK :   -  Metoda verificare mesaj daca este transmit din consola sau prin messagemode.
*/

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Bugfix plugin problem with compile

Мнение от OciXCrom » 28 Фев 2020, 00:13

You clearly changed much more than just the lang. That one compiles fine with the exception of line 1118 which contains symbols that the forum can't display. If you have the original .sma file, use that one and try again. This time check if the plugin compiles after each "lang change".

Аватар
lantimilan
Извън линия
Foreigner
Foreigner
Мнения: 424
Регистриран на: 29 Ное 2017, 22:49
Се отблагодари: 31 пъти
Получена благодарност: 3 пъти

Bugfix plugin problem with compile

Мнение от lantimilan » 28 Фев 2020, 08:40

Okey thanks you can close this topic

Заключено
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 42 госта