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

.rmk

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

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

    Сообщения:
    62
    Спасибы:
    0
    Снова всем привет, обращаюсь к вам по новому вопросу. Суть в том, что есть команда .rmk ( взятая с brtghost ), я хочу переделать её так, чтобы при ливе одного игрока, та команда, в которой был ливер могла написать команду .rmk ( сколько человек в команде столько и голосов нужно ), помогите. В принципе можно взять базу из того же брт, команду -ff, только вот нужно чтобы .rmk можно было написать, только тогда, когда в команде меньше 5-ти человек ( т.е. кто-то ливнул ).
    .rmk - даёт результат игры - ничья.

    Код команды .rmk
    ~game.cpp
    Код:
    if( Command == "rmk" && m_GameLoaded && (m_GameTicks/1000)<900)
    			{
    				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();
    					SendAllChat( player->GetName()+ " " + m_GHost->m_Language->rmkgame() + " .rmk " + m_GHost->m_Language->okforrmk() );
    				}
    				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( m_GHost->m_Language->IgraZakonchitsya() ); // "Game will end in 5 seconds"
    					m_GameOverTime = GetTime( );
    					m_RmkVotePlayer.clear( );
    					m_StartedRmkVoteTime = 0;
    				}
    				else
    					SendAllChat( player->GetName()+ " " + m_GHost->m_Language->rmkgame() + " .rmk " + m_GHost->m_Language->okforrmk() );
    			}
    код команды -ff
    ~game.cpp
    Код:
    if( ( Command == "fastfinish" || Command == "ff" ) && m_GameLoaded && (m_GameTicks/1000)>900)
        {
         
            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()+ " " + m_GHost->m_Language->sdalsya() + " [" + UTIL_ToString( Votes )+"/"+ UTIL_ToString(VotesNeeded)+"] "+"-ff " + m_GHost->m_Language->ShobZdacco() );
             if( Votes >= VotesNeeded )
                  {
                   if (m_DotaGame )
                   {
                   SendAllChat( m_GHost->m_Language->Pobeditelithe() + (string)(CurentTeam == 0 ? "Scrouge " : "Sentinel ") + m_GHost->m_Language->IgraZakonchitsya() );
                   m_Stats->SetWinner((uint32_t)(CurentTeam == 0 ? 2 : 1));
                   }
                   else SendAllChat( m_GHost->m_Language->IgraZakonchitsya() );
    				 m_GameOverTime = GetTime( );
    
                  }
              
        }
    Помогите, буду очень благодарен :prayy:
  2. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
  3. MeGaLeX Знакомый модера

    Сообщения:
    62
    Спасибы:
    0
    не поможет никто? :opasnoste: