- #include <amxmodx> 
- #include <amxmisc> 
-   
- #define PLUGIN "Admin Chat Colors" 
- #define VERSION "2.0" 
- #define AUTHOR "Arion" 
-   
- #define ACCESS_LEVEL ADMIN_IMMUNITY 
- #define ADMIN_LISTEN ADMIN_LEVEL_C 
-   
- new message[192] 
- new sayText 
- new teamInfo 
- new maxPlayers 
-   
- new g_AdminListen 
-   
- new strName[191] 
- new alive[11] 
-   
- new const g_szTag[][] = { 
- 	"", 
- 	"[ADMIN]", 
- 	"[MODERATOR]", 
- 	"[VIP]" 
- } 
-   
- public plugin_init() 
- { 
- 	register_plugin(PLUGIN, VERSION, AUTHOR) 
-   
- 	g_AdminListen = register_cvar("amx_listen", "1") // Set whether admins see or not all messages(Alive, dead and team-only) 
-   
-   
- 	sayText = get_user_msgid("SayText") 
- 	teamInfo = get_user_msgid("TeamInfo") 
- 	maxPlayers = get_maxplayers() 
-   
- 	register_clcmd("say", "hook_say") 
- 	register_clcmd("say_team", "hook_teamsay") 
- } 
-   
- public hook_say(id) 
- { 
- 	read_args(message, 191) 
- 	remove_quotes(message) 
-   
- 	// Gungame commands and empty messages 
- 	if(message[0] == '@' || message[0] == '/' || message[0] == '!' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands, 
- 		return PLUGIN_CONTINUE 
-   
- 	new name[32] 
- 	get_user_name(id, name, 31) 
-   
- 	new admin = 0, iFlags = get_user_flags(id) 
-   
- 	if(iFlags & ADMIN_IMMUNITY) 
- 		admin = 1 
- 	else if(iFlags & ADMIN_BAN) 
- 		admin = 2 
- 	else if(iFlags & ADMIN_RESERVATION) 
- 		admin = 3 
-   
- 	new isAlive 
-   
- 	if(is_user_alive(id)) 
- 	{ 
- 		isAlive = 1 
- 		alive = "^x01" 
- 	} 
- 	else 
- 	{ 
- 		isAlive = 0 
- 		alive = "^x01*DEAD* " 
- 	} 
-   
- 	static color[10] 
-   
- 	if(admin) 
- 	{ 
- 		get_user_team(id, color, 9) 
- 		format(strName, 191, "^x04%s %s^x03%s", g_szTag[admin], alive, name) 
- 		format(message, 191, "%s ^x01:^x04 %s", strName, message) 
- 	} 
- 	else     // Player is not admin. Team-color name : Yellow message 
- 	{ 
- 		get_user_team(id, color, 9) 
- 		format(strName, 191, "%s^x03%s", alive, name) 
- 		format(message, 191, "^%s^x01 : %s", strName, message) 
- 	} 
-   
-   
- 	sendMessage(color, isAlive)    // Sends the colored message 
-   
- 	return PLUGIN_HANDLED 
- } 
-   
-   
- public hook_teamsay(id) 
- { 
- 	new playerTeam = get_user_team(id) 
- 	new playerTeamName[19] 
-   
- 	switch(playerTeam) // Team names which appear on team-only messages 
- 	{ 
- 		case 1: 
- 			copy(playerTeamName, 11, "Terrorists") 
-   
- 		case 2: 
- 			copy(playerTeamName, 18, "Counter-Terrorists") 
-   
- 		default: 
- 			copy(playerTeamName, 9, "Spectator") 
- 	} 
-   
- 	read_args(message, 191) 
- 	remove_quotes(message) 
-   
- 	// Gungame commands and empty messages 
- 	if(message[0] == '@' || message[0] == '/' || message[0] == '!' || equal(message, "")) // Ignores Admin Hud Messages, Admin Slash commands, 
- 		return PLUGIN_CONTINUE 
-   
- 	new name[32] 
- 	get_user_name(id, name, 31) 
-   
- 	new admin = 0, iFlags = get_user_flags(id) 
-   
- 	if(iFlags & ADMIN_IMMUNITY) 
- 		admin = 1 
- 	else if(iFlags & ADMIN_BAN) 
- 		admin = 2 
- 	else if(iFlags & ADMIN_RESERVATION) 
- 		admin = 3 
-   
- 	new isAlive 
-   
- 	if(is_user_alive(id)) 
- 	{ 
- 		isAlive = 1 
- 		alive = "^x01" 
- 	} 
- 	else 
- 	{ 
- 		isAlive = 0 
- 		alive = "^x01*DEAD* " 
- 	} 
-   
- 	static color[10] 
-   
- 	if(admin) 
- 	{ 
- 		get_user_team(id, color, 9) 
- 		format(strName, 191, "%s(%s)^x04%s ^x03%s", alive, playerTeamName, g_szTag[admin], name) 
- 		format(message, 191, "%s ^x01: ^x04%s", strName, message) 
- 	} 
- 	else     // Player is not admin. Team-color name : Yellow message 
- 	{ 
- 		get_user_team(id, color, 9) 
- 		format(strName, 191, "%s(%s) ^x03%s", alive, playerTeamName, name) 
- 		format(message, 191, "%s ^x01: %s", strName, message) 
- 	} 
-   
-   
- 	sendTeamMessage(color, isAlive, playerTeam)    // Sends the colored message 
-   
- 	return PLUGIN_HANDLED 
- } 
-   
- public sendMessage(color[], alive) 
- { 
- 	new teamName[10] 
-   
- 	for(new player = 1; player < maxPlayers; player++) 
- 	{ 
- 		if(!is_user_connected(player)) 
- 			continue 
-   
- 		if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) 
- 		{ 
- 			get_user_team(player, teamName, 9)    // Stores user's team name to change back after sending the message 
- 			changeTeamInfo(player, color)        // Changes user's team according to color choosen 
- 			writeMessage(player, message)        // Writes the message on player's chat 
- 			changeTeamInfo(player, teamName)    // Changes user's team back to original 
- 		} 
- 	} 
- } 
-   
-   
- public sendTeamMessage(color[], alive, playerTeam) 
- { 
- 	new teamName[10] 
-   
- 	for(new player = 1; player < maxPlayers; player++) 
- 	{ 
- 		if(!is_user_connected(player)) 
- 			continue 
-   
- 		if(get_user_team(player) == playerTeam || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) 
- 		{ 
- 			if(alive && is_user_alive(player) || !alive && !is_user_alive(player) || get_pcvar_num(g_AdminListen) && get_user_flags(player) & ADMIN_LISTEN) 
- 			{ 
- 				get_user_team(player, teamName, 9)    // Stores user's team name to change back after sending the message 
- 				changeTeamInfo(player, color)        // Changes user's team according to color choosen 
- 				writeMessage(player, message)        // Writes the message on player's chat 
- 				changeTeamInfo(player, teamName)    // Changes user's team back to original 
- 			} 
- 		} 
- 	} 
- } 
-   
-   
- public changeTeamInfo(player, team[]) 
- { 
- 	message_begin(MSG_ONE, teamInfo, _, player)    // Tells to to modify teamInfo(Which is responsable for which time player is) 
- 	write_byte(player)                // Write byte needed 
- 	write_string(team)                // Changes player's team 
- 	message_end()                    // Also Needed 
- } 
-   
-   
- public writeMessage(player, message[]) 
- { 
- 	message_begin(MSG_ONE, sayText, {0, 0, 0}, player)    // Tells to modify sayText(Which is responsable for writing colored messages) 
- 	write_byte(player)                    // Write byte needed 
- 	write_string(message)                    // Effectively write the message, finally, afterall 
- 	message_end()                        // Needed as always 
- }