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

Как создать новую команду?

Тема в разделе 'Основные вопросы', создана пользователем zend, 24 июн 2012.

  1. zend Ньюфаг

    Сообщения:
    13
    Спасибы:
    0
    Ghost v 17.1
    Как создать новую команду? Например чтобы он считывал с txt файла. !test
  2. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Код:
        //
        // !TEST
        //
    
        else if( Command == "test" )
        {
            // read from test.txt if available
    
            ifstream in;
            in.open( "test.txt" );
    
            if( !in.fail( ) )
            {
                // don't print more than 8 lines
    
                uint32_t Count = 0;
                string Line;
    
                while( !in.eof( ) && Count < 8 )
                {
                    getline( in, Line );
    
                    if( Line.empty( ) )
                    {
                        if( !in.eof( ) )
                            SendChat( player, " " );
                    }
                    else
                        SendChat( player, Line );
    
                    ++Count;
                }
    
                in.close( );
            }
            else
                CONSOLE_Print( "[GAME: " + m_GameName + "] Failed to open [test.txt]" );
        }
    В директории с ботом создаёшь файл text.txt. Первые 8 строк файла выводятся по команде !test.

    Уже было подобное.
    http://community.w3gh.ru/threads/Не-могу-скомпилировать-команду-Правила.3362/#post-27307
  3. Krabsss Наш человек

    Сообщения:
    50
    Спасибы:
    4
    а как сделать чтобы записать в этот текстовый файл можно было с помощью команды
  4. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    Код:
    	//
    	// !TEST
    	//
    
    	else if( Command == "test" )
    	{
    		string TestString, TestFile;
    
    		if( !Payload.empty( ) )
    			TestString = Payload;
    
    		if( TestString.empty( ) )
    			CONSOLE_Print( "[ERROR] Payload cannot be empty string!" );
    		else
    		{
    			TestFile = "test.txt";
    
    			ofstream out( TestFile.c_str( ) );
    
    			if( !out )
    				CONSOLE_Print( "[ERROR] Failed to write test data!" );
    			else
    			{
    				out << TestString.c_str( );
    				CONSOLE_Print( "[SUCCESS] Wrote test data successfully!" );
    			}
    
    			out.close( );
    		}
    	}
    добавлено...

    Или в стиле лога, с временными метками:

    Код:
    	//
    	// !TEST
    	//
    
    	else if( Command == "test" )
    	{
    		string message, TestFile = "test.txt";
    
    		if( !Payload.empty( ) )
    			message = Payload;
    
    		if( message.empty( ) )
    			CONSOLE_Print( "[ERROR] Payload cannot be empty string!" );
    		else
    		{
    			cout << message << endl;
    
    			if( !TestFile.empty( ) )
    			{
    				ofstream Txt;
    				Txt.open( TestFile.c_str( ), ios :: app );
    
    				if( !Txt.fail( ) )
    				{
    					time_t Now = time( NULL );
    					string Time = asctime( localtime( &Now ) );
    
    					// erase the newline
    
    					Time.erase( Time.size( ) - 1 );
    					Txt << "[" << Time << "] " << message << endl;
    					Txt.close( );
    					CONSOLE_Print( "[SUCCESS] Wrote test data successfully!" );
    				}
    				else
    					CONSOLE_Print( "[ERROR] Failed to write test data!" );
    			}
    		}
    	}
  5. zend Ньюфаг

    Сообщения:
    13
    Спасибы:
    0
    ViperNight, спасибо большое. Еще один вопрос. А в какой файл этот код нужно впихнуть?

    Код:
    //
        // !TEST
        //
     
        else if( Command == "test" )
        {
            // read from test.txt if available
     
            ifstream in;
            in.open( "test.txt" );
     
            if( !in.fail( ) )
            {
                // don't print more than 8 lines
     
                uint32_t Count = 0;
                string Line;
     
                while( !in.eof( ) && Count < 8 )
                {
                    getline( in, Line );
     
                    if( Line.empty( ) )
                    {
                        if( !in.eof( ) )
                            SendChat( player, " " );
                    }
                    else
                        SendChat( player, Line );
     
                    ++Count;
                }
     
                in.close( );
            }
            else
                CONSOLE_Print( "[GAME: " + m_GameName + "] Failed to open [test.txt]" );
        }
  6. ViperNight ▒▒▒▒▒▒▒▒▒

    Сообщения:
    311
    Спасибы:
    154
    Сборка бота GHost:
    GHost++ r597M
    Дата начала использования бота:
    20.01.2007
    Skype:
    Мой статус
    В game.cpp наверно, в секцию Admin или Non admin commands, в зависимости от назначения.
  7. zend Ньюфаг

    Сообщения:
    13
    Спасибы:
    0
    что то он не реагирует на команду...
  8. Aloha_Hawaii Старожила

    Сообщения:
    314
    Спасибы:
    33
    Сборка бота GHost:
    Ghost One 1.7.266
    ты же скомпилировал?
  9. zend Ньюфаг

    Сообщения:
    13
    Спасибы:
    0
    Да, скомпилировал. Но все равно не работает(
  10. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Либо не туда засунул команду, либо не заменил исполняемый файл, либо не находит файл откуда читать.
  11. zend Ньюфаг

    Сообщения:
    13
    Спасибы:
    0
    помогите пожалуйста :(

    Код:
    /*********************
        * NON ADMIN COMMANDS *
        *********************/
     
        //
        // !CHECKME
        //
     
        if( Command == "checkme" )
            SendChat( player, m_GHost->m_Language->CheckedPlayer( User, player->GetNumPings( ) > 0 ? UTIL_ToString( player->GetPing( m_GHost->m_LCPings ) ) + "ms" : "N/A", m_GHost->m_DBLocal->FromCheck( UTIL_ByteArrayToUInt32( player->GetExternalIP( ), true ) ), AdminCheck || RootAdminCheck ? "Yes" : "No", IsOwner( User ) ? "Yes" : "No", player->GetSpoofed( ) ? "Yes" : "No", player->GetSpoofedRealm( ).empty( ) ? "N/A" : player->GetSpoofedRealm( ), player->GetReserved( ) ? "Yes" : "No" ) );
     
          //
          // !TEST
          //
     
        else if( Command == "test" )
        {
            // read from test.txt if available
     
            ifstream in;
            in.open( "test.txt" );
     
            if( !in.fail( ) )
            {
                // don't print more than 8 lines
     
                uint32_t Count = 0;
                string Line;
     
                while( !in.eof( ) && Count < 8 )
                {
                    getline( in, Line );
     
                    if( Line.empty( ) )
                    {
                        if( !in.eof( ) )
                            SendChat( player, " " );
                    }
                    else
                        SendChat( player, Line );
     
                    ++Count;
                }
     
                in.close( );
            }
            else
                CONSOLE_Print( "[GAME: " + m_GameName + "] Failed to open [test.txt]" );
        }
     
        //
        // !STATS
        //
     
        if( Command == "stats" && GetTime( ) - player->GetStatsSentTime( ) >= 5 )
        {
            string StatsUser = User;
     
            if( !Payload.empty( ) )
                StatsUser = Payload;
     
            if( player->GetSpoofed( ) && ( AdminCheck || RootAdminCheck || IsOwner( User ) ) )
                m_PairedGPSChecks.push_back( PairedGPSCheck( string( ), m_GHost->m_DB->ThreadedGamePlayerSummaryCheck( StatsUser ) ) );
            else
                m_PairedGPSChecks.push_back( PairedGPSCheck( User, m_GHost->m_DB->ThreadedGamePlayerSummaryCheck( StatsUser ) ) );
     
            player->SetStatsSentTime( GetTime( ) );
        }
     
        //
        // !STATSDOTA
        //
     
        if( Command == "statsdota" && GetTime( ) - player->GetStatsDotASentTime( ) >= 5 )
        {
            string StatsUser = User;
     
            if( !Payload.empty( ) )
                StatsUser = Payload;
     
            if( player->GetSpoofed( ) && ( AdminCheck || RootAdminCheck || IsOwner( User ) ) )
                m_PairedDPSChecks.push_back( PairedDPSCheck( string( ), m_GHost->m_DB->ThreadedDotAPlayerSummaryCheck( StatsUser ) ) );
            else
                m_PairedDPSChecks.push_back( PairedDPSCheck( User, m_GHost->m_DB->ThreadedDotAPlayerSummaryCheck( StatsUser ) ) );
     
            player->SetStatsDotASentTime( GetTime( ) );
        }
     
        //
        // !VERSION
        //
     
        if( Command == "version" )
        {
            if( player->GetSpoofed( ) && ( AdminCheck || RootAdminCheck || IsOwner( User ) ) )
                SendChat( player, m_GHost->m_Language->VersionAdmin( m_GHost->m_Version ) );
            else
                SendChat( player, m_GHost->m_Language->VersionNotAdmin( m_GHost->m_Version ) );
        }
    
    файл в корне бота тоже создал "test.txt"
  12. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Ну если предположить что ты скомпилировал, заменил старый ghost.ехе новым, то либо test.txt пустой либо кодировка в нем не та.