1. Соблюдайте Правила форума и проявляйте уважение к другим участникам беседы.

Help Ipban

Тема в разделе 'Кодинг/Собственные решения', создана пользователем Kazami, 11 апр 2014.

  1. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Здравствуйте, прошу помочь.. Тема такая.. Есть свой PvPGN сервер, Бот Ghost One 1.7.266
    И необходимость создать команду !ipban
    Задача команды (пример !ipban Dnische) Узнать IP игрока Dnische, и послать в pvpgn команду /ipban add ip 1440(1 день)...
    Бота я скачал, вчера.. Пока только учусь..
  2. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Код:
       //
                // !IPBAN
                //
                if( Command == "ipban" )
                {
                    if( Command == "ipban" && RootAdminCheck )
                    {
                    CGamePlayer *LastMatch = NULL;
                    uint32_t Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
                    if( Matches != 1 )
                    {
                      SendAllChat("Name is not found");
                    }else {
                      string NameUser = LastMatch->GetName();
                      string ip = LastMatch->GetExternalIPString();
                        SendAllChat("/ipban a "+ ip +" 1440");
                          }
                    }
                }
    Намутил такое... Вродебы всё понятно.. Ошибка в SendAllChat("/ipban a "+ ip +" 1440"); он пишет тупо эту строку как есть, но надо чтобы писал именно как команду /ipban в PvPGN возможно это банально, но я вчера начал изучать эту муть.. ещё не понял.. Подскажите плз..
  3. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Нужно чтоб как при команде "!say" Всё что не писалось, писалосьбы в Батл нет)
  4. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
  5. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Нужно отправлять не в AllChat, а заносить в очередь пакетов (ну там как-то QueueChatMessage — не помню точно)
  6. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    QueueChatMessage как я понял только в Bnet.cpp попытался скопировать его в Game.cpp там пошел бардак типо QCM не входит в список комманд CGame..
  7. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Ну так нужно обратиться в чат Bnet
    for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
            {
               // если будет несколько серверов, то команда выполнится на всех этих серверах
                    (*i)->QueueChatCommand( "/command arg");
            }
    Kazami нравится это.
  8. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Спасибо... Ничего не понял) Но попробую какнить всунуть эту шнягу)
  9. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Ухты:) Вродебы компилировалось.. Щас тестану. Спс большое.
  10. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Команда пашет, гуд..
    Код:
                      for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
                              {
                            SendAllChat("Player "+ NameUser + " has been banned by IP");
                            (*i)->QueueChatCommand( "/ipban add "+ ip + " 1440");
                            }
    И тут вместо 1440 хотелось бы сделать чтото типо накопительной системы типо (напишу на том языке которую я понимаю)
    if bans=1 then bt:=2*1440;
    if bans=2 then bt:=7*1440;
    if bans<=3 then bt:=31*1440;
    и тут типо (*i)->QueueChatCommand( "/ipban add "+ ip + bt);
    Подумал для реализации нужен файл куда будут вписываться число банов, переменная bt.. и чтобы проверка шла.. мля((
  11. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Можно вставить костыль:
    есть такая вещь, как warn. Так вот, он накопительный. Юзера можно варнить каждый раз, когда ты используешь команду !ipban, затем уже использовать переменную о количестве варнов как множитель. Ну правда чтобы работало качественно, нужно будет попотеть…
  12. Kazami Ньюфаг

    Сообщения:
    20
    Спасибы:
    0
    Дата начала использования бота:
    10.04.2014
    Поковырялся в Warn... ничего не нашел(тупой х.ле), думал использовать накопительную систему Мута за мат. Типо 1 мат 60, 2ой 60, 3ий 180, дальше по 360... Но тоже не нашел..((