Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] Tech Support → База Данных Для /stats

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 7

1

Topic: База Данных Для /stats

Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБО

2

Re: База Данных Для /stats

teamviewer.zevs wrote:

Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБО

Ну сделай так:
Модифицируй личку ну скажем для VOICE группы(дудька)
Ну вывод голубым (message_type_info)
И в stats сделай чтобы при использования команды отправлялось в личку бота команда !sd или как там.

3

Re: База Данных Для /stats

Gh0ster wrote:
teamviewer.zevs wrote:

Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБО

Ну сделай так:
Модифицируй личку ну скажем для VOICE группы(дудька)
Ну вывод голубым (message_type_info)
И в stats сделай чтобы при использования команды отправлялось в личку бота команда !sd или как там.

Я Этого Знаю big_smile Я хочу другой базу данных если нету прав на базу данных как его подключить говорю big_smile

4

Re: База Данных Для /stats

Что нужно что бы команда /stats отправляла боту omgstats команду !statsdota %username% ? big_smile big_smile big_smile

5 (edited by Gh0ster 08.11.2017 13:10)

Re: База Данных Для /stats

Cub_bone wrote:

Что нужно что бы команда /stats отправляла боту omgstats команду !statsdota %username% ? big_smile big_smile big_smile

Так начинаем:
идем в command.cpp
Ищем это:

static void do_whisper(t_connection * user_c, char const * dest, char const * text)
{
    t_connection * dest_c;
    char const *   tname;

    if (account_get_auth_mute(conn_get_account(user_c)) == 1)
    {
        message_send_text(user_c, message_type_error, user_c, "Вашему пользователю заблокирован чат.");
        return;
    }

    if (!(dest_c = connlist_find_connection_by_name(dest, conn_get_realm(user_c))))
    {
        message_send_text(user_c, message_type_error, user_c, "Этот пользователь не вошел на сервер.");
        return;
    }

    if (conn_get_dndstr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отклоняет сообщение (%.128s)", conn_get_username(dest_c), conn_get_dndstr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
        return;
    }

    message_send_text(user_c, message_type_whisperack, dest_c, text);

    if (conn_get_awaystr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отошел от компьютера (%.128s)", conn_get_username(dest_c), conn_get_awaystr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
    }

    message_send_text(dest_c, message_type_whisper, user_c, text);

    if ((tname = conn_get_username(user_c)))
    {
        char username[1 + MAX_USERNAME_LEN]; /* '*' + username (including NUL) */

        if (std::strlen(tname)<MAX_USERNAME_LEN)
        {
            std::sprintf(username, "*%s", tname);
            conn_set_lastsender(dest_c, username);
        }
    }
}

Ниже ставим это:

static void do_whisperbotu(t_connection * user_c, char const * dest, char const * text)
{
    t_connection * dest_c;
    char const *   tname;

    if (account_get_auth_mute(conn_get_account(user_c)) == 1)
    {
        message_send_text(user_c, message_type_error, user_c, "Вашему пользователю заблокирован чат.");
        return;
    }

    if (!(dest_c = connlist_find_connection_by_name(dest, conn_get_realm(user_c))))
    {
        message_send_text(user_c, message_type_error, user_c, "Этот пользователь не вошел на сервер.");
        return;
    }


    if (conn_get_awaystr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отошел от компьютера (%.128s)", conn_get_username(dest_c), conn_get_awaystr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
    }

    message_send_text(dest_c, message_type_whisper, user_c, text);

    if ((tname = conn_get_username(user_c)))
    {
        char username[1 + MAX_USERNAME_LEN]; /* '*' + username (including NUL) */

        if (std::strlen(tname)<MAX_USERNAME_LEN)
        {
            std::sprintf(username, "*%s", tname);
            conn_set_lastsender(dest_c, username);
        }
    }
}
static void do_whisperotbota(t_connection * user_c, char const * dest, char const * text)
{
    t_connection * dest_c;
    char const *   tname;

    if (account_get_auth_mute(conn_get_account(user_c)) == 1)
    {
        message_send_text(user_c, message_type_error, user_c, "Вашему пользователю заблокирован чат.");
        return;
    }

    if (!(dest_c = connlist_find_connection_by_name(dest, conn_get_realm(user_c))))
    {
        message_send_text(user_c, message_type_error, user_c, "Этот пользователь не вошел на сервер.");
        return;
    }

    if (conn_get_dndstr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отклоняет сообщение (%.128s)", conn_get_username(dest_c), conn_get_dndstr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
        return;
    }

    message_send_text(user_c, message_type_whisperack, dest_c, text);

    if (conn_get_awaystr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отошел от компьютера (%.128s)", conn_get_username(dest_c), conn_get_awaystr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
    }
    snprintf(msgtemp, sizeof(msgtemp), "%s", text);
    message_send_text(dest_c, message_type_info, user_c, msgtemp);

    if ((tname = conn_get_username(user_c)))
    {
        char username[1 + MAX_USERNAME_LEN]; /* '*' + username (including NUL) */

        if (std::strlen(tname)<MAX_USERNAME_LEN)
        {
            std::sprintf(username, "*%s", tname);
            conn_set_lastsender(dest_c, username);
        }
    }
}

Ищем

static void do_whisper(t_connection * user_c, char const * dest, char const * text);

Ниже ставим

static void do_whisperbotu(t_connection * user_c, char const * dest, char const * text);
static void do_whisperotbota(t_connection * user_c, char const * dest, char const * text);

Теперь надо отредактировать команду whisper:

static int _handle_whisper_command(t_connection * c, char const *text)
{
    t_account * account = conn_get_account(c);
  char         dest[MAX_USERNAME_LEN+MAX_REALMNAME_LEN]; /* both include NUL, so no need to add one for middle @ or * */
  unsigned int i,j;

  for (i=0; text[i]!=' ' && text[i]!='\0'; i++); /* skip command */
  for (; text[i]==' '; i++);
  for (j=0; text[i]!=' ' && text[i]!='\0'; i++) /* get dest */
    if (j<sizeof(dest)-1) dest[j++] = text[i];
  dest[j] = '\0';
  for (; text[i]==' '; i++);

  if ((dest[0]=='\0') || (text[i]=='\0'))
    {
      message_send_text(c,message_type_info,c,"Пример использования команды: /w (/whisper) nick {сообщение} (отправляет игроку nick {сообщение}");
      return 0;
    }
  if (account_get_auth_voice(account, NULL) == 1) 
  {
      do_whisperotbota(c, dest, &text[i]); // от имени бота вывод ответа лички будет синим
  }
  else
  {
      do_whisper(c, dest, &text[i]);
  }
  return 0;
}

Теперь идем в /stats:
Дописываем ниже кода:
перед началом выполнения кода

char const * bot = "omgstats"; 
{
snprintf(msgtemp,sizeof(msgtemp),"!statsdota %s",conn_get_loggeduser(c));
do_whisperbotu(c, bot, msgtemp);
    return 0; 
}
+1 Serc

6

Re: База Данных Для /stats

teamviewer.zevs wrote:

Я Этого Знаю big_smile Я хочу другой базу данных если нету прав на базу данных как его подключить говорю big_smile

Без доступа к "сторонней" базе вывести данные только посредством стандартных манипуляций - как выше написали !sd or !statsdota.
По причине того, что сервер не может брать данные из другой базы - базы сервер и базы ботов нужно объединять.
Вывод - только посредством стандартных манипуляций и парсинга строки вывод в виде как на айкапе.

З.Ы. Это же США который надувал щёки, что взломает базу робчика lol lol

7 (edited by Karaulov 14.11.2017 09:10)

Re: База Данных Для /stats

Gh0ster wrote:
+ show spoiler
Cub_bone wrote:

Что, нужно что бы команда /stats отправляла боту omgstats команду !statsdota %username% ? big_smile big_smile big_smile

Так начинаем:
идем в command.cpp
Ищем это:

static void do_whisper(t_connection * user_c, char const * dest, char const * text)
{
    t_connection * dest_c;
    char const *   tname;

    if (account_get_auth_mute(conn_get_account(user_c)) == 1)
    {
        message_send_text(user_c, message_type_error, user_c, "Вашему пользователю заблокирован чат.");
        return;
    }

    if (!(dest_c = connlist_find_connection_by_name(dest, conn_get_realm(user_c))))
    {
        message_send_text(user_c, message_type_error, user_c, "Этот пользователь не вошел на сервер.");
        return;
    }

    if (conn_get_dndstr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отклоняет сообщение (%.128s)", conn_get_username(dest_c), conn_get_dndstr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
        return;
    }

    message_send_text(user_c, message_type_whisperack, dest_c, text);

    if (conn_get_awaystr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отошел от компьютера (%.128s)", conn_get_username(dest_c), conn_get_awaystr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
    }

    message_send_text(dest_c, message_type_whisper, user_c, text);

    if ((tname = conn_get_username(user_c)))
    {
        char username[1 + MAX_USERNAME_LEN]; /* '*' + username (including NUL) */

        if (std::strlen(tname)<MAX_USERNAME_LEN)
        {
            std::sprintf(username, "*%s", tname);
            conn_set_lastsender(dest_c, username);
        }
    }
}

Ниже ставим это:

static void do_whisperbotu(t_connection * user_c, char const * dest, char const * text)
{
    t_connection * dest_c;
    char const *   tname;

    if (account_get_auth_mute(conn_get_account(user_c)) == 1)
    {
        message_send_text(user_c, message_type_error, user_c, "Вашему пользователю заблокирован чат.");
        return;
    }

    if (!(dest_c = connlist_find_connection_by_name(dest, conn_get_realm(user_c))))
    {
        message_send_text(user_c, message_type_error, user_c, "Этот пользователь не вошел на сервер.");
        return;
    }


    if (conn_get_awaystr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отошел от компьютера (%.128s)", conn_get_username(dest_c), conn_get_awaystr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
    }

    message_send_text(dest_c, message_type_whisper, user_c, text);

    if ((tname = conn_get_username(user_c)))
    {
        char username[1 + MAX_USERNAME_LEN]; /* '*' + username (including NUL) */

        if (std::strlen(tname)<MAX_USERNAME_LEN)
        {
            std::sprintf(username, "*%s", tname);
            conn_set_lastsender(dest_c, username);
        }
    }
}
static void do_whisperotbota(t_connection * user_c, char const * dest, char const * text)
{
    t_connection * dest_c;
    char const *   tname;

    if (account_get_auth_mute(conn_get_account(user_c)) == 1)
    {
        message_send_text(user_c, message_type_error, user_c, "Вашему пользователю заблокирован чат.");
        return;
    }

    if (!(dest_c = connlist_find_connection_by_name(dest, conn_get_realm(user_c))))
    {
        message_send_text(user_c, message_type_error, user_c, "Этот пользователь не вошел на сервер.");
        return;
    }

    if (conn_get_dndstr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отклоняет сообщение (%.128s)", conn_get_username(dest_c), conn_get_dndstr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
        return;
    }

    message_send_text(user_c, message_type_whisperack, dest_c, text);

    if (conn_get_awaystr(dest_c))
    {
        snprintf(msgtemp, sizeof(msgtemp), "%.64s отошел от компьютера (%.128s)", conn_get_username(dest_c), conn_get_awaystr(dest_c));
        message_send_text(user_c, message_type_info, user_c, msgtemp);
    }
    snprintf(msgtemp, sizeof(msgtemp), "%s", text);
    message_send_text(dest_c, message_type_info, user_c, msgtemp);

    if ((tname = conn_get_username(user_c)))
    {
        char username[1 + MAX_USERNAME_LEN]; /* '*' + username (including NUL) */

        if (std::strlen(tname)<MAX_USERNAME_LEN)
        {
            std::sprintf(username, "*%s", tname);
            conn_set_lastsender(dest_c, username);
        }
    }
}

Ищем

static void do_whisper(t_connection * user_c, char const * dest, char const * text);

Ниже ставим

static void do_whisperbotu(t_connection * user_c, char const * dest, char const * text);
static void do_whisperotbota(t_connection * user_c, char const * dest, char const * text);

Теперь надо отредактировать команду whisper:

static int _handle_whisper_command(t_connection * c, char const *text)
{
    t_account * account = conn_get_account(c);
  char         dest[MAX_USERNAME_LEN+MAX_REALMNAME_LEN]; /* both include NUL, so no need to add one for middle @ or * */
  unsigned int i,j;

  for (i=0; text[i]!=' ' && text[i]!='\0'; i++); /* skip command */
  for (; text[i]==' '; i++);
  for (j=0; text[i]!=' ' && text[i]!='\0'; i++) /* get dest */
    if (j<sizeof(dest)-1) dest[j++] = text[i];
  dest[j] = '\0';
  for (; text[i]==' '; i++);

  if ((dest[0]=='\0') || (text[i]=='\0'))
    {
      message_send_text(c,message_type_info,c,"Пример использования команды: /w (/whisper) nick {сообщение} (отправляет игроку nick {сообщение}");
      return 0;
    }
  if (account_get_auth_voice(account, NULL) == 1) 
  {
      do_whisperotbota(c, dest, &text[i]); // от имени бота вывод ответа лички будет синим
  }
  else
  {
      do_whisper(c, dest, &text[i]);
  }
  return 0;
}

Теперь идем в /stats:
Дописываем ниже кода:
перед началом выполнения кода

char const * bot = "omgstats"; 
{
snprintf(msgtemp,sizeof(msgtemp),"!statsdota %s",conn_get_loggeduser(c));
do_whisperbotu(c, bot, msgtemp);
    return 0; 
}

Да нет вопрос был автору темы)))) Видимо нужно было после "Что" поставить запятую smile

Posts: 7

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] Tech Support → База Данных Для /stats