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

Помогите реализовать

Тема в разделе 'Кодинг/Собственные решения', создана пользователем marpool, 20 дек 2011.

Статус темы:
Закрыта.
  1. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    Здравствуйте помогите реализовать.

    1.Как сделать что бы все системные сообщения шли от бота?А не от меня или от левого типа когда меня нету...

    2.Хочу добавить команду "!правила" но не знаю как...суть игрок пишет в чате !правила и ему выбило их.

    3.Добавить команду "!clearstats" или тому подобное.Думаю суть уловили?Игрок пишет "!clearstats" и его статистика на боте удаляется.

    4.Как сделать :
    К нам присоединился user1
    К нам присоединился user2
    К нам присоединился Хост
    Думаю уловили?

    Заранее спасибо!!Жду Ваших ответов. :jump:
  2. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    1. Зделай себе конфиг карты на 12 слотов, и зделай чтобы все ишло от фейк плаера. Зделай то что делал себе я. Найди это, ну если оно у тебя есть, про сервер:
    game_base.cpp
    Код:
    // join message from diff realms
    	string ServName = "Unknown realm";
       if( HostCounterID != 0 )
       {
          for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
          {
             if( (*i)->GetHostCounterID( ) == HostCounterID )
                ServName = (*i)->GetServerAlias();
          }
       }
    else ServName = "Garena";
    SendAllChat( joinPlayer->GetName( ) + " зашел с [" + ServName + "]");
    Ну и зделай так чтоли:
    Код:
    // join message from diff realms
    	string ServName = "Unknown realm";
       if( HostCounterID != 0 )
       {
          CreateFakePlayer( );
          for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
          {
             if( (*i)->GetHostCounterID( ) == HostCounterID )
                ServName = (*i)->GetServerAlias();
          }
       }
    else ServName = "Garena";
    SendAllChat( joinPlayer->GetName( ) + " зашел с [" + ServName + "]");
    Только ник смени с fakeplayer на что хить, поищи в game_base.cpp эту функцию, ну хотябы по поиску fakeplayer
    2. Ну тут так, найди это:
    game.cpp
    Код:
    	/*********************
    	* NON ADMIN COMMANDS *
    	*********************/
    Добавь перед help это
    Код:
                    // 
    	// !RULEZZZZ
    	//
    
    	if ( Command == "rules" )
    	{
    		SendChat( "1-е: не дрочить");
    		SendChat("2-е: темболее с улыбкой на лице");
    		SendChat("3-e: не кусатсо");
                    }
    3. вот ссылка. Читай ласт страницу, там пример. Если мультисерверная система, несоветую, даже очень!
    http://forums.w3gh.ru/customization/kliar-stats-t2901-30.html
    4. Непонял толком, но думаю что идея для вы**оса, про "к вам присоеденился ХОСТ" глуповата :lol:
  3. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    1.У меня нету такого кода..Куда скаж впихнуть?

    2.Ок попробую отпишу

    3.Наф нада

    4.Наф нада =)
  4. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    Ищё если можно починить команду !рмк

    Код:
    	//
    	// !RMK
    	//
    
    	if( Command == "rmk" && !player->GetRmkVote( ) && m_GameLoaded)
    	{
    		if (m_RmkVotePlayer.empty())
    		{
    			for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
    				(*i)->SetRmkVote( false );
    			m_RmkVotePlayer = player->GetName();
    			m_StartedRmkVoteTime = GetTime();
    		}
    		player->SetRmkVote( true );
    		uint32_t VotesNeeded = (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)100 );
    		if (VotesNeeded>GetNumHumanPlayers()-1)
    			VotesNeeded = GetNumHumanPlayers()-1;
    
    		uint32_t Votes = 0;
    
    		for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
    		{
    			if( (*i)->GetRmkVote( ) )
    				Votes++;
    		}
    
    		if( Votes >= VotesNeeded )
    		{
    			SendAllChat("рмк через 10 сек");
    			m_GameEndCountDownStarted = true;
    			m_GameEndCountDownCounter = 10;
    			m_GameEndLastCountDownTicks = GetTicks();
    			m_RmkVotePlayer.clear( );
    			m_StartedRmkVoteTime = 0;
    		}
    		else
    			SendAllChat( User+" проголосовали за РМК [" + UTIL_ToString( Votes )+"/"+ UTIL_ToString(VotesNeeded)+"] "+string( 1, m_GHost->m_CommandTrigger )+"rmk to accept");
    	}
    дай команду реакции 0
  5. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    ищё вопрос вот мой конфиг

    Код:
    map_path = Maps\Download\DotA v6.70 LoD v10 English.w3x
    map_type = dota
    map_matchmakingcategory = dota_elo
    map_localpath = DotA v6.70 LoD v10 English.w3x
    map_defaulthcl = mdemsofrru
    На автохост как открыть 11-12 слотов?
  6. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    В лобби разобрался теперь посты идут от бота но я иногда не играю но пишу с бота, и все сообщения иду от левых пользователей, как это исправить?
  7. Inhuman Пил пиво с админом

    Сообщения:
    147
    Спасибы:
    6
    Сборка бота GHost:
    BrtGhost rev 1.81
    Дата начала использования бота:
    15.09.2010
    удали это
    Код:
    !player->GetRmkVote( ) &&
  8. Inhuman Пил пиво с админом

    Сообщения:
    147
    Спасибы:
    6
    Сборка бота GHost:
    BrtGhost rev 1.81
    Дата начала использования бота:
    15.09.2010
    game_base.cpp найди 1-ую строчку с //check ip multiple usage
  9. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    1 Найди в Game_base.cpp строку
    Код:
    // check for multiple ip usage.
    И ПЕРЕД ней вставь
    Код:
    // join message from diff realms
    	string ServName = "Unknown realm";
       if( HostCounterID != 0 )
       {
          CreateFakePlayer( );
          for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
          {
             if( (*i)->GetHostCounterID( ) == HostCounterID )
                ServName = (*i)->GetServerAlias();
          }
       }
    else ServName = "Garena";
    SendAllChat( joinPlayer->GetName( ) + " зашел с [" + ServName + "]");
    Потом в этом же файле найди
    Код:
    SendAll( m_Protocol->SEND_W3GS_PLAYERINFO( m_FakePlayerPID, "FakePlayer", IP, IP ) );
    и замени "FakePlayer" на ник бота или на что захочешь

    2 Сработает точно

    Найди в game.cpp это
    Код:
    // !VIRTUALHOST
    Ниже него команда рмк, для админов, сломай ее, ну типа так
    Код:
             //
    			// !RMK
    			//
    
    			else if( Command == "rmk34asdfkk" && m_GameLoaded)
    Как ты видешь я просто испраил rmk на какуюто хрень и это уже не рмк.
    Далее найди ниже, оно будет в не-админ командах
    Код:
    // !RMK
    И начало функции зделай так
    Код:
    else if( Command == "rmk" && m_GameLoaded)
    Код:
    map_path = Maps\Download\DotA v6.70 LoD v10 English.w3x
    map_type = dota
    map_matchmakingcategory = dota_elo
    map_localpath = DotA v6.70 LoD v10 English.w3x
    map_defaulthcl = mdemsofrru
    map_observers = 4
    map_slot1 = 0 255 0 0 0 1 4 1 100
    map_slot2 = 0 255 0 0 0 2 4 1 100
    map_slot3 = 0 255 0 0 0 3 4 1 100
    map_slot4 = 0 255 0 0 0 4 4 1 100
    map_slot5 = 0 255 0 0 0 5 4 1 100
    map_slot6 = 0 255 0 0 1 7 8 1 100
    map_slot7 = 0 255 0 0 1 8 8 1 100
    map_slot8 = 0 255 0 0 1 9 8 1 100
    map_slot9 = 0 255 0 0 1 10 8 1 100
    map_slot10 = 0 255 0 0 1 11 8 1 100
    map_slot11 = 0 255 1 0 12 12 96 1 100
    map_slot12 = 0 255 1 0 12 12 96 1 100
  10. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    я так понимаю "FakePlayer" должен сидеть на 12-12 слоте?но у меня там закрыто.Или его добавлять вручную?Если да то как сделать автоматом
  11. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    автоматом и так добавит... 12 слот в конфиге открой
    Код:
    map_slot11 = 0 255 1 0 12 12 96 1 100
    map_slot12 = 0 255 0 0 12 12 96 1 100
    А после CreateFakePlayer( ) добавь:
    Код:
    m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( 1 - 1 ), (unsigned char)( 12 - 1 ) );
    Выйдет:
    Код:
    CreateFakePlayer( );
    m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( 1 - 1 ), (unsigned char)( 12 - 1 ) );
  12. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Либо так:
    Код:
    SendChat(player->GetPID(), "");
    либо так:
    Код:
    SendAllChat("");
    
  13. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    player->GetPID() ох да, малость забыл)
  14. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    Все сделал как написано но автоматом не добавило=(Где ошибка?
  15. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    Получилось так:
    Зашел на бота фейка нету, написал !fakeplayer меня свапнуло на 12 слот, а его добавило на 1 свободный.А я хотел бы что бы он автоматом там появлялся (на 12 или 11)
  16. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    Код:
    CreateFakePlayer( );
    m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( 1 - 1 ), (unsigned char)( 12 - 1 ) );
    Это точно в game_base.cpp ?
    А реалм пишет с какого зашел? У меня тут же был этот код и работало
    Ок зделай типа так:
    Код:
    // join message from diff realms
    	string ServName = "Unknown realm";
       if( HostCounterID != 0 )
       {
          for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
          {
             if( (*i)->GetHostCounterID( ) == HostCounterID )
                ServName = (*i)->GetServerAlias();
          }
       }
    else ServName = "Garena";
    SendAllChat( joinPlayer->GetName( ) + " зашел с [" + ServName + "]");
    CreateFakePlayer( );
    m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( 1 - 1 ), (unsigned char)( 12 - 1 ) );
    Как видишь просто в низ перенесли фейк плаера, у меня вот именно так было, и он появлялсо и все было как надо, при заходе 1-го рыла, был фейк на 12 слоте
  17. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    [IMG]
    Нету все сделал как ты писал:
    В game_base.cpp над // check for multiple ip usage. Вставил
    Код:
    // join message from diff realms
       string ServName = "Unknown realm";
       if( HostCounterID != 0 )
       {
          for( vector<CBNET *> :: iterator i = m_GHost->m_BNETs.begin( ); i != m_GHost->m_BNETs.end( ); i++ )
          {
             if( (*i)->GetHostCounterID( ) == HostCounterID )
                ServName = (*i)->GetServerAlias();
          }
       }
    else ServName = "Garena";
    SendAllChat( joinPlayer->GetName( ) + " зашел с [" + ServName + "]");
    CreateFakePlayer( );
    m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( 1 - 1 ), (unsigned char)( 12 - 1 ) );
    нет
  18. marpool Знакомый модера

    Сообщения:
    118
    Спасибы:
    2
    Сборка бота GHost:
    Ghost One 1.7.266
    Могу дать свой game_base.cpp
    Может ты ищё куда то тыкал код?например в game.cpp !FAKEPLAYER или нет?
  19. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    ты вообще компилировал ? :lol: :lol: :lol:
  20. rost Гуру

    Сообщения:
    1.258
    Спасибы:
    150
    Сборка бота GHost:
    LtG
    Дата начала использования бота:
    01.11.2010
    Skype:
    Мой статус
    реалм писать должно ну 100%...
    Ты просто исправил мб код через akelpad или типа того, но не скомпилировал новый exe файл бота. Я более чем уверен, ну или это кара небесная я хз -_- :bIbIbIblya: :lol:
Статус темы:
Закрыта.