csgo-plugins/includes/ccc.inc
2020-03-25 20:09:12 +02:00

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