Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] Warcraft → Хост игры

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 12

1 (edited by Smart 05.02.2014 20:35)

Topic: Хост игры

Что за функция отвечает за хост игры с помощью команды на канале.
Подобную видел на alkare.
В окне вводишь команду

chost "карта" "название хост игры"

2

Re: Хост игры

нет такой функции или команды. надо дописать самому.

Добавлено: 06.02.2014 17:16

можешь сделать команду которая будет отправлять боту сообщение типа:
!load config
!pub name

Добавлено: 06.02.2014 21:05

+ show spoiler
static int _handle_pub_command(t_connection * c, char const * text)
{
    t_account *    account;
 
    char     t[MAX_MESSAGE_LEN];
    unsigned int i,j;
    char    arg1[256];
    char    arg2[256];
    char msg[512];
    t_connection * my_c;
    my_c = connlist_find_connection_by_accountname("bot");
    char * gamename;
    char * typemap;

        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 username
    if (j<sizeof(arg2)-1) arg2[j++] = t[i];
    arg2[j] = '\0';


    typemap = arg1;
    gamename = arg2;
    
    if (arg1[0] =='\0') {
    message_send_text(c,message_type_info,c,"usage: /pub <maptype> <name>");
    return 0;
    }

    if (!std::strcmp(typemap,"help") || !std::strcmp(typemap,"h")) {
    message_send_text(c,message_type_info,c,"Чтобы создать игру через бота теперь можно использовать команду /pub.)");
    message_send_text(c,message_type_info,c,"Пример: /pub dota <gamename> - создает игру под названием <gamename> с последней версией карты DotA");
    message_send_text(c,message_type_info,c,"Пример: /pub lod <gamename> - создает игру под названием <gamename> с последней версией карты LoD");
    return 0;
    }

    if (arg2[0] =='\0') {
    message_send_text(c,message_type_info,c,"usage: /pub <maptype> <name>");
    return 0;
    }

    if (!std::strcmp(typemap,"dota")) {
    snprintf(msgtemp, sizeof(msgtemp), "Попытка создать игру типа %.64s под названием %.64s!", arg1, gamename);
    message_send_text(c,message_type_info,c,msgtemp);
    std::sprintf(msg,"-load 78b");
    message_send_text(my_c,message_type_whisper,c,msg);
    std::sprintf(msg,"-pub %.64s",gamename);
    message_send_text(my_c,message_type_whisper,c,msg);
    return 0;
    }

    if (!std::strcmp(typemap,"lod")) {
    snprintf(msgtemp, sizeof(msgtemp), "Попытка создать игру типа %.64s под названием %.64s!", arg1, gamename);
    message_send_text(c,message_type_info,c,msgtemp);
    std::sprintf(msg,"!load e");
    message_send_text(my_c,message_type_whisper,c,msg);
    std::sprintf(msg,"!pub %.64s",gamename);
    message_send_text(my_c,message_type_whisper,c,msg);
    return 0;
    }
            
            
    snprintf(msgtemp, sizeof(msgtemp), "Ошибка типа карты: %.128s", typemap);
    message_send_text(c,message_type_info,c,msgtemp);
    return 0;

    
}

3

Re: Хост игры

Suite wrote:

нет такой функции или команды. надо дописать самому.

Добавлено: 06.02.2014 17:16

можешь сделать команду которая будет отправлять боту сообщение типа:
!load config
!pub name

Добавлено: 06.02.2014 21:05

+ show spoiler
static int _handle_pub_command(t_connection * c, char const * text)
{
    t_account *    account;
 
    char     t[MAX_MESSAGE_LEN];
    unsigned int i,j;
    char    arg1[256];
    char    arg2[256];
    char msg[512];
    t_connection * my_c;
    my_c = connlist_find_connection_by_accountname("bot");
    char * gamename;
    char * typemap;

        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 username
    if (j<sizeof(arg2)-1) arg2[j++] = t[i];
    arg2[j] = '\0';


    typemap = arg1;
    gamename = arg2;
    
    if (arg1[0] =='\0') {
    message_send_text(c,message_type_info,c,"usage: /pub <maptype> <name>");
    return 0;
    }

    if (!std::strcmp(typemap,"help") || !std::strcmp(typemap,"h")) {
    message_send_text(c,message_type_info,c,"Чтобы создать игру через бота теперь можно использовать команду /pub.)");
    message_send_text(c,message_type_info,c,"Пример: /pub dota <gamename> - создает игру под названием <gamename> с последней версией карты DotA");
    message_send_text(c,message_type_info,c,"Пример: /pub lod <gamename> - создает игру под названием <gamename> с последней версией карты LoD");
    return 0;
    }

    if (arg2[0] =='\0') {
    message_send_text(c,message_type_info,c,"usage: /pub <maptype> <name>");
    return 0;
    }

    if (!std::strcmp(typemap,"dota")) {
    snprintf(msgtemp, sizeof(msgtemp), "Попытка создать игру типа %.64s под названием %.64s!", arg1, gamename);
    message_send_text(c,message_type_info,c,msgtemp);
    std::sprintf(msg,"-load 78b");
    message_send_text(my_c,message_type_whisper,c,msg);
    std::sprintf(msg,"-pub %.64s",gamename);
    message_send_text(my_c,message_type_whisper,c,msg);
    return 0;
    }

    if (!std::strcmp(typemap,"lod")) {
    snprintf(msgtemp, sizeof(msgtemp), "Попытка создать игру типа %.64s под названием %.64s!", arg1, gamename);
    message_send_text(c,message_type_info,c,msgtemp);
    std::sprintf(msg,"!load e");
    message_send_text(my_c,message_type_whisper,c,msg);
    std::sprintf(msg,"!pub %.64s",gamename);
    message_send_text(my_c,message_type_whisper,c,msg);
    return 0;
    }
            
            
    snprintf(msgtemp, sizeof(msgtemp), "Ошибка типа карты: %.128s", typemap);
    message_send_text(c,message_type_info,c,msgtemp);
    return 0;

    
}

Можешь сказать как её внедрить в PVPGN сервер?
Кстати как убрать сообщение - You Have no mail.
При регистрации своего аккаунта почту указывал.

4 (edited by Suite 06.02.2014 21:31)

Re: Хост игры

Можешь сказать как её внедрить в PVPGN сервер?

command.cpp
после

static int _handle_whoami_command(t_connection * c, char const * text);

ставишь

static int _handle_pub_command(t_connection * c, char const * text);

после

    { "/whoami"             , _handle_whoami_command },

ставишь

    { "/pub"             , _handle_pub_command },

поиск:

static int _handle_whoami_command(t_connection * c, char const *text)
{
  char const * tname;

  if (!(tname = conn_get_username(c)))
    {
      message_send_text(c,message_type_error,c,"Unable to obtain your account name.");
      return 0;
    }

  do_whois(c,tname);

  return 0;
}

после него ставишь выше код.
мой код нужно изменить под себя.

5

Re: Хост игры

Smart wrote:

Кстати как убрать сообщение - You Have no mail.
При регистрации своего аккаунта почту указывал.

Это переводится "У вас нет сообщений". См. команду /mail, её сделали по аналогии с unix системами. Это "внутренняя" почта, и с реальной электронной почтой никак не связано.
В PvPGN про нее мало кто знает и практически никто из игроков не использует, за ненадобностью.

Do not ask for support in PM.

6 (edited by Smart 11.02.2014 19:28)

Re: Хост игры

Suite wrote:

Можешь сказать как её внедрить в PVPGN сервер?

command.cpp
после

static int _handle_whoami_command(t_connection * c, char const * text);

ставишь

static int _handle_pub_command(t_connection * c, char const * text);

после

    { "/whoami"             , _handle_whoami_command },

ставишь

    { "/pub"             , _handle_pub_command },

поиск:

static int _handle_whoami_command(t_connection * c, char const *text)
{
  char const * tname;

  if (!(tname = conn_get_username(c)))
    {
      message_send_text(c,message_type_error,c,"Unable to obtain your account name.");
      return 0;
    }

  do_whois(c,tname);

  return 0;
}

после него ставишь выше код.
мой код нужно изменить под себя.

Как я понимаю мне нужно после изменения файла command.cpp перекомпилировать его?
Кто может опишите полностью подробный ход действий для реализации данной команды, то-есть скачивание, компиляция, замена файлов.

7

Re: Хост игры

да, конечно, без компиляции ничего не будет smile

Добавлено: 11.02.2014 20:30

Если не шаришь, то не трогай ничего.

8

Re: Хост игры

Информацию из этой статьи брать, я правильно понял harpywar.com/?a=articles&b=2 … mp;lang=ru

9

Re: Хост игры

да

10

Re: Хост игры

Smart, по той статье не стоит действовать из-за множества ненужных действий. Сейчас она нужна только для ознакомления того, как можно приготовить проект Visual Studio вручную. Это все делает PvPGN Magic Builder.

При необходимости редактирования кода быстрее и удобнее начать с PvPGN Development Kit. Об этом в другой статье harpywar.com/?a=articles&b=2 … 1&d=75

Do not ask for support in PM.

11 (edited by Smart 13.02.2014 16:15)

Re: Хост игры

Как разрешить всем игрокам выбрать иконку на свой выбор из стандартных.

12

Re: Хост игры

сделать команду для смены иконок и поставить его на cg 1.

Posts: 12

Pages 1

You must login or register to post a reply

Who now at forum

Currently view post: 1 guest, 0 registered users

forums.pvpgn.pro → [RU] Warcraft → Хост игры