Редактиране на AMXMODMENU

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
[PB]LuD s KniF3
Извън линия
Потребител
Потребител
Мнения: 69
Регистриран на: 21 Ное 2016, 15:49
Местоположение: В кръчмата на село !
Се отблагодари: 2 пъти
Получена благодарност: 1 път
Обратна връзка:

Редактиране на AMXMODMENU

Мнение от [PB]LuD s KniF3 » 29 Мар 2018, 18:12

Здравейте,искам amxmodmenu да е с цветни команди и командите да не са amx_ban а, mg_ban
пример :
ADMIN(Зелено) [PB]LuD s KniF3(Теам) kick(зелено) [PB]LuD s KniF3(теам)
plmenu.sma
(22.7 KiB) Свалено 124 пъти
plmenu.sma
(22.7 KiB) Свалено 124 пъти
cmdmenu.sma
(11.9 KiB) Свалено 128 пъти
cmdmenu.sma
(11.9 KiB) Свалено 128 пъти
admincmd.sma
(29.43 KiB) Свалено 129 пъти
admincmd.sma
(29.43 KiB) Свалено 129 пъти
admin.sma
(19.09 KiB) Свалено 127 пъти
admin.sma
(19.09 KiB) Свалено 127 пъти

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Редактиране на AMXMODMENU

Мнение от gadinkata » 29 Мар 2018, 21:18

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

#include <amxmodx>
#include <amxmisc>

#define AMXMODX_NOAUTOLOAD
#include <cstrike>

new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_menuOption[33]
new g_menuSettings[33]

new g_menuSelect[33][64]
new g_menuSelectNum[33]

#define MAX_CLCMDS 24

new g_clcmdName[MAX_CLCMDS][32]
new g_clcmdCmd[MAX_CLCMDS][64]
new g_clcmdMisc[MAX_CLCMDS][2]
new g_clcmdNum

new g_coloredMenus
new g_cstrike = 0

new Array:g_bantimes;
new Array:g_slapsettings;

new g_CSTeamNames[3][] = {
	"TERRORIST",
	"CT",
	"SPECTATOR"
}
new g_CSTeamNumbers[3][] = {
	"1",
	"2",
	"6"
}
new g_CSTeamiNumbers[3] = {
	1,
	2,
	6
}

new g_ban_player[33];

#define NORMAL DontChange 
#define GREEN DontChange 
#define TEAM_COLOR DontChange 
#define RED Red 
#define BLUE Blue 
#define GREY Grey 
#define ColorChat client_print_color 

enum _:Colors { 
    DontChange, 
    Red, 
    Blue, 
    Grey 
} 

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

public plugin_natives()
{
	set_module_filter("module_filter")
	set_native_filter("native_filter")
}

public plugin_init()
{
	register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team")
	register_dictionary_colored("common.txt")
	register_dictionary_colored("admincmd.txt")
	register_dictionary_colored("plmenu.txt")

	register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")
	register_clcmd("say /kick", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")
	register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
	register_clcmd("say /ban", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
	register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")
	register_clcmd("say /slap", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")
	register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")
	register_clcmd("say /team", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu")
	register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")
	register_clcmd("say /cmd", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu")
	register_clcmd("amx_banreason", "CmdBanReason", ADMIN_BAN, "<reason>");
	register_clcmd("amx_banreason", "CmdBanReason", ADMIN_BAN, "<reason>");

	register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu")
	register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")
	register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")
	register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")
	register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")
	
	
	g_bantimes = ArrayCreate();

	ArrayPushCell(g_bantimes, 0);
	ArrayPushCell(g_bantimes, 5);
	ArrayPushCell(g_bantimes, 10);
	ArrayPushCell(g_bantimes, 15);
	ArrayPushCell(g_bantimes, 30);
	ArrayPushCell(g_bantimes, 45);
	ArrayPushCell(g_bantimes, 60);
	
	
	g_slapsettings = ArrayCreate();

	ArrayPushCell(g_slapsettings, 0); 
	ArrayPushCell(g_slapsettings, 0); 
	ArrayPushCell(g_slapsettings, 1);
	ArrayPushCell(g_slapsettings, 5);
	
	
	register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes");
	register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");

	g_coloredMenus = colored_menus()

	new clcmds_ini_file[64]
	get_configsdir(clcmds_ini_file, 63)
	format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)
	load_settings(clcmds_ini_file)

	if (module_exists("cstrike"))
		g_cstrike = 1
}
public plmenu_setbantimes()
{
	new buff[32];
	new args = read_argc();
	
	if (args <= 1)
	{
		server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");
		server_print("   use time of 0 for permanent.");
		
		return;
	}
	
	ArrayClear(g_bantimes);
	
	for (new i = 1; i < args; i++)
	{
		read_argv(i, buff, charsmax(buff));
		
		ArrayPushCell(g_bantimes, str_to_num(buff));
		
	}
	
}
public plmenu_setslapdmg()
{
	new buff[32];
	new args = read_argc();
	
	if (args <= 1)
	{
		server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");
		server_print("   slay is automatically set for the first value.");
		
		return;
	}
	
	ArrayClear(g_slapsettings);
	
	ArrayPushCell(g_slapsettings, 0); 
	
	for (new i = 1; i < args; i++)
	{
		read_argv(i, buff, charsmax(buff));
		
		ArrayPushCell(g_slapsettings, str_to_num(buff));
		
	}
	
}
public module_filter(const module[])
{
	if (equali(module, "cstrike"))
		return PLUGIN_HANDLED
	
	return PLUGIN_CONTINUE
}

public native_filter(const name[], index, trap)
{
	if (!trap)
		return PLUGIN_HANDLED
		
	return PLUGIN_CONTINUE
}

/* Ban menu */

public client_disconnect(id)
{
	g_ban_player[id] = 0;
}

public CmdBanReason(id)
{
	new player = g_ban_player[id];
	
	if( !player ) return PLUGIN_HANDLED;
	
	new reason[128];
	read_args(reason, sizeof(reason) - 1);
	remove_quotes(reason);
	
	new name[32], name2[32], authid[32], authid2[32]

	get_user_name(player, name2, 31)
	get_user_authid(id, authid, 31)
	get_user_authid(player, authid2, 31)
	get_user_name(id, name, 31)
	
	new userid2 = get_user_userid(player)

	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id], reason)

	if ( !equal("STEAM_0:", authid2, 8))
	{
		client_cmd(id, "amx_banip #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);
	}
	else
	{
		client_cmd(id, "amx_ban #%i %i ^"%s^"", userid2, g_menuSettings[id], reason);
	}

	server_exec()
	
	g_ban_player[id] = 0;

	displayBanMenu(id, g_menuPosition[id])
	
	return PLUGIN_HANDLED;
}

public actionBanMenu(id, key)
{
	switch (key)
	{
		case 7:
		{
			/* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */
			
			++g_menuOption[id]
			g_menuOption[id] %= ArraySize(g_bantimes);

			g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

			displayBanMenu(id, g_menuPosition[id])
		}
		case 8: displayBanMenu(id, ++g_menuPosition[id])
		case 9: displayBanMenu(id, --g_menuPosition[id])
		default:
		{
			g_ban_player[id] = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
			
			client_cmd(id, "messagemode amx_banreason");
			
			client_print(id, print_chat, "[AMXX] Type in the reason for banning this player.");
			
			
			/*new name[32], name2[32], authid[32], authid2[32]
		
			get_user_name(player, name2, 31)
			get_user_authid(id, authid, 31)
			get_user_authid(player, authid2, 31)
			get_user_name(id, name, 31)
			
			new userid2 = get_user_userid(player)

			log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])

			if (g_menuSettings[id]==0) // permanent
			{
				new maxpl = get_maxplayers();
				for (new i = 1; i <= maxpl; i++)
				{
					show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");
				}
			}
			else
			{
				new tempTime[32];
				formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
				new maxpl = get_maxplayers();
				for (new i = 1; i <= maxpl; i++)
				{
					show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);
				}
			}
			// ---------- check for Steam ID added by MistaGee -------------------- 
			// IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE
			
			if (equal("4294967295", authid2)
				|| equal("HLTV", authid2)
				|| equal("STEAM_ID_LAN", authid2)
				|| equali("VALVE_ID_LAN", authid2))
			{
				// END OF MODIFICATIONS BY MISTAGEE 
				server_cmd("amx_banip #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);
			}
			else
			{
				server_cmd("amx_ban #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]);
			}

			server_exec()

			displayBanMenu(id, g_menuPosition[id])*/
		}
	}
	
	return PLUGIN_HANDLED
}

displayBanMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i
	new name[32]
	new start = pos * 7

	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
	new end = start + 7
	new keys = MENU_KEY_0|MENU_KEY_8

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)

		if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
		{
			++b
			
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
			else
				len += format(menuBody[len], 511-len, "#. %s^n", name)
		} else {
			keys |= (1<<b)
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
			else
				len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
		}
	}

	if (g_menuSettings[id])
		len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])
	else
		len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	show_menu(id, keys, menuBody, -1, "Ban Menu")
}

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

	g_menuOption[id] = 0
	
	if (ArraySize(g_bantimes) > 0)
	{
		g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
	}
	else
	{
		// should never happen, but failsafe
		g_menuSettings[id] = 0
	}
	displayBanMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

/* Slap/Slay */

public actionSlapMenu(id, key)
{
   switch (key)
   {
      case 7:
      {
         ++g_menuOption[id]
         
         g_menuOption[id] %= ArraySize(g_slapsettings);
         
         g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
         
         displaySlapMenu(id, g_menuPosition[id]);
      }
      case 8: displaySlapMenu(id, ++g_menuPosition[id])
      case 9: displaySlapMenu(id, --g_menuPosition[id])
      default:
      {
         new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
         new name2[32]
         
         get_user_name(player, name2, 31)

         if (!is_user_alive(player))
         {
            client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)
            displaySlapMenu(id, g_menuPosition[id])
            return PLUGIN_HANDLED
         }

         new authid[32], authid2[32], name[32]

         get_user_authid(id, authid, 31)
         get_user_authid(player, authid2, 31)
         get_user_name(id, name, 31)

         if (g_menuOption[id])
         {
            log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)

            switch (get_cvar_num("amx_show_activity"))
            {
               case 2: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_SLAP_2", name, name2, g_menuSettings[id])
               case 1: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_SLAP_1", name2, g_menuSettings[id])
            }
         } else {
            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: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_SLAY_2", name, name2)
               case 1: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_SLAY_1", name2)
            }
         }

         if (g_menuOption[id])
            user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)
         else
            user_kill(player)

         displaySlapMenu(id, g_menuPosition[id])
      }
   }
   
   return PLUGIN_HANDLED
}

displaySlapMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i
	new name[32], team[4]
	new start = pos * 7

	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
	new end = start + 7
	new keys = MENU_KEY_0|MENU_KEY_8

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)
		
		if (g_cstrike)
		{
			if (cs_get_user_team(i) == CS_TEAM_T)
			{
				copy(team, 3, "TE")
			}
			else if (cs_get_user_team(i) == CS_TEAM_CT)
			{
				copy(team, 3, "CT")
			} else {
				get_user_team(i, team, 3)
			}
		} else {
			get_user_team(i, team, 3)
		}

		if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))
		{
			++b
		
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
			else
				len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)		
		} else {
			keys |= (1<<b)
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)
			else
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)
		}
	}

	if (g_menuOption[id])
		len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])
	else
		len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")
}

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

	g_menuOption[id] = 0
	if (ArraySize(g_slapsettings) > 0)
	{
		g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
	}
	else
	{
		g_menuSettings[id] = 0
	}

	displaySlapMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

/* Kick */

public actionKickMenu(id, key)
{
	switch (key)
	{
		case 8: displayKickMenu(id, ++g_menuPosition[id])
		case 9: displayKickMenu(id, --g_menuPosition[id])
		default:
		{
			new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]
			new authid[32], authid2[32], name[32], name2[32]
			
			get_user_authid(id, authid, 31)
			get_user_authid(player, authid2, 31)
			get_user_name(id, name, 31)
			get_user_name(player, name2, 31)
			
			new userid2 = get_user_userid(player)

			log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)

			switch (get_cvar_num("amx_show_activity"))
			{
				case 2: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_KICK_2", name, name2)
				case 1: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_KICK_1", name2)
			}
	
			server_cmd("kick #%d", userid2)
			server_exec()

			displayKickMenu(id, g_menuPosition[id])
		}
	}

	return PLUGIN_HANDLED
}

displayKickMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i
	new name[32]
	new start = pos * 8

	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
	new end = start + 8
	new keys = MENU_KEY_0

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)

		if (access(i, ADMIN_IMMUNITY) && i != id)
		{
			++b
		
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
			else
				len += format(menuBody[len], 511-len, "#. %s^n", name)
		} else {
			keys |= (1<<b)
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
			else
				len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
		}
	}

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	show_menu(id, keys, menuBody, -1, "Kick Menu")
}

public cmdKickMenu(id, level, cid)
{
	if (cmd_access(id, level, cid, 1))
		displayKickMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

/* Team menu */

public actionTeamMenu(id, key)
{
	switch (key)
	{
		case 7:
		{
			g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);
			displayTeamMenu(id, g_menuPosition[id])
		}
		case 8: displayTeamMenu(id, ++g_menuPosition[id])
		case 9: displayTeamMenu(id, --g_menuPosition[id])
		default:
		{
			new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
			new authid[32], authid2[32], name[32], name2[32]

			get_user_name(player, name2, 31)
			get_user_authid(id, authid, 31)
			get_user_authid(player, authid2, 31)
			get_user_name(id, name, 31)
				
			log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")

			switch (get_cvar_num("amx_show_activity"))
			{
				case 2: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3])
				case 1: client_print_color(0, DontChange, "%L", LANG_PLAYER, "ADMIN_TRANSF_1", name2, g_CSTeamNames[g_menuOption[id] % 3])
			}

			if (g_cstrike)
			{
				if (is_user_alive(player))
				{
					new deaths = cs_get_user_deaths(player)
					user_kill(player, 1)
					cs_set_user_deaths(player, deaths)
				}

				cs_set_user_team(player, (g_menuOption[id] % 3) + 1)
				cs_reset_user_model(player)
			} else {
				new limit_setting = get_cvar_num("mp_limitteams")
				
				set_cvar_num("mp_limitteams", 0)
				engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])
				engclient_cmd(player, "joinclass", "1")
				set_cvar_num("mp_limitteams", limit_setting)
			}

			displayTeamMenu(id, g_menuPosition[id])
		}
	}
	
	return PLUGIN_HANDLED
}

displayTeamMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i, iteam
	new name[32], team[4]
	new start = pos * 7

	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
	new end = start + 7
	new keys = MENU_KEY_0|MENU_KEY_8

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)
		
		if (g_cstrike)
		{
			iteam = _:cs_get_user_team(i)
			
			if (iteam == 1)
			{
				copy(team, 3, "TE")
			}
			else if (iteam == 2)
			{
				copy(team, 3, "CT")
			}
			else if (iteam == 3)
			{
				copy(team, 3, "SPE");
				iteam = 6;
			} else {
				iteam = get_user_team(i, team, 3)
			}
		} else {
			iteam = get_user_team(i, team, 3)
		}

		if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))
		{
			++b
			
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
			else
				len += format(menuBody[len], 511-len, "#. %s   %s^n", name, team)		
		} else {
			keys |= (1<<b)
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s *   %s^n", ++b, name, team)
			else
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s   %s^n", ++b, name, team)
		}
	}

	len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	show_menu(id, keys, menuBody, -1, "Team Menu")
}

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

	g_menuOption[id] = 0

	displayTeamMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

/* Client cmds menu */

public actionClcmdMenu(id, key)
{
	switch (key)
	{
		case 7:
		{
			++g_menuOption[id]
			g_menuOption[id] %= g_menuSelectNum[id]
			displayClcmdMenu(id, g_menuPosition[id])
		}
		case 8: displayClcmdMenu(id, ++g_menuPosition[id])
		case 9: displayClcmdMenu(id, --g_menuPosition[id])
		default:
		{
			new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
			new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]
			
			if (is_user_connected(player))
			{
				new command[512], authid[32], name[32], userid[32]
				
				copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])
				get_user_authid(player, authid, 31)
				get_user_name(player, name, 31)
				num_to_str(get_user_userid(player), userid, 31)
				
				replace(command, charsmax(command), "%userid%", userid)
				replace(command, charsmax(command), "%authid%", authid)
				replace(command, charsmax(command), "%name%", name)
				
				if (flags & 1)
				{
					server_cmd("%s", command)
					server_exec()
				} else if (flags & 2)
					client_cmd(id, "%s", command)
				else if (flags & 4)
					client_cmd(player, "%s", command)
			}
			
			if (flags & 8)
				displayClcmdMenu(id, g_menuPosition[id])
		}
	}
	
	return PLUGIN_HANDLED
}

displayClcmdMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i
	new name[32]
	new start = pos * 7

	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
	new end = start + 7
	new keys = MENU_KEY_0|MENU_KEY_8

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)

		if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))
		{
			++b
			
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
			else
				len += format(menuBody[len], 511-len, "#. %s^n", name)		
		} else {
			keys |= (1<<b)
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
			else
				len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
		}
	}

	if (g_menuSelectNum[id])
		len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])
	else
		len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	show_menu(id, keys, menuBody, -1, "Client Cmds Menu")
}

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

	g_menuSelectNum[id] = 0

	for (new a = 0; a < g_clcmdNum; ++a)
		if (access(id, g_clcmdMisc[a][0]))
			g_menuSelect[id][g_menuSelectNum[id]++] = a

	g_menuOption[id] = 0

	displayClcmdMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

load_settings(szFilename[])
{
	if (!file_exists(szFilename))
		return 0

	new text[256], szFlags[32], szAccess[32]
	new a, pos = 0

	while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))
	{
		if (text[0] == ';') continue

		if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)
		{
			while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))
			{

			}

			g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)
			g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)
			g_clcmdNum++
		}
	}

	return 1
}

stock client_print_color(id, iColor=DontChange, const szMsg[], any:...) 
{ 
    if( id && !is_user_connected(id) ) 
    { 
        return 0; 
    } 

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

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

    new iParams = numargs(); 

    if(id) 
    { 
        if( iParams == 3 ) 
        { 
            copy(szMessage[1], charsmax(szMessage)-1, szMsg); 
        } 
        else 
        { 
            vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); 
        } 

        if( iColor ) 
        { 
            new szTeam[11]; 
            get_user_team(id, szTeam, charsmax(szTeam)); 

            Send_TeamInfo(id, id, g_szTeamName[iColor]); 

            Send_SayText(id, id, szMessage); 

            Send_TeamInfo(id, id, szTeam); 
        } 
        else 
        { 
            Send_SayText(id, id, szMessage); 
        } 
    }  

    else 
    { 
        new iPlayers[32], iNum; 
        get_players(iPlayers, iNum, "ch"); 
        if( !iNum ) 
        { 
            return 0; 
        } 

        new iFool = iPlayers[0]; 

        new iMlNumber, i, j; 
        new Array:aStoreML = ArrayCreate(); 
        if( iParams >= 5 ) 
        { 
            for(j=4; j<iParams; j++) 
            { 
                if( getarg(j) == LANG_PLAYER ) 
                { 
                    i=0; 
                    while( ( szMessage[ i ] = getarg( j + 1, i++ ) ) ) {} 
                    if( GetLangTransKey(szMessage) != TransKey_Bad ) 
                    { 
                        ArrayPushCell(aStoreML, j++); 

                        iMlNumber++; 
                    } 
                } 
            } 
        } 
        if( !iMlNumber ) 
        { 
            if( iParams == 3 ) 
            { 
                copy(szMessage[1], charsmax(szMessage)-1, szMsg); 
            } 
            else 
            { 
                vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); 
            } 

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

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

                for(j=0; j<iMlNumber; j++) 
                { 
                    setarg(ArrayGetCell(aStoreML, j), _, id); 
                } 

                vformat(szMessage[1], charsmax(szMessage)-1, szMsg, 4); 

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

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

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

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

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

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

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

        if( szBuffer[0] == '[' ) 
        { 
            strtok(szBuffer[1], szLang, charsmax(szLang), szBuffer, 1, ']'); 
        } 
        else if( szBuffer[0] ) 
        { 
            strbreak(szBuffer, szKey, charsmax(szKey), szTranslation, charsmax(szTranslation)); 
            iKey = GetLangTransKey(szKey); 
            if( iKey != TransKey_Bad ) 
            { 
                while( replace(szTranslation, charsmax(szTranslation), "!g", "^4") ){} 
                while( replace(szTranslation, charsmax(szTranslation), "!t", "^3") ){} 
                while( replace(szTranslation, charsmax(szTranslation), "!n", "^1") ){} 
                AddTranslation(szLang, iKey, szTranslation[2]); 
            } 
        } 
    } 
     
    fclose(fp); 
    return 1; 
} 
Заповядай plmenu.sma копираш цялото и заместваш с твоя,после в lang папката търсиш plmenu.txt и заместваш там където искаш да ти е цветно пример:
Оригиналите:
ADMIN_BAN_1 = ADMIN: ban %s
ADMIN_BAN_2 = ADMIN %s: ban %s
ADMIN_TRANSF_1 = ADMIN: transfer %s to %s
ADMIN_TRANSF_2 = ADMIN %s: transfer %s to %s
Ето така:
ADMIN_BAN_1 = !gADMIN !n: !gban !t%s
ADMIN_BAN_2 = !gADMIN !t%s !n: !gban !t%s
ADMIN_TRANSF_1 = !gADMIN !n: !gtransfer !t%s !gto !t%s
ADMIN_TRANSF_2 = !gADMIN!t %s!n: !gtransfer !t %s !gto !n%s
В plmenu.txt можеш да промениш само тия неща,останалите се намират в lang admincmd.txt и тях по същия начин:
!g - Зелен
!t - Според отбора
!n - Жълт ,
Мога да ти дам admincmd.sma който излизат пак цветни съобщения дори и hud в зелено,можеш да си промениш в него какво да се пише,
ето го и него:

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

#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

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;
new HudSync, gMsgSayText;

// 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");
	
	HudSync = CreateHudSyncObj();
	gMsgSayText = get_user_msgid("SayText");
}

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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe kick-nat ot admin.", name2)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe kick-nat ot^x03 %s^x01.", name2, name)
		}		
	}

	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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe unbannat ot admin.", arg)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe unbannat ot^x03 %s^x01.", arg, name)
		}		
	}

	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)

	show_activity_key("ADMIN_ADDBAN_1", "ADMIN_ADDBAN_2", name, 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], hostname[64], ip[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)
	get_user_name(0, hostname, 63)
	get_user_ip(player, ip, 31)
	
	new timer[64]
	
	get_time("%m/%d/%Y - %H:%M:%S", timer, 63)
	
	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)
	
	client_cmd(player, "echo ***Ti beshe bannat ot tozi server!***")
	client_cmd(player, "echo |UAC| Bannat ot: ^"%s^"", hostname)
	client_cmd(player, "echo |UAC| Nick: ^"%s^" | IP: %s ", name2, ip)
	client_cmd(player, "echo |UAC| Ot admin ^"%s^" | Data: %s", name, timer)
	if (strlen(reason) > 0)
	{
		client_cmd(player, "echo |UAC| Prichina: ^"%s^" | Ban vreme: ^"%s^"", reason, temp)
	}
	else
	{
		client_cmd(player, "echo |UAC| Prichina: Nqma prichina | Ban vreme: ^"%s^"", temp)
	}
	client_cmd(player,"echo ###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###")

	
	switch(get_cvar_num("amx_show_activity"))
	{
		case 1:
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe bannat ot admin.", name2)
			
			if (strlen(reason) > 0)
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nPrichina: %s ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp, reason)
			}
			else
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nBez prichina ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp)
			}
		}
		case 2:
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe bannat ot^x03 %s^x01.", name2, name)
			
			if (strlen(reason) > 0)
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nOt admin: %s, Prichina: %s ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp, name, reason)
			}
			else
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nOt admin: %s, Bez Prichina. ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp, name)
			}
		}
	}
	
	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], hostname[64], ip[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)
	get_user_name(0, hostname, 63)
	get_user_ip(player, ip, 31)
	
	new timer[64]
	
	get_time("%m/%d/%Y - %H:%M:%S", timer, 63)
	
	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)
	
	client_cmd(player, "echo ***Ti beshe bannat ot tozi server!***")
	client_cmd(player, "echo |UAC| Bannat ot: ^"%s^"", hostname)
	client_cmd(player, "echo |UAC| Nick: ^"%s^" | IP: %s ", name2, ip)
	client_cmd(player, "echo |UAC| Ot admin ^"%s^" | Data: %s", name, timer)
	if (strlen(reason) > 0)
	{
		client_cmd(player, "echo |UAC| Prichina: ^"%s^" | Ban vreme: ^"%s^"", reason, temp)
	}
	else
	{
		client_cmd(player, "echo |UAC| Prichina: Nqma prichina | Ban vreme: ^"%s^"", temp)
	}
	client_cmd(player,"echo ###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###")
	
	switch(get_cvar_num("amx_show_activity"))
	{
		case 1:
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe bannat ot admin.", name2)
			
			if (strlen(reason) > 0)
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nPrichina: %s ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp, reason)
			}
			else
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nBez prichina ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp)
			}
		}
		case 2:
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe bannat ot^x03 %s^x01.", name2, name)
			
			if (strlen(reason) > 0)
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nOt admin: %s, Prichina: %s ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp, name, reason)
			}
			else
			{
				set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
				ShowSyncHudMsg(0, HudSync, "%s beshe bannat. Ban vreme: %s ^nOt admin: %s, Bez Prichina. ^n###UAC by DeviLeR @www./// Блокиран текст/линк [НЕЖЕЛАН САЙТ] ///###", name2, temp, name)
			}
		}
	}
	
	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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe slay-nat ot admin.", name2)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe slay-nat ot^x03 %s^x01.", name2, name)
		}		
	}

	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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe slap-nat s^x04 %d^x01 DMG ot admin.", name2, damage)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe slap-nat s^x04 %d^x01 DMG ot^x03 %s^x01.", name2, damage, name)
		}		
	}

	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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x01 Kartata e promenena na^x03 %s^x01 ot admin.", arg)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 promeni kartata na^x04 %s^x01.", name, 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 ptr=get_cvar_pointer(name);
	if (ptr && get_pcvar_flags(ptr) & 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)
	
	new pointer;
	
	if (equal(arg, "add") && (get_user_flags(id) & ADMIN_RCON))
	{
		if ((pointer=get_cvar_pointer(arg2))!=0)
		{
			new flags=get_pcvar_flags(pointer);
			
			if (!(flags & FCVAR_PROTECTED))
			{
				set_pcvar_flags(pointer,flags | FCVAR_PROTECTED);
			}
		}
		return PLUGIN_HANDLED
	}
	
	if ((pointer=get_cvar_pointer(arg))==0)
	{
		console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg)
		return PLUGIN_HANDLED
	}
	
	if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))
	{
		// Exception for the new onlyRcon rules:
		//   sv_password is allowed to be modified by ADMIN_PASSWORD
		if (!(equali(arg,"sv_password") && (get_user_flags(id) & ADMIN_PASSWORD)))
		{
			console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")
			return PLUGIN_HANDLED
		}
	}
	
	if (read_argc() < 3)
	{
		get_pcvar_string(pointer, 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)
	
	
	// Display the message to all clients

	new cvar_val[64];
	new maxpl = get_maxplayers();
	for (new i = 1; i <= maxpl; i++)
	{
		if (is_user_connected(i) && !is_user_bot(i))
		{
			if (get_pcvar_flags(pointer) & FCVAR_PROTECTED || equali(arg, "rcon_password"))
			{
				formatex(cvar_val, charsmax(cvar_val), "*** %L ***", i, "PROTECTED");
			}
			else
			{
				copy(cvar_val, charsmax(cvar_val), arg2);
			}
			show_activity_id(i, id, name, "%L", i, "SET_CVAR_TO", "", arg, cvar_val);
		}
	}

	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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x01 CFG^x03 %s^x01 has been execed by an admin.", arg)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 execed CFG^x04 %s^x01.", name, 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])

	show_activity_key("ADMIN_LEAVE_1", "ADMIN_LEAVE_2", name, 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 1: 
		{
			ColorMessage(0, "^x04[UAC]^x01 Nikut na^x03 %s^x01 beshe promenen na^x03 %s^x01 ot admin.", name2, arg2)
		}
		case 2: 
		{
			ColorMessage(0, "^x04[UAC]^x03 %s^x01 promeni nika na^x04 %s^x01 kum^x03 %s^x01.", name, 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;
}

/*START - ColorChat */
stock ColorMessage(const id, const input[], any:...){
    new count = 1, players[32];
    static msg[ 191 ];
    vformat(msg, 190, input, 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 , gMsgSayText, _, players[i]);
                write_byte(players[i]);
                write_string(msg);
                message_end();}}}
}
/*END - ColorChat */
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1026\\ f0\\ fs16 \n\\ par }
*/

Ето тук си променяш как искаш да са ти командите:

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

	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")
Следващото което можеш да смениш е :

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

ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe kick-nat ot admin.", name2)
ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe kick-nat ot^x03 %s^x01.", name2, name)
ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe unbannat ot admin.", arg)
ColorMessage(0, "^x04[UAC]^x03 %s^x01 beshe unbannat ot^x03 %s^x01.", arg, name)

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

client_cmd(player, "echo ***Ti beshe bannat ot tozi server!***")
	client_cmd(player, "echo |UAC| Bannat ot: ^"%s^"", hostname)
	client_cmd(player, "echo |UAC| Nick: ^"%s^" | IP: %s ", name2, ip)
	client_cmd(player, "echo |UAC| Ot admin ^"%s^" | Data: %s", name, timer)
	if (strlen(reason) > 0)
	{
		client_cmd(player, "echo |UAC| Prichina: ^"%s^" | Ban vreme: ^"%s^"", reason, temp)
	}
	else
	{
		client_cmd(player, "echo |UAC| Prichina: Nqma prichina | Ban vreme: ^"%s^"", temp)
	}
	client_cmd(player,"echo ###Tvoqt Podpis###")
Дори има цветни съобщения,тръсиш тея примери в целия код и компилираш и си готов на местото на UAC можеш да добавиш името на сървъра ти,аз в моя го едитнах така по бързо с търсачката намери думата UAC и да я замени с думата "Името на моя сървър" другите неща които си дал,нямат нищо общо с цветните съобщения за бан кик и слай,пробвай и пиши

Добавено преди 18 минути 19 секунди:
Забравих да кажа кои са
^x04 - Зелен
^x03 - Според отбора
^x01 - Жълт

Добавено преди 1 минута 20 секунди:
и още едно допълнение в plmenu.sma съм ти добавил say командите /kick /ban /slap /team /cmd

Аватар
Punch*
Извън линия
Потребител
Потребител
Мнения: 143
Регистриран на: 15 Фев 2018, 20:12
Получена благодарност: 1 път
Обратна връзка:

Редактиране на AMXMODMENU

Мнение от Punch* » 29 Мар 2018, 22:34

Можеше да му дадеш cromchat защото е по-олекотен. Ако искаш да позлваш Цък!

Аватар
gadinkata
Извън линия
Потребител
Потребител
Мнения: 259
Регистриран на: 21 Мар 2018, 12:33
Местоположение: Враца
Се отблагодари: 25 пъти
Получена благодарност: 7 пъти
Обратна връзка:

Редактиране на AMXMODMENU

Мнение от gadinkata » 29 Мар 2018, 23:10

Нали знаеш,че само с cromchat,няма да стане,ще трябва да си едитне и amxmisc библиотеката и да я промени на amxmisc_color,което е по сложно за него.И в тоя код не виждам нещо натоварващо,че да не работи. :)Дал съм му готови само да копира и компилира

Аватар
User12
Извън линия
Потребител
Потребител
Мнения: 321
Регистриран на: 25 Яну 2018, 22:39
Местоположение: Сливен
Се отблагодари: 40 пъти
Получена благодарност: 17 пъти
Обратна връзка:

Редактиране на AMXMODMENU

Мнение от User12 » 29 Мар 2018, 23:28

gadinkata написа: 29 Мар 2018, 23:10 Нали знаеш,че само с cromchat,няма да стане,ще трябва да си едитне и amxmisc библиотеката и да я промени на amxmisc_color,което е по сложно за него.И в тоя код не виждам нещо натоварващо,че да не работи. :)Дал съм му готови само да копира и компилира
не говори глупости , има и други начини да се оцветят съобщенията това , че в една тема си видял да пишат да се редактира библиотеката не означава , че в друга вече не е измислено по друг начин . Форума е пълен с информация има търсачка позлвайте я ... аз съм прегледал почти всички теми и вски път намирам нещо ново за мен :yahoo:
Каналът ми в YouTube : Георги Пламенов

Изображение

Аватар
[PB]LuD s KniF3
Извън линия
Потребител
Потребител
Мнения: 69
Регистриран на: 21 Ное 2016, 15:49
Местоположение: В кръчмата на село !
Се отблагодари: 2 пъти
Получена благодарност: 1 път
Обратна връзка:

Редактиране на AMXMODMENU

Мнение от [PB]LuD s KniF3 » 30 Мар 2018, 00:01

Благодаря ! gadinkata
:lock: :lock:

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

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

Кой е на линия

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