Создаем цветное сообщение игрокам с помощью Colorchat.inc | Dev-CS.ru

Создаем цветное сообщение игрокам с помощью Colorchat.inc

Сообщения
398
Симпатии
224
#1
Источник - http://amxxmodx.ru

Colorchat - С помощью данного инклюда, очень просто "раскрасить" привычные всем желтые сообщения в чате.
Данный инклуд дает одноименную функцию ColorChat

Синтаксис:
Код:
ColorChat(index,Color:type,const msg[],{Float,Sql,Result,_}:...)
Синтаксис для Amxmodx 1.8.3 и Re AMX Mod X :
Код:
client_print_color(index, sender, const message[], any:...);
  • index - id Игрока кому показывать сообщение, выставите 0 если хотите показать сообщение сразу всем игрокам
  • Color:type - Цвет сообщения по умолчанию. Стандартное сообщение желтого цвета, но мы можем поставить RED и все сообщение будет красным, но в дальнейшем мы сможем менять цвет отдельным словам
  • const msg[] - Само сообщение в виде массива или текст заключенный в кавычки "text"
  • {Float,Sql,Result,_}:... - Если сообщение не в виде массива, а в виде "text %s text", то тут мы записываем массивы для вывода в соответствующих местах %* Пример:
Код:
ColorChat(id,RED,"[Color Chat] ^1 You name is ^4 %s  ",UserName)
^1,^3,^4 - изменение цвета

Как изменять цвета отдельных слов в сообщении:
  • ^1 - Обычный цвет сообщения
  • ^3 - Цвет по умолчанию что мы установили Color:type
  • ^4 - Зеленый цвет
Пример:
Код:
ColorChat(id,NORMAL,"Colordefault ^1Color1 ^3Color3 ^4Color4")
Что вы получите если Вы:
Counter
- ColorDefault Color1 Color3 Color4
Terrorist - ColorDefault Color1 Color3 Color4
Spectator - ColorDefault Color1 Color3 Color4
Заметили систему? Попробуйте поэкспериментировать, это легко и занимательно.

И так, теперь к конкретному рабочему примеру:
Первое что нам необходимо сделать, это подключить инклуд:
Код:
#include <colorchat>
Примечание: Для Amxmodx 1.8.3 и Re AMX Mod X данный инклуд не нужен

Рабочий пример, показывающий все возможные варианты:
Код:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
 
#define PLUGIN "Color message in chat"
#define VERSION "1.0"
#define AUTHOR "Admin"
 
 
public plugin_init ( )
{
    register_plugin ( PLUGIN, VERSION, AUTHOR )
    
    register_clcmd("say /normal","default_normal")// clients scr_concolor cvar color
    register_clcmd("say /green","default_green")
    register_clcmd("say /teamcolor","default_team_color") // Red, grey, blue
    register_clcmd("say /grey","default_grey")
    register_clcmd("say /red","default_red")
    register_clcmd("say /blue","default_blue")
    
}
public    default_normal(id){
    
    ColorChat(id,NORMAL,"Color default NORMAL ^1Color1 ^3Color3 ^4Color4")
}
public default_green (id){
    
    ColorChat(id,GREEN,"Color default GREEN ^1Color1 ^3Color3 ^4Color4")
}
public default_team_color (id){
    
    ColorChat(id,TEAM_COLOR,"Color default Team Color ^1Color1 ^3Color3 ^4Color4")
}
public default_grey (id){
    
    ColorChat(id,GREY,"Color default GREY ^1Color1 ^3Color3 ^4Color4")
}
public default_red (id){
    
    ColorChat(id,RED,"Color default RED ^1Color1 ^3Color3 ^4Color4")
}
public default_blue (id){
    
    ColorChat(id,BLUE,"Color default BLUE ^1Color1 ^3Color3 ^4Color4")
}
Описание:
В принципе описывать здесь особо нечего,подключили инклуд, зарегистрировали шесть команд:
  1. say /normal
  2. say /green
  3. say /teamcolor
  4. say /grey
  5. say /red
  6. say /blue
В каждой команде после знака / ( слеш) следует тип цвета установленный по умолчанию в функции.
Далее в каждой функции мы устанавливаем цвет по умолчанию, соответствующий имени форварда и берем 4 блока для цвета.
Все они аналогичные для всех цветов, разница только в цвете по умолчанию, что бы вы смогли заметить разницу.
 
Сообщения
483
Симпатии
193
#2
Стандартное сообщение желтого цвета, но мы можем поставить RED и все сообщение будет красным, но в дальнейшем мы сможем менять цвет отдельным словам
C++:
/**
* Color types for client_print_color()
*/
enum
{
    print_team_default = 0,
    print_team_grey = -1,
    print_team_red = -2,
    print_team_blue = -3,
};
Где ты увидел RED, BLUE и т.п.? Не путай читателей. Либо print_team_* , либо цифрами (0, -1, -2, -3), либо вторым id, которое будет ставить цвет команды, в которой игрок находится.
4 Дек 2017
В дополнение.
Код:
/**
* Sends colored chat messages to clients.
*
* @note This only works in Counter-Strike 1.6 and Condition Zero.
* @note The colors can be modified inside of the format string using special
*       characters. These characters can be included using the escape character
*          green           x04   ; use location color from this point forward
*          red/blue/grey   x03   ; use team color from this point forward
*          red/blue/grey   x02   ; use team color to the end of the client name
*                                ; This only works at the start of the string,
*                                ; and precludes using other control characters
*          default         x01   ; use default color from this point forward
* @note The team color is defined by the sender's index. Alternatively, a
*       specific team color can be enforced using the print_team_* constants in
*       amxconst.inc
* @note Usage examples:
*       client_print_color(id, print_team_red, "^4Green ^3Red ^1Default")
*       client_print_color(id, id2, "^4Green ^3id2's team color, ^1Default")
* @note Including colors in ML can be done using the same escaping method:
*       EXAMPLE_ML_KEY = ^4Green ^3Team color ^1Default
* @note This functions return value behaves differently depending on what is
*       used as the client index: If 0 is specified, then the function will
*       return 0 if nothing has been sent (no client connected). If either a
*       single client is specified, or there is at least one client connected,
*       the number of printed characters will refer to the message that is sent
*       last, to the client with the highest index.
*
* @param index     Client index, use 0 to display to all clients
* @param sender    Client index used as the message sender
* @param fmt       Formatting rules
* @param ...       Variable number of formatting parameters
*
* @return          Number of printed characters
* @error           If a single client is specified and the index is not within
*                  the range of 1 to MaxClients, an error will be thrown.
*/
native client_print_color(index, sender, const message[], any:...);
4 Дек 2017
И ^1, ^3, ^4 можно заменить на x01, x02, x03 и x04, но это зависит от удобства. Каждому нравится по-своему.
 
Последнее редактирование: