[INC] CS:GO Colors (1.4)

Тема в разделе "Расширения", создана пользователем komashchenko, 3 июл 2014.

  1. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    420
    CS:GO Colors
    Описание:
    Этот файл позволяет разработчикам легко управлять цветами шрифта чата в различных игровых модах, использовать теги цветов, использовать теги в файлах перевода и автоматически заменять цвета в моде

    Регулярные фунции:
    Код:
    [SIZE=4][SIZE=2]CGOPrintToChat(int iClient, const char[] message, any ...)
    CGOPrintToChatAll(const char[] message, any ...)
    CGOReplaceColorSay(char[] text, int maxlength) - просто заменяет теги цветов в тексте
    GOPrintToChat(int iClient, const char[] message, any ...) - делает робочим \n 
    GOPrintToChatAll(const char[] message, any ...) - точно такое как GOPrintToChat 
    CGOPrintHintText(int iClient, const char[] message, any ...)
    CGOPrintHintTextToAll(const char[] message, any ...)
    CGOReplaceColorHsay(char[] text, int size) - просто заменяет теги цветов в тексте
    CGOPrintCenterText(int iClient, const char[] message, any ...)
    CGOPrintCenterTextAll(const char[] message, any ...)
    CGOReplaceColorCsay(char[] text, int size) - просто заменяет теги цветов в тексте[/SIZE][/SIZE]
    Теги цветов для CGOPrintToChatAll, CGOPrintToChat, CGOReplaceColorSay:
    Код:
    {DEFAULT}
    {RED}
    {LIGHTPURPLE}
    {GREEN}
    {LIME}
    {LIGHTGREEN}
    {LIGHTRED}
    {GRAY}
    {LIGHTOLIVE}
    {OLIVE}
    {PURPLE}
    {LIGHTBLUE}
    {BLUE}
    [​IMG]

    для
    CGOPrintHintText, CGOPrintHintTextToAll, CGOReplaceColorHsay, CGOPrintCenterText, CGOPrintCenterTextAll, CGOReplaceColorCsay
    теги такого вида {{HTML цвет==текст который будет того цвета}}


    1. Как использовать цвет?
    Просто поменяйте текст тегом цвета
    Код:
    CGOPrintToChat(client, "{BLUE}BLUE");
    CGOPrintToChatAll("{BLUE}BLUE");
    [SIZE=4][SIZE=2][SIZE=4][SIZE=2]CGOPrintHintText[/SIZE][/SIZE][/SIZE][/SIZE](client, "[SIZE=4][SIZE=2][SIZE=4][SIZE=2]{{[/SIZE][/SIZE][/SIZE][/SIZE][SIZE=4][SIZE=2][SIZE=4][SIZE=2]#6495ED==куку}}[/SIZE][/SIZE][/SIZE][/SIZE]");
    [SIZE=4][SIZE=2][SIZE=4][SIZE=2][SIZE=4][SIZE=2]CGOPrintHintTextToAll[/SIZE][/SIZE][/SIZE][/SIZE][/SIZE][/SIZE]("[SIZE=4][SIZE=2][SIZE=4][SIZE=2]{{[/SIZE][/SIZE][/SIZE][/SIZE][SIZE=4][SIZE=2][SIZE=4][SIZE=2]#6495ED==куку}}[/SIZE][/SIZE][/SIZE][/SIZE]");

    2. Какой формат работы функции?

    Они работают точно так же, как по умолчанию SM функции (например, PrintToChat)
    Код:
    CGOPrintToChat(client, "{BLUE}%N", client);

    3. Можно ли использовать цвета в файлах перевода?

    Да, можно.

    4. Как его установить?
    Потожить csgo_colors.inc в папку sourcemod/scripting/include
    Добавить в код:
    Код:
    #include <csgo_colors>
    заменить PrintToChat на CGOPrintToChat, PrintToChatAll на CGOPrintToChatAll, PrintHintText на CGOPrintHintText, PrintHintTextToAll на CGOPrintHintTextToAll и добавить в текст теги цветов

    5. Почему текст в CGOPrintToChat отображается с отступом?
    Потому что без этого отступа текст просто будет белого цвета

    6. Работает ли \n в CGOPrintToChat?
    Да полностью работает но если вы не используете цвета оптимальные использовать просто GOPrintToChat и GOPrintToChatAll​
     

    Вложения:

    • csgo_colors.zip
      Размер файла:
      1,1 КБ
      Просмотров:
      989
    Последнее редактирование: 23 дек 2015
    T1MOXA, san911, White Wolf и 17 другим нравится это.
  2. progammisst

    progammisst

    Сообщения:
    1
    Симпатии:
    0
    Re: [INC] CS:GO Colors (1.0)

    Я че т не совсем понял как устанавливать, кто может помочь напишите в скайп плиз: lostghost79
     
  3. infomail228r

    infomail228r

    Сообщения:
    11
    Симпатии:
    0
    Re: [INC] CS:GO Colors (1.0)

    komashchenko, а не могли бы вы добавить в этот инклуд, функцию переноса строки \n и чтобы в файлах перевода так-же работало.

    P.S Вот тут вроде есть что-то похожее, но как совместить CGOPrintToChat и ExtraPrintToChat, если только не объединить воедино.
     
  4. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    420
    Re: [INC] CS:GO Colors (1.1)

    Обновил
     
    Добрый Дядька нравится это.
  5. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    [INC] CS:GO Colors (1.1) на 3+

    PHP:
    if(client <= || client MaxClientsThrowError("Invalid client index %i"client);
        if(!
    IsClientInGame(client)) ThrowError("Client %i is not in game"client);
    Бред.
    Смысл такого inc в том, чтобы просто подставлять приставку CGO к стандартным нативам. В них уже должны быть сделаны все эти проверки. Так на кой ты спамишь ошибками, если стандартный натив сделает это за тебя?! Раз уж взялся за такого рода проверки, то просто делай их:
    PHP:
    if(client <= MaxClients && IsClientInGame(client))
    {
    // Код.
    }
    Короче, эффективней и чуть менее ресурсоёмко для сервера, что большой плюс, учитывая частое применение чата, например.
    PHP:
    decl String:text[512];
    VFormat(textsizeof(text), message3); 
    CGOReplaceColorSay(textsizeof(text));
    Если ты сам ограничил строку до 512, а не задал автоматическое определение размера массива, как это сделал я в ExtraPrintToChat, то зачем целых 2 раза (это не только здесь, но и далее по 1-2) проверять её размер?
    PHP:
    decl String:text[512];
    VFormat(text512message3);
    CGOReplaceColorSay(text512);
    Так хотя бы сделай. Пойми, inc - это файл для масштабного применения, тем более, когда касается чата, то "чистота" кода и его эффективность должна быть близка к 100%, без единого лишнего действия!
    PHP:
    GOPrintToChat(trueclienttext);
    Лучше написать ещё раз целиком, чем пересылать к следующему "сокращению". Ведь при этом SM приходится не только искать нужные строки, но сохранять всё, что ты при этом передаёшь (false/true, client, строка).
    PHP:
    ReplaceString(texsizeof(tex), "\n""{}");
    new 
    nuM ExplodeString(tex"{}"buf10512);
    Бесполезное действие... Если без замены символа \n на другой не работает, то хотя бы пожалей SM - пусть он всего 1 символ подставляет, а не снова 2. И искать ему далее будет также легче 1, чем сверять указанных 2.
    Твоя попытка переснять мой код на свой лад - весьма печальна...
     
  6. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Re: [INC] CS:GO Colors (1.1) на 3+

    Насколько я понял, код должен быть таким?
    PHP:
    /**************************************************************************
     *                             CS:GO COLORS                               *
     *                     Автор: Феникс(komashchenko)                        *
     *                            Version: 1.1                                *
     *                  http://zizt.ru/  http://hlmod.ru/                     *
     * 03.07.2014 - V1.0: Релиз                                               *
     * 13.10.2014 - V1.1: Обнова                                              *
     **************************************************************************/

    #define ZCOLOR 13
     
    new String:color_t[ZCOLOR][] = {"{DEFAULT}""{RED}""{LIGHTPURPLE}""{GREEN}""{LIME}""{LIGHTGREEN}""{LIGHTRED}""{GRAY}""{LIGHTOLIVE}""{OLIVE}""{LIGHTBLUE}""{BLUE}""{PURPLE}"};
    new 
    String:color_c[ZCOLOR][] = {"\x01""\x02""\x03""\x04""\x05""\x06""\x07""\x08""\x09""\x10""\x0B""\x0C""\x0E"};
     

    stock CGOPrintToChat(client, const String:message[], any:...)
    {
        if(
    client <= MaxClients && IsClientInGame(client))
        {
            
    decl String:text[512];
            
    VFormat(text512message3);
            
    CGOReplaceColorSay(text512); 
            
    GOPrintToChat(trueclienttext); 
        }
    }

    stock CGOPrintToChatAll(const String:message[], any:...)
    {
        
    decl String:text[512];
        
    VFormat(textsizeof(text), message2);
        
    CGOReplaceColorSay(textsizeof(text));
        
    GOPrintToChatAll(truetext);
    }

    stock CGOReplaceColorSay(String:text[], maxlength) for(new i=0ZCOLORi++) ReplaceString(textmaxlengthcolor_t[i], color_c[i]);

    stock GOPrintToChat(bool:colorclient, const String:message[], any:...)
    {
        if(
    client <= MaxClients && IsClientInGame(client))
        {
            
    decl String:buf[10][512], String:tex[2048]; 
            
    VFormat(texsizeof(tex), message4); 
            
    ReplaceString(texsizeof(tex), "\n""{}");
            new 
    nuM ExplodeString(tex"{}"buf10512); 
            if(!
    color) for (new 0nuMt++) PrintToChat(clientbuf[t]);
            else for (new 
    0nuMt++) PrintToChat(client" %s" ,buf[t]);
        }
    }

    stock GOPrintToChatAll(bool:color, const String:message[], any:...)
    {
        
    decl String:buf[10][512], String:tex[2048]; 
        
    VFormat(texsizeof(tex), message3); 
        
    ReplaceString(texsizeof(tex), "\n""{}");
        new 
    nuM ExplodeString(tex"{}"buf10512);
        if(!
    color) for (new 0nuMt++) PrintToChatAll(buf[t]);
        else  for (new 
    0nuMt++) PrintToChatAll(" %s" ,buf[t]);
    }

    stock CGOPrintHintText(client, const String:message[], any:...)
    {
        if(
    client <= MaxClients && IsClientInGame(client))
        {
            
    decl String:text[1024];
            
    VFormat(textsizeof(text), message3);
            
    CGOReplaceColorHsay(textsizeof(text));
            
    PrintHintText(clienttext);
        }
    }

    stock CGOPrintHintTextToAll(const String:message[], any:...)
    {
        
    decl String:text[1024];
        
    VFormat(textsizeof(text), message2);
        
    CGOReplaceColorHsay(textsizeof(text));
        
    PrintHintTextToAll(text);
    }

    stock CGOReplaceColorHsay(String:sText[], maxlength)
    {
        
    ReplaceString(sTextmaxlength"{{""<font color='");
        
    ReplaceString(sTextmaxlength"}}""</font>");
        
    ReplaceString(sTextmaxlength"==""'>");
    }

    И работает ли он с Hint текстом? имеется ввиду инклуд.
     
  7. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Re: [INC] CS:GO Colors (1.1)

    pokypka20, ты только одно исправил... Там править немало, если хорошо вдуматься.
    Я скинул komashchenko исправленный пример - ещё будет обновка.
    Оффтоп
    Если верить хотя бы этому: CGOPrintHintText, то да.
     
  8. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Re: [INC] CS:GO Colors (1.1)

    [​IMG]

    Сегодня удивился как далеко уже пошло развитие плагинов.
     
  9. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    420
    Re: [INC] CS:GO Colors (1.2)

    Обновил
     
  10. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Re: [INC] CS:GO Colors (1.2)

    PHP:
    stock CGOPrintToChat(client, const String:message[], any:...)
    {
        
    SetGlobalTransTarget(client);
        new 
    strlen(message)+190l;
        
    decl String:b[a];
        
    ReplaceString(bVFormat(bamessage3), "\n""~"false);
        for(new 
    i=0ZCOLORi++) ReplaceString(bacolor_t[i], color_c[i]);
        if(
    l)
        {
            
    decl String:s[l+1][192];
            for (new 
    ExplodeString(b"~"sl192), pmp++) PrintToChat(client" %s"s[p]);
        }
        else  
    PrintToChat(client" %s"b);
    }
    Полный копипаст формирования \n, что даже придраться не к чему) Разве что ко второму, к: PrintToChatAll(" %s", s[p]); - не лучшее решение.
    PHP:
    stock GOPrintToChat(client, const String:message[], any:...)
    {
        
    SetGlobalTransTarget(client);
        new 
    strlen(message)+190l;
        
    decl String:b[a];
        
    ReplaceString(bVFormat(bamessage3), "\n""~"false);
        if(
    l)
        {
            
    decl String:s[l+1][192];
            for (new 
    ExplodeString(b"~"sl192), pmp++) PrintToChat(clients[p]);
        }
        else  
    PrintToChat(clientb);
    }
    можно сразу переходить к проверке:
    PHP:
    stock GOPrintToChat(client, const String:message[], any:...)
    {
        new 
    strlen(message)+190l;
        
    decl String:b[a];
        if((
    ReplaceString(bVFormat(bamessage3), "\n""~"false)))
        {
            
    decl String:s[l+1][192];
            for (new 
    ExplodeString(b"~"sl192), pmp++) PrintToChat(clients[p]);
        }
        else  
    PrintToChat(clientb);
    }
    SetGlobalTransTarget(client); здесь, в принципе, не нужен - сообщение посылается одному человеку, языковые настройки не меняются и, к тому же, скриптер может сам решать, нужна она в коде или нет (учитывая, что она в его самом начале).
    Ещё, я бы сделал так:
    PHP:
    stock CGOReplaceColorHsay(String:sText[], maxlength)
    {
        if (
    ReplaceString(sTextmaxlength"==""'>") && ReplaceString(sTextmaxlength"}}""</font>")) ReplaceString(sTextmaxlength"{{""<font color='");
    }
    Ведь если нет одного символа обозначения цвета, то значит не должно быть и всех остальных, ведь так?
     
    Yes Boss нравится это.
  11. komashchenko

    komashchenko

    Сообщения:
    479
    Симпатии:
    420
    Re: [INC] CS:GO Colors (1.3)

    17.11.2014 - V1.3: Исправление ошибок
     
  12. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Re: [INC] CS:GO Colors (1.3)

    PHP:
    VFormat(textsizemessage2);
        if(
    ReplaceString(textsize"{{""<font color='") && ReplaceString(textsize"}}""</font>")) ReplaceString(textsize"==""'>");
        
    PrintHintTextToAll(text);
    будет немного лучше
    PHP:
    if(VFormat(textsizemessage2) && ReplaceString(textsize"{{""<font color='") && ReplaceString(textsize"}}""</font>")) ReplaceString(textsize"==""'>");
    PrintHintTextToAll(text);
    и ещё вернее
    PHP:
    if (VFormat(textsizemessage2))
    {
        if(
    ReplaceString(textsize"{{""<font color='") && ReplaceString(textsize"}}""</font>")) ReplaceString(textsize"==""'>");
        
    PrintHintTextToAll(text);
    }
    Это избавит от всех лишних проверок в случае, если по каким-либо причинам посылается пустое сообщение (например, в файле переводе удалена строка пользователем, чтобы излишне не спамить в чат).
    И, заметил, что у тебя другой порядок ReplaceString. А зря! Ведь у тебя получается замена будет больше по длине текста, чем в последующей проверке, если вдруг следующий элемент будет не найден. Но, тебе виднее, что пользователь обязан ставить, а что - нет...
     
  13. AlmazON

    AlmazON деревянный © yand3xmail

    Сообщения:
    4.506
    Симпатии:
    1.961
    Re: [INC] CS:GO Colors (1.3)

    Сдаётся мне, просто лимит символов чата исчерпан.
     
  14. Re: [INC] CS:GO Colors (1.3)

    а вот как ограничить показ?
    возможен ли перенос строки в CGOPrintToChat ??
     
    Последнее редактирование модератором: 12 янв 2015
  15. Влад Марченко 2039304357

    Влад Марченко 2039304357

    Сообщения:
    5
    Симпатии:
    0
    Re: [INC] CS:GO Colors (1.1)

    Ребят как так сделать? как на скрине.
     
  16. rus0707

    rus0707

    Сообщения:
    201
    Симпатии:
    18
    Re: [INC] CS:GO Colors (1.3)

    если тебе цвета нужны?

    вот тебе пример:

    "text" "{{#00FF00==СВОЙ ТЕКСТ}} {{#00FFFF==СВОЙ ТЕКСТ}} {{#FF0000==СВОЙ ТЕКСТ}}"

    вот тебе все цвета какой хочешь выбирай http://www.stm.dp.ua/web-design/color-html.php
     
  17. T1MOXA

    T1MOXA

    Сообщения:
    468
    Симпатии:
    32
    Re: [INC] CS:GO Colors (1.3)

    Кто поможет? Немного неясно)
     
  18. hok

    hok

    Сообщения:
    3
    Симпатии:
    0
    Re: [INC] CS:GO Colors (1.3)

    а где именно прописать надо?
    #include <csgo_colors>
    ?
     
  19. Konstantin

    Konstantin

    Сообщения:
    1.789
    Симпатии:
    767
    Re: [INC] CS:GO Colors (1.3)

    В файле с исходным кодом (*.sp) сверху.