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

Help Timer

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

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

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    Хотелось бы создать новую команду !timer в игре. Допустим бывает ситуация кто-то просит 2 минуты подождать, ну пишешь !timer 2 и идет отсчет,а потом пауза автоматом убирается, возможно ли такое реализовать? ;D
  2. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Возможно
  3. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    А сможешь?)
  4. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Смогу
  5. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    Буду ждать ^^
  6. Aloha_Hawaii Старожила

    Сообщения:
    314
    Спасибы:
    33
    Сборка бота GHost:
    Ghost One 1.7.266
  7. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Куда?
  8. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    лучше бы с кодом помогли,чем острить.. :stenka:
  9. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    без фейк плеера наврят.
  10. Synth (LM) Пантограф!

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

    game.cpp

    Перед
    Код:
    			// !BANLAST
    			// !BL
    			//
    Вставить
    Код:
    			if( ( Command == "timer" ) && m_GameLoaded )
    			{
    				if (Payload.empty())
    				{
    				m_ReqResume = true;
    				}
    
    				m_PauseRq = GetTime()+UTIL_ToUInt32(Payload);
    				m_ReqResume = false;
    
    		for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
    		{
    
    			if(User == (*i)->GetName())
    			{
    				BYTEARRAY CRC;
    				BYTEARRAY Action;
    				Action.push_back( 1 );
    				m_Actions.push( new CIncomingAction( (*i)->GetPID(), CRC, Action ) );
    			}
    
    		}
    			}
    Вставить перед
    Код:
    	// show score of 
    	if (!m_ShowScoreOf.empty())
    	{
    Это
    Код:
    	if((GetTime()>m_PauseRq && m_Paused) || (m_ReqResume && m_Paused))
    	{
    
    	unsigned char pPID;
    	unsigned char Nr = (rand()%m_Slots.size())-1;
    	
    	for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
    	{
    		pPID = (*i)->GetPID();
    		if (pPID==Nr)
    		{
    	
    
    				BYTEARRAY CRC;
    				BYTEARRAY Action;
    				Action.push_back( 2 );
    				m_Actions.push( new CIncomingAction( pPID, CRC, Action ) );
    
    				m_Paused = false;
    				m_ReqResume = false;
    				m_PauseRq = 0;
    
    		}
    	}
    
    
    
    	}
    Найти
    Код:
    CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has unpaused the game" );
    И вставить ниже
    Код:
      m_Paused = false;
    Чуть ниже будет
    Код:
     CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has paused the game" );
    Ниже вставить
    Код:
     m_Paused = true;
    Объявление переменных:

    game_base.h

    После
    Код:
    	string m_ShowScoreOf;
    вставить
    Код:
    	uint32_t m_PauseRq;
    	bool m_Paused;
    	bool m_ReqResume;
    Компиляция ошибок не дала. У тебя тоже не должно (если я офк всё скопировал :lol:). Проверь на работоспособность - в игре введи !timer 60. Сразу должна поставиться пауза и через 60 секунд - рандомный игрок снимит паузу.
  11. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    компиляция ошибок не даст), но тело написавшее эту команду выйдет с игры и через 60 сек вылетит другое тело которое первое зашло).
    и да
    Код:
         for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
          {
    
             if(User == (*i)->GetName())
             {
                BYTEARRAY CRC;
                BYTEARRAY Action;
                Action.push_back( 1 );
                m_Actions.push( new CIncomingAction( (*i)->GetPID(), CRC, Action ) );
             }
    
          }
    =
    Код:
     BYTEARRAY CRC;
                BYTEARRAY Action;
                Action.push_back( 1 );
                m_Actions.push( new CIncomingAction( player->GetPID(), CRC, Action ) );
    и "player paused the game" у него не будет, так как ты это добавлял позже .
  12. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Ну пусть все равно потестить - я верю в чудо -_-

    А на счет твоего сравнения могу не согласиться.
  13. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    cейчас сделаю отпишусь
  14. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    string User = player->GetName( );
  15. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Мм.. никак не пойму что ты хочешь этим сказать. :limon:
  16. fake Старожила

    Сообщения:
    1.624
    Спасибы:
    19
    Дата начала использования бота:
    11.11.11
    в чем разница? o_O
  17. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    Небольшая проблема :stenka:
    хоть убей эти строчки не могу найти в game.cpp
    Код:
        CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has unpaused the game" );
    Код:
        CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has paused the game" );
    можно их добавить?
  18. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Тогда найди

    Код:
    void CBaseGame :: EventPlayerAction( CGamePlayer *player, CIncomingAction *action )
    {
       m_Actions.push( action );
    
       // check for players saving the game and notify everyone
    
       if( !action->GetAction( )->empty( ) && (*action->GetAction( ))[0] == 6 )
       {
          CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] is saving the game" );
          SendAllChat( m_GHost->m_Language->PlayerIsSavingTheGame( player->GetName( ) ) );
       }
    И вставь ниже

    Код:
    else if( !action->GetAction( )->empty( ) && (*action->GetAction( ))[0] == 0x02 )
       {
          CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has unpaused the game" );
      m_Paused = false;
       }
          else if( !action->GetAction( )->empty( ) && (*action->GetAction( ))[0] == 0x01 )
       {
          CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has paused the game" );
    	   m_Paused = true;
       }
  19. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    у меня что бот какой-то не такой? у меня даже этого нет (
    Код:
        void CBaseGame :: EventPlayerAction( CGamePlayer *player, CIncomingAction *action )
        {
           m_Actions.push( action );
    
           // check for players saving the game and notify everyone
    
           if( !action->GetAction( )->empty( ) && (*action->GetAction( ))[0] == 6 )
           {
              CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] is saving the game" );
              SendAllChat( m_GHost->m_Language->PlayerIsSavingTheGame( player->GetName( ) ) );
           }
    мне стыдно)
  20. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    game_base.cpp ~4676
    Код:
    void CBaseGame :: EventPlayerAction( CGamePlayer *player, CIncomingAction *action )
    В эту функцию вставь

    Код:
     if( !action->GetAction( )->empty( ) && (*action->GetAction( ))[0] == 0x02 )
       {
          CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has unpaused the game" );
      m_Paused = false;
       }
         if( !action->GetAction( )->empty( ) && (*action->GetAction( ))[0] == 0x01 )
       {
          CONSOLE_Print( "[GAME: " + m_GameName + "] player [" + player->GetName( ) + "] has paused the game" );
          m_Paused = true;
       }
Статус темы:
Закрыта.