Изменения цвета текста по символам из сообщения игрока.

Тема в разделе "Программирование / Скриптинг", создана пользователем Primo, 2 апр 2015.

  1. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    Нужно изменять цвет текста посредством написания в чате специальных символов (\x03 и т.д.). Проблема в том, что это не работает.

    PHP:
    public Action:SayHook(clientargs)    
    {     
        if (
    client && args && IsClientInGame(client))     
        {
            new 
    Ri[client];
            
    decl String:Prefix[255];
            
    pGetPlayerPrefix(clientPrefixsizeof(Prefix));
            if(
    IsPlayerAlive(client))
            {
                switch(
    GetClientTeam(client))
                {
                    case 
    2:
                    {
                        
    decl String:text[255], String:mes[256];
                        
    GetCmdArgString(text255); 
                        
    StripQuotes(text);
                        
    FormatEx(messizeof(mes), "-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s"PrefixRank[i] , clienttext);
                        
    CPrintToChatAll("%s"mes);  
                        return 
    Plugin_Handled
                    }
                    case 
    3:
                    {
                        
    decl String:text[255], String:mes[256];
                        
    GetCmdArgString(text255); 
                        
    StripQuotes(text);     
                        
    FormatEx(messizeof(mes), "-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s"PrefixRank[i] , clienttext);
                        
    CPrintToChatAll("%s"mes);  
                        return 
    Plugin_Handled
                    }
                }
            }
     
  2. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    При использовании нескольких цветов одновременно впереди всего текста всегда ставится \x01!
     
    Primo нравится это.
  3. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    AlmazON, ты не понял моей проблемы :D
    Для наглядности сделал скрин.
     

    Вложения:

    • text-img.png
      text-img.png
      Размер файла:
      16,1 КБ
      Просмотров:
      26
  4. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    А почему не так?!
    PHP:
    public Action:SayHook(clientargs)     
    {      
        if (
    client)     
        { 
            
    //new i = Ri[client]; 
            
    decl String:Prefix[180]; 
            
    pGetPlayerPrefix(clientPrefix180); 
            if(
    IsPlayerAlive(client)) 
            {
                
    decl String:text[192];
                
    GetCmdArg(1text192);
                
    CPrintToChatAll(GetClientTeam(client) == "\x01-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s":
                
    "\x01-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s"PrefixRank[i], clienttext);
                return 
    Plugin_Handled;
            }
        }
        return 
    Plugin_Continue;
    }
    Оффтоп
    Ясно теперь. Через сам чат не окрасишь, надо делать распознавание такой цветовой палитры.
     
    Primo нравится это.
  5. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    Просто не умею пользоваться
    PHP:
    GetClientTeam(client) == "\x01-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s":
                
    "\x01-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s"
    При попытке использовать include colors (CPrintToChat) плагин вообще крашится.
     
  6. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    А зачем он там вообще, в этой строчке? Куда? Ты же всё равно использовал стандартные цвета.
    Но, если неймётся:
    PHP:
    public OnPluginStart() AddCommandListener(SayHook"say");

    public 
    Action:SayHook(clientString:command[], args)   
    {      
        if(
    client && IsClientInGame(client))
        {
            
    //new i = Ri[client]; 
            
    if(IsPlayerAlive(client)) 
            {
                
    decl String:text[192];
                if(
    GetCmdArg(1text192))
                {
                    
    decl String:Prefix[180];
                    
    pGetPlayerPrefix(clientPrefix180);
                    if(
    GetClientTeam(client) == 2CPrintToChatAll("\x01-\x07[\x04%s\x07] \x03|\x05%s\x03| \x03%N\x01: %s"PrefixRank[i], clienttext);
                    else 
    CPrintToChatAll("\x01-\x0B[\x04%s\x0B] \x03|\x05%s\x03| \x03%N\x01: %s"PrefixRank[i], clienttext);
                    return 
    Plugin_Handled;
                }
            }
        }
        return 
    Plugin_Continue;
    }
    Но, цвета всё равно ловить не будет) Не та система.
     
    Primo нравится это.
  7. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
  8. AlmazON

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

    Сообщения:
    4.566
    Симпатии:
    1.988
    Ты хоть пиши, что для CS:GO. Разница то есть, включая чат.
     
    komashchenko и Primo нравится это.
  9. Primo

    Primo Где мои манеры

    Сообщения:
    1.192
    Симпатии:
    310
    AlmazON, хорошо :)
    С 1000 репутацией :D
     
    AlmazON нравится это.