192 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			SourcePawn
		
	
	
	
	
	
| /**
 | |
|  * This is the include file for Custom Chat Colors
 | |
|  * https://forums.alliedmods.net/showthread.php?t=186695
 | |
|  * To check that Custom Chat Colors is installed and running, verify that the "ccc" library exists
 | |
|  */
 | |
| 
 | |
| #if defined _ccc_included
 | |
|   #endinput
 | |
| #endif
 | |
| #define _ccc_included
 | |
| 
 | |
| enum CCC_ColorType {
 | |
| 	CCC_TagColor,
 | |
| 	CCC_NameColor,
 | |
| 	CCC_ChatColor
 | |
| };
 | |
| 
 | |
| #define COLOR_NULL		-1
 | |
| #define COLOR_NONE		-2
 | |
| #define COLOR_CGREEN	-3 //0x40FF40
 | |
| #define COLOR_OLIVE		-4 //0x99FF99
 | |
| #define COLOR_TEAM		-5
 | |
| 
 | |
| /**
 | |
|  * Gets a client's color as a hexadecimal integer.
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @param type			Color type to retreive
 | |
|  * @param alpha			Pass a boolean variable by reference here and it will be true if the color has alpha specified or false if it doesn't (or is a stock color)
 | |
|  * @return				Color as a hexadecimal integer (use %X in formatting to get a hexadecimal string)
 | |
|  *
 | |
|  * On error/errors:		Invalid client index or client is not in game
 | |
|  */
 | |
| native int CCC_GetColor(int client, CCC_ColorType type, bool &alpha = false);
 | |
| 
 | |
| /**
 | |
|  * Sets a client's color as a hexadecimal integer.
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @param type			Color type to set
 | |
|  * @param color			Integer representation of the color (use StringToInt(input, 16) to convert a hexadecimal string) or one of the color defines
 | |
|  * @param alpha			Are you specifying a color with alpha?
 | |
|  * @return				True if the color is updated successfully, false otherwise
 | |
|  *
 | |
|  * On error/errors:		Invalid client index or client is not in game
 | |
|  */
 | |
| native int CCC_SetColor(int client, CCC_ColorType type, int color, bool alpha);
 | |
| 
 | |
| /**
 | |
|  * Gets a client's tag
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @param buffer		Buffer to store the tag in
 | |
|  * @param maxlen		Maximum buffer length
 | |
|  * @noreturn
 | |
|  *
 | |
|  * On error/errors:		Invalid client index or client is not in game
 | |
|  */
 | |
| native int CCC_GetTag(int client, char[] buffer, int maxlen);
 | |
| 
 | |
| /**
 | |
|  * Sets a client's tag
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @param tag			String containing the new tag
 | |
|  * @noreturn
 | |
|  *
 | |
|  * On error/errors:		Invalid client index or client is not in game
 | |
|  */
 | |
| native void CCC_SetTag(int client, const char[] tag);
 | |
| 
 | |
| /**
 | |
|  * Resets a client's color to the value in the config file.
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @param type			Color type to restore
 | |
|  * @noreturn
 | |
|  *
 | |
|  * On error/errors:		Invalid client index or client is not in game
 | |
|  */
 | |
| native int CCC_ResetColor(int client, CCC_ColorType type);
 | |
| 
 | |
| /**
 | |
|  * Resets a client's tag to the value in the config file.
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @noreturn
 | |
|  *
 | |
|  * On error/errors:		Invalid client index or client is not in game
 | |
|  */
 | |
| native int CCC_ResetTag(int client);
 | |
| 
 | |
| /**
 | |
|  * Called when a cilent's name is about to be colored
 | |
|  * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @return				Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
 | |
|  */
 | |
| //#pragma deprecated Use CCC_OnColor instead
 | |
| //forward Action:CCC_OnNameColor(client);
 | |
| 
 | |
| /**
 | |
|  * Called when a client's chat is about to be colored
 | |
|  * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @return				Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
 | |
|  */
 | |
| //#pragma deprecated Use CCC_OnColor instead
 | |
| //forward Action:CCC_OnChatColor(client);
 | |
| 
 | |
| /**
 | |
|  * Called when a client's name is about to be tagged
 | |
|  * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @return				Plugin_Handled to prevent tagging, Plugin_Continue to allow tagging
 | |
|  */
 | |
| //#pragma deprecated Use CCC_OnColor instead
 | |
| //forward Action:CCC_OnTagApplied(client);
 | |
| 
 | |
| /**
 | |
|  * Called when a client's name is about to be tagged
 | |
|  * DO NOT START A NEW USERMESSAGE (i.e. PrintToChat, PrintToChatAll) WITHIN THIS FORWARD
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @param message		Chat message that will be printed
 | |
|  * @param type			What type of color will be applied. If this is CCC_TagColor, it controls whether the tag will be applied at all, not whether the tag will be colored.
 | |
|  * @return				Plugin_Handled to prevent coloring, Plugin_Continue to allow coloring
 | |
|  */
 | |
| //forward Action:CCC_OnColor(client, const String:message[], CCC_ColorType:type);
 | |
| 
 | |
| /**
 | |
|  * Called when a message has been fully colored and will be sent, unless further plugins modify it through Simple Chat Processor
 | |
|  *
 | |
|  * @param client		Recieving client index
 | |
|  * @param author		Author client index
 | |
|  * @param message		Message
 | |
|  * @return				Plugin_Handled to block message, Plugin_Continue to allow message
 | |
|  */
 | |
| forward Action CCC_OnChatMessage(int client, int author, const char[] message);
 | |
| 
 | |
| /**
 | |
|  * Called when a client's colors and tag are about to be loaded from the config file
 | |
|  * At this point, the client has NO COLORS
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @return				Plugin_Handled or Plugin_Stop to prevent loading, Plugin_Continue or Plugin_Changed to allow
 | |
|  */
 | |
| forward Action CCC_OnUserConfigPreLoaded(int client);
 | |
| 
 | |
| /**
 | |
|  * Called when a client's colors and tag have been loaded from the config file
 | |
|  *
 | |
|  * @param client		Client index
 | |
|  * @noreturn
 | |
|  */
 | |
| forward void CCC_OnUserConfigLoaded(int client);
 | |
| 
 | |
| /**
 | |
|  * Called when the configuration file is reloaded with the sm_reloadccc command
 | |
|  *
 | |
|  * @noreturn
 | |
|  */
 | |
| forward void CCC_OnConfigReloaded();
 | |
| 
 | |
| native int CCC_UpdateIgnoredArray(bool IgnoredArray[(MAXPLAYERS + 1) * (MAXPLAYERS + 1)]);
 | |
| 
 | |
| public SharedPlugin __pl_ccc =
 | |
| {
 | |
| 	name = "ccc",
 | |
| 	file = "custom-chatcolors.smx",
 | |
| #if defined REQUIRE_PLUGIN
 | |
| 	required = 1
 | |
| #else
 | |
| 	required = 0
 | |
| #endif
 | |
| };
 | |
| 
 | |
| #if !defined REQUIRE_PLUGIN
 | |
| public __pl_ccc_SetNTVOptional() {
 | |
| 	MarkNativeAsOptional("CCC_GetColor");
 | |
| 	MarkNativeAsOptional("CCC_SetColor");
 | |
| 	MarkNativeAsOptional("CCC_GetTag");
 | |
| 	MarkNativeAsOptional("CCC_ResetTag");
 | |
| 	MarkNativeAsOptional("CCC_ResetColor");
 | |
| 	MarkNativeAsOptional("CCC_ResetTag");
 | |
| 	MarkNativeAsOptional("CCC_UpdateIgnoredArray");
 | |
| }
 | |
| #endif
 |