Skip to forum content

You are not logged in. Please login or register.


forums.pvpgn.pro → [RU] The Source Code → Команда /host

Pages 1

You must login or register to post a reply

RSS topic feed

Posts: 136

1 (edited by SkyFall 18.11.2016 21:41)

Topic: Команда /host

Наконец доработал команды для бота )
изменил: /host /bot /swap /unhost /open /close /openall /closeall
- при выборе бота игроку даёт account_set_bot и имя бота
потом при использование /host ему создаёт игру и он не может выбрать другого бота пока не унхостит игру
- добавил мод тб.
- При выборе мода игроку даёт account_set_host 2 тоесть 1 это простая дота 2 с тб модом и потом сделаю 3 для кустом карт
- код чуть уменшил а то в тот раз было очень длинный код )
- при использование /start игрока проверяет если он выбрал тб мод то напишет !sp и !startn
не стану описывать большой код лучше выложу все файлы которые понадобится

Post's attachments

Attachment icon botcommands.zip 101.79 kb, 73 downloads since 2016-11-18 

2

Re: Команда /host

для чего эти команды

handle_hosted1_command

и тд..

3

Re: Команда /host

launcher wrote:

для чего эти команды

handle_hosted1_command

и тд..

чтобы тестировать понадобилось

Добавлено: 16.08.2016 14:56

Думаю завтра начну заниматься с модом tb
оно будет работать так: при команде хост если игрок выбрал мод например aptb или sdtb
то ему даётся auth_tb далее когда он пишет /start игрока проверяет если у него есть auth_tb тогда бот будет писать !sp и !startn

4

Re: Команда /host

jduuu big_smile  big_smile  [TB]

5 (edited by SkyFall 16.08.2016 22:12)

Re: Команда /host

launcher wrote:

jduuu big_smile  big_smile  [TB]

ждуу   big_smile  big_smile   лаунчер

6

Re: Команда /host

обьясни зачем

        extern int account_set_auth_host1(t_account * account, char const * channelname, int val)
        {
            char temp[256];

            if (!channelname)
                return account_set_boolattr(account, "BNET\\auth\\host1", val);

            std::sprintf(temp, "BNET\\auth\\host1\\%.100s", channelname);
            return account_set_boolattr(account, temp, val);
        }
BNET\\auth\\host1\\%.100s

7

Re: Команда /host

launcher wrote:

обьясни зачем

        extern int account_set_auth_host1(t_account * account, char const * channelname, int val)
        {
            char temp[256];

            if (!channelname)
                return account_set_boolattr(account, "BNET\\auth\\host1", val);

            std::sprintf(temp, "BNET\\auth\\host1\\%.100s", channelname);
            return account_set_boolattr(account, temp, val);
        }
BNET\\auth\\host1\\%.100s

в таком виде в базу попадает

8

Re: Команда /host

ну попал а что дальше. если swap start unhost/

BNET\\auth\\host1

что-то прописывается?

9

Re: Команда /host

launcher wrote:

ну попал а что дальше. если swap start unhost/

BNET\\auth\\host1

что-то прописывается?

при использования команды /host сервер даёт ему auth_host1 (овнера) потом когда он использует /start /unhost /swap проверяет игрока на овнера и действует

10

Re: Команда /host

можно же без этого. просто через хост создавал  игру. т.е не записывая и не проверяя в БД ?

Добавлено: 18.08.2016 07:21

можно же без этого. просто через хост создавал  игру. т.е не записывая и не проверяя в БД ?

11

Re: Команда /host

launcher wrote:

можно же без этого. просто через хост создавал  игру. т.е не записывая и не проверяя в БД ?

Добавлено: 18.08.2016 07:21

можно же без этого. просто через хост создавал  игру. т.е не записывая и не проверяя в БД ?

возможно но так легче + багов не будет

12

Re: Команда /host

попробую твое записать))

Добавлено: 18.08.2016 07:34

кстати а ты знаешь как можно с  одного  бота создавать /host  много игр? типа как  у ICCUP
там несколько  ботов а создаются  много игр

13

Re: Команда /host

launcher wrote:

попробую твое записать))

Добавлено: 18.08.2016 07:34

кстати а ты знаешь как можно с  одного  бота создавать /host  много игр? типа как  у ICCUP
там несколько  ботов а создаются  много игр

это нужно в боте правит

14

Re: Команда /host

кому нужен форум  + статистика  дота карты.
форум : SMF регистрация  связана с базой данных PVPGN

15

Re: Команда /host

launcher wrote:

кому нужен форум  + статистика  дота карты.
форум : SMF регистрация  связана с базой данных PVPGN

всем если бесплатно )

16

Re: Команда /host

да . щас дизайн переделываю и закину) smile  smile

17

Re: Команда /host

launcher wrote:

да . щас дизайн переделываю и закину) smile  smile

спасибо )

Добавлено: 18.08.2016 08:27

я сделал команду /bot как в икапе
а потом /host правил
но когда используешь команду /host ничего такого не случается (боту не пишет)
надеюсь harpywar поможет с этим проблемом)

18

Re: Команда /host

у меня получается он просто сразу боту отправляет сообщение.

19

Re: Команда /host

launcher wrote:

у меня получается он просто сразу боту отправляет сообщение.

да не я не об этой сборке.
я делал по новому и кинул харпи в личку надеюсь поможет
там сначало выберишь себе бота с командой /bot
потом с командой /host создаёшь игру

20

Re: Команда /host

скинь мне тоже плзЗ))) давно мечтал  об  такой))))

21

Re: Команда /host

launcher wrote:

скинь мне тоже плзЗ))) давно мечтал  об  такой))))

будет готова скину

Добавлено: 18.08.2016 10:37

launcher wrote:

да . щас дизайн переделываю и закину) smile  smile

что там?  smile

22

Re: Команда /host

Harpywar, помоги пожалуйста с командой /host
Сделал команду /bot работает отлично
но когда использую /host ничего не происходит
пожалуйста скажи в чём дело

Post's attachments

Attachment icon command.zip 63.71 kb, 70 downloads since 2016-08-17 

23

Re: Команда /host

SkyFall wrote:
launcher wrote:

скинь мне тоже плзЗ))) давно мечтал  об  такой))))

будет готова скину

Добавлено: 18.08.2016 10:37

launcher wrote:

да . щас дизайн переделываю и закину) smile  smile

что там?  smile

в процессе .

24

Re: Команда /host

launcher wrote:
SkyFall wrote:
launcher wrote:

скинь мне тоже плзЗ))) давно мечтал  об  такой))))

будет готова скину

Добавлено: 18.08.2016 10:37

launcher wrote:

да . щас дизайн переделываю и закину) smile  smile

что там?  smile

в процессе .

хорошо  smile

25

Re: Команда /host

а как быть

account_set_auth_bot1

если одновременно два игрока нажмут бот и 1 игрок бот2 и 2 игрок тоже бот2
то на базе что произойдет?

26

Re: Команда /host

launcher wrote:

а как быть

account_set_auth_bot1

если одновременно два игрока нажмут бот и 1 игрок бот2 и 2 игрок тоже бот2
то на базе что произойдет?

первому кто пишет бот создаёт а второму пишет бот занят

27

Re: Команда /host

ну а у айкапа совсем другой же.. все боты свободны. сидя в пабе создают. neutral

28

Re: Команда /host

launcher wrote:

ну а у айкапа совсем другой же.. все боты свободны. сидя в пабе создают. neutral

я сделал серверную часть
а там боты создают без ограничений одновременно

Добавлено: 18.08.2016 13:39

надеюсь Harpywar поможет

29

Re: Команда /host

если я  разберусь помогу щас компилирую)

30

Re: Команда /host

launcher wrote:

если я  разберусь помогу щас компилирую)

там боту сообщений не пишется в этом и проблема

31

Re: Команда /host

т.е !host не отправляется так?

32 (edited by SkyFall 18.08.2016 13:47)

Re: Команда /host

launcher wrote:

т.е !host не отправляется так?

да можешь помоч?

33

Re: Команда /host

щас компиляция долго грузит у меня((.

34

Re: Команда /host

launcher wrote:

щас компиляция долго грузит у меня((.

что там?

35

Re: Команда /host

почему то в  бз не записывается account_set_auth_bot1 и тд..

36

Re: Команда /host

launcher wrote:

почему то в  бз не записывается account_set_auth_bot1 и тд..

/bot - записывается но если ты на компе тестируешь то поздно записывает на бд но на сервере работает без опозданий ну короче всё с ним норм

37

Re: Команда /host

там так  и должно  быть  false ??

38

Re: Команда /host

launcher wrote:

там так  и должно  быть  false ??

какого бота ты выбрал должен быть true
а остальные 3 бота должны быть false

39

Re: Команда /host

Используйте: /host [тип] [мод] [названия игры]
у тебя что и  тип есть это  5x5 3x3 дА???

40

Re: Команда /host

launcher wrote:

Используйте: /host [тип]

нет не правил ещо
его нужно в боте сделать чтобы когда набралось 10 игроков тогда хост мог бы стартануть

41

Re: Команда /host

у тебя не отправляется команды ты не добавил  do_whisper_ smile

Добавлено: 18.08.2016 14:44

Слушай чтобы были боты 1 2 3 4
нжуны 4 хост бота  так ????

42

Re: Команда /host

launcher wrote:

у тебя не отправляется команды ты не добавил  do_whisper_ smile

Добавлено: 18.08.2016 14:44

вместо do_whisper есть message_type_whisper
Слушай чтобы были боты 1 2 3 4
нжуны 4 хост бота  так ????

да

43

Re: Команда /host

SkyfaLL,    

snprintf(msgtemp3, sizeof(msgtemp3), "!modprotected %s",game_mode);

может сделать автоматические моды?? типа ap/sd/cm не прописывая через !modprotected

Добавлено: 18.08.2016 16:18

твоя ошибка тут..

if (account_get_auth_bot4(account,NULL)==1)
    {
        //
        if (account_get_auth_bot4on(acc4,NULL)==1)
    {
        message_send_text(c,message_type_info,c,"bot zanyat");
    }
        if (account_get_auth_bot4on(acc4,NULL)==0)

тут что то не так.

44

Re: Команда /host

launcher wrote:

SkyfaLL,    

snprintf(msgtemp3, sizeof(msgtemp3), "!modprotected %s",game_mode);

может сделать автоматические моды?? типа ap/sd/cm не прописывая через !modprotected

Добавлено: 18.08.2016 16:18

твоя ошибка тут..

if (account_get_auth_bot4(account,NULL)==1)
    {
        //
        if (account_get_auth_bot4on(acc4,NULL)==1)
    {
        message_send_text(c,message_type_info,c,"bot zanyat");
    }
        if (account_get_auth_bot4on(acc4,NULL)==0)

тут что то не так.

1. что ты имеешь ввиду про автомачический мод
2.там всё обычно потом исправлю если повезёт

45

Re: Команда /host

1. что ты имеешь ввиду про автомачический мод

(!std::strcmp(game_mode,"ap")

и тд.
2.там всё обычно потом исправлю если повезёт
обьясни

}
        if (account_get_auth_bot4on(acc4,NULL)==1)

и

}
        if (account_get_auth_bot4on(acc4,NULL)==0)

что они делают 0 и 1?

46

Re: Команда /host

launcher wrote:

1. что ты имеешь ввиду про автомачический мод

(!std::strcmp(game_mode,"ap")

и тд.
2.там всё обычно потом исправлю если повезёт
обьясни

}
        if (account_get_auth_bot4on(acc4,NULL)==1)

и

}
        if (account_get_auth_bot4on(acc4,NULL)==0)

что они делают 0 и 1?

0 значит бот не занят а 1 значит занят.
когда создаёшь игру боту даётся auth_bot4on 1
и он становиться занятым а когда  /unhost или /start
боту даётся auth_bot4on 0 - что становиться готов создавать ещо игр

47

Re: Команда /host

но почему то в этих кодах что то не выполняется. не передается команды  neutral  neutral

48

Re: Команда /host

launcher wrote:

но почему то в этих кодах что то не выполняется. не передается команды  neutral  neutral

дела в операторах (if)
что ни будь придумаю

49

Re: Команда /host

и как можно записать?

50

Re: Команда /host

launcher wrote:

и как можно записать?

что записать?

51

Re: Команда /host

SkyFall wrote:
launcher wrote:

но почему то в этих кодах что то не выполняется. не передается команды  neutral  neutral

дела в операторах (if)
что ни будь придумаю

52

Re: Команда /host

кажется я нашол в чем проблема щас займусь

53

Re: Команда /host

хорошо отпишись что и как . а то я попытал все не получилось тоже

Добавлено: 18.08.2016 21:28

получилось?

54

Re: Команда /host

launcher wrote:

хорошо отпишись что и как . а то я попытал все не получилось тоже

Добавлено: 18.08.2016 21:28

получилось?

получается вроде smile
тестирую щас скомпилируется
(1-2 минут редактирую 10 минут компилирую )

55

Re: Команда /host

подскажешь что и где править?

56

Re: Команда /host

текущее состояние

static int _handle_host_command(t_connection * c, char const * text)
{
    t_account *    account;
    account = conn_get_account(c);
    t_account *    acc1;
    t_account *    acc2;
    t_account *    acc3;
    t_account *    acc4;
    t_connection * user;
    t_connection * unhost;
    char *    game_type;
    char *    game_mode;
    char *    game_name;
    char     t[MAX_MESSAGE_LEN];
    unsigned int i,j;
    char    arg1[256];
    char    arg2[256];
    char    arg3[256];
 char const * bot1="Uz.1";
 char const * bot2="Uz.2";
 char const * bot3="Uz.3";
 char const * bot4="Uz.4";
    std::strncpy(t, text, MAX_MESSAGE_LEN - 1);
    for (i=0; t[i]!=' ' && t[i]!='\0'; i++); 
    for (; t[i]==' '; i++); 

    for (j=0; t[i]!=' ' && t[i]!='\0'; i++) 
        if (j<sizeof(arg1)-1) arg1[j++] = t[i];
            arg1[j] = '\0';
 
    for (; t[i]==' '; i++); 
    for (j=0; t[i]!='\0'; i++) 
        if (j<sizeof(arg2)-1) arg2[j++] = t[i];
            arg2[j] = '\0';
 for (; t[i]==' '; i++); 
    for (j=0; t[i]!='\0'; i++) 
        if (j<sizeof(arg3)-1) arg3[j++] = t[i];
            arg3[j] = '\0';

            acc1 = accountlist_find_account(bot1);
            acc2 = accountlist_find_account(bot2);
            acc3 = accountlist_find_account(bot3);
            acc4 = accountlist_find_account(bot4);
    game_type = arg1;
    game_mode = arg2;
    game_name = arg3;
    if (arg1[0] =='\0') {
        message_send_text(c,message_type_info,c,"Используйте: /host [тип] [мод] [названия игры]");
    }
    
    else if (account_get_auth_bot1host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    else if (account_get_auth_bot2host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    else if (account_get_auth_bot3host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    else if (account_get_auth_bot4host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    

    

    //custom
    else if (account_get_auth_cbot1host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    else if (account_get_auth_cbot2host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    else if (account_get_auth_cbot3host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    else if (account_get_auth_cbot4host(account,NULL)==1)
        {
        message_send_text(c,message_type_info,c,"У вас уже есть созданная игра!");
    }
    
    else if ((account_get_auth_bot1(account, NULL) == 1) || (account_get_auth_bot1on(acc1, NULL) == 0))
    {
        t_account * stats = accountlist_find_account( bot1 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            
                snprintf(msgtemp3, sizeof(msgtemp3), "!load dota");
        message_send_text(conn,message_type_whisper,conn, msgtemp3);
            snprintf(msgtemp, sizeof(msgtemp), "!pubby %s %s %s %s",account_get_name(conn_get_account(c)),game_type,game_mode,game_name);
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        snprintf(msgtemp3, sizeof(msgtemp3), "!modprotected %s",game_mode);
        message_send_text(conn,message_type_whisper,conn, msgtemp3); 
        account_set_auth_bot1on(stats,NULL,1);
        account_set_auth_bot1host(account,NULL,1);
        snprintf(msgtemp4, sizeof(msgtemp4), "Ваша игра создана");
        message_send_text(c,message_type_info,c,msgtemp4);
        
    } else {
         if (!(user = connlist_find_connection_by_accountname(bot1))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}
        return 0;
    }
    //bot2
    else if ((account_get_auth_bot2(account, NULL) == 1) || (account_get_auth_bot2on(acc2, NULL) == 0))
    {
        
        t_account * stats = accountlist_find_account( bot2 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            
                snprintf(msgtemp3, sizeof(msgtemp3), "!load dota");
        message_send_text(conn,message_type_whisper,conn, msgtemp3);
            snprintf(msgtemp, sizeof(msgtemp), "!pubby %s %s %s %s",account_get_name(conn_get_account(c)),game_type,game_mode,game_name);
        message_send_text(conn,message_type_whisper,conn, msgtemp);
                snprintf(msgtemp3, sizeof(msgtemp3), "!modprotected %s",game_mode);
        message_send_text(conn,message_type_whisper,conn, msgtemp3); 
        account_set_auth_bot2on(stats,NULL,1);
        account_set_auth_bot2host(account,NULL,1);
        snprintf(msgtemp4, sizeof(msgtemp4), "Ваша игра создана");
        message_send_text(c,message_type_info,c,msgtemp4);
        
    } else {
         if (!(user = connlist_find_connection_by_accountname(bot2))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}
    
        //
        return 0;
    }
    //bot3
    else if ((account_get_auth_bot3(account, NULL) == 1) || (account_get_auth_bot3on(acc3, NULL) == 0))
    {
        t_account * stats = accountlist_find_account( bot3 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            
                snprintf(msgtemp3, sizeof(msgtemp3), "!load dota");
        message_send_text(conn,message_type_whisper,conn, msgtemp3);
            snprintf(msgtemp, sizeof(msgtemp), "!pubby %s %s %s %s",account_get_name(conn_get_account(c)),game_type,game_mode,game_name);
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        snprintf(msgtemp3, sizeof(msgtemp3), "!modprotected %s",game_mode);
        message_send_text(conn,message_type_whisper,conn, msgtemp3); 
        account_set_auth_bot3on(stats,NULL,1);
        account_set_auth_bot3host(account,NULL,1);
        snprintf(msgtemp4, sizeof(msgtemp4), "Ваша игра создана");
        message_send_text(c,message_type_info,c,msgtemp4);
        
    } else {
         if (!(user = connlist_find_connection_by_accountname(bot3))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}

        //
        return 0;
    }
        //bot4
    else if ((account_get_auth_bot4(account, NULL) == 1) || (account_get_auth_bot4on(acc4, NULL) == 0))
    {
        
        t_account * stats = accountlist_find_account( bot4 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            
                snprintf(msgtemp3, sizeof(msgtemp3), "!load dota");
        message_send_text(conn,message_type_whisper,conn, msgtemp3);
            snprintf(msgtemp, sizeof(msgtemp), "!pubby %s %s %s %s",account_get_name(conn_get_account(c)),game_type,game_mode,game_name);
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        snprintf(msgtemp3, sizeof(msgtemp3), "!modprotected %s",game_mode);
        message_send_text(conn,message_type_whisper,conn, msgtemp3); 
        account_set_auth_bot4on(stats,NULL,1);
        account_set_auth_bot4host(account,NULL,1);
        snprintf(msgtemp4, sizeof(msgtemp4), "Ваша игра создана");
        message_send_text(c,message_type_info,c,msgtemp4);
        
    } else {
         if (!(user = connlist_find_connection_by_accountname(bot4))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}

        //
        

        return 0;
    }



  return 0;
}

57 (edited by launcher 18.08.2016 21:37)

Re: Команда /host

т.е он создается отправляется боту??
БЕз ошибок?

58

Re: Команда /host

launcher wrote:

т.е он создается отправляется боту??
БЕз ошибок?

щас сделаю жди  smile

59

Re: Команда /host

ВОПРОС. почему при входе в паб чат пишу /host mdode gamename -игра создается не пишет что выберите бота ....
Он создает сразу с того бота который свободен в чате . так и должен быть???

60

Re: Команда /host

извени я в доту 1 раз  big_smile

Добавлено: 18.08.2016 21:42

launcher wrote:

ВОПРОС. почему при входе в паб чат пишу /host mdode gamename -игра создается не пишет что выберите бота ....
Он создает сразу с того бота который свободен в чате . так и должен быть???

я потом правлю ничего сложного нет

61

Re: Команда /host

Тот который скинул код . Он работает норма?

62

Re: Команда /host

launcher wrote:

Тот который скинул код . Он работает норма?

какой?

63

Re: Команда /host

Текущее состляние написал же... или еще переделал?

64

Re: Команда /host

launcher wrote:

Текущее состляние написал же... или еще переделал?

переделаю

Добавлено: 18.08.2016 22:04

всё начало работать на ура  big_smile
завтра закончу

65

Re: Команда /host

Для теста отправишь  когда закончишь?)))

66

Re: Команда /host

launcher wrote:

Для теста отправишь  когда закончишь?)))

да  smile

67

Re: Команда /host

SkyFall nu kak tam?) smile

68 (edited by SkyFall 19.08.2016 12:06)

Re: Команда /host

ну вот  smile  потом поправлю кое какие вещи ещо

Post's attachments

Attachment icon command.zip 54.11 kb, 65 downloads since 2016-08-19 

69

Re: Команда /host

какие вещи  roll

70

Re: Команда /host

launcher wrote:

какие вещи  roll

баги и дополнения

71 (edited by launcher 19.08.2016 16:32)

Re: Команда /host

исправил баги и дополнения?

Добавлено: 19.08.2016 18:31

что то код не правильно у тебя работает /bot и /host
создается с того бота который свободный. не пишет выберите бота (((
когда выбераю бота и создаю то пишет вы создали игру!. а я еще не создавал

72

Re: Команда /host

launcher wrote:

когда выбераю бота и создаю то пишет вы создали игру!. а я еще не создавал

обясни не понял

Добавлено: 19.08.2016 16:45

бот должен быть готов создавать и не быть в оффлайне тогда багов не будет

73

Re: Команда /host

да мой бот всегда онлайн.  я  еще не создавал когда пишу /host mod gamename то пишет уже создалась

74

Re: Команда /host

launcher wrote:

да мой бот всегда онлайн.  я  еще не создавал когда пишу /host mod gamename то пишет уже создалась

попробуй /unhost писать или создай новый акк

75 (edited by launcher 19.08.2016 19:11)

Re: Команда /host

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

76

Re: Команда /host

launcher wrote:

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

нет

77

Re: Команда /host

да. я проверил тестировал  зарегал ник. создал игру написал !Unhost и заного создал.
пишет бот занят. можно же как нибудь без  база данных сделать команду? чтобы туда не записывалась??

78

Re: Команда /host

launcher wrote:

да. я проверил тестировал  зарегал ник. создал игру написал !Unhost и заного создал.
пишет бот занят. можно же как нибудь без  база данных сделать команду? чтобы туда не записывалась??

надо писать /unhost
когда пишеш /unhost юзер и бот освободятся

79

Re: Команда /host

/unhost почемуто не работает???
пишу /unhost отправляется сообщение Your game is completed. но не закрывает игру  sad

80

Re: Команда /host

launcher wrote:

/unhost почемуто не работает???
пишу /unhost отправляется сообщение Your game is completed. но не закрывает игру  sad

а боту идёт сообщение?

81

Re: Команда /host

неа. не  отправляется

82

Re: Команда /host

launcher wrote:

неа. не  отправляется

скрын покажи

83

Re: Команда /host

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

84

Re: Команда /host

launcher wrote:

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

на одном боте можно создать только 1 игру

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

85

Re: Команда /host

SkyFall, возможно ли сделать чтобы /host не записывалась в базе данных???

86

Re: Команда /host

можно сделать txt файл откуда будет брать ники ботов, а не из бд.

87

Re: Команда /host

помоги с txt файлом. а то  у  меня бд долго грузится и игроки как то  тупо ждут(((

88

Re: Команда /host

fopen fclose fprintf. пора бы начать смотреть видеоуроки по си.

89

Re: Команда /host

а у меня pvpgn работает очень быстро с бд  big_smile

90

Re: Команда /host

SkyFall дело в том что если игрок создал игру apso names, и не написав unhost вышел с сервера  и через некоторое время зайдет на сервр. пишет /host а в базе данных у него остается что от уже создавал игру. и ему приходится писать /unhost и создаватть..

а игрокищас ни все умные)))

91

Re: Команда /host

без проблем сделаю как на айкапе
если хост выйдет из игры то игра унхостуется big_smile
щас найду куда писать

92

Re: Команда /host

можно было бы сделать чтобы после выхода  хоста . игра через несколько сикунд сама унхостилась, ну если хост за это время будет офлайн

Добавлено: 18.09.2016 20:59

сможешь сделать такой хост и унхост  как у этого сервера battle.net.kg/ yikes  yikes

93 (edited by SkyFall 18.09.2016 20:00)

Re: Команда /host

ты тоже попробуй )
ну короче в game.cpp менял

extern int game_del_player(t_game * game, t_connection * c)
{
    char const * tname;
    unsigned int i;
    t_account *  account;

    if (!game)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL game");
        return -1;
    }
    if (!c)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");
    return -1;
    }
    if (!game->players)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"player array is NULL");
    return -1;
    }
    if (!game->reported_results)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"reported results array is NULL");
    return -1;
    }
    account = conn_get_account(c);

   if(conn_get_leavegamewhisper_ack(c)==0)
     {
       watchlist->dispatch(conn_get_account(c), NULL, conn_get_clienttag(c), Watch::ET_leavegame);
       conn_set_leavegamewhisper_ack(c,1); //1 = already whispered. We reset this each std::time user joins a channel
     }

    eventlog(eventlog_level_debug,__FUNCTION__,"game \"%s\" has ref=%u, count=%u; trying to remove player \"%s\"",game_get_name(game),game->ref,game->count,account_get_name(account));

    for (i=0; i<game->count; i++)
    if (game->players[i]==account && game->connections[i])
    {
        eventlog(eventlog_level_debug,__FUNCTION__,"removing player #%u \"%s\" from \"%s\", %u players left",i,(tname = account_get_name(account)),game_get_name(game),game->ref-1);
        game->connections[i] = NULL;
        if (!(game->reported_results[i]))
        eventlog(eventlog_level_debug,__FUNCTION__,"player \"%s\" left without reporting (valid) results",tname);

        eventlog(eventlog_level_debug,__FUNCTION__,"player deleted... (ref=%u)",game->ref);

        if (game->ref<2)
        {
            eventlog(eventlog_level_debug,__FUNCTION__,"no more players, reporting game");
        game_report(game);
            eventlog(eventlog_level_debug,__FUNCTION__,"no more players, destroying game");
        game_destroy(game);
            return 0;
        }

        game->ref--;
            game->lastaccess_time = now;

        game_choose_host(game);
        unsigned int i,j;
    t_connection *    user;
    t_game     *    game;
        char const * bot1="Uz.1";
      char const * bot2="Uz.2";
      char const * bot3="Uz.3";
      char const * bot4="Uz.4";
      char const * cbot1="Custom.1";
      char const * cbot2="Custom.2";
      char const * cbot3="Custom.3";
      char const * cbot4="Custom.4";
      char msgtemp[MAX_MESSAGE_LEN];

        if (account_get_auth_bot1host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( bot1 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_bot1host(account,NULL,0);
        account_set_auth_bot1on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    else if (account_get_auth_bot2host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( bot2 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_bot2host(account,NULL,0);
        account_set_auth_bot2on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    else if (account_get_auth_bot3host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( bot3 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_bot3host(account,NULL,0);
        account_set_auth_bot3on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    else if (account_get_auth_bot4host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( bot4 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_bot4host(account,NULL,0);
        account_set_auth_bot4on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    //Custom
    else if (account_get_auth_cbot1host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( cbot1 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_cbot1host(account,NULL,0);
        account_set_auth_cbot1on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    else if (account_get_auth_cbot2host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( cbot2 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_cbot2host(account,NULL,0);
        account_set_auth_cbot2on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    else if (account_get_auth_cbot3host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( cbot3 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_cbot3host(account,NULL,0);
        account_set_auth_cbot3on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}
    else if (account_get_auth_cbot4host(account,NULL)==1)
    {
    t_account * stats = accountlist_find_account( cbot4 );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhostprotected");
        message_send_text(conn,message_type_whisper,conn, msgtemp);
        account_set_auth_cbot4host(account,NULL,0);
        account_set_auth_cbot4on(stats,NULL,0);
        message_send_text(c,message_type_info,c,"Ваша игра завершена!");
    }
}

        return 0;
    }

    eventlog(eventlog_level_error,__FUNCTION__,"player \"%s\" was not in the game",account_get_name(account));
    return -1;
}

Добавлено: 18.09.2016 20:57

launcher wrote:

сможешь сделать такой хост и унхост  как у этого сервера battle.net.kg/ yikes  yikes

у меня нет профиля тама

94

Re: Команда /host

skfall можешь свой/host  и /unhost  дать который ты используешь на  данный момент. на сервере  буду  тестировать roll  roll

95

Re: Команда /host

я ничего там не менял

Добавлено: 18.09.2016 21:20

ну вот в handle_bnet.cpp изменил
смотря на птс даёт иконку и дотаранк
и конечно же при заходе на канал

static int _client_joinchannel(t_connection * c, t_packet const *const packet)
{
    t_account *account;
    char const *cname;
    int found = 1;
    t_clan *user_clan;
    t_clantag clantag;
    t_uint32 clienttag;
    t_channel *channel;
    t_message *  message;
    char ctag[5];
    t_elem const *  curr;
  t_connection *  tc;
  char const *    nick;
  t_bnettime  btsystem;
  t_bnettime  btlocal;
  std::time_t      now;
  struct std::tm * tmnow;
   btsystem = bnettime();
    unsigned int i,j;
    if (packet_get_size(packet) < sizeof(t_client_joinchannel)) {
    eventlog(eventlog_level_error, __FUNCTION__, "[%d] got bad JOINCHANNEL packet (expected %lu bytes, got %u)", conn_get_socket(c), sizeof(t_client_joinchannel), packet_get_size(packet));
    return -1;
    }

    account = conn_get_account(c);

    if (!(cname = packet_get_str_const(packet, sizeof(t_client_joinchannel), MAX_CHANNELNAME_LEN))) {
    eventlog(eventlog_level_error, __FUNCTION__, "[%d] got bad JOINCHANNEL (missing or too long cname)", conn_get_socket(c));
    return -1;
    }

    if ((channel = conn_get_channel(c)) && (strcasecmp(channel_get_name(channel), cname) == 0))
    return 0;        //we are allready in this channel
    //motd 
    t_account * myacc = conn_get_account( c );
    message_send_text(c,message_type_info,c,"♦-▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬♦");
    char * hello = new char[ MAX_MESSAGE_LEN ];
        snprintf( hello , MAX_MESSAGE_LEN , "Привет %s . Добро пожаловать на сервер Gals Telecom" , conn_get_username(c));
        message_send_text( c , message_type_info , c , hello );
    message_send_text(c,message_type_info,c,"♦-▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬♦");
        //
    if (ctag[0]=='\0') {
        char * usersonline = new char[ MAX_MESSAGE_LEN ];
        snprintf( usersonline , MAX_MESSAGE_LEN , "Сейчас на сервере %d игроков онлайн, На играх %d игроков",
        connlist_login_get_length(),
        gamelist_get_length());
    message_send_text(c,message_type_info,c,usersonline);
    tag_uint_to_str(ctag,conn_get_clienttag(c));
    }
     
    message_send_text(c,message_type_info,c,"♦-▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬♦");
    message_send_text(c,message_type_error,c,">▬ Ваша игровая статистика:");
    
    char * dotastats = new char[ MAX_MESSAGE_LEN ];
        snprintf( dotastats , MAX_MESSAGE_LEN , "[Wins: %u / Looses: %u]  %d pts" ,
            account_get_wins(myacc), account_get_looses(myacc) , account_get_pts(myacc));
        message_send_text( c , message_type_info , c , dotastats );
    message_send_text(c,message_type_info,c,"♦-▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬♦");
        
    
    clienttag = conn_get_clienttag(c);
    char const     *GTDS;
    char const     *PTS;
    char const     *NOOB;
    char const     *GTDM;
    char const     *GTDP;
    char const     *GTCM;
    char const     *GTCS;
    char const     *GTCP;
    char const     *GTBM;
    char const     *GTBS;
    char const     *GTBP;
    char const     *GTAM;
    char const     *GTAS;
    char const     *GTAP;
    char const     *DM;
    char const     *D;
    char const     *DP;
    char const     *CM;
    char const     *C;
    char const     *CP;
    char const     *BM;
    char const     *B;
    char const     *BP;
    char const     *AM;
    char const     *A;
    char const     *AP;
    NOOB = "BOON";
    GTDM = "ICDM";
    GTDS = "ICDS";
    GTDP = "ICDP";
    GTCM = "ICCM";
    GTCS = "ICCS";
    GTCP = "ICCP";
    GTBM = "ICBM";
    GTBS = "ICBS";
    GTBP = "ICBP";
    GTAM = "ICAM";
    GTAS = "ICAS";
    GTAP = "ICAP";
    DM = "D-";
    D = "D";
    DP = "D+";
    CM = "C-";
    C = "C";
    CP = "C+";
    BM = "B-";
    B = "B";
    BP = "B+";
    AM = "A-";
    A = "A";
    AP = "A+";

    

    if (account_get_pts(account)==0) // автомачический даётся птс мани и тд если у него 0
    {
    account_set_pts(account,1000);
    account_set_drank(account,D);
    account_set_money(account,5);
    account_set_user_icon(account,clienttag,GTDM); //D-
    }
    else if ((account_get_pts(account)>=1) && (account_get_pts(account)<=999))
    {
    account_set_user_icon(account,clienttag,GTDM); //D-
    account_set_drank(account,DM);
    }
    else if ((account_get_pts(account)>=1000) && (account_get_pts(account)<=1999))
    {
    account_set_user_icon(account,clienttag,GTDS); //D
    account_set_drank(account,D);
    }
    else if ((account_get_pts(account)>=2000) && (account_get_pts(account)<=2999))
    {
    account_set_user_icon(account,clienttag,GTDP); //D+
    account_set_drank(account,DP);
    }
    else if ((account_get_pts(account)>=3000) && (account_get_pts(account)<=3999))
    {
    account_set_user_icon(account,clienttag,GTCM); //C-
    account_set_drank(account,CM);
    }
    else if ((account_get_pts(account)>=4000) && (account_get_pts(account)<=4999))
    {
    account_set_user_icon(account,clienttag,GTCS); //C
    account_set_drank(account,C);
    }
    else if ((account_get_pts(account)>=5000) && (account_get_pts(account)<=5999))
    {
    account_set_user_icon(account,clienttag,GTCP); //C+
    account_set_drank(account,CP);
    }
    else if ((account_get_pts(account)>=6000) && (account_get_pts(account)<=6999))
    {
    account_set_user_icon(account,clienttag,GTBM); //B-
    account_set_drank(account,BM);
    }
    else if ((account_get_pts(account)>=7000) && (account_get_pts(account)<=7999))
    {
    account_set_user_icon(account,clienttag,GTBS); //B
    account_set_drank(account,B);
    }
    else if ((account_get_pts(account)>=8000) && (account_get_pts(account)<=8999))
    {
    account_set_user_icon(account,clienttag,GTBP); //B+
    account_set_drank(account,BP);
    }
    else if ((account_get_pts(account)>=9000) && (account_get_pts(account)<=9999))
    {
    account_set_user_icon(account,clienttag,GTAM); //A-
    account_set_drank(account,AM);
    }
    else if ((account_get_pts(account)>=10000) && (account_get_pts(account)<=10999))
    {
    account_set_user_icon(account,clienttag,GTAS); //A
    account_set_drank(account,A);
    }
    if ((account_get_pts(account)>=11000) && (account_get_pts(account)<=11999))
    {
    account_set_user_icon(account,clienttag,GTAP); //A+
    account_set_drank(account,AP);
    }
    //
    std::string tmpstr;
    clienttag = conn_get_clienttag(c);
    if ((clienttag == CLIENTTAG_WARCRAFT3_UINT) || (clienttag == CLIENTTAG_WAR3XP_UINT)) {
    conn_update_w3_playerinfo(c);
    switch (bn_int_get(packet->u.client_joinchannel.channelflag)) {
        case CLIENT_JOINCHANNEL_NORMAL:
        eventlog(eventlog_level_info, __FUNCTION__, "[%d] CLIENT_JOINCHANNEL_NORMAL channel \"%s\"", conn_get_socket(c), cname);

        if (prefs_get_ask_new_channel() && (!(channellist_find_channel_by_name(cname, conn_get_country(c), realm_get_name(conn_get_realm(c)))))) {
            found = 0;
            eventlog(eventlog_level_info, __FUNCTION__, "[%d] didn't find channel \"%s\" to join", conn_get_socket(c), cname);
            message_send_text(c, message_type_channeldoesnotexist, c, cname);
        }
        break;
        case CLIENT_JOINCHANNEL_GENERIC:

        if ((user_clan = account_get_clan(account)) && (clantag = clan_get_clantag(user_clan)))
        {
            std::ostringstream ostr;
            ostr << "Team " << clantag_to_str(clantag);
            tmpstr = ostr.str();
            cname = tmpstr.c_str();
        }
        eventlog(eventlog_level_info, __FUNCTION__, "[%d] CLIENT_JOINCHANNEL_GENERIC channel \"%s\"", conn_get_socket(c), cname);

        /* don't have to do anything here */
        break;
        case CLIENT_JOINCHANNEL_CREATE:
        eventlog(eventlog_level_info, __FUNCTION__, "[%d] CLIENT_JOINCHANNEL_CREATE channel \"%s\"", conn_get_socket(c), cname);
        eventlog(eventlog_level_info, __FUNCTION__, "[%d] CLIENT_JOINCHANNEL_CREATE channel \"%s\"", conn_get_socket(c), cname);
        /* don't have to do anything here */
        break;
    }

    if (found && conn_set_channel(c, cname) < 0)
        conn_set_channel(c, CHANNEL_NAME_BANNED);    /* should not fail */
    } else {

    // not W3
    if (conn_set_channel(c, cname) < 0)
        conn_set_channel(c, CHANNEL_NAME_BANNED);    /* should not fail */
    }
    // here we set channel flags on user
    channel_set_userflags(c);

    return 0;
}

Добавлено: 18.09.2016 21:21

+ сообщения в качестве мотд

Добавлено: 18.09.2016 21:23

и в game.cpp добавил

extern int game_add_player(t_game * game, char const * pass, int startver, t_connection * c)
{
    t_connection * * tempc;
    t_account * *    tempp;
    t_game_result *  tempr;
    t_game_result ** temprr;
    char const * *   temprh;
    char const * *   temprb;
    unsigned int i = 0;

    if (!game)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL game");
        return -1;
    }
    if (!pass)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL password");
    return -1;
    }
    if (startver!=STARTVER_UNKNOWN && startver!=STARTVER_GW1 && startver!=STARTVER_GW3 && startver!=STARTVER_GW4 && startver!=STARTVER_REALM1)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got bad game startver %d",startver);
    return -1;
    }
    if (!c)
    {
    eventlog(eventlog_level_error,__FUNCTION__,"got NULL connection");
        return -1;
    }
    if (game->type==game_type_ladder && (account_get_normal_wins(conn_get_account(c),conn_get_clienttag(c))<10 && conn_get_wol(c)==0))
    /* if () ... */
    {
    eventlog(eventlog_level_error,__FUNCTION__,"can not join ladder game without 10 normal wins");
    return -1;
    }

    {
    t_clienttag gt;

    if (!(gt = game_get_clienttag(game)))
    {
        eventlog(eventlog_level_error,__FUNCTION__,"could not get clienttag for game");
        return -1;
    }
    }

    if (game->pass[0]!='\0' && strcasecmp(game->pass,pass)!=0)
    {
        eventlog(eventlog_level_debug,__FUNCTION__,"game \"%s\" password mismatch \"%s\"!=\"%s\"",game_get_name(game),game->pass,pass);
    return -1;
    }

    if (game->connections && (game->count > 0))
    {
    for (i=0; i<game->count; i++)
    {
        if (game->connections[i] == NULL)
        {
        game->connections[i]   = c;
        game->players[i]       = conn_get_account(c);
        game->results[i]       = game_result_none;
        game->reported_results[i] = NULL;
        game->report_heads[i]  = NULL;
        game->report_bodies[i] = NULL;

        game->ref++;
        game->lastaccess_time = now;
        break;
        }
    }

    }

    if ((i == game->count) || (game->count == 0))
    {

        if (!game->connections) /* some std::realloc()s are broken */
        tempc = (t_connection**)xmalloc((game->count+1)*sizeof(t_connection *));
        else
        tempc = (t_connection**)xrealloc(game->connections,(game->count+1)*sizeof(t_connection *));
        game->connections = tempc;
        if (!game->players) /* some std::realloc()s are broken */
        tempp = (t_account**)xmalloc((game->count+1)*sizeof(t_account *));
        else
        tempp = (t_account**)xrealloc(game->players,(game->count+1)*sizeof(t_account *));
        game->players = tempp;

        if (!game->results) /* some std::realloc()s are broken */
        tempr = (t_game_result*)xmalloc((game->count+1)*sizeof(t_game_result));
        else
        tempr = (t_game_result*)xrealloc(game->results,(game->count+1)*sizeof(t_game_result));
        game->results = tempr;

        if (!game->reported_results)
            temprr = (t_game_result**)xmalloc((game->count+1)*sizeof(t_game_result *));
        else
        temprr = (t_game_result**)xrealloc(game->reported_results,(game->count+1)*sizeof(t_game_result *));
        game->reported_results = temprr;

        if (!game->report_heads) /* some xrealloc()s are broken */
        temprh = (const char**)xmalloc((game->count+1)*sizeof(char const *));
        else
        temprh = (const char**)xrealloc((void *)game->report_heads,(game->count+1)*sizeof(char const *)); /* avoid compiler warning */
        game->report_heads = temprh;

        if (!game->report_bodies) /* some xrealloc()s are broken */
        temprb = (const char**)xmalloc((game->count+1)*sizeof(char const *));
        else
        temprb = (const char**)xrealloc((void *)game->report_bodies,(game->count+1)*sizeof(char const *)); /* avoid compiler warning */
        game->report_bodies = temprb;

        game->connections[game->count]   = c;
        game->players[game->count]       = conn_get_account(c);
        game->results[game->count]       = game_result_none;
        game->reported_results[game->count] = NULL;
        game->report_heads[game->count]  = NULL;
        game->report_bodies[game->count] = NULL;

        game->count++;
        game->ref++;
        game->lastaccess_time = now;

    } // end of "if ((i == game->count) || (game->count == 0))"

    if (game->startver!=startver && startver!=STARTVER_UNKNOWN) /* with join startver ALWAYS unknown [KWS] */
    eventlog(eventlog_level_error,__FUNCTION__,"player \"%s\" client \"%s\" startver %u joining game startver %u (count=%u ref=%u)",account_get_name(conn_get_account(c)),clienttag_uint_to_str(conn_get_clienttag(c)),startver,game->startver,game->count,game->ref);

    game_choose_host(game);
    //stats
    t_account * myacc = conn_get_account( c );

    char * dotastats = new char[ MAX_MESSAGE_LEN ];
        snprintf( dotastats , MAX_MESSAGE_LEN , "%s DotA(5x5):[%s]%dpts W/L:%u/%u]" ,
    account_get_name(conn_get_account(c)),account_get_drank(myacc), account_get_pts(myacc),    account_get_wins(myacc), account_get_looses(myacc) );
        message_send_text( c , message_type_info , c , dotastats );
          
    
    return 0;
}

при заходе в игру пишет статистику игрока
оказывается пишет всем кто в игре )

Добавлено: 18.09.2016 21:26

а не не всем только самому игроку  neutral

96

Re: Команда /host

спасибо но приветствие можно ли сделать после того как он читает motd.cfg

97

Re: Команда /host

не знаю я motd очистил )

98

Re: Команда /host

ну там же показывает после входа вошли в канал .....
можно же после этого чтобы показывал?

99

Re: Команда /host

завтра как нибудь спать пора )

100

Re: Команда /host

еще дай коды host unhost буду тестировать ночью))))

Добавлено: 18.09.2016 23:50

как то это нужно в pvpgn перезаписать не получается  roll  roll  roll  roll

if( m_GHost->m_CurrentGame )
                    {
                        if( m_GHost->m_CurrentGame->GetCountDownStarted( ) )
                            QueueChatCommand( m_GHost->m_Language->UnableToUnhostGameCountdownStarted( m_GHost->m_CurrentGame->GetDescription( ) ), User, Whisper );
                        else
                        {
                            // if the game owner is still in the game only allow the root admin to unhost the game

                            if( m_GHost->m_CurrentGame->GetPlayerFromName( m_GHost->m_CurrentGame->GetOwnerName( ), false ) && !IsRootAdmin( User ) && IsAdmin(m_GHost->m_CurrentGame->GetOwnerName( )) )
                                QueueChatCommand( m_GHost->m_Language->CantUnhostGameOwnerIsPresent( m_GHost->m_CurrentGame->GetOwnerName( ) ), User, Whisper );
                            else
                            {
                                QueueChatCommand( m_GHost->m_Language->UnhostingGame( m_GHost->m_CurrentGame->GetDescription( ) ), User, Whisper );
                                m_GHost->m_CurrentGame->SetExiting( true );
                            }
                        }
                    }
                    else
                        QueueChatCommand( m_GHost->m_Language->UnableToUnhostGameNoGameInLobby( ), User, Whisper );

101

Re: Команда /host

Do you use command of Lua? I think it will be better if you link your pvpgn with Lua script for host game

Добавлено: 20.09.2016 10:14

SkyFall wrote:

завтра как нибудь спать пора )

Can you send me your full project, I will help you if I can. Also I have some problems on Lua scripts my ghost++ doen't send message to user. it should work user->pvpgn->ghost

Добавлено: 20.09.2016 10:26

SkyFall Could you keep touch me by mail or telegram my number is: +998933191809 you can write by telegram

livestar@mail.ua

102

Re: Команда /host

I have not connected Lua scripts
My telegrams +998 91 243 8987

103

Re: Команда /host

how to  make account_set_drank ?

104

Re: Команда /host

Dante wrote:

how to  make account_set_drank ?

в account_wraph.cpp добавить

extern char const * account_get_drank(t_account * account)
        {
            return account_get_strattr(account,"BNET\\DotARank");
        }
extern int account_set_drank(t_account * account, char const * val)
        {
            return account_set_strattr(account, "BNET\\DotARank", val);
        }

и в account_wraph.h добавить

extern char const * account_get_drank(t_account * account);
extern int account_set_drank(t_account * account, char const * val);

105

Re: Команда /host

SkyFall wrote:
Dante wrote:

how to  make account_set_drank ?

в account_wraph.cpp добавить

extern char const * account_get_drank(t_account * account)
        {
            return account_get_strattr(account,"BNET\\DotARank");
        }
extern int account_set_drank(t_account * account, char const * val)
        {
            return account_set_strattr(account, "BNET\\DotARank", val);
        }

и в account_wraph.h добавить

extern char const * account_get_drank(t_account * account);
extern int account_set_drank(t_account * account, char const * val);

у тебя много играют на серве?

106

Re: Команда /host

XOM91K wrote:
SkyFall wrote:
Dante wrote:

how to  make account_set_drank ?

в account_wraph.cpp добавить

extern char const * account_get_drank(t_account * account)
        {
            return account_get_strattr(account,"BNET\\DotARank");
        }
extern int account_set_drank(t_account * account, char const * val)
        {
            return account_set_strattr(account, "BNET\\DotARank", val);
        }

и в account_wraph.h добавить

extern char const * account_get_drank(t_account * account);
extern int account_set_drank(t_account * account, char const * val);

у тебя много играют на серве?

нет у меня сервера

107

Re: Команда /host

SkyFall wrote:
Dante wrote:

how to  make account_set_drank ?

в account_wraph.cpp добавить

extern char const * account_get_drank(t_account * account)
        {
            return account_get_strattr(account,"BNET\\DotARank");
        }
extern int account_set_drank(t_account * account, char const * val)
        {
            return account_set_strattr(account, "BNET\\DotARank", val);
        }

и в account_wraph.h добавить

extern char const * account_get_drank(t_account * account);
extern int account_set_drank(t_account * account, char const * val);

thanks skyfall

108

Re: Команда /host

Наконец доработал команды для бота )
изменил: /host /bot /swap /unhost /open /close /openall /closeall
- при выборе бота игроку даёт account_set_bot и имя бота
потом при использование /host ему создаёт игру и он не может выбрать другого бота пока не унхостит игру
- добавил мод тб.
- При выборе мода игроку даёт account_set_host 2 тоесть 1 это простая дота 2 с тб модом и потом сделаю 3 для кустом карт
- код чуть уменшил а то в тот раз было очень длинный код )
- при использование /start игрока проверяет если он выбрал тб мод то напишет !sp и !startn
не стану описывать большой код лучше выложу все файлы которые понадобится

109

Re: Команда /host

поделись  кодом  roll

110

Re: Команда /host

launcher wrote:

поделись  кодом  roll

тестирую ща
проверяю при старте не должен трогать игрока потому что может ктото ливать
сделал так при старте игра начнётся и будет client_closegame
туда добавил кое какие коды потом всё выложу

111

Re: Команда /host

хорошо

112

Re: Команда /host

launcher wrote:

хорошо

http://forums.harpywar.com/viewtopic.php?pid=7658#p7658

113

Re: Команда /host

а можешь разъяснить что добавлено все до конца)))

114

Re: Команда /host

launcher wrote:

а можешь разъяснить что добавлено все до конца)))

могут быть баги и тд )
но если найдёшь сообщи я щас перезалю файл иначе в game.cpp ошибка )

Добавлено: 18.11.2016 22:42

launcher wrote:

а можешь разъяснить что добавлено все до конца)))

мне бот очень нужен
потом поставлю в железу одного проекта
сначало врубят 1 бота потом если онлайн поднимется 4-5 и тд врубают
всё зависит от онлайна )

Добавлено: 18.11.2016 22:43

помоги с ботом плиз

115

Re: Команда /host

и еще вот тут увидел Игру могут создавать только у кого выше 1000 птс
в айкапе есть команда !rl можно ли поставить такой код чтобы сам игрок при создании  игры . мог ставить ranklimit

116

Re: Команда /host

launcher wrote:

и еще вот тут увидел Игру могут создавать только у кого выше 1000 птс
в айкапе есть команда !rl можно ли поставить такой код чтобы сам игрок при создании  игры . мог ставить ranklimit

можно сделать так:
в game_add_player там проверить игрока на птс и сравнить его с поставленным хостом
если у игрока ниже например 1500 то его кикает из игры
потом сделаю как нибудь щас нужен бот )

117

Re: Команда /host

а в games.cpp что находиться собственно?

118

Re: Команда /host

launcher wrote:

а в games.cpp что находиться собственно?

там только если хост выйдет из игры игра унхостится автомачически

119

Re: Команда /host

я не  знаю почему у  тебя не  качает в базу данных очки и тд..
попробуй скачать новый от ???

120

Re: Команда /host

мб свой дашь? и в какую таблицу добавляется статистика игрока? очки и тд?

121

Re: Команда /host

SkyFall wrote:
launcher wrote:

а в games.cpp что находиться собственно?

там только если хост выйдет из игры игра унхостится автомачически

а возможно ли  сделать..
1- если хост вышел со своей игры, чтобы бот не  закрывалась игру .
2- если хост вышел со своей игры и зашел  в другой созданную игру. то через несколько минут  закрылась автоматически?

Добавлено: 18.11.2016 23:57

у меня вроде был Ghost One

Добавлено: 18.11.2016 23:58

стата добавляется в таблицу scores

122

Re: Команда /host

launcher wrote:
SkyFall wrote:
launcher wrote:

а в games.cpp что находиться собственно?

там только если хост выйдет из игры игра унхостится автомачически

а возможно ли  сделать..
1- если хост вышел со своей игры, чтобы бот не  закрывалась игру .
2- если хост вышел со своей игры и зашел  в другой созданную игру. то через несколько минут  закрылась автоматически?

Добавлено: 18.11.2016 23:57

у меня вроде был Ghost One

не умею таймер делать )
а в айкапе сразу унхостуется )
скинь мне своего бота плиз и обьясни куда именно попадает статистика игрока
я хочу в команде /stats делать полную статистику игрока

Добавлено: 18.11.2016 23:00

в таблицу scores только птс?
а куда вин и лузы добавляется?

123

Re: Команда /host

quick-heroes.clan.su/load/27-1-0-726 тут качал .
незнаю кажеться луз вины сам подсчитывает формулой.
но я слышал что можно добавлять ливы лузы вины  в таблицу

Добавлено: 19.11.2016 00:03

вот этот код унхост автоматически game.cpp

    
bot = accountlist_find_account(account_get_bot(account));



  if (account_get_host(account)==1)
    {
    t_account * stats = accountlist_find_account( account_get_bot(account) );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhost");
        message_send_text(conn,message_type_whisper,conn, msgtemp); 
        account_set_host(bot,0);
        account_set_host(account,0);
    }
else {
         if (!(user = connlist_find_connection_by_accountname(account_get_bot(account)))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}

}
    
 else if (account_get_host(account)==2)
    {
    t_account * stats = accountlist_find_account( account_get_bot(account) );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)

            snprintf(msgtemp, sizeof(msgtemp), "!unhost");
        message_send_text(conn,message_type_whisper,conn, msgtemp); 
        account_set_host(bot,0);
        account_set_host(account,0);

    }
else {
         if (!(user = connlist_find_connection_by_accountname(account_get_bot(account)))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}

}

???

124

Re: Команда /host

launcher wrote:

quick-heroes.clan.su/load/27-1-0-726 тут качал .
незнаю кажеться луз вины сам подсчитывает формулой.
но я слышал что можно добавлять ливы лузы вины  в таблицу

Добавлено: 19.11.2016 00:03

вот этот код унхост автоматически game.cpp

    
bot = accountlist_find_account(account_get_bot(account));



  if (account_get_host(account)==1)
    {
    t_account * stats = accountlist_find_account( account_get_bot(account) );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)
            snprintf(msgtemp, sizeof(msgtemp), "!unhost");
        message_send_text(conn,message_type_whisper,conn, msgtemp); 
        account_set_host(bot,0);
        account_set_host(account,0);
    }
else {
         if (!(user = connlist_find_connection_by_accountname(account_get_bot(account)))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}

}
    
 else if (account_get_host(account)==2)
    {
    t_account * stats = accountlist_find_account( account_get_bot(account) );
if (stats)
{
        t_connection * conn = account_get_conn(stats);
        if (conn)

            snprintf(msgtemp, sizeof(msgtemp), "!unhost");
        message_send_text(conn,message_type_whisper,conn, msgtemp); 
        account_set_host(bot,0);
        account_set_host(account,0);

    }
else {
         if (!(user = connlist_find_connection_by_accountname(account_get_bot(account)))) {
        message_send_text(c,message_type_error,c,"Бот оффлайн");
}
}

}

???

да
а как добавлять??? в таблицу

125

Re: Команда /host

нужно в коддах рыться . сегодня посмотрю

Добавлено: 19.11.2016 12:19

Кстати еще вопрос  почему при создании /host  в игре показывает Game OWner имя бота а не игрока который хоставал  sad

Добавлено: 19.11.2016 12:31

и еще почему то unhost не работает боту не доходит сообщения чтоли?

126

Re: Команда /host

launcher wrote:

нужно в коддах рыться . сегодня посмотрю

Добавлено: 19.11.2016 12:19

1.Кстати еще вопрос  почему при создании /host  в игре показывает Game OWner имя бота а не игрока который хоставал  sad

Добавлено: 19.11.2016 12:31

2.и еще почему то unhost не работает боту не доходит сообщения чтоли?

1.потому что бот хостует через !pub а не !pubby это для того чтобы игрок не использовал внутри свои команды !kick !ban и тд

2.У меня работает ) боту идёт сообщение !unhost

для начало бота добавь в рут админ бота

127

Re: Команда /host

к сожалению у  мой ub создают все игроки дал им всем доступ)) big_smile

128

Re: Команда /host

launcher wrote:

к сожалению у  мой ub создают все игроки дал им всем доступ)) big_smile

нет ни у кого не должен быть доступ к боту

ты тестировал бота на mysql ?
после игры птс записывается?

129

Re: Команда /host

нет  у  меня проблемы. я с начала переписываю /bot

130

Re: Команда /host

в смысле? обясни какие проблемы

131

Re: Команда /host

кстати еще в кодах есть привесттвие игрока в игре???

Добавлено: 19.11.2016 14:16

SkyFall wrote:

в смысле? обясни какие проблемы

ну вот. выше говорил /host  при создании игр овнер бота показывает.
и unhost /start /swap не работают т.е не слушают овнера  hmm

Добавлено: 19.11.2016 18:14

я насчет команды /bot - немного преувеличил )) smile  показывает OFFLINE/ ONLINE бота
http://img.megatorrents.kg/images/6926pTmDOe8lV.png

132

Re: Команда /host

launcher wrote:

кстати еще в кодах есть привесттвие игрока в игре???

Добавлено: 19.11.2016 14:16

SkyFall wrote:

в смысле? обясни какие проблемы

1.ну вот. выше говорил /host  при создании игр овнер бота показывает.
и unhost /start /swap не работают т.е не слушают овнера  hmm

Добавлено: 19.11.2016 18:14

2.я насчет команды /bot - немного преувеличил )) smile  показывает OFFLINE/ ONLINE бота
http://img.megatorrents.kg/images/6926pTmDOe8lV.png

1. чтобы использовать /swap /open и тд овнер от бота не нужен ведь бот пишет сам себе то есть только хост может управлять ботом потому что сервер даёт ему доступ

2. поделись кодом )

133

Re: Команда /host

Приветствую. Давно тут не был, интересная темка, вы молодцы;)
SkyFall, Launcher, если как-то можно к вам попасть на бета тест, будет здорово, если скажете ip адрес сервера, хочу потестить)

134

Re: Команда /host

кстати где находиться bnmotd  в исходниках который при входе показывает сообщение

135

Re: Команда /host

launcher wrote:

кстати где находиться bnmotd  в исходниках который при входе показывает сообщение

handle_bnet.cpp

136 (edited by launcher 24.11.2016 19:23)

Re: Команда /host

возможно ли сделать чтобы в каждом  канале было написано текст?  А именно править через исходники

Posts: 136

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] The Source Code → Команда /host



Generated in 0.523 seconds (97% PHP - 3% DB) with 20 queries