Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] The Source Code → Изменить красный цвет текста announce

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 11

1

Topic: Изменить красный цвет текста announce

https://forums.pvpgn.pro/viewtopic.php?id=577
тут тема про Announce, при вводе команд работает текст красный и тд.


extern void channel_message_send(t_channel const * channel, t_message_type type, t_connection * me, char const * text)
{
    t_connection * c;
    unsigned int   heard;
    char const *   tname;
    t_message *    message1; //send to people with clienttag matching channel clienttag
                             // or everyone when channel has no clienttag set
    t_message *    message2; //send to people with clienttag not matching channel clienttag
    t_message *    message_to_send;
    t_account *    acc;


    if (!channel)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL channel");
        return;
    }
    if (!me)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");
        return;
    }

    acc = conn_get_account(me);

    if(channel_get_flags(channel) & channel_flags_thevoid) // no talking in the void
        if (type!=message_type_join && type!=message_type_part)
            return;

    // if user muted
    if (account_get_auth_mute(acc) == 1)
    {
 
         char msgtemp[MAX_MESSAGE_LEN], msgtemp2[MAX_MESSAGE_LEN];

         snprintf(msgtemp, sizeof(msgtemp), "You can't talk on the channel. Your account has been muted%s", account_get_locktext(acc, true));
                 message_send_text(me, message_type_error, me, msgtemp);
                 return;
    }  
            
    if(channel_get_flags(channel) & channel_flags_moderated) // moderated channel - only admins,OPs and voices may talk
    {
    if (type==message_type_talk || type==message_type_emote)
    {
        if (!((account_is_operator_or_admin(acc,channel_get_name(channel))) ||
         (channel_conn_has_tmpVOICE(channel,me)) || (account_get_auth_voice(acc,channel_get_name(channel)) == 1)))
        {
        message_send_text(me,message_type_error,me,"This channel is moderated");
            return;
        }
    }
    }

    if (!channel->clienttag){
        if (!(message1 = message_create(type,me,text)))
        {
            eventlog(eventlog_level_error,__FUNCTION__,"could not create message1");
            return;
         }
         message2 = NULL;
    } else {
        if (!(message1 = message_create(type,me,text)))
        {
            eventlog(eventlog_level_error,__FUNCTION__,"could not create message1");
            return;
         }
        if (!(message2 = message_create(type,me,text)))
        {
            eventlog(eventlog_level_error,__FUNCTION__,"could not create message2");
            message_destroy(message1);
            return;
         }
    }


    heard = 0;
    tname = conn_get_chatname(me);
    for (c=channel_get_first(channel); c; c=channel_get_next())
    {
    if (c==me && (type==message_type_talk || type==message_type_gameopt_talk))
        continue; /* ignore ourself */
    if (c==me && (!conn_is_irc_variant(c)) && type==message_type_part)
            continue; /* only on irc we need to inform ourself about leaving the channel */
    if (c!=me && (!conn_is_irc_variant(c)) && (channel_get_flags(channel) & channel_flags_thevoid) && (type==message_type_join || type==message_type_part))
            continue; /* make sure we even get join part information about self in The Void */
    if ((type==message_type_talk || type==message_type_whisper || type==message_type_emote || type==message_type_broadcast) &&
        conn_check_ignoring(c,tname)==1)
        continue; /* ignore squelched players */

    if (!channel->clienttag || channel->clienttag==conn_get_clienttag(c)) {
        message_to_send = message1;
    } else {
        message_to_send = message2;
    }

    if (message_send(message_to_send,c)==0 && c!=me)
        heard = 1;
    }

    conn_unget_chatname(me,tname);

    message_destroy(message1);
    if (message2)
        message_destroy(message2);

    if ((conn_get_wol(me) == 0))
    {
        if (!heard && (type==message_type_talk || type==message_type_emote))
        message_send_text(me,message_type_info,me,"No one hears you.");
    }
}

можно ли тут заменить красный и тд цвета?
то где править

2

Re: Изменить красный цвет текста announce

Список цветов стандартных типов сообщений предопределен в клиенте игры
https://forums.pvpgn.pro/viewtopic.php?id=586

Тем не менее, для Warcraft их можно поменять в MPQ
https://forums.pvpgn.pro/viewtopic.php?pid=6657#p6657

Do not ask for support in PM.

3 (edited by launcher 10.12.2017 17:30)

Re: Изменить красный цвет текста announce

HarpyWar wrote:

Список цветов стандартных типов сообщений предопределен в клиенте игры
https://forums.pvpgn.pro/viewtopic.php?id=586

Тем не менее, для Warcraft их можно поменять в MPQ
https://forums.pvpgn.pro/viewtopic.php?pid=6657#p6657

а можно сдtлать если выбрав команду /redann
то пишет красным цветом и не повторно задавая команду /redann
если вышел с игры или пере зашел то все равно пишет красным
Надо его в БД записать?

4

Re: Изменить красный цвет текста announce

launcher wrote:
HarpyWar wrote:

Список цветов стандартных типов сообщений предопределен в клиенте игры
https://forums.pvpgn.pro/viewtopic.php?id=586

Тем не менее, для Warcraft их можно поменять в MPQ
https://forums.pvpgn.pro/viewtopic.php?pid=6657#p6657

а можно сдtлать если выбрав команду /redann
то пишет красным цветом и не повторно задавая команду /redann
если вышел с игры или пере зашел то все равно пишет красным
Надо его в БД записать?

Да конечно можно, правда в нашей сборке он впилен в /ccolor, что дает ему возможность написать в чате указаным цветом и в аннонсе(объявления)

5

Re: Изменить красный цвет текста announce

Gh0ster wrote:
launcher wrote:
HarpyWar wrote:

Список цветов стандартных типов сообщений предопределен в клиенте игры
https://forums.pvpgn.pro/viewtopic.php?id=586

Тем не менее, для Warcraft их можно поменять в MPQ
https://forums.pvpgn.pro/viewtopic.php?pid=6657#p6657

а можно сдtлать если выбрав команду /redann
то пишет красным цветом и не повторно задавая команду /redann
если вышел с игры или пере зашел то все равно пишет красным
Надо его в БД записать?

Да конечно можно, правда в нашей сборке он впилен в /ccolor, что дает ему возможность написать в чате указаным цветом и в аннонсе(объявления)

ну а тут есть такой код как у тебя /ccolor

6

Re: Изменить красный цвет текста announce

launcher wrote:
Gh0ster wrote:
launcher wrote:

а можно сдtлать если выбрав команду /redann
то пишет красным цветом и не повторно задавая команду /redann
если вышел с игры или пере зашел то все равно пишет красным
Надо его в БД записать?

Да конечно можно, правда в нашей сборке он впилен в /ccolor, что дает ему возможность написать в чате указаным цветом и в аннонсе(объявления)

ну а тут есть такой код как у тебя /ccolor

Такого кода на форуме не видел, есть "похожий"... В команду /ann добавлена проверка на статус и его вид вывода сообщения.

7 (edited by launcher 02.01.2018 17:38)

Re: Изменить красный цвет текста announce

Serc wrote:
launcher wrote:
Gh0ster wrote:

Да конечно можно, правда в нашей сборке он впилен в /ccolor, что дает ему возможность написать в чате указаным цветом и в аннонсе(объявления)

ну а тут есть такой код как у тебя /ccolor

Такого кода на форуме не видел, есть "похожий"... В команду /ann добавлена проверка на статус и его вид вывода сообщения.

не нанешл можешь тыкнуть  ссылку?

8

Re: Изменить красный цвет текста announce

Вот сам код самого чат колора с лимитом.

static int _handle_chatcolor_command(t_connection * c, char const * text)
{
    char     t[MAX_MESSAGE_LEN];
    char const * command;
      time_t      ccolor_time;
    int ccolor_count;
      const int max_ccolor = 1; 
    const int max_wait = 60*60*24;

    t_uint32 clienttag;
    clienttag = conn_get_clienttag(c);
    t_account * acc = conn_get_account(c);
    t_connection *  dst_c;
    int      changed = 0;
    unsigned int i,j;
    char    arg1[256];
    char    arg2[256];
//    char const * accc;
    std::strncpy(t, text, MAX_MESSAGE_LEN - 1);
    for (i=0; t[i]!=' ' && t[i]!='\0'; i++); /* skip command /groups */

    for (; t[i]==' '; i++); /* skip spaces */
    for (j=0; t[i]!=' ' && t[i]!='\0'; i++) /* get command */
    if (j<sizeof(arg1)-1) arg1[j++] = t[i];
    arg1[j] = '\0';
    for (; t[i] == ' '; i++); /* skip spaces */
    for (j = 0; t[i] != '\0'; i++) /* get game name */
    if (j<sizeof(arg2)-1) arg2[j++] = t[i];
    arg2[j] = '\0';
    command = arg1;
    text = skip_command(text);
     ccolor_time = account_get_numattr(acc,"BNET\\acct\\ccolor_time");
    ccolor_count = account_get_numattr(acc,"BNET\\acct\\ccolor_count");
    if ( ccolor_time < now - max_wait )
    {
        // установить исходное кол-во анонсов
        ccolor_count = max_ccolor;
        account_set_numattr(acc,"BNET\\acct\\ccolor_count", (unsigned int)ccolor_count);

        // обновить время на текущее
        account_set_numattr(acc,"BNET\\acct\\ccolor_time", (unsigned int)now);
    }
    if(account_get_auth_elite(acc)==1)
    {
         if (text[0] == '\0')
        {
            message_send_text(c, message_type_info, c, "Пример использования команды:");
            message_send_text(c, message_type_info, c, " →     /ccolor red (Устанавливает цвет чата красным)");
            message_send_text(c, message_type_info, c, "~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~");
            message_send_text(c, message_type_info, c, "Доступные цвета:");
            message_send_text(c, message_type_info, c, "    red(красный), blue(синий),default(стандартный)");
            message_send_text(c, message_type_info, c, "~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~●~");
            return -1;
        }
        if ( ccolor_count > 0 )
    {
    
    dst_c = account_get_conn(acc);
    if (!std::strcmp(command,"red"))
    {
        if(account_get_auth_ccred(acc,NULL)==1)
        {
            message_send_text(c,message_type_error,c,"У Вас уже установлен Красный цвет чата.");
            return 0;
        }
        else
        {
            account_set_auth_ccred(acc, NULL, 1);
            account_set_auth_ccblue(acc, NULL, 0);
            snprintf(msgtemp, sizeof(msgtemp), "Установлен Красный цвет чата!");
            snprintf(msgtemp2, sizeof(msgtemp2), "Ещё раз сменить цвет чата можно через 24ч. 0м. 0с.");
            changed = 1;
             account_set_numattr(acc,"BNET\\acct\\ccolor_count", (unsigned int)--ccolor_count);
        }
    }
    else if (!std::strcmp(command,"blue"))
    {
        if(account_get_auth_ccblue(acc,NULL)==1)
        {
            message_send_text(c,message_type_error,c,"У Вас уже установлен Синий цвет чата.");
        return 0;
        }
        else
        {
            account_set_auth_ccblue(acc, NULL, 1);
            account_set_auth_ccred(acc, NULL, 0);
            snprintf(msgtemp, sizeof(msgtemp), "Установлен Синий цвет чата!");
            snprintf(msgtemp2, sizeof(msgtemp2), "Ещё раз сменить цвет чата можно через 24ч. 0м. 0с.");
            changed = 1;
             account_set_numattr(acc,"BNET\\acct\\ccolor_count", (unsigned int)--ccolor_count);
        }
    }
    else 
    if (!std::strcmp(command,"default"))
    {
        if((account_get_auth_ccblue(acc,NULL)==0) || (account_get_auth_ccblue(acc,NULL)==0))
        {
            message_send_text(c,message_type_error,c,"У Вас уже установлен Стандартный цвет чата");
            return 0;
        }
        else
        {
            account_set_auth_ccred(acc, NULL, 0);
            account_set_auth_ccblue(acc, NULL, 0);
            snprintf(msgtemp, sizeof(msgtemp), "Установлен Стандартный цвет чата!");
            snprintf(msgtemp2, sizeof(msgtemp2), "Ещё раз сменить цвет чата можно через 24ч. 0м. 0с.");
            changed = 1;
            account_set_numattr(acc,"BNET\\acct\\ccolor_count", (unsigned int)--ccolor_count);
        }
    }
    else
      {
    message_send_text(c,message_type_error,c,"Неверный цвет. Доступные цвета: red(красный), blue(синий), default(стандартный)");
    return 0;
      }

    if (changed && dst_c)
        command_set_flags(dst_c);
        message_send_text(c, message_type_info, c, msgtemp);
        message_send_text(c, message_type_info, c, msgtemp2);
        return 0;
    }
    else
    {
        
        snprintf(msgtemp, sizeof(msgtemp), "Вы ещё не можете сменить цвет чата (Осталось: %.48s)",seconds_to_timestr(ccolor_time+max_wait-now));
            message_send_text(c,message_type_error,c,msgtemp);
        return 0;
    }
    }
        else
        {
        message_send_text(c, message_type_info, c, "Эта команда доступна только для Элиты!");
    return 0;
       }
       }

А в аннонс тебе надо будет изменить примерно так:

if ((account_get_auth_elite(account) == 1) && (account_get_auth_ccred(account,NULL)==1))
    {
        snprintf(msgtemp, sizeof(msgtemp), "[Элита] %.64s: %.128s", conn_get_loggeduser(c), &text[i]);
        message = message_create(message_type_error, c, msgtemp);
        message_send_all(message);
    }
    else
    if ((account_get_auth_elite(account) == 1) && (account_get_auth_ccblue(account,NULL)==1))
    {
        snprintf(msgtemp, sizeof(msgtemp), "[Элита] %.64s: %.128s", conn_get_loggeduser(c), &text[i]);
        message = message_create(message_type_info, c, msgtemp);
        message_send_all(message);
    }

А остальное сам ищи я тебе часть показал как оно реализовано

Добавлено: 05.01.2018 01:48

HarpyWar wrote:

Список цветов стандартных типов сообщений предопределен в клиенте игры
https://forums.pvpgn.pro/viewtopic.php?id=586

Тем не менее, для Warcraft их можно поменять в MPQ
https://forums.pvpgn.pro/viewtopic.php?pid=6657#p6657

Эх херпи он хочет сделать как в ICCup красный чат... А это уже в channel.cpp правится и handle_bnet.cpp раздел клиент сэнд мессэдж

+1 Serc

9

Re: Изменить красный цвет текста announce

ghost
а вот
account_get_auth_ccred и account_get_auth_ccblue
там должен быть extern int или extern char const *  ??

Добавлено: 05.01.2018 09:53

if ((account_get_auth_elite(account) == 1) && (account_get_auth_ccred(account,NULL)==1))
    {
        snprintf(msgtemp, sizeof(msgtemp), "[Элита] %.64s: %.128s", conn_get_loggeduser(c), &text[i]);
        message = message_create(message_type_error, c, msgtemp);
        message_send_all(message);
    }
    else
    if ((account_get_auth_elite(account) == 1) && (account_get_auth_ccblue(account,NULL)==1))
    {
        snprintf(msgtemp, sizeof(msgtemp), "[Элита] %.64s: %.128s", conn_get_loggeduser(c), &text[i]);
        message = message_create(message_type_info, c, msgtemp);
        message_send_all(message);
    }

подскажи этот код где править

Добавлено: 05.01.2018 09:57

-код реализовал пишу /chatcolor red записывается вБД
но пишет игрок обычным стандартным цветом. что не так сделал?

10 (edited by Serc 06.01.2018 17:25)

Re: Изменить красный цвет текста announce

launcher wrote:

-код реализовал пишу /chatcolor red записывается вБД
но пишет игрок обычным стандартным цветом. что не так сделал?

Ответил уже чел

Gh0ster wrote:

Эх херпи он хочет сделать как в ICCup красный чат... А это уже в channel.cpp правится и handle_bnet.cpp раздел клиент сэнд мессэдж

11

Re: Изменить красный цвет текста announce

launcher wrote:

ghost
а вот
account_get_auth_ccred и account_get_auth_ccblue
там должен быть extern int или extern char const *  ??

Добавлено: 05.01.2018 09:53

if ((account_get_auth_elite(account) == 1) && (account_get_auth_ccred(account,NULL)==1))
    {
        snprintf(msgtemp, sizeof(msgtemp), "[Элита] %.64s: %.128s", conn_get_loggeduser(c), &text[i]);
        message = message_create(message_type_error, c, msgtemp);
        message_send_all(message);
    }
    else
    if ((account_get_auth_elite(account) == 1) && (account_get_auth_ccblue(account,NULL)==1))
    {
        snprintf(msgtemp, sizeof(msgtemp), "[Элита] %.64s: %.128s", conn_get_loggeduser(c), &text[i]);
        message = message_create(message_type_info, c, msgtemp);
        message_send_all(message);
    }

подскажи этот код где править

Добавлено: 05.01.2018 09:57

-код реализовал пишу /chatcolor red записывается вБД
но пишет игрок обычным стандартным цветом. что не так сделал?

Извини, что отсутствовал долго.
Ув. launcher aka esenbek, а Вы реализовали это в в ханд бнет и хандл чэннел?
Покажите код реализации, я же Вам показал как команда работает, а остальное сами...

Posts: 11

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 0 guests, 0 registered users

forums.pvpgn.pro → [RU] The Source Code → Изменить красный цвет текста announce