Topic: Хост игры
Что за функция отвечает за хост игры с помощью команды на канале.
Подобную видел на alkare.
В окне вводишь команду
chost "карта" "название хост игры"
PvPGN Community Forums |
forums.pvpgn.pro → [RU] Warcraft → Хост игры
Что за функция отвечает за хост игры с помощью команды на канале.
Подобную видел на alkare.
В окне вводишь команду
chost "карта" "название хост игры"
нет такой функции или команды. надо дописать самому.
Добавлено: 06.02.2014 17:16
можешь сделать команду которая будет отправлять боту сообщение типа:
!load config
!pub name
Добавлено: 06.02.2014 21:05
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;
}
нет такой функции или команды. надо дописать самому.
Добавлено: 06.02.2014 17:16
можешь сделать команду которая будет отправлять боту сообщение типа:
!load config
!pub nameДобавлено: 06.02.2014 21:05
+ show spoilerstatic 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.
При регистрации своего аккаунта почту указывал.
Можешь сказать как её внедрить в 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;
}
после него ставишь выше код.
мой код нужно изменить под себя.
Кстати как убрать сообщение - You Have no mail.
При регистрации своего аккаунта почту указывал.
Это переводится "У вас нет сообщений". См. команду /mail, её сделали по аналогии с unix системами. Это "внутренняя" почта, и с реальной электронной почтой никак не связано.
В PvPGN про нее мало кто знает и практически никто из игроков не использует, за ненадобностью.
Можешь сказать как её внедрить в 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 перекомпилировать его?
Кто может опишите полностью подробный ход действий для реализации данной команды, то-есть скачивание, компиляция, замена файлов.
да, конечно, без компиляции ничего не будет
Добавлено: 11.02.2014 20:30
Если не шаришь, то не трогай ничего.
Информацию из этой статьи брать, я правильно понял harpywar.com/?a=articles&b=2 … mp;lang=ru
Smart, по той статье не стоит действовать из-за множества ненужных действий. Сейчас она нужна только для ознакомления того, как можно приготовить проект Visual Studio вручную. Это все делает PvPGN Magic Builder.
При необходимости редактирования кода быстрее и удобнее начать с PvPGN Development Kit. Об этом в другой статье harpywar.com/?a=articles&b=2 … 1&d=75
Как разрешить всем игрокам выбрать иконку на свой выбор из стандартных.
forums.pvpgn.pro → [RU] Warcraft → Хост игры