Упрощённый custome-chat colors

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

  1. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Всё, работает. Но если игрок админ пишет в say_team то префикс не окрашивается что не так?

    PHP:
    public Action:OnChatMessage(&authorHandle:recipientsString:name[], String:message[])
    {
        if(
    GetUserFlagBits(author) & ADMFLAG_RESERVATION)
        {
            
    // MAXLENGTH_MESSAGE = maximum characters in a chat message, including name. Subtract the characters in the name, and 5 to account for the colon, spaces, and null terminator
            
    new MaxMessageLength MAXLENGTH_MESSAGE strlen(name) - 5;
            
    Format(nameMAXLENGTH_NAME"\x01[\x04VIP\x01] \x03%s"name);//Tag+Name color
            
    Format(messageMaxMessageLength"\x04%s"message);
            return 
    Plugin_Changed;
        }
        return 
    Plugin_Continue
    }
    Используется <scp>
    PHP:
    #define MAXLENGTH_INPUT            128     // Inclues \0 and is the size of the chat input box.
    #define MAXLENGTH_NAME                64        // This is backwords math to get compability.  Sourcemod has it set at 32, but there is room for more.
    #define MAXLENGTH_MESSAGE        256        // This is based upon the SDK and the length of the entire message, including tags, name, : etc.

    #define CHATFLAGS_INVALID        0
    #define CHATFLAGS_ALL                (1<<0)
    #define CHATFLAGS_TEAM                (1<<1)
    #define CHATFLAGS_SPEC                (1<<2)
    #define CHATFLAGS_DEAD                (1<<3)
    Как я понял нужно CHATFLAGS_ALL подставить в этот код, но куда?
     
  2. TolikCorp

    TolikCorp

    Сообщения:
    855
    Симпатии:
    271
  3. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    TolikCorp, Да, нужно каждому классу в моём моде дать префикс. С tab манипулировать нельзя прийдёться через чат давать название классам. + можно без лишних настроек добавить админа и игрокам тег.
     
    Последнее редактирование: 14 авг 2014
  4. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Вопрос, актуален. Подскажите как исправить?

    [​IMG]

    Что я пытался намутить:
    PHP:

        
    if(GetUserFlagBits(author) & ADMFLAG_RESERVATION)
        {
            
    // MAXLENGTH_MESSAGE = maximum characters in a chat message, including name. Subtract the characters in the name, and 5 to account for the colon, spaces, and null terminator
            
    new MaxMessageLength MAXLENGTH_MESSAGE strlen(name) - 5;
            if (
    authornameMAXLENGTH_NAME)
            {
            
    Format(nameMAXLENGTH_NAME"\x01[\x04VIP\x01] \x03%s"name);//Tag+Name color
            
    Format(messageMaxMessageLength"\x04%s"message);
            }
            else 
            {
            
    Format(nameMAXLENGTH_NAME"\x01[\x04VIP\x01] \x03%s"name);//Tag+Name color
            
    Format(messageMaxMessageLength"\x04%s"message);
            }
            return 
    Plugin_Changed;
        }
    Как то так видел в custome chat colors, но не получилось.
     
  5. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    Оффтоп
    Я могу тебе написать вариант без
    но он мне не нравится, ненадёжный (небезопасный), так сказать. И посылается, кому даже не надо. А для командного чата ещё и цикл каждый раз (может догадался, как делается).
    А в твоём - я такого события ещё не видел, не в курсе.
     
  6. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Напиши пожалуйста свой пример без scp. Пытался разбирать custome chat, ничего не получилось.
     
  7. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    Для общего чата, не учитывая наблюдателей:
    PHP:
    public OnPluginStart() AddCommandListener(Say"say");

    public 
    Action:Say(clientString:command[], args)
    {
        if (
    IsClientInGame(client) && GetUserFlagBits(client) & ADMFLAG_RESERVATION)
        {
            new 
    team GetClientTeam(client);
            if (
    team 1)
            {
                
    decl String:text[192];
                
    GetCmdArg(1textsizeof(text));
                
    PrintToChatAll("\x01%s[\x04VIP\x01] \x07%06X%N\x01 :  %s"IsPlayerAlive(client) ? "":"*УБИТ* "team 0xFF4040:0x99CCFFclienttext);
                return 
    Plugin_Handled;
            }
        }
        return 
    Plugin_Continue;
    }
     
    pokypka20 нравится это.
  8. pokypka20

    pokypka20

    Сообщения:
    250
    Симпатии:
    30
    Если он своей команде напишет то текст будет дефолтный?
     
  9. AlmazON

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

    Сообщения:
    4.563
    Симпатии:
    1.988
    Конечно. Можно добавить AddCommandListener(Say, "say_team");, но такие сообщения будут снова видны всем. Для команды надо дополнительно массив с циклом дописывать, чтобы верно отсылало.
    А так, это очень удобное средство окраски и изменения текста игрока. Можно красить обычный текст после ника (только 1 любой цвет), а также сообщение, когда убили (и заменить "*УБИТ*" на своё).