Topic: База Данных Для /stats
Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБО
PvPGN Community Forums |
forums.pvpgn.pro → [RU] Tech Support → База Данных Для /stats
Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБО
Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБО
Ну сделай так:
Модифицируй личку ну скажем для VOICE группы(дудька)
Ну вывод голубым (message_type_info)
И в stats сделай чтобы при использования команды отправлялось в личку бота команда !sd или как там.
teamviewer.zevs wrote:Кто Знает можно ли на команду /stats можно добавить чужых базу данных? Пример: omg-stats
Кто Знает? Ответов Жду
ЗА РАНЕЕ СПАСИБОНу сделай так:
Модифицируй личку ну скажем для VOICE группы(дудька)
Ну вывод голубым (message_type_info)
И в stats сделай чтобы при использования команды отправлялось в личку бота команда !sd или как там.
Я Этого Знаю Я хочу другой базу данных если нету прав на базу данных как его подключить говорю
Что нужно что бы команда /stats отправляла боту omgstats команду !statsdota %username% ?
Что нужно что бы команда /stats отправляла боту omgstats команду !statsdota %username% ?
Так начинаем:
идем в 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;
}
Я Этого Знаю Я хочу другой базу данных если нету прав на базу данных как его подключить говорю
Без доступа к "сторонней" базе вывести данные только посредством стандартных манипуляций - как выше написали !sd or !statsdota.
По причине того, что сервер не может брать данные из другой базы - базы сервер и базы ботов нужно объединять.
Вывод - только посредством стандартных манипуляций и парсинга строки вывод в виде как на айкапе.
З.Ы. Это же США который надувал щёки, что взломает базу робчика
+ show spoilerCub_bone wrote:Что, нужно что бы команда /stats отправляла боту omgstats команду !statsdota %username% ?
Так начинаем:
идем в 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; }
Да нет вопрос был автору темы)))) Видимо нужно было после "Что" поставить запятую
forums.pvpgn.pro → [RU] Tech Support → База Данных Для /stats