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

OpenSource !BANIP ( круче чем у Rost'a )

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

  1. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Rost, ничего лишнего, просто конкуренция.
    Код:
    /////
                /////  !BANIP
                /////
                else if( Command == "banip" && !Payload.empty() )
                {
                  if( !RootAdminCheck ){
                    SendChat(player, "Забанить IP может только главнюк"); //тут надо придумать своё
                  }else {
                    CGamePlayer *LastMatch = NULL;
                    uint32_t Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
                    if( Matches != 1 ){
                      SendAllChat("АХТУНГ, криворукий рут"); //тут надо придумать своё
                    } else {
                      string banip = LastMatch->GetExternalIPString();
                      SendAllChat("Игрок [" + LastMatch->GetName() + "] забанен по ip");
                      CONSOLE_Print( "[GAME: " + m_GameName + "] admin [" + User+ "] banned ip [" + banip + "]" );
                      LastMatch->SetDeleteMe( true );
                      LastMatch->SetLeftReason("kicked, banned by ip");   
                      if( !m_GameLoading && !m_GameLoaded ){
                    LastMatch->SetLeftCode( PLAYERLEAVE_LOBBY );
                    OpenSlot( GetSIDFromPID( LastMatch->GetPID( ) ), false );
                      }else {
                    LastMatch->SetLeftCode( PLAYERLEAVE_LOST );
                      }
                      ofstream out;
                      out.open( m_GHost->m_IPBlackListFile.c_str( ), ios :: app );
                      out << banip << endl;
                      out.close();
                      m_IPBlackList.insert( banip );
                    }
                  }
                }
                
    Те, кто не шарит, смотрим тут и сравниваем что дано в этой теме. Ошибки исправил, лишнее выкинул.
    Единственный минус - не тестировал, но вроде бы все должно работать как часы
    Doterok, TyMaH и LongMan нравится это.
  2. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    )))) еще один))))
    И на заметку: у нас нету конкуренции, несчего ей образоватся)
    silenser нравится это.
  3. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Код:
    1>Компиляция...
    1>game.cpp
    1>.\game.cpp(1695) : error C3867: std::basic_ofstream<_Elem,_Traits>::close: в вызове функции отсутствует список аргументов; используйте "&std::basic_ofstream<_Elem,_Traits>::close" для создания указателя на член
    1>        with
    1>        [
    1>            _Elem=char,
    1>            _Traits=std::char_traits<char>
    1>        ]
    1>Журнал построения был сохранен в "file://c:\Users\Валера\Desktop\LTG.bot\ghost\Release MySQL\BuildLog.htm"
    1>ghost - ошибок 1, предупреждений 0
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 1, пропущено: 0 ==========
    Вот что компиляция дала(
    out.close; вот эту строку вырезал скомпилось ну думаю эффект будет равен 0
  4. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Там круглые скобки должны быть, потому что это функция (метод класса ofstream):
    Код:
    out.close( );
    Doterok нравится это.
  5. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Спс щас тестану
  6. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Просто +100500 аффтору то что нужно)
    Проверил в лобби щас если в игре не вылетит буду молится за тебя :D:metal:
    Кстате, а есть вариант удаления банов командой, а не ручками из текстового?
  7. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    неа нету. ручками удалять. к тому ж как ты будешь разблокировать? в смысле откуда айпи узнаешь? он засветится только в логе бота
  8. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Ладно уговорил :)
    буду ждать ответа на свою темку :limon:
  9. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Немного по-другому перефразируем

    Можно сделать удаление по команде. Но тут палка о двух конца. Для этого тебе нужно, чтобы выполнялось какое-либо из условий:
    • Этот забанненый человек должен быть в «зоне видимости» для бота, а именно находиться в Lobbyили игре, ну, и иметь тот же самый, с которым он был забанен;
    • Тебе нужно знать IP-адрес этого человека, чтобы, скажем, по команде !delipban 98.129.212.77 можно было найти строку в файле и удалить её. Но в этом случае, так как ты не знаешь адреса, ты лезешь смотреть его в этот самый файл.
  10. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Да понял я его, просто у меня друг мб так сделает и на айс будет если кто мне бананчик выпишит (есть желающие),а друг какаха афкашная, так хоть себя разбаню если что :)
  11. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    в лобби отлично работает в игре команда не реагирует:opasnoste:
  12. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Код:
     && !m_GameLoading && !m_GameLoaded
    Doterok нравится это.
  13. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    А вам надо чтобы в игре работала еще? обычный бан не подходит?
  14. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Да,надо)
  15. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Обновил первый пост, тестируй
    Doterok нравится это.
  16. Doterok Старожила

    Сообщения:
    923
    Спасибы:
    171
    Сборка бота GHost:
    Ghost ++ 17.2
    Дата начала использования бота:
    2011
    Спасибо,это норм
  17. silenser Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012
    Что делать запихнул в бнет сспи под админ командс
    Код:
    1>------ Построение начато: проект: ghost, Конфигурация: Release MySQL Win32 ------
    1>Компиляция...
    1>bnet.cpp
    1>.\bnet.cpp(1498) : error C2181: недопустимый else без парного if
    1>.\bnet.cpp(1501) : error C2065: player: необъявленный идентификатор
    1>.\bnet.cpp(1501) : error C3861: SendChat: идентификатор не найден
    1>.\bnet.cpp(1504) : error C2660: CBNET::GetPlayerFromNamePartial: функция не принимает 2 аргументов
    1>.\bnet.cpp(1506) : error C3861: SendAllChat: идентификатор не найден
    1>.\bnet.cpp(1509) : error C3861: SendAllChat: идентификатор не найден
    1>.\bnet.cpp(1510) : error C2065: m_GameName: необъявленный идентификатор
    1>.\bnet.cpp(1513) : error C2065: m_GameLoading: необъявленный идентификатор
    1>.\bnet.cpp(1513) : error C2065: m_GameLoaded: необъявленный идентификатор
    1>.\bnet.cpp(1515) : error C3861: OpenSlot: идентификатор не найден
    1>.\bnet.cpp(1515) : error C3861: GetSIDFromPID: идентификатор не найден
    1>.\bnet.cpp(1523) : error C2065: m_IPBlackList: необъявленный идентификатор
    1>.\bnet.cpp(1523) : error C2228: выражение слева от ".insert" должно представлять класс, структуру или объединение
    1>        тип: 'unknown-type'
    1>Журнал построения был сохранен в "file://g:\Host Bots\GHost One 1.7.266\ghost\Release MySQL\BuildLog.htm"
    1>ghost - ошибок 13, предупреждений 0
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
  18. silenser Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012
    Код:
    /*****************
                    * ADMIN COMMANDS *
                    ******************/
               
                /////
                /////!BANIP
                /////
                else if( Command == "banip" && !Payload.empty() )
                {
                  if( !RootAdminCheck ){
                    SendChat(player, "Забанить IP может только главнюк"); //тут надо придумать своё
                  }else {
                    CGamePlayer *LastMatch = NULL;
                    uint32_t Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
                    if( Matches != 1 ){
                      SendAllChat("АХТУНГ, криворукий рут"); //тут надо придумать своё
                    } else {
                      string banip = LastMatch->GetExternalIPString();
                      SendAllChat("Игрок [" + LastMatch->GetName() + "] забанен по ip");
                      CONSOLE_Print( "[GAME: " + m_GameName + "] admin [" + User+ "] banned ip [" + banip + "]" );
                      LastMatch->SetDeleteMe( true );
                      LastMatch->SetLeftReason("kicked, banned by ip"); 
                      if( !m_GameLoading && !m_GameLoaded ){
                    LastMatch->SetLeftCode( PLAYERLEAVE_LOBBY );
                    OpenSlot( GetSIDFromPID( LastMatch->GetPID( ) ), false );
                      }else {
                    LastMatch->SetLeftCode( PLAYERLEAVE_LOST );
                      }
                      ofstream out;
                      out.open( m_GHost->m_IPBlackListFile.c_str( ), ios :: app );
                      out << banip << endl;
                      out.close();
                      m_IPBlackList.insert( banip );
                    }
                  }
                }
     
                    //
                    //
                    //!dl
                    //
     
                    if(Command == "dl" && !Payload.empty())
                    {
                        if (!RootAdminCheck)
                        {
                            QueueChatCommand(m_GHost->m_Language->YouDontHaveAccessToThatCommand( ), User, Whisper);
                            return;
                        }
     
                        if (m_GHost->m_CallableDownloadFile)
                        {
                            QueueChatCommand("Another download is already in progress, try again later!", User, Whisper);
                            return;
                        }
                        stringstream SS;
                        SS<<Payload;
                        string Map;
                        string Path;
                        SS>>Map;
                        if (SS.fail())
                        {
                            QueueChatCommand("dl <url> <path>", User, Whisper);
                            return;
                        }
                        SS>>Path;
                        if (SS.fail())
                        {
                            QueueChatCommand("dl <url> <path>", User, Whisper);
                            return;
                        }
     
                        m_GHost->m_CallableDownloadFile = m_GHost->ThreadedDownloadFile(Map, Path);
                        m_DownloadFileUser = User;                   
                        QueueChatCommand("Downloading file in "+Path+" ...", User, Whisper);
                    }
     
                    //
                    //!dlmap
                    //
  19. silenser Давний приятель

    Сообщения:
    240
    Спасибы:
    3
    Сборка бота GHost:
    Ghost one be sisiee
    Дата начала использования бота:
    01.01.2012
    может куда=то что-то добавить?
  20. Guard Старожила

    Сообщения:
    473
    Спасибы:
    47
    Сборка бота GHost:
    Ghost++ RAKAL Edition
    Дата начала использования бота:
    00.00.2009
    Skype:
    Мой статус
    Да, руки в плечи. Код в game.cpp.