Page 1 of 1

Problema Compilare

Posted: 19 Nov 2019, 01:20
by AcridGamer
Salutari, am si eu o problema cu aceste 5 pluginuri la compilare!

Code: Select all

    #include <amxmodx>
    #include <amxmisc>

    new g_msgChannel

    #define MAX_CLR 10

    new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
    new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
    new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

    new amx_show_activity;
    new g_AdminChatFlag = ADMIN_CHAT;

    public plugin_init()
    {
    	new admin_chat_id

    	register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
    	register_dictionary("adminchat.txt")
    	register_dictionary("common.txt")
    	register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message")
    	register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
    	register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
    	admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
    	register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
    	register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
    	register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")
    	
    	amx_show_activity = get_cvar_pointer("amx_show_activity");
    	
    	if (amx_show_activity == 0)
    	{
    		amx_show_activity = register_cvar("amx_show_activity", "2");
    	}

    	new str[1]
    	get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
    }

    public cmdSayChat(id)
    {
    	if (!access(id, g_AdminChatFlag))
    	{
    		return PLUGIN_CONTINUE
    	}
    	
    	new said[6], i = 0
    	read_argv(1, said, 5)
    	
    	while (said == '@')
    	{
    		i++
    	}
    	
    	if (!i || i > 3)
    	{
    		return PLUGIN_CONTINUE
    	}
    	
    	new message[192], a = 0
    	read_args(message, 191)
    	remove_quotes(message)
    	
    	switch (said)
    	{
    		case 'r': a = 1
    		case 'g': a = 2
    		case 'b': a = 3
    		case 'y': a = 4
    		case 'm': a = 5
    		case 'c': a = 6
    		case 'o': a = 7
    	}
    	
    	new n, s = i
    	if (a)
    	{
    		n++
    		s++
    	}
    	while (said[s] && isspace(said[s]))
    	{
    		n++
    		s++
    	}
    	

    	new name[32], authid[32], userid
    	
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
    	
    	if (++g_msgChannel > 6 || g_msgChannel < 3)
    	{
    		g_msgChannel = 3
    	}
    	
    	new Float:verpos = g_Pos[1] + float(g_msgChannel) / 35.0
    	
    	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

    	switch ( get_pcvar_num(amx_show_activity) )
    	{
    		case 3, 4:
    		{
    			new maxpl = get_maxplayers();
    			for (new pl = 1; pl <= maxpl; pl++)
    			{
    				if (is_user_connected(pl) && !is_user_bot(pl))
    				{
    					if (is_user_admin(pl))
    					{
    						show_hudmessage(pl, "%s :   %s", name, message[i + n])
    						client_print(pl, print_notify, "%s :   %s", name, message[i + n])
    					}
    					else
    					{
    						show_hudmessage(pl, "%s", message[i + n])
    						client_print(pl, print_notify, "%s", message[i + n])
    					}
    				}
    			}
    		}
    		case 2:
    		{
    			show_hudmessage(0, "%s :   %s", name, message[i + n])
    			client_print(0, print_notify, "%s :   %s", name, message[i + n])
    		}
    		default:
    		{
    			show_hudmessage(0, "%s", message[i + n])
    			client_print(0, print_notify, "%s", message[i + n])
    		}
    	}

    	return PLUGIN_HANDLED
    }

    public cmdSayAdmin(id)
    {
    	new said[2]
    	read_argv(1, said, 1)
    	
    	if (said[0] != '@')
    		return PLUGIN_CONTINUE
    	
    	new message[192], name[32], authid[32], userid
    	new players[32], inum
    	
    	read_args(message, 191)
    	remove_quotes(message)
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])
    	
    	if (is_user_admin(id))
    		format(message, 191, "(%L) %s :  %s", id, "ADMIN", name, message[1])
    	else
    		format(message, 191, "(%L) %s :  %s", id, "PLAYER", name, message[1])

    	get_players(players, inum)
    	
    	for (new i = 0; i < inum; ++i)
    	{
    		// dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing
    		if (players != id && get_user_flags(players) & g_AdminChatFlag)
    			client_print(players, print_chat, "%s", message)
    	}
    	
    	client_print(id, print_chat, "%s", message)
    	
    	return PLUGIN_HANDLED
    }

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

    	new message[192], name[32], players[32], inum, authid[32], userid
    	
    	read_args(message, 191)
    	remove_quotes(message)
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	get_players(players, inum)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)
    	
    	format(message, 191, "(ADMINS) %s :   %s", name, message)
    	console_print(id, "%s", message)
    	
    	for (new i = 0; i < inum; ++i)
    	{
    		if (access(players, g_AdminChatFlag))
    			client_print(players, print_chat, "%s", message)
    	}
    	
    	return PLUGIN_HANDLED
    }

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

    	new message[192], name[32], authid[32], userid
    	
    	read_args(message, 191)
    	remove_quotes(message)
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
    	console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)
    	
    	return PLUGIN_HANDLED
    }

    public cmdPsay(id, level, cid)
    {
    	if (!cmd_access(id, level, cid, 3))
    		return PLUGIN_HANDLED
    	
    	new name[32]
    	read_argv(1, name, 31)
    	new priv = cmd_target(id, name, 0)

    	if (!priv)
    		return PLUGIN_HANDLED
    	
    	new length = strlen(name) + 1

    	get_user_name(priv, name, 31); 
    	
    	new message[192], name2[32], authid[32], authid2[32], userid, userid2
    	
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name2, 31)
    	userid = get_user_userid(id)
    	read_args(message, 191)
    	
    	if (message[0] == '"' && message[length] == '"') // HLSW fix
    	{
    		message[0] = ' '
    		message[length] = ' '
    		length += 2
    	}
    	
    	remove_quotes(message[length])
    	get_user_name(priv, name, 31)
    	
    	if (id && id != priv)
    		client_print(id, print_chat, "(%s) %s :   %s", name, name2, message[length])
    	
    	client_print(priv, print_chat, "(%s) %s :   %s", name, name2, message[length])
    	console_print(id, "(%s) %s :   %s", name, name2, message[length])
    	get_user_authid(priv, authid2, 31)
    	userid2 = get_user_userid(priv)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])
    	
    	return PLUGIN_HANDLED
    }

    public cmdTsay(id, level, cid)
    {
    	if (!cmd_access(id, level, cid, 3))
    		return PLUGIN_HANDLED
    	
    	new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0
    	
    	read_argv(0, cmd, 15)
    	new bool:tsay = (tolower(cmd[4]) == 't')
    	
    	read_args(message, 191)
    	remove_quotes(message)
    	parse(message, color, 15)
    	
    	new found = 0, a = 0
    	new lang[3], langnum = get_langsnum()

    	for (new i = 0; i < MAX_CLR; ++i)
    	{
    		for (new j = 0; j < langnum; j++)
    		{
    			get_lang(j, lang)
    			format(color2, 15, "%L", lang, g_Colors)
    			
    			if (equali(color, color2))
    			{
    				a = i
    				found = 1
    				break
    			}
    		}
    		if (found == 1)
    			break
    	}
    	
    	new length = found ? (strlen(color) + 1) : 0
    	
    	if (++g_msgChannel > 6 || g_msgChannel < 3)
    		g_msgChannel = 3

    	new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0
    	
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

    	switch ( get_pcvar_num(amx_show_activity) )
    	{
    		case 3, 4:
    		{
    			new maxpl = get_maxplayers();
    			for (new pl = 1; pl <= maxpl; pl++)
    			{
    				if (is_user_connected(pl) && !is_user_bot(pl))
    				{
    					if (is_user_admin(pl))
    					{
    						show_hudmessage(pl, "%s :   %s", name, message[length])
    						client_print(pl, print_notify, "%s :   %s", name, message[length])
    					}
    					else
    					{
    						show_hudmessage(pl, "%s", message[length])
    						client_print(pl, print_notify, "%s", message[length])
    					}
    				}
    			}
    			console_print(id, "%s :  %s", name, message[length])
    		}
    		case 2:
    		{
    			show_hudmessage(0, "%s :   %s", name, message[length])
    			client_print(0, print_notify, "%s :   %s", name, message[length])
    			console_print(id, "%s :  %s", name, message[length])
    		}
    		default:
    		{
    			show_hudmessage(0, "%s", message[length])
    			client_print(0, print_notify, "%s", message[length])
    			console_print(id, "%s", message[length])
    		}
    	}

    	log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
    	log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

    	return PLUGIN_HANDLED
}
	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, "!y", "^1")
	replace_all(msg, 190, "!team", "^3")
   
	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
		if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}

Code: Select all

#include <amxmodx>
#include <amxmisc>

// 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 pausable;
new rcon_password;

// 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;

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];

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

		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])) // 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 GetInfo(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_disconnect(id)
{
	if (!is_user_bot(id))
	{
		InsertInfo(id);
	}
}

public plugin_init()
{
	register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team")

	register_dictionary("admincmd.txt")
	register_dictionary("common.txt")
	register_dictionary("adminhelp.txt")
	
	
	register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
	register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
	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>")
	register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
	register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
	register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag]")
	register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game")
	register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")
	register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value]")
	register_concmd("amx_plugins", "cmdPlugins", ADMIN_ADMIN)
	register_concmd("amx_modules", "cmdModules", ADMIN_ADMIN)
	register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname>")
	register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")
	register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>")
	register_concmd("amx_last", "cmdLast", ADMIN_BAN, "- list the last few disconnected clients info");
	register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line>")
	register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>")
	register_clcmd("pauseAck", "cmdLBack")


	rcon_password=get_cvar_pointer("rcon_password");
	pausable=get_cvar_pointer("pausable");
	
	
}

public plugin_cfg()
{
	// Cvars which can be changed only with rcon access
	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_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)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new arg[32]
	read_argv(1, arg, 31)
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
	
	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)
	
	log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_1", name2)
	}

	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] Client ^"%s^" kicked", name2)
	
	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]
	
	read_argv(1, arg, 31)
	
	if (contain(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: 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)
	log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)
	
	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)
{
	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]
	
	read_argv(1, arg, 31)
	read_argv(2, minutes, 31)
	read_argv(3, reason, 31)
	
	
	if (!(get_user_flags(id) & ADMIN_RCON))
	{
		new bool:canban = false;
		new bool:isip = false;
		// 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"))
		{
			// Hopefully we never get here, so ML shouldn't be needed
			console_print(id, "Cannot ban %s", arg);
			return PLUGIN_HANDLED;
		}
		
		if (contain(arg, ".") != -1)
		{
			isip = true;
		}
		
		// Scan the disconnection queue
		if (isip)
		{
			new IP[32];
			new Name[32];
			new dummy[1];
			new Access;
			for (new i = 0; i < g_Size; i++)
			{
				GetInfo(i, Name, charsmax(Name), dummy, 0, IP, charsmax(IP), Access);
				
				if (equal(IP, arg))
				{
					if (Access & ADMIN_IMMUNITY)
					{
						console_print(id, "[AMXX] %s : %L", IP, id, "CLIENT_IMM", Name);
						
						return PLUGIN_HANDLED;
					}
					// User did not have immunity
					canban = true;
				}
			}
		}
		else
		{
			new Auth[32];
			new Name[32];
			new dummy[1];
			new Access;
			for (new i = 0; i < g_Size; i++)
			{
				GetInfo(i, Name, charsmax(Name), Auth, charsmax(Auth), dummy, 0, Access);
				
				if (equal(Auth, arg))
				{
					if (Access & ADMIN_IMMUNITY)
					{
						console_print(id, "[AMXX] %s : %L", Auth, id, "CLIENT_IMM", Name);
						
						return PLUGIN_HANDLED;
					}
					// User did not have immunity
					canban = true;
				}
			}
		}
		
		if (!canban)
		{
			console_print(id, "[AMXX] You may only ban recently disconnected clients.  Use ^"amx_last^" to view.");
			
			return PLUGIN_HANDLED;
		}
		
	}
	
	// User has access to ban their target
	if (contain(arg, ".") != -1)
	{
		server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
		console_print(id, "[AMXX] Ip ^"%s^" added to ban list", arg)
	} else {
		server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)
		console_print(id, "[AMXX] Authid ^"%s^" added to ban list", arg)
	}

	get_user_name(id, name, 31)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_2", name, arg)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_1", arg)
	}

	get_user_authid(id, authid, 31)
	log_amx("Cmd: ^"%s<%d><%s><>^" ban ^"%s^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, arg, minutes, reason)

	return PLUGIN_HANDLED
}

public cmdBan(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)
	
	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
	
	if (!player)
		return PLUGIN_HANDLED

	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)
	
	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
	
	new temp[64], banned[16], nNum = str_to_num(minutes)
	if (nNum)
		format(temp, 63, "%L", player, "FOR_MIN", minutes)
	else
		format(temp, 63, "%L", player, "PERM")

	format(banned, 15, "%L", player, "BANNED")

	if (reason[0])
		server_cmd("kick #%d ^"%s (%s %s)^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, reason, banned, temp, minutes, authid2)
	else
		server_cmd("kick #%d ^"%s %s^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, banned, temp, minutes, authid2)

	
	// Display the message to all clients

	new msg[256];
	new len;
	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			len = formatex(msg, charsmax(msg), "%L", i, "BAN");
			len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
			if (nNum)
			{
				len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);
			}
			else
			{
				len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");
			}
			if (strlen(reason) > 0)
			{
				formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);
			}
			show_activity_id(i, id, name, msg);
		}
	}
	
	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
	
	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)
	
	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
	
	if (!player)
	{
		// why is this here?
		// no idea
		// player = cmd_target(id, target, 9);
		return PLUGIN_HANDLED
	}
	
	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)
	
	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)

	new temp[64], banned[16], nNum = str_to_num(minutes)
	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)

	// Display the message to all clients

	new msg[256];
	new len;
	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			len = formatex(msg, charsmax(msg), "%L", i, "BAN");
			len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
			if (nNum)
			{
				formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);
			}
			else
			{
				formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");
			}
			if (strlen(reason) > 0)
			{
				formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);
			}
			show_activity_id(i, id, name, msg);
		}
	}

	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
	
	return PLUGIN_HANDLED
}

public cmdSlay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32]
	
	read_argv(1, arg, 31)
	
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)
	
	if (!player)
		return PLUGIN_HANDLED
	
	user_kill(player)
	
	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)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_2", name, name2)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_1", name2)
	}
	console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2)
	
	return PLUGIN_HANDLED
}

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

	new arg[32]
	
	read_argv(1, arg, 31)
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)
	
	if (!player)
		return PLUGIN_HANDLED

	new spower[32], authid[32], name2[32], authid2[32], name[32]
	
	read_argv(2, spower, 31)
	
	new damage = str_to_num(spower)
	
	user_slap(player, damage)
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(player, name2, 31)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2)
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: 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)
	}
	console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage)
	
	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

	new arg[32]
	new arglen = read_argv(1, arg, 31)
	
	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: chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_2", name, arg)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_1", arg)
	}
	
	log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, arg)
	
	new _modName[10]
	get_modname(_modName, 9)
	
	if (!equal(_modName, "zp"))
	{
		message_begin(MSG_ALL, SVC_INTERMISSION)
		message_end()
	}
	
	set_task(2.0, "chMap", 0, arg, arglen + 1)
	
	return PLUGIN_HANDLED
}

stock bool:onlyRcon(const name[])
{
	new pentru=get_cvar_pointer(name);
	if (pentru && get_pcvar_flags(pentru) & FCVAR_PROTECTED)
	{
		return true;
	}
	return false;
}

public cmdCvar(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32], arg2[64]
	
	read_argv(1, arg, 31)
	read_argv(2, arg2, 63)
	
	if (equal(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
	}
	else if (equal(arg, "sv_password") && !(get_user_flags(id) & ADMIN_PASSWORD))
	{
		console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
		return PLUGIN_HANDLED
	}
	
	if (read_argc() < 3)
	{
		get_cvar_string(arg, arg2, 63)
		console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2)
		return PLUGIN_HANDLED
	}

	new authid[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", name, get_user_userid(id), authid, arg, arg2)
	set_cvar_string(arg, arg2)

	new activity = get_cvar_num("amx_show_activity")
	if (activity != 0)
	{
		new players[32], pnum, admin[64], cvar_val[64], len
		get_players(players, pnum, "c")
		
		for (new i = 0; i < pnum; i++)
		{
			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 (equal(arg, "rcon_password") || equal(arg, "sv_password"))
				format(cvar_val, 63, "*** %L ***", players, "PROTECTED")
			else
				copy(cvar_val, 63, arg2)
			
			chat_color(players,"%L", players, "SET_CVAR_TO", name, arg, arg2)
		}
	}
	console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2)
	
	return PLUGIN_HANDLED
}

public cmdPlugins(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED
		
	if (id==0) // If server executes redirect this to "amxx plugins" for more in depth output
	{
		server_cmd("amxx plugins");
		server_exec();
		return PLUGIN_HANDLED;
	}

	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 StartPLID=0;
	new EndPLID;

	new Temp[96]

	new num = get_pluginsnum()
	
	if (read_argc() > 1)
	{
		read_argv(1,Temp,sizeof(Temp)-1);
		StartPLID=str_to_num(Temp)-1; // zero-based
	}

	EndPLID=min(StartPLID + 10, num);
	
	new running = 0
	
	console_print(id, "----- %L -----", id, "LOADED_PLUGINS")
	console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)

	new i=StartPLID;
	while (i <EndPLID)
	{
		get_plugin(i++, filename, 31, name, 31, version, 31, author, 31, status, 31)
		console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
		
		if (status[0]=='d' || status[0]=='r') // "debug" or "running"
			running++
	}
	console_print(id, "%L", id, "PLUGINS_RUN", EndPLID-StartPLID, running)
	console_print(id, "----- %L -----",id,"HELP_ENTRIES",StartPLID + 1,EndPLID,num);
	
	if (EndPLID < num)
	{
		formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_MORE", EndPLID + 1);
		replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");
		console_print(id,"%s",Temp);
	}
	else
	{
		formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_BEGIN");
		replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");
		console_print(id,"%s",Temp);
	}

	return PLUGIN_HANDLED
}

public cmdModules(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED

	new name[32], version[32], author[32], status, sStatus[16]
	new lName[32], lVersion[32], lAuthor[32], lStatus[32];

	format(lName, 31, "%L", id, "NAME")
	format(lVersion, 31, "%L", id, "VERSION")
	format(lAuthor, 31, "%L", id, "AUTHOR")
	format(lStatus, charsmax(lStatus), "%L", id, "STATUS")

	new num = get_modulesnum()
	
	console_print(id, "%L:", id, "LOADED_MODULES")
	console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", lName, lVersion, lAuthor, lStatus)
	
	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, "bad load");
				copy(name, charsmax(name), "unknown");
				copy(author, charsmax(author), "unknown");
				copy(version, charsmax(version), "unknown");
			}
		}
		
		console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", name, version, author, sStatus)
	}
	console_print(id, "%L", id, "NUM_MODULES", num)

	return PLUGIN_HANDLED
}

public cmdCfg(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[128]
	read_argv(1, arg, 127)
	
	if (!file_exists(arg))
	{
		console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg)
		return PLUGIN_HANDLED
	}
	
	new authid[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" execute cfg (file ^"%s^")", name, get_user_userid(id), authid, arg)
	
	console_print(id, "[AMXX] Executing file ^"%s^"", arg)
	server_cmd("exec %s", arg)

	switch(get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_2", name, arg)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_1", 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)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED 
	
	new authid[32], name[32], slayer = id
	
	get_user_authid(id, authid, 31) 
	get_user_name(id, name, 31) 
	if (pausable!=0)
	{
		g_pausAble = get_pcvar_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")
	
	log_amx("Cmd: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause")
	
	console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")

	// Display the message to all clients

	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			show_activity_id(i, id, name, "%L server", i, g_Paused ? "UNPAUSE" : "PAUSE");
		}
	}

	g_pauseCon = id
	
	return PLUGIN_HANDLED
} 

public cmdShowRcon(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
		
	new password[64]
	
	get_pcvar_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)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg)
	
	console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)
	server_cmd("%s", 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("Cmd: ^"%s<%d><%s><>^" ask for players list", 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()
	new ltags[4][32]
	new ltagsnum = 0
	
	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)
	log_amx("Kick: ^"%s<%d><%s><>^" leave some group (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3])


	switch(get_cvar_num("amx_show_activity"))
	{
		case 2: 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])
	}

	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]

	read_argv(1, arg1, 31)
	read_argv(2, arg2, 31)

	new player = cmd_target(id, arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
	
	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)

	client_cmd(player, "name ^"%s^"", arg2)

	log_amx("Cmd: ^"%s<%d><%s><>^" change nick to ^"%s^" ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, arg2, name2, get_user_userid(player), authid2)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: 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)
	}
	console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2)

	return PLUGIN_HANDLED
}

public cmdLast(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
	{
		return PLUGIN_HANDLED;
	}
	
	new name[32];
	new authid[32];
	new ip[32];
	new flags[32];
	new access;
	
	
	// This alignment is a bit weird (it should grow if the name is larger)
	// but otherwise for the more common shorter name, it'll wrap in server console
	// Steam client display is all skewed anyway because of the non fixed font.
	console_print(id, "%19s %20s %15s %s", "name", "authid", "ip", "access");
	
	for (new i = 0; i < g_Size; i++)
	{
		GetInfo(i, name, charsmax(name), authid, charsmax(authid), ip, charsmax(ip), access);
		
		get_flags(access, flags, charsmax(flags));
		
		console_print(id, "%19s %20s %15s %s", name, authid, ip, flags);
	}
	
	console_print(id, "%d old connections saved.", g_Size);
	
	return PLUGIN_HANDLED;
}
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, "!y", "^1")
 replace_all(msg, 190, "!team", "^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, get_user_msgid("SayText"), _, players)
    write_byte(players);
    write_string(msg);
    message_end();
   }
  }
 }
} 

Code: Select all

#include <amxmodx>
#include <amxmisc>

#define PLUGIN            "AutoRestart"
#define VERSION           "1.2"
#define AUTHOR            "="

new Restart = 0;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_logevent("AutoRestart", 2, "1=Round_End");
}

public AutoRestart(id) {
	Restart++;
	
	if(Restart == 2) {
		new szMapName[32], szNextMap[32];
		get_mapname(szMapName, 31);
		get_cvar_string("amx_nextmap", szNextMap, 31);
		
		server_cmd("sv_restart 1");
		K1d0x_C_Color(0, "#t[xMas] #cHarta Actuala : #t%s", szMapName);
		K1d0x_C_Color(0, "#t[xMas] #cUrmatoarea Harta : #t%s", szNextMap);
		K1d0x_C_Color(0, "#t[xMas] #cColindatori : #t%d", get_playersnum(1));
	}
}

stock K1d0x_C_Color(const id, const input[], any:...) {
	new szNumber = 1, szPlayers[32];
	
	static szMsg[191];
	vformat(szMsg, 190, input, 3);
	
	replace_all(szMsg, 190, "#g", "^4");         /*    Green color                                     */
	replace_all(szMsg, 190, "#c", "^1");        /*    Color of chat                                   */
	replace_all(szMsg, 190, "#t", "^3");       /*    Color of team CT = Blue | TERRORIST = Red       */
	replace_all(szMsg, 190, "#dt", "^0");     /*    Default color of team                           */
	
	if(id)
		szPlayers[0] = id;
	else
	
	get_players(szPlayers, szNumber, "ch"); {
		for(new i = 0; i < szNumber; i++) {
			if(is_user_connected(szPlayers)) {
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, szPlayers);
				write_byte(szPlayers);
				write_string(szMsg);
				message_end();
			}
		}
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{ rtf1 ansi ansicpg1250 deff0 deflang1048{ fonttbl{ f0 fnil Tahoma;}}n viewkind4 uc1 pard f0 fs16 n par }
*/

Code: Select all

#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Bomba xMas Skin"
#define VERSION "1.2"
#define AUTHOR ""

new const g_szBombModels[][] = {
	
	"models/snow_man.mdl"	
};

public plugin_init() {
	
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_forward(FM_SetModel, "fwd_SetModel", 1);
	register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink", 0);	
}

public plugin_precache()
{
//	engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));
	
	new i;
	for(i = 0 ; i < sizeof g_szBombModels ; i++)
	precache_model(g_szBombModels);
	
}

public fwd_SetModel(ent, const szModel[])
{
	if(!pev_valid(ent))
		return FMRES_IGNORED;
	
	if(equal(szModel, "models/w_c4.mdl"))
	{
	//	static iRndModel; iRndModel = random_num(0, sizeof g_szBombModels - 1);
		engfunc(EngFunc_SetModel, ent, g_szBombModels);
		
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

public plugin_init() {
	register_plugin("Reseteaza Score", "1.2", "AG Community")
	register_clcmd("say /resetscore", "resetscore", ADMIN_ALL, "");
	register_clcmd("say_team /resetscore", "resetscore", ADMIN_ALL, "");
	register_clcmd("say /rs", "resetscore", ADMIN_ALL, "");
	register_clcmd("say_team /rs", "resetscore", ADMIN_ALL, "");
	register_clcmd("say /reset", "resetscore", ADMIN_ALL, "");
	register_clcmd("say_team /reset", "resetscore", ADMIN_ALL, "");
}

public resetscore(id, level, cid)
{
	if(!cmd_access(id, level, cid, 1) || !is_user_connected(id) || is_user_connecting(id))
		return PLUGIN_HANDLED;
	
	cs_set_user_deaths(id, 0);
	set_user_frags(id, 0);
	cs_set_user_deaths(id, 0);
	set_user_frags(id, 0);
	
	client_printc(id, "!t[xMas] !gScorul tau a fost resetat cu Succes!")
	
	return PLUGIN_HANDLED;
}


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

Re: Problema Compilare

Posted: 19 Nov 2019, 17:21
by AcridGamer
#up Poate sa il mute un admin la sectiunea counter-strike 1.6 va rog? :) am gresit sectiunea :(

Re: Problema Compilare

Posted: 21 Nov 2019, 14:04
by levin

Code: Select all

    #include <amxmodx>
    #include <amxmisc>

    new g_msgChannel

    #define MAX_CLR 10

    new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
    new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
    new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

    new amx_show_activity;
    new g_AdminChatFlag = ADMIN_CHAT;

    public plugin_init()
    {
    	new admin_chat_id

    	register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
    	register_dictionary("adminchat.txt")
    	register_dictionary("common.txt")
    	register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message")
    	register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
    	register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
    	admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
    	register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
    	register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
    	register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")
    	
    	amx_show_activity = get_cvar_pointer("amx_show_activity");
    	
    	if (amx_show_activity == 0)
    	{
    		amx_show_activity = register_cvar("amx_show_activity", "2");
    	}

    	new str[1]
    	get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
    }

    public cmdSayChat(id)
    {
    	if (!access(id, g_AdminChatFlag))	return PLUGIN_CONTINUE
    	
    	new said[6], i = 0
    	read_argv(1, said, 5)
    	while (said[i] == '@')	i++
    	if (!i || i > 3)	return PLUGIN_CONTINUE
    	
    	new message[192], a = 0
    	read_args(message, 191)
    	remove_quotes(message)
    	
    	switch (said[i])
    	{
    		case 'r': a = 1
    		case 'g': a = 2
    		case 'b': a = 3
    		case 'y': a = 4
    		case 'm': a = 5
    		case 'c': a = 6
    		case 'o': a = 7
    	}
    	
    	new n, s = i
    	if (a)
    	{
    		n++
    		s++
    	}
    	while (said[s] && isspace(said[s]))
    	{
    		n++
    		s++
    	}
    	
    	new name[32], authid[32], userid
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])
    	
    	if (++g_msgChannel > 6 || g_msgChannel < 3)	g_msgChannel = 3
    	
    	new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0
    	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

    	switch ( get_pcvar_num(amx_show_activity) )
    	{
    		case 3, 4:
    		{
    			new maxpl = get_maxplayers();
    			for (new pl = 1; pl <= maxpl; pl++)
    			{
    				if (is_user_connected(pl) && !is_user_bot(pl))
    				{
    					if (is_user_admin(pl))
    					{
    						show_hudmessage(pl, "%s :   %s", name, message[i + n])
    						client_print(pl, print_notify, "%s :   %s", name, message[i + n])
    					}
    					else
    					{
    						show_hudmessage(pl, "%s", message[i + n])
    						client_print(pl, print_notify, "%s", message[i + n])
    					}
    				}
    			}
    		}
    		case 2:
    		{
    			show_hudmessage(0, "%s :   %s", name, message[i + n])
    			client_print(0, print_notify, "%s :   %s", name, message[i + n])
    		}
    		default:
    		{
    			show_hudmessage(0, "%s", message[i + n])
    			client_print(0, print_notify, "%s", message[i + n])
    		}
    	}

    	return PLUGIN_HANDLED
    }

    public cmdSayAdmin(id)
    {
    	new said[2]
    	read_argv(1, said, 1)
    	
    	if (said[0] != '@')
    		return PLUGIN_CONTINUE
    	
    	new message[192], name[32], authid[32], userid
    	new players[32], inum
    	
    	read_args(message, 191)
    	remove_quotes(message)
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])
    	
    	if (is_user_admin(id))	format(message, 191, "(%L) %s :  %s", id, "ADMIN", name, message[1])
    	else	format(message, 191, "(%L) %s :  %s", id, "PLAYER", name, message[1])

    	get_players(players, inum,"ch")
    	for (new i = 0; i < inum; ++i)
    	{
    		// dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing
    		if (players[i] != id && get_user_flags(players[i]) & g_AdminChatFlag)	client_print(players[i], print_chat, message)
    	}
    	
    	client_print(id, print_chat, "%s", message)
    	
    	return PLUGIN_HANDLED
    }

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

    	new message[192], name[32], players[32], inum, authid[32], userid
    	read_args(message, 191)
    	remove_quotes(message)
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	get_players(players, inum)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)
    	
    	format(message, 191, "(ADMINS) %s :   %s", name, message)
    	console_print(id, "%s", message)
    	
    	for (new i = 0; i < inum; ++i)
    	{
    		if (access(players[i], g_AdminChatFlag))	client_print(players[i], print_chat, message)
    	}
    	
    	return PLUGIN_HANDLED
    }

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

    	new message[192], name[32], authid[32], userid
    	read_args(message, 191)
    	remove_quotes(message)
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
    	console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)
    	
    	return PLUGIN_HANDLED
    }

    public cmdPsay(id, level, cid)
    {
    	if (!cmd_access(id, level, cid, 3))
    		return PLUGIN_HANDLED
    	
    	new name[32]
    	read_argv(1, name, 31)
    	new priv = cmd_target(id, name, 0)

    	if (!priv)
    		return PLUGIN_HANDLED
    	
    	new length = strlen(name) + 1

    	get_user_name(priv, name, 31); 
    	
    	new message[192], name2[32], authid[32], authid2[32], userid, userid2
    	
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name2, 31)
    	userid = get_user_userid(id)
    	read_args(message, 191)
    	
    	if (message[0] == '"' && message[length] == '"') // HLSW fix
    	{
    		message[0] = ' '
    		message[length] = ' '
    		length += 2
    	}
    	
    	remove_quotes(message[length])
    	get_user_name(priv, name, 31)
    	
    	if (id && id != priv)
    		client_print(id, print_chat, "(%s) %s :   %s", name, name2, message[length])
    	
    	client_print(priv, print_chat, "(%s) %s :   %s", name, name2, message[length])
    	console_print(id, "(%s) %s :   %s", name, name2, message[length])
    	get_user_authid(priv, authid2, 31)
    	userid2 = get_user_userid(priv)
    	
    	log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
    	log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])
    	
    	return PLUGIN_HANDLED
    }

    public cmdTsay(id, level, cid)
    {
    	if (!cmd_access(id, level, cid, 3))
    		return PLUGIN_HANDLED
    	
    	new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0
    	
    	read_argv(0, cmd, 15)
    	new bool:tsay = (tolower(cmd[4]) == 't')
    	
    	read_args(message, 191)
    	remove_quotes(message)
    	parse(message, color, 15)
    	
    	new found = 0, a = 0
    	new lang[3], langnum = get_langsnum()

    	for (new i = 0; i < MAX_CLR; ++i)
    	{
    		for (new j = 0; j < langnum; j++)
    		{
    			get_lang(j, lang)
    			format(color2, 15, "%L", lang, g_Colors)
    			
    			if (equali(color, color2))
    			{
    				a = i
    				found = 1
    				break
    			}
    		}
    		if (found == 1)
    			break
    	}
    	
    	new length = found ? (strlen(color) + 1) : 0
    	
    	if (++g_msgChannel > 6 || g_msgChannel < 3)
    		g_msgChannel = 3

    	new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0
    	
    	get_user_authid(id, authid, 31)
    	get_user_name(id, name, 31)
    	userid = get_user_userid(id)
    	set_hudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

    	switch ( get_pcvar_num(amx_show_activity) )
    	{
    		case 3, 4:
    		{
    			new maxpl = get_maxplayers();
    			for (new pl = 1; pl <= maxpl; pl++)
    			{
    				if (is_user_connected(pl) && !is_user_bot(pl))
    				{
    					if (is_user_admin(pl))
    					{
    						show_hudmessage(pl, "%s :   %s", name, message[length])
    						client_print(pl, print_notify, "%s :   %s", name, message[length])
    					}
    					else
    					{
    						show_hudmessage(pl, "%s", message[length])
    						client_print(pl, print_notify, "%s", message[length])
    					}
    				}
    			}
    			console_print(id, "%s :  %s", name, message[length])
    		}
    		case 2:
    		{
    			show_hudmessage(0, "%s :   %s", name, message[length])
    			client_print(0, print_notify, "%s :   %s", name, message[length])
    			console_print(id, "%s :  %s", name, message[length])
    		}
    		default:
    		{
    			show_hudmessage(0, "%s", message[length])
    			client_print(0, print_notify, "%s", message[length])
    			console_print(id, "%s", message[length])
    		}
    	}

    	log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
    	log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

    	return PLUGIN_HANDLED
}
	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, "!y", "^1")
	replace_all(msg, 190, "!team", "^3")
   
	if (id) players[0] = id; else get_players(players, count, "ch")
	{
		for (new i = 0; i < count; i++)
		{
		if (is_user_connected(players[i]))
			{
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
}

Code: Select all

#include <amxmodx>
#include <amxmisc>

// 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 pausable;
new rcon_password;

// 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;

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];

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

		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])) // 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 GetInfo(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_disconnect(id)
{
	if (!is_user_bot(id))
	{
		InsertInfo(id);
	}
}

public plugin_init()
{
	register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team")

	register_dictionary("admincmd.txt")
	register_dictionary("common.txt")
	register_dictionary("adminhelp.txt")
	
	
	register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")
	register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
	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>")
	register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
	register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
	register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag]")
	register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game")
	register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")
	register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value]")
	register_concmd("amx_plugins", "cmdPlugins", ADMIN_ADMIN)
	register_concmd("amx_modules", "cmdModules", ADMIN_ADMIN)
	register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname>")
	register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")
	register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>")
	register_concmd("amx_last", "cmdLast", ADMIN_BAN, "- list the last few disconnected clients info");
	register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line>")
	register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>")
	register_clcmd("pauseAck", "cmdLBack")


	rcon_password=get_cvar_pointer("rcon_password");
	pausable=get_cvar_pointer("pausable");
	
	
}

public plugin_cfg()
{
	// Cvars which can be changed only with rcon access
	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_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)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED

	new arg[32]
	read_argv(1, arg, 31)
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
	
	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)
	
	log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_KICK_1", name2)
	}

	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] Client ^"%s^" kicked", name2)
	
	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]
	
	read_argv(1, arg, 31)
	
	if (contain(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: 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)
	log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)
	
	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)
{
	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]
	
	read_argv(1, arg, 31)
	read_argv(2, minutes, 31)
	read_argv(3, reason, 31)
	
	
	if (!(get_user_flags(id) & ADMIN_RCON))
	{
		new bool:canban = false;
		new bool:isip = false;
		// 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"))
		{
			// Hopefully we never get here, so ML shouldn't be needed
			console_print(id, "Cannot ban %s", arg);
			return PLUGIN_HANDLED;
		}
		
		if (contain(arg, ".") != -1)
		{
			isip = true;
		}
		
		// Scan the disconnection queue
		if (isip)
		{
			new IP[32];
			new Name[32];
			new dummy[1];
			new Access;
			for (new i = 0; i < g_Size; i++)
			{
				GetInfo(i, Name, charsmax(Name), dummy, 0, IP, charsmax(IP), Access);
				
				if (equal(IP, arg))
				{
					if (Access & ADMIN_IMMUNITY)
					{
						console_print(id, "[AMXX] %s : %L", IP, id, "CLIENT_IMM", Name);
						
						return PLUGIN_HANDLED;
					}
					// User did not have immunity
					canban = true;
				}
			}
		}
		else
		{
			new Auth[32];
			new Name[32];
			new dummy[1];
			new Access;
			for (new i = 0; i < g_Size; i++)
			{
				GetInfo(i, Name, charsmax(Name), Auth, charsmax(Auth), dummy, 0, Access);
				
				if (equal(Auth, arg))
				{
					if (Access & ADMIN_IMMUNITY)
					{
						console_print(id, "[AMXX] %s : %L", Auth, id, "CLIENT_IMM", Name);
						
						return PLUGIN_HANDLED;
					}
					// User did not have immunity
					canban = true;
				}
			}
		}
		
		if (!canban)
		{
			console_print(id, "[AMXX] You may only ban recently disconnected clients.  Use ^"amx_last^" to view.");
			
			return PLUGIN_HANDLED;
		}
		
	}
	
	// User has access to ban their target
	if (contain(arg, ".") != -1)
	{
		server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
		console_print(id, "[AMXX] Ip ^"%s^" added to ban list", arg)
	} else {
		server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)
		console_print(id, "[AMXX] Authid ^"%s^" added to ban list", arg)
	}

	get_user_name(id, name, 31)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_2", name, arg)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_ADDBAN_1", arg)
	}

	get_user_authid(id, authid, 31)
	log_amx("Cmd: ^"%s<%d><%s><>^" ban ^"%s^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, arg, minutes, reason)

	return PLUGIN_HANDLED
}

public cmdBan(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)
	
	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
	
	if (!player)
		return PLUGIN_HANDLED

	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)
	
	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)
	
	new temp[64], banned[16], nNum = str_to_num(minutes)
	if (nNum)
		format(temp, 63, "%L", player, "FOR_MIN", minutes)
	else
		format(temp, 63, "%L", player, "PERM")

	format(banned, 15, "%L", player, "BANNED")

	if (reason[0])
		server_cmd("kick #%d ^"%s (%s %s)^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, reason, banned, temp, minutes, authid2)
	else
		server_cmd("kick #%d ^"%s %s^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, banned, temp, minutes, authid2)

	
	// Display the message to all clients

	new msg[256];
	new len;
	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			len = formatex(msg, charsmax(msg), "%L", i, "BAN");
			len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
			if (nNum)
			{
				len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);
			}
			else
			{
				len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");
			}
			if (strlen(reason) > 0)
			{
				formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);
			}
			show_activity_id(i, id, name, msg);
		}
	}
	
	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
	
	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)
	
	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)
	
	if (!player)
	{
		// why is this here?
		// no idea
		// player = cmd_target(id, target, 9);
		return PLUGIN_HANDLED
	}
	
	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)
	
	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)

	new temp[64], banned[16], nNum = str_to_num(minutes)
	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)

	// Display the message to all clients

	new msg[256];
	new len;
	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			len = formatex(msg, charsmax(msg), "%L", i, "BAN");
			len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);
			if (nNum)
			{
				formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);
			}
			else
			{
				formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");
			}
			if (strlen(reason) > 0)
			{
				formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);
			}
			show_activity_id(i, id, name, msg);
		}
	}

	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
	
	return PLUGIN_HANDLED
}

public cmdSlay(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32]
	
	read_argv(1, arg, 31)
	
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)
	
	if (!player)
		return PLUGIN_HANDLED
	
	user_kill(player)
	
	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)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_2", name, name2)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_SLAY_1", name2)
	}
	console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2)
	
	return PLUGIN_HANDLED
}

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

	new arg[32]
	
	read_argv(1, arg, 31)
	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)
	
	if (!player)
		return PLUGIN_HANDLED

	new spower[32], authid[32], name2[32], authid2[32], name[32]
	
	read_argv(2, spower, 31)
	
	new damage = str_to_num(spower)
	
	user_slap(player, damage)
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(player, name2, 31)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2)
	
	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: 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)
	}
	console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage)
	
	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

	new arg[32]
	new arglen = read_argv(1, arg, 31)
	
	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: chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_2", name, arg)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_MAP_1", arg)
	}
	
	log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, arg)
	
	new _modName[10]
	get_modname(_modName, 9)
	
	if (!equal(_modName, "zp"))
	{
		message_begin(MSG_ALL, SVC_INTERMISSION)
		message_end()
	}
	
	set_task(2.0, "chMap", 0, arg, arglen + 1)
	
	return PLUGIN_HANDLED
}

stock bool:onlyRcon(const name[])
{
	new pentru=get_cvar_pointer(name);
	if (pentru && get_pcvar_flags(pentru) & FCVAR_PROTECTED)
	{
		return true;
	}
	return false;
}

public cmdCvar(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[32], arg2[64]
	
	read_argv(1, arg, 31)
	read_argv(2, arg2, 63)
	
	if (equal(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
	}
	else if (equal(arg, "sv_password") && !(get_user_flags(id) & ADMIN_PASSWORD))
	{
		console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
		return PLUGIN_HANDLED
	}
	
	if (read_argc() < 3)
	{
		get_cvar_string(arg, arg2, 63)
		console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2)
		return PLUGIN_HANDLED
	}

	new authid[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", name, get_user_userid(id), authid, arg, arg2)
	set_cvar_string(arg, arg2)

	new activity = get_cvar_num("amx_show_activity")
	if (activity != 0)
	{
		new players[32], pnum, admin[64], cvar_val[64], len
		get_players(players, pnum, "ch")
		
		for (new i = 0; i < pnum; i++)
		{
			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 (equal(arg, "rcon_password") || equal(arg, "sv_password"))	format(cvar_val, 63, "*** %L ***", players, "PROTECTED")
			else	copy(cvar_val, 63, arg2)
			
			chat_color(players[i],"%L", players[i], "SET_CVAR_TO", name, arg, arg2)
		}
	}
	console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2)
	
	return PLUGIN_HANDLED
}

public cmdPlugins(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))	return PLUGIN_HANDLED
		
	if (id==0) // If server executes redirect this to "amxx plugins" for more in depth output
	{
		server_cmd("amxx plugins");
		server_exec();
		return PLUGIN_HANDLED;
	}

	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 StartPLID=0;
	new EndPLID;

	new Temp[96]

	new num = get_pluginsnum()
	
	if (read_argc() > 1)
	{
		read_argv(1,Temp,sizeof(Temp)-1);
		StartPLID=str_to_num(Temp)-1; // zero-based
	}

	EndPLID=min(StartPLID + 10, num);
	
	new running = 0
	
	console_print(id, "----- %L -----", id, "LOADED_PLUGINS")
	console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)

	new i=StartPLID;
	while (i <EndPLID)
	{
		get_plugin(i++, filename, 31, name, 31, version, 31, author, 31, status, 31)
		console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)
		
		if (status[0]=='d' || status[0]=='r') // "debug" or "running"
			running++
	}
	console_print(id, "%L", id, "PLUGINS_RUN", EndPLID-StartPLID, running)
	console_print(id, "----- %L -----",id,"HELP_ENTRIES",StartPLID + 1,EndPLID,num);
	
	if (EndPLID < num)
	{
		formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_MORE", EndPLID + 1);
		replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");
		console_print(id,"%s",Temp);
	}
	else
	{
		formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_BEGIN");
		replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");
		console_print(id,"%s",Temp);
	}

	return PLUGIN_HANDLED
}

public cmdModules(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED

	new name[32], version[32], author[32], status, sStatus[16]
	new lName[32], lVersion[32], lAuthor[32], lStatus[32];

	format(lName, 31, "%L", id, "NAME")
	format(lVersion, 31, "%L", id, "VERSION")
	format(lAuthor, 31, "%L", id, "AUTHOR")
	format(lStatus, charsmax(lStatus), "%L", id, "STATUS")

	new num = get_modulesnum()
	
	console_print(id, "%L:", id, "LOADED_MODULES")
	console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", lName, lVersion, lAuthor, lStatus)
	
	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, "bad load");
				copy(name, charsmax(name), "unknown");
				copy(author, charsmax(author), "unknown");
				copy(version, charsmax(version), "unknown");
			}
		}
		
		console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", name, version, author, sStatus)
	}
	console_print(id, "%L", id, "NUM_MODULES", num)

	return PLUGIN_HANDLED
}

public cmdCfg(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
	
	new arg[128]
	read_argv(1, arg, 127)
	
	if (!file_exists(arg))
	{
		console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg)
		return PLUGIN_HANDLED
	}
	
	new authid[32], name[32]
	
	get_user_authid(id, authid, 31)
	get_user_name(id, name, 31)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" execute cfg (file ^"%s^")", name, get_user_userid(id), authid, arg)
	
	console_print(id, "[AMXX] Executing file ^"%s^"", arg)
	server_cmd("exec %s", arg)

	switch(get_cvar_num("amx_show_activity"))
	{
		case 2: chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_2", name, arg)
		case 1: chat_color(0,"%L", LANG_PLAYER, "ADMIN_CONF_1", 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)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED 
	
	new authid[32], name[32], slayer = id
	
	get_user_authid(id, authid, 31) 
	get_user_name(id, name, 31) 
	if (pausable!=0)
	{
		g_pausAble = get_pcvar_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")
	
	log_amx("Cmd: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause")
	
	console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")

	// Display the message to all clients

	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			show_activity_id(i, id, name, "%L server", i, g_Paused ? "UNPAUSE" : "PAUSE");
		}
	}

	g_pauseCon = id
	
	return PLUGIN_HANDLED
} 

public cmdShowRcon(id, level, cid)
{
	if (!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED
		
	new password[64]
	
	get_pcvar_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)
	
	log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg)
	
	console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)
	server_cmd("%s", 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("Cmd: ^"%s<%d><%s><>^" ask for players list", 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()
	new ltags[4][32]
	new ltagsnum = 0
	
	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)
	log_amx("Kick: ^"%s<%d><%s><>^" leave some group (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3])


	switch(get_cvar_num("amx_show_activity"))
	{
		case 2: 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])
	}

	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]

	read_argv(1, arg1, 31)
	read_argv(2, arg2, 31)

	new player = cmd_target(id, arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)
	
	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)

	client_cmd(player, "name ^"%s^"", arg2)

	log_amx("Cmd: ^"%s<%d><%s><>^" change nick to ^"%s^" ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, arg2, name2, get_user_userid(player), authid2)

	switch (get_cvar_num("amx_show_activity"))
	{
		case 2: 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)
	}
	console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2)

	return PLUGIN_HANDLED
}

public cmdLast(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
	{
		return PLUGIN_HANDLED;
	}
	
	new name[32];
	new authid[32];
	new ip[32];
	new flags[32];
	new access;
	
	
	// This alignment is a bit weird (it should grow if the name is larger)
	// but otherwise for the more common shorter name, it'll wrap in server console
	// Steam client display is all skewed anyway because of the non fixed font.
	console_print(id, "%19s %20s %15s %s", "name", "authid", "ip", "access");
	
	for (new i = 0; i < g_Size; i++)
	{
		GetInfo(i, name, charsmax(name), authid, charsmax(authid), ip, charsmax(ip), access);
		
		get_flags(access, flags, charsmax(flags));
		
		console_print(id, "%19s %20s %15s %s", name, authid, ip, flags);
	}
	
	console_print(id, "%d old connections saved.", g_Size);
	
	return PLUGIN_HANDLED;
}
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, "!y", "^1")
 replace_all(msg, 190, "!team", "^3")
 
 if (id) players[0] = id; else get_players(players, count, "ch")
 for (new i = 0; i < count; i++)
  {
   if (is_user_connected(players[i]))
   {
    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
    write_byte(players[i]);
    write_string(msg);
    message_end();
   }
 }
} 

Code: Select all

#include <amxmodx>
#include <amxmisc>

#define PLUGIN            "AutoRestart"
#define VERSION           "1.2"
#define AUTHOR            "="

new Restart = 0;

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_logevent("AutoRestart", 2, "1=Round_End");
}

public AutoRestart(id) {
	Restart++;
	
	if(Restart == 2) {
		new szMapName[32], szNextMap[32];
		get_mapname(szMapName, 31);
		get_cvar_string("amx_nextmap", szNextMap, 31);
		
		server_cmd("sv_restart 1");
		K1d0x_C_Color(0, "#t[xMas] #cHarta Actuala : #t%s", szMapName);
		K1d0x_C_Color(0, "#t[xMas] #cUrmatoarea Harta : #t%s", szNextMap);
		K1d0x_C_Color(0, "#t[xMas] #cColindatori : #t%d", get_playersnum(1));
	}
}

stock K1d0x_C_Color(const id, const input[], any:...) {
	new szNumber = 1, szPlayers[32];
	
	static szMsg[191];
	vformat(szMsg, 190, input, 3);
	
	replace_all(szMsg, 190, "#g", "^4");         /*    Green color                                     */
	replace_all(szMsg, 190, "#c", "^1");        /*    Color of chat                                   */
	replace_all(szMsg, 190, "#t", "^3");       /*    Color of team CT = Blue | TERRORIST = Red       */
	replace_all(szMsg, 190, "#dt", "^0");     /*    Default color of team                           */
	
	if(id)	szPlayers[0] = id;
	else	get_players(szPlayers, szNumber, "ch");
	
	for(new i = 0; i < szNumber; i++) {
			if(is_user_connected(szPlayers[i])) {
				message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, szPlayers[i]);
				write_byte(szPlayers[i]);
				write_string(szMsg);
				message_end();
			}
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{ rtf1 ansi ansicpg1250 deff0 deflang1048{ fonttbl{ f0 fnil Tahoma;}}n viewkind4 uc1 pard f0 fs16 n par }
*/

Code: Select all

#include <amxmodx>
#include <fakemeta>

#define PLUGIN "Bomba xMas Skin"
#define VERSION "1.2"
#define AUTHOR ""

new const g_szBombModels[][] = {
	
	"models/snow_man.mdl"	
};

public plugin_init() {
	
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_forward(FM_SetModel, "fwd_SetModel", 1);
	register_forward(FM_PlayerPreThink, "fwd_PlayerPreThink", 0);	
}

public plugin_precache()
{
//	engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "env_snow"));
	
	new i;
	for(i = 0 ; i < sizeof g_szBombModels ; i++)
	precache_model(g_szBombModels[i]);
	
}

public fwd_SetModel(ent, const szModel[])
{
	if(!pev_valid(ent))	return FMRES_IGNORED;
	
	if(equal(szModel, "models/w_c4.mdl"))
	{
	//	static iRndModel; iRndModel = random_num(0, sizeof g_szBombModels - 1);
		engfunc(EngFunc_SetModel, ent, g_szBombModels);
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>

public plugin_init() {
	register_plugin("Reseteaza Score", "1.2", "AG Community")
	register_clcmd("say /resetscore", "resetscore", ADMIN_ALL, "");
	register_clcmd("say_team /resetscore", "resetscore", ADMIN_ALL, "");
	register_clcmd("say /rs", "resetscore", ADMIN_ALL, "");
	register_clcmd("say_team /rs", "resetscore", ADMIN_ALL, "");
	register_clcmd("say /reset", "resetscore", ADMIN_ALL, "");
	register_clcmd("say_team /reset", "resetscore", ADMIN_ALL, "");
}

public resetscore(id, level, cid)
{
	if(!cmd_access(id, level, cid, 1) || !is_user_connected(id) || is_user_connecting(id))
		return PLUGIN_HANDLED;
	
	cs_set_user_deaths(id, 0);
	set_user_frags(id, 0);
	cs_set_user_deaths(id, 0);
	set_user_frags(id, 0);
	
	client_printc(id, "!t[xMas] !gScorul tau a fost resetat cu Succes!")
	
	return PLUGIN_HANDLED;
}


stock client_printc(const id, const input[], any:...){
	new count = 1, players[32];
	static msg[191];
	vformat(msg, 190, input, 3);
	
	replace_all(msg, 190, "!n", "^x01"); 
	replace_all(msg, 190, "!g", "^x04"); 
	replace_all(msg, 190, "!t", "^x03"); 
	
	if (id) players[0] = id; else get_players(players, count, "ch");

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