[Обсуждение] GHost++

Форум технической поддержки игроков и решения проблем, возникающих в процессе игры.

Сообщение CIosed » 07 май 2011, 17:55

Я вот пытался в Ghost One вписать такое... Подскажите что не так и че к чему)
game.h
добавил после 61 строки:
Код: Выделить всё
   bool m_DotaGame;


В game.cpp
строка 88 заменил:
Код: Выделить всё
 if( m_Map->GetMapType( ) == "w3mmd" )
      m_Stats = new CStatsW3MMD( this, m_Map->GetMapStatsW3MMDCategory( ) );
   else if( m_Map->GetMapType( ) == "dota" )
         m_Stats = new CStatsDOTA( this );
      else
      m_Stats = NULL;

На:
Код: Выделить всё
m_DotaGame = false;
   if( m_Map->GetMapType( ) == "w3mmd" )
      m_Stats = new CStatsW3MMD( this, m_Map->GetMapStatsW3MMDCategory( ) );
   else if( m_Map->GetMapType( ) == "dota" )
   {
      m_Stats = new CStatsDOTA( this );
   m_DotaGame = true;
   }
   else
      m_Stats = NULL;

Строка 5671, добавил перед:
Код: Выделить всё
   //
   // !YES
   //

такое:
Код: Выделить всё
if( ( Command == "forfeit" || Command == "ff" ) && m_GameLoaded )
    {
     
        unsigned char CurentTeam=m_Slots[GetSIDFromPID(player->GetPID())].GetTeam();
      if (CurentTeam>1)
         return false ;
      player->SetFFVote(true);
      uint32_t VotesNeeded= 0;
      uint32_t Votes = 0;
        for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
      {
         if( !(*i)->GetLeftMessageSent( ) )
         if(m_Slots[GetSIDFromPID((*i)->GetPID())].GetTeam() == CurentTeam)
         {
            VotesNeeded++;
            if( (*i)->GetFFVote( ) )
               Votes++;
         }
      }
         SendAllChat( player->GetName()+" сдался [" + UTIL_ToString( Votes )+"/"+ UTIL_ToString(VotesNeeded)+"] "+"-ff чтобы сдаться");
         if( Votes >= VotesNeeded )
              {
               if (m_DotaGame )
               {
               SendAllChat("Победители The " + (string)(CurentTeam == 0 ? "Scrouge" : "Sentinel") + " игра закончится через 5 секунд.");
               m_Stats->SetWinner((uint32_t)(CurentTeam == 0 ? 2 : 1));
               }
               else SendAllChat("Игра закончится через 5 секунд.");
               m_GameEndCountDownStarted = true;
               m_GameEndCountDownCounter = 5;
               m_GameEndLastCountDownTicks = GetTicks();
              }
           
    }

В gameplayer.cpp
строка 286 после:
Код: Выделить всё
 m_KickVote = false;

Добавил:
Код: Выделить всё
   m_FFVote= false;

Строка 355, после:
Код: Выделить всё
   m_KickVote = false;

Добавил:
Код: Выделить всё
   m_FFVote= false;

В gameplayer.h
строка 135, после:
Код: Выделить всё
 bool m_KickVote;                               // if the player voted to kick a player or not

Добавил:
Код: Выделить всё
 bool m_FFVote;                            // Forfeit

строка 195, после:
Код: Выделить всё
   bool GetKickVote( )                            { return m_KickVote; }

Добавил:
Код: Выделить всё
   bool GetFFVote( )                         { return m_FFVote; }

строка 238, после:
Код: Выделить всё
   void SetKickVote( bool nKickVote )                                              { m_KickVote = nKickVote; }

Добавил:
Код: Выделить всё
   void SetFFVote( bool nFFVote )                                        { m_FFVote = nFFVote; }

В stats.cpp,
после:
Код: Выделить всё
virtual void Save( CGHost *GHost, CGHostDB *DB, uint32_t GameID );

Добавил:
Код: Выделить всё
virtual void SetWinner( uint32_t n_Winner );

в statsdota.cpp в конце добавил:
Код: Выделить всё
void CStatsDOTA :: SetWinner( uint32_t n_Winner )
{
    m_Winner = n_Winner;
}

в statsdota.h, после:
Код: Выделить всё
virtual void Save( CGHost *GHost, CGHostDB *DB, uint32_t GameID );

Добавил:
Код: Выделить всё
virtual void SetWinner( uint32_t n_Winner );


Что б команда вводилась с помощью тега "-":
в game_base.cpp, заменил:
Код: Выделить всё
if( Message == "?trigger" )
            SendChat( player, m_GHost->m_Language->CommandTrigger( string( 1, m_GHost->m_CommandTrigger ) ) );

На:
Код: Выделить всё
         if( (Message == "-ff" || Message == "-fastfinish" || Message == "-сдаться" || Message == "-сдаюсь")  && m_GameLoaded)
            EventPlayerBotCommand(player,"ff",string( ));
else if( Message == "?trigger" )
            SendChat( player, m_GHost->m_Language->CommandTrigger( string( 1, m_GHost->m_CommandTrigger ) ) );
http://www.ex.ua/view/1749607?r=625,23779
(Ваша подпись содержит слишком много знаков: 101.)
Аватара пользователя
CIosed
Школота
Школота
 
Сообщения: 20
Зарегистрирован:
22 май 2010, 11:10
Откуда: от туда))
Has thanked: 0 time
Have thanks: 0 time

Сообщение ____ROB____ » 07 май 2011, 19:13

____ROB____ писал(а):ну... в GHostOne етой команды нет. (ну если не дописывать самому)
только в GHostOne BRT, проще будет если ты скачаешь уже готовый брт бот и просто настроишь под себя.
последний екзешный релиз brtGHost1.7.0.91 (старый конечно, но для тебя думаю сойдёт).
зайдёшь в ghost.cfg и там будет строка
Код: Выделить всё
bot_minFFtime -

туда указывай время в секундах :lol:


меня видно?

мб вечером или завтра утром, залью уже готовый GHostOne BRT 1.135 (компилированый и тд)
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение CIosed » 07 май 2011, 19:17

____ROB____ писал(а):
____ROB____ писал(а):ну... в GHostOne етой команды нет. (ну если не дописывать самому)
только в GHostOne BRT, проще будет если ты скачаешь уже готовый брт бот и просто настроишь под себя.
последний екзешный релиз brtGHost1.7.0.91 (старый конечно, но для тебя думаю сойдёт).
зайдёшь в ghost.cfg и там будет строка
Код: Выделить всё
bot_minFFtime -

туда указывай время в секундах :lol:


меня видно?

Нету там такого в cfg...
Изображение
Последний раз редактировалось CIosed 07 май 2011, 19:28, всего редактировалось 1 раз.
http://www.ex.ua/view/1749607?r=625,23779
(Ваша подпись содержит слишком много знаков: 101.)
Аватара пользователя
CIosed
Школота
Школота
 
Сообщения: 20
Зарегистрирован:
22 май 2010, 11:10
Откуда: от туда))
Has thanked: 0 time
Have thanks: 0 time
Вернуться к началу

Сообщение ____ROB____ » 07 май 2011, 19:21

угу в 91 мин_фф_тайм нет, но каманда фф есть +)
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение CIosed » 07 май 2011, 19:40

____ROB____ писал(а):угу в 91 мин_фф_тайм нет, но каманда фф есть +)

да, команда есть. Но в Dota v 6.72b пишет "You can't use this command in this scenario." В прочем не важно... Ведь можно с брь госта добавить команду в гост оне?
Что я пропустил? :
Код: Выделить всё
   //
   // !FF
   //

   else if( Command == "ff" && !player->GetFFVote( ) && m_GameLoaded)
   {
      if ( !m_Stats )
      {
         SendChat(player->GetPID(), m_GHost->m_Language->GetLang("lang_1208"));
         return HideCommand;
      }
      
      player->SetFFVote( true );
      
      unsigned char playerTeam = m_Slots[GetSIDFromPID(player->GetPID())].GetTeam();

      uint32_t count1 = 0;
      uint32_t count2 = 0; //count of players in the team.
      uint32_t votes1 = 0;
      uint32_t votes2 = 0; //count of votes in the team.
      string teamname = (playerTeam == 0 ? "SENTINEL" : "SCOURGE");
      
      for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
      {
         if( !(*i)->GetLeftMessageSent( ) )
         if(m_Slots[GetSIDFromPID((*i)->GetPID())].GetTeam() == (unsigned char)0)
         {
            count1++;
            if( (*i)->GetFFVote( ) )
               votes1++;
         }
         else
         {
            count2++;
            if( (*i)->GetFFVote( ) )
               votes2++;
         }
      }
      
      bool end1 = (votes1 == count1);
      bool end2 = (votes2 == count2);

      if( end1 || end2 )
      {
         if( end1 )
            m_Stats->SetWinner(2);
         else
            m_Stats->SetWinner(1);
            
         SendAllChat(m_GHost->m_Language->GetLang("lang_1213", end1 ? "SENTINEL" : "SCOURGE" ));

         SendAllChat(m_GHost->m_Language->GetLang("lang_1053")); // "Game will end in 5 seconds"
         m_GameEndCountDownStarted = true;
         m_GameEndCountDownCounter = 5;
         m_GameEndLastCountDownTicks = GetTicks();
      }
      else
      {
         SendAllChat( m_GHost->m_Language->GetLang("lang_1211", "$USER$", User, "$TEAMNAME$", teamname, "$VOTES$", UTIL_ToString(playerTeam == 0 ? votes1 : votes2), "$COUNT$", UTIL_ToString(playerTeam == 0 ? count1 : count2)));
      }
   
      SendChat(player->GetPID(), m_GHost->m_Language->GetLang("lang_1210", "$TRIGGER$", string(1, m_GHost->m_CommandTrigger)));
      return HideCommand;
   }
   
   //
   // !NOFF
   //

   else if( Command == "noff" && player->GetFFVote( ) && m_GameLoaded)
   {
      player->SetFFVote( false );
      
      unsigned char playerTeam = m_Slots[GetSIDFromPID(player->GetPID())].GetTeam();
      uint32_t count1 = 0, count2 = 0; //count of players in the team.
      uint32_t votes1 = 0, votes2 = 0; //count of votes in the team.
      string teamname = (playerTeam == 0 ? "SENTINEL" : "SCOURGE");

      for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
      {
         if( !(*i)->GetLeftMessageSent( ) )
         if(m_Slots[GetSIDFromPID((*i)->GetPID())].GetTeam() == (unsigned char)0)
         {
            count1++;
            if( (*i)->GetFFVote( ) )
               votes1++;
         }else{
            count2++;
            if( (*i)->GetFFVote( ) )
               votes2++;
         }
      }

      if ((votes1 != count1) && (votes2 != count2))
      {
         CONSOLE_Print( "[GAME: " + m_GameName + "] canceled end game" );
         m_GameEndCountDownStarted = false;
      }

      SendAllChat( m_GHost->m_Language->GetLang("lang_1212", "$USER$", User, "$TEAMNAME$", teamname, "$VOTES$", UTIL_ToString(playerTeam == 0 ? votes1 : votes2), "$COUNT$", UTIL_ToString(playerTeam == 0 ? count1 : count2)));

      return HideCommand;
   }
   
   
http://www.ex.ua/view/1749607?r=625,23779
(Ваша подпись содержит слишком много знаков: 101.)
Аватара пользователя
CIosed
Школота
Школота
 
Сообщения: 20
Зарегистрирован:
22 май 2010, 11:10
Откуда: от туда))
Has thanked: 0 time
Have thanks: 0 time
Вернуться к началу

Сообщение ____ROB____ » 07 май 2011, 19:41

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

но даже если ты её добавшь, всеравно тебе будет писатся "You can't use this command in this scenario" :lol:
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение CIosed » 07 май 2011, 20:34

____ROB____ писал(а):я ету команду не добавлял, поетому и немогу сказать рабочая или нет. ето к фейку

но даже если ты её добавшь, всеравно тебе будет писатся "You can't use this command in this scenario" :lol:

я ее добавил и ничего не получилось) та ну ее...
http://www.ex.ua/view/1749607?r=625,23779
(Ваша подпись содержит слишком много знаков: 101.)
Аватара пользователя
CIosed
Школота
Школота
 
Сообщения: 20
Зарегистрирован:
22 май 2010, 11:10
Откуда: от туда))
Has thanked: 0 time
Have thanks: 0 time

Сообщение ____ROB____ » 07 май 2011, 21:40

скачивай бота по тем ссылкам что дал я.
заходи в конфиг карты и обознач что ето дота. (если незначешь как - я скажу)
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение CIosed » 07 май 2011, 22:19

____ROB____ писал(а):скачивай бота по тем ссылкам что дал я.
заходи в конфиг карты и обознач что ето дота. (если незначешь как - я скажу)

Ради одной команды качать "новое" и заново его настраивать... оно того не стоит) и так нормально ;)
http://www.ex.ua/view/1749607?r=625,23779
(Ваша подпись содержит слишком много знаков: 101.)
Аватара пользователя
CIosed
Школота
Школота
 
Сообщения: 20
Зарегистрирован:
22 май 2010, 11:10
Откуда: от туда))
Has thanked: 0 time
Have thanks: 0 time

Сообщение ____ROB____ » 07 май 2011, 22:22

внести пару изменений в цфг файл, ето не так долго, дело 5 минут. :roll:
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение CIosed » 07 май 2011, 23:21

____ROB____ писал(а):внести пару изменений в цфг файл, ето не так долго, дело 5 минут. :roll:

да я пол бота переделал) что-то понашаманивал там :D
зато работает идеально ;)
http://www.ex.ua/view/1749607?r=625,23779
(Ваша подпись содержит слишком много знаков: 101.)
Аватара пользователя
CIosed
Школота
Школота
 
Сообщения: 20
Зарегистрирован:
22 май 2010, 11:10
Откуда: от туда))
Has thanked: 0 time
Have thanks: 0 time

Сообщение ____ROB____ » 08 май 2011, 02:11

например...
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение i_am_fake » 10 май 2011, 21:09

почему к фейку? команда с брт...


по сабжу: надо добавить
Код: Выделить всё
map_type = dota
map_matchmakingcategory = dota_elo
Изображение
Аватара пользователя
i_am_fake
Старожил
Старожил
 
Сообщения: 2442
Зарегистрирован:
31 янв 2011, 22:53
Has thanked: 77 times
Have thanks: 120 times
Играю в: человека.

Сообщение ____ROB____ » 10 май 2011, 22:06

ну....
человеку ето не интересно :roll:
www.xephu.net
Аватара пользователя
____ROB____
Местный
Местный
 
Сообщения: 1349
Зарегистрирован:
07 окт 2010, 20:47
Has thanked: 95 times
Have thanks: 37 times

Сообщение Asabist » 11 май 2011, 10:36

У меня 2 вопроса, по Ghost One.
1. Как настроить статистику, она не работает, не считает игры даже....
2. Как настроить бота что бы игроки с других серверов тоже могли видить мою игру, созданную на алкаре. Тоесть какие настройки, куда и как пихать нужно.

P.S.:буду признателен если кто-то поможет, а то из-за ботов собрать на 1 игру людей даже на доту сложно, я молчу про остальные мапы.
Осуждают, потому что не понимают.
Аватара пользователя
Asabist
Школота
Школота
 
Сообщения: 31
Зарегистрирован:
16 ноя 2008, 21:22
Has thanked: 2 times
Have thanks: 0 time

Пред.След.

Вернуться в WC3: Техподдержка

Кто сейчас на конференции

Посетителей: 1, из них зарегистрированных: 0, скрытых: 0 и гостей: 1 (находятся на конференции)
Этот раздел просматривают: нет зарегистрированных пользователей и гости: 1

cron