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

Banlist=Whitelist

Тема в разделе 'Основные вопросы', создана пользователем MeGaLeX, 27 июл 2010.

  1. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    Здравствуйте. У меня такой вопрос: мне нужно сделать так, чтобы бот пускал в игру только забаненых игроков, а игроков которые не забанены - нет. Это нужно мне чтобы использовать в дота-лиге, где смогут играть только "достаточно сильные игроки". Если вы не знаете как сделать, подскажите хотя-бы в каком файле исходников находятся функции "блокировки входа если в бане и вход если без бана". Заранее благодарю.
  2. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    файл game_base.cpp, метод CBaseGame :: EventPlayerJoined. дальше сам.
  3. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Код:
    ### handle ip bans: 0 = do nothing, 1 = kick, 2 = announce only (no kick).
    bot_ipbanning = 0
    
    ### handle name bans: 0 = do nothing, 1 = kick, 2 = announce only (no kick).
    bot_banning = 0
    А вот с исходниками проблематично.
    Если-бы точно знать какая функция отвечает за присоединение игрока в лобби - могу попробовать сделать.
    Нашел их 2:
    Код:
    	// turning the CPotentialPlayer into a CGamePlayer is a bit of a pain because we have to be careful not to close the socket
    	// this problem is solved by setting the socket to NULL before deletion and handling the NULL case in the destructor
    	// we also have to be careful to not modify the m_Potentials vector since we're currently looping through it
    
    //	CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + joinPlayer->GetName( ) + "|" + potential->GetExternalIPString( ) + "] joined the game" );
    	CGamePlayer *Player = new CGamePlayer( potential, m_SaveGame ? EnforcePID : GetNewPID( ), JoinedRealm, joinPlayer->GetName( ), joinPlayer->GetInternalIP( ), Reserved );
    	Player->SetSID( SID );
    Код:
    	// send slot info to the new player
    	// the SLOTINFOJOIN packet also tells the client their assigned PID and that the join was successful
    
    	Player->Send( m_Protocol->SEND_W3GS_SLOTINFOJOIN( Player->GetPID( ), Player->GetSocket( )->GetPort( ), Player->GetExternalIP( ), m_Slots, m_RandomSeed, m_Map->GetMapGameType( ) == GAMETYPE_CUSTOM ? 3 : 0, m_Map->GetMapNumPlayers( ) ) );
    
    	// send virtual host info and fake player info (if present) to the new player
  4. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    просто нет слов.
  5. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Если ты такой умный. То напиши как организовать.
    Слов нет - не пиши. Лишь бы флудануть?
  6. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    в первом посте я дал исчерпывающую информацию. надо быть совсем уж криворуким (или слепым), чтобы там не заметить обращение к банлисту. остается только изменить условие (нет в банлисте - досвидульки). если вам такая простейшая модификация не под силу - о чем вообще речь вести?
  7. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Слушай. Криворукий и слепой. Следи за речью. Изначально мой пост был правильный. Потом засомневался и переписал.

    А про if( Ban ) на if( !Ban ) я изначально писал. Но засомневался.
    Так же и if( IPBan ) на if( !IPBan )
    И про SendAllChat тоже в изначальном посте писал. Чтоб не выводило ризонов банов. Хотя это регулируется if (m_GHost->m_Verbose) в конфиге.
    И не нужно делать намеки на "слепоту и криворукость". Ты никогда не ошибаешься? Умник...
  8. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    Если не сложно, пожалуйста поподробнее, юзаю ghostplus 16.2. В каких файлах исходников какой код искать и на что заменять. Я новичёк в этом деле, поэтому и обратился к вам)
  9. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    APhahah Зря потеете D Наверно автор и компилить то не умеет)
  10. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Знаешь как компилить?
  11. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Кстати по поводу моего первого поста. Где функция которая добавляет игрока в свободный слот?
  12. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    Ох да ладно)
    Код:
    "ghost.exe": Загружено: "E:\^^PVPGN\megabot\ghostplusplus_16.2\ghost\Release MySQL\ghost.exe", Символы загружены.
    "ghost.exe": Загружено "C:\Windows\System32\ntdll.dll"
    "ghost.exe": Загружено "C:\Windows\System32\kernel32.dll"
    "ghost.exe": Загружено "C:\Windows\System32\ws2_32.dll"
    "ghost.exe": Загружено "C:\Windows\System32\msvcrt.dll"
    "ghost.exe": Загружено "C:\Windows\System32\advapi32.dll"
    "ghost.exe": Загружено "C:\Windows\System32\rpcrt4.dll"
    "ghost.exe": Загружено "C:\Windows\System32\nsi.dll"
    "ghost.exe": Загружено: "C:\Program Files\Intel\WiFi\bin\zlib1.dll", Двоичный код не был построен с отладочной информацией.
    "ghost.exe": Загружено "E:\^^PVPGN\megabot\ghostplusplus_16.2\ghost\Release MySQL\libmysql.dll"
    "ghost.exe": Загружено "C:\Windows\System32\wsock32.dll"
    "ghost.exe": Загружено: "E:\^^PVPGN\megabot\ghostplusplus_16.2\ghost\Release MySQL\BNCSutil.dll", Двоичный код не был построен с отладочной информацией.
    "ghost.exe": Загружено "C:\Windows\System32\version.dll"
    "ghost.exe": Загружено "C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\msvcp90.dll"
    "ghost.exe": Загружено "C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4148_none_5090ab56bcba71c2\msvcr90.dll"
    "ghost.exe": Загружено "C:\Windows\System32\mswsock.dll"
    "ghost.exe": Загружено "C:\Windows\System32\WSHTCPIP.DLL"
    Поток 'Поток Win32' (0x1308) завершился с кодом -1073741510 (0xc000013a).
    Программа "[5120] ghost.exe: Машинный код" завершилась с кодом -1073741510 (0xc000013a).
    
    Однако где что и как править, никто толком не сказал) Только "автор дно" :-\
  13. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    да ты не ссы, бывает. но да, стараюсь ошибок не допускать.

    GetEmptySlot, не?

    лол, все уже сказано выше было. мозг-то включать надо иногда!
  14. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    И где такая конфигурация находится? в моём файле config.cfg такого точно нет.
    Код:
    ### handle ip bans: 0 = do nothing, 1 = kick, 2 = announce only (no kick).
    bot_ipbanning = 0
    
    ### handle name bans: 0 = do nothing, 1 = kick, 2 = announce only (no kick).
    bot_banning = 0
  15. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Это:
    Код:
    	for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
    	{
    		CDBBan *Ban = (*i)->IsBannedName( joinPlayer->GetName( ) );
    
    		if( Ban )
    		{
    			string sIP = Ban->GetIP();
    			if (false)
    			if (sIP==string() && m_GHost->DBType == "mysql")
    Замени на вот это:
    Код:
    	for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
    	{
    		CDBBan *Ban = (*i)->IsBannedName( joinPlayer->GetName( ) );
    
    		if( !Ban )
    		{
    			string sIP = Ban->GetIP();
    			if (false)
    			if (sIP==string() && m_GHost->DBType == "mysql")
    Разница этих строк лишь в том что в if( Ban ) появился знак восклицания: if( !Ban ).
    Логически это выглядит так: if( Ban ) - если (бан) то..., а тебе нужно сделать if( !Ban ) - если (не бан) то... выкидывает с игры.
    Тоже самое с:
    Код:
    				CDBBan *IPBan = (*i)->IsBannedIP(potential->GetExternalIPString( ) );
    
    				if( IPBan )
    				{
    					string sReason = IPBan->GetReason();
    					string sName = IPBan->GetName();
    На:
    Код:
    				CDBBan *IPBan = (*i)->IsBannedIP(potential->GetExternalIPString( ) );
    
    				if( !IPBan )
    				{
    					string sReason = IPBan->GetReason();
    					string sName = IPBan->GetName();
    Было if( IPBan ) стало if( !IPBan ).
    Удачи в компиляции ;)
  16. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Дословно перевожу ПолучитьПустойСлот. Не?
    А я писал
    Не?
  17. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    "добавляет" только EventPlayerJoined, вопросы чтоль учись формулировать
  18. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    И ещё пару вопросов. Где в исходниках можно настроить автоматическое создание игр matchmaking(команду .autohostmm не предлагать) И почему если я использую команду .autohostmm и игроки заходят в игру, оно не делает никакой балансировки и не выводит кол-во очков игрока. С чем может это быть связано?
  19. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    Кстате, сделал как посоветовали if ( !ban ) и теперь, если незабаненный игрок пытается подключиться, бот тупо закрывается.
  20. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Лог компиляции нормальный?