\x03: {lightgreen} or {teamcolor}

Broudy Rose

Участник
Сообщения
157
Реакции
22
Всех приветствую!
Кажется, свою предыдущую тему я создал в не совсем нужном разделе, вероятно, ответ стоило искать тут.
Поэтому, с позволения модераторов, продублирую тему тут, перефразировав, а также дополнив её.

Насколько я помню, цветовой код \x03 имеет два способа вывода цвета: {lightgreen} or {teamcolor}.
Однако при компиляции всегда имеет вид: {lightgreen}.

Подключалась библиотека colors.inc, в текст был добавлен тег {teamcolor}, но на выходе всегда получал: {lightgreen}.
Мне удалось выяснить, что в какой-то момент библиотека colors.inc была обновлена, и {teamcolor} более не поддерживала.
Догадки подтвердились путем проверки {red}/{blue} непосредственно в коде: если команда игрока совпадала с цветовым тэгом, то тэг применялся, в противном случае просто игнорировался.

Если проблема исключительно в библиотеке, то прошу поделиться с сообществом файлом для v34, т.к. на просторах интернета ответ найден не был.
Если же проблема кроется в другом, то уж очень интересно узнать, в чем же она заключалась.
Необходимо, чтобы \x03 выдавал цвет команды, а не светло-зелёный.
 

babka68

Участник
Сообщения
2,124
Реакции
956
Всех приветствую!
Кажется, свою предыдущую тему я создал в не совсем нужном разделе, вероятно, ответ стоило искать тут.
Поэтому, с позволения модераторов, продублирую тему тут, перефразировав, а также дополнив её.

Насколько я помню, цветовой код \x03 имеет два способа вывода цвета: {lightgreen} or {teamcolor}.
Однако при компиляции всегда имеет вид: {lightgreen}.

Подключалась библиотека colors.inc, в текст был добавлен тег {teamcolor}, но на выходе всегда получал: {lightgreen}.
Мне удалось выяснить, что в какой-то момент библиотека colors.inc была обновлена, и {teamcolor} более не поддерживала.
Догадки подтвердились путем проверки {red}/{blue} непосредственно в коде: если команда игрока совпадала с цветовым тэгом, то тэг применялся, в противном случае просто игнорировался.

Если проблема исключительно в библиотеке, то прошу поделиться с сообществом файлом для v34, т.к. на просторах интернета ответ найден не был.
Если же проблема кроется в другом, то уж очень интересно узнать, в чем же она заключалась.
Необходимо, чтобы \x03 выдавал цвет команды, а не светло-зелёный.
Сообщения автоматически склеены:

Насколько я помню, цветовой код \x03 имеет два способа вывода цвета: {lightgreen} or {teamcolor}.
Однако при компиляции всегда имеет вид: {lightgreen}.
\x03 - lightgreen/red/blue/grey (grey, если игрок в spec)


Эту пробовали библиотеку?
 
Последнее редактирование:

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Если юзать Colors/MoreColors, {teamcolor} будет доступен лишь при использовании CPrintToChatEx и прочих Ex, читай описание к этим сток-функциям в инклуде.
{red}, {blue}, {teamcolor} и {lightgreen} доступны при условии, что в одном PrintToChat используется лишь какой-то один из них.
{gray} / {grey} вроде вообще не будет работать на обычном клиенте
 

Broudy Rose

Участник
Сообщения
157
Реакции
22
Эту пробовали библиотеку?
Да, а так же пробовал несколько разных версий оригинального colors.inc с AlliedModders.
Тему на сайте ws видел, но не совсем понял как отправить сообщение через PrintToChat.
Уверен, что это делается в два счета, просто моих поверхностных знаний программирования недостаточно.
{teamcolor} будет доступен лишь при использовании CPrintToChatEx и прочих Ex, читай описание к этим сток-функциям в инклуде
Да, вижу, спасибо. Подскажите, как разобраться с аргументами тут? 19 и 30 строки:
test_plugin:
#include <colors>

public OnPluginStart()
{
    RegConsoleCmd("say", CommandSay);
    RegConsoleCmd("say_team", CommandSay);
}
public Action:CommandSay(id, args)
{
    decl String:Said[128];
    GetCmdArgString(Said, sizeof(Said)-1);
    StripQuotes(Said);
    TrimString(Said);

    if( StrEqual(Said, "!rs") || StrEqual(Said, "!кы"))
    {
        if(GetClientDeaths(id) == 0 && GetClientFrags(id) == 0)
        {
            CPrintToChatEx(id, "\x01[\x03Обнуление счета\x01] \x04Ваш счет и так равен\x03 0 \x01!");
    
            return Plugin_Handled;
        }

        SetClientFrags(id, 0);
        SetClientDeaths(id, 0);
    
        decl String:Name[32];
        GetClientName(id, Name, sizeof(Name)-1);
    
        CPrintToChatEx(id, "\x01[\x03Обнуление счета\x01] \x04Ваш счет сброшен\x01!");

        return Plugin_Handled;
    }
    return Plugin_Continue;
}

SetClientFrags(index, frags)
{
    SetEntProp(index, Prop_Data, "m_iFrags", frags);
    return 1;
}

SetClientDeaths(index, deaths)
{
    SetEntProp(index, Prop_Data, "m_iDeaths", deaths);
    return 1;
}

Отдельно cpp не изучал, есть опыт программирования на простых языках, поэтому не совсем понимаю что тут требуется.
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Да, а так же пробовал несколько разных версий оригинального colors.inc с AlliedModders.
Тему на сайте ws видел, но не совсем понял как отправить сообщение через PrintToChat.
Уверен, что это делается в два счета, просто моих поверхностных знаний программирования недостаточно.

Да, вижу, спасибо. Подскажите, как разобраться с аргументами тут? 19 и 30 строки:
test_plugin:
#include <colors>

public OnPluginStart()
{
    RegConsoleCmd("say", CommandSay);
    RegConsoleCmd("say_team", CommandSay);
}
public Action:CommandSay(id, args)
{
    decl String:Said[128];
    GetCmdArgString(Said, sizeof(Said)-1);
    StripQuotes(Said);
    TrimString(Said);

    if( StrEqual(Said, "!rs") || StrEqual(Said, "!кы"))
    {
        if(GetClientDeaths(id) == 0 && GetClientFrags(id) == 0)
        {
            CPrintToChatEx(id, "\x01[\x03Обнуление счета\x01] \x04Ваш счет и так равен\x03 0 \x01!");
   
            return Plugin_Handled;
        }

        SetClientFrags(id, 0);
        SetClientDeaths(id, 0);
   
        decl String:Name[32];
        GetClientName(id, Name, sizeof(Name)-1);
   
        CPrintToChatEx(id, "\x01[\x03Обнуление счета\x01] \x04Ваш счет сброшен\x01!");

        return Plugin_Handled;
    }
    return Plugin_Continue;
}

SetClientFrags(index, frags)
{
    SetEntProp(index, Prop_Data, "m_iFrags", frags);
    return 1;
}

SetClientDeaths(index, deaths)
{
    SetEntProp(index, Prop_Data, "m_iDeaths", deaths);
    return 1;
}

Отдельно cpp не изучал, есть опыт программирования на простых языках, поэтому не совсем понимаю что тут требуется.
Написал же — читать описание функций в инклуде.
Там вторым аргументом Ex-функция просит указать индекс игрока, исходя из того, в какой команде который находится, будет работать командный цвет.
C-подобный:
CPrintToChatEx(id, id, "{default}[{teamcolor}Обнуление счета{default}] {green}Ваш счет сброшен{default}!");
Тут я вторым аргументом указал тоже id. То есть первым аргументом мы указали, что отправляем сообщение игроку с индексом id, и в цвет его же команды красим префикс в сообщении
Сообщения автоматически склеены:

И хватит, вообще, в 34й юзать обычные библиотеки и старый синтаксис!
Давно изобрели SM 1.10 и ClientMod с адекватными цветами!
Противно аж помогать таким запоздалым
 
Сверху Снизу