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

!HCL в bnet.cpp

Тема в разделе 'Основные вопросы', создана пользователем JudFai, 22 янв 2011.

  1. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Код:
        		                //
    			// !HCL
    			//
    
    			if( Command == "hcl" )
    			{
    				if( !Payload.empty( ) )
    				{
    					string HCLChars = "abcdefghijklmnopqrstuvwxyz0123456789 -=,.";
    					if( Payload.find_first_not_of( HCLChars ) == string :: npos )
    					{
    						m_GHost->m_CurrentGame->m_HCLCommandString = Payload;
    						m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->SettingHCL( m_GHost->m_CurrentGame->m_HCLCommandString ) );
    					}
    					else
    						m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->UnableToSetHCLInvalid( ) );
    				}
    				else
    					m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->TheHCLIs( m_GHost->m_CurrentGame->m_HCLCommandString ) );
    			}	
    Я добавляю такю команду в bnet.cpp, но при компиляции вылетает такая ошибка:
    Код:
    bnet.cpp
    .\bnet.cpp(1610) : error C2248: CBaseGame::m_HCLCommandString: невозможно обратиться к protected член, объявленному в классе "CBaseGame"
            d:\for me\bot\ghost\ghost\game_base.h(80): см. объявление 'CBaseGame::m_HCLCommandString'
            d:\for me\bot\ghost\ghost\game_base.h(44): см. объявление 'CBaseGame'
    .\bnet.cpp(1611) : error C2248: CBaseGame::m_HCLCommandString: невозможно обратиться к protected член, объявленному в классе "CBaseGame"
            d:\for me\bot\ghost\ghost\game_base.h(80): см. объявление 'CBaseGame::m_HCLCommandString'
            d:\for me\bot\ghost\ghost\game_base.h(44): см. объявление 'CBaseGame'
    .\bnet.cpp(1617) : error C2248: CBaseGame::m_HCLCommandString: невозможно обратиться к protected член, объявленному в классе "CBaseGame"
            d:\for me\bot\ghost\ghost\game_base.h(80): см. объявление 'CBaseGame::m_HCLCommandString'
            d:\for me\bot\ghost\ghost\game_base.h(44): см. объявление 'CBaseGame'
    Может я код не правильно создаю ?
  2. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    может и да, а может и нет :rickroll:
    по сабжу - а лог компиляции мы читать будем или нет?
  3. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    А выше твоего сообщения - переписка Энгильса с Каутским, так что ли ? o_O
  4. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    ну а ты сам его читал, перед тем как запостить?
  5. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    ну если бы я знал в чём проблема, то не создавал тему. А вообще в C++ я слабоват :prayy: Если знаешь в чём трабла, так помоги :avtoradolf:
  6. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    тут два варианта - или объявить m_HCLCommandString как public, или сделать для него геттер/сеттер.
  7. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Можно по-подробней, просто на примерах мне лучше учится
  8. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Вопрос ещё актуален
  9. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    открываем game_base.h и смотрим как там все организовано.
    фактически надо добавить что-то в этом стиле:
    Код:
    virtual string GetHCLCommandString( )					{ return m_HCLCommandString; }
    Код:
    virtual void SetHCLCommandString( string nHCLCommandString )					{ m_HCLCommandString = nHCLCommandString; }
    ну и затем получать/выставлять значение переменной с помощью этих методов.
  10. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Либо просто они уже есть.
    Код:
    virtual string GetHCL( )						{ return m_HCLCommandString; }
    virtual void SetHCL( string nHCL)				{ m_HCLCommandString = nHCL; }
    Автору:
    В своем коде (первый код который добавляет комманду*) везде замени
    Код:
    m_HCLCommandString
    на
    Код:
    GetHCL( )
    P.S.: Не слушай Fanat Ranetok т.к. не умеет юзать поиск по файлам :lol: там все есть. Сделай как я написал.
  11. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    в оригинальном GHost++ нет.
  12. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Мб. Автор ты когда пишешь сюда - почитай правила.
    Указывать какой бот - ОБЯЗАТЕЛЬНО!
  13. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    GHost++
  14. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Мде. Тогда делай как написал Fanat Ranetok

    P.S.: И еще кто-то пользуется этим старьем... :stenka:
  15. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Немного оффтопа, почему старьё ? Мне например нравится GHost++ он стабильный
  16. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Код:
             		
                                    //
             		// !HCL
             		//
    
             		if( Command == "hcl" && !Payload.empty( ) )
             		{
                   		string HCLChars = "abcdefghijklmnopqrstuvwxyz0123456789 -=,.";
                   		if( Payload.find_first_not_of( HCLChars ) == string :: npos )
                   		{
                      		m_GHost->m_CurrentGame->GetHCLCommandString( ) = Payload;
                      		m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->SettingHCL( m_GHost->m_CurrentGame->GetHCLCommandString( ) ) );
                   		}
                   		else
                      		m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->UnableToSetHCLInvalid( ) );
             		}
    				else
                   	    m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->TheHCLIs( m_GHost->m_CurrentGame->GetHCLCommandString( ) ) );
    Ребята, почему когда я пишу с канала боту /w bot !hcl ar, команда не меняется, а когда пишу в игре в приват, то меняется, что это такое? :stenka:
  17. Deals Старожила

    Сообщения:
    784
    Спасибы:
    21
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    Госпади Боже... нагородил!
    На держи!
    Код:
    //
    // !HCL
    //
    
    if( Command == "hcl")
    {
    	if (!Payload.empty( ))
    	{
    		string HCLChars = "abcdefghijklmnopqrstuvwxyz0123456789 -=,.";
    		if( Payload.find_first_not_of( HCLChars ) == string :: npos )
    		{
    			m_GHost->m_CurrentGame->SetHCLCommandString( Payload);
    			m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->SettingHCL( m_GHost->m_CurrentGame->GetHCLCommandString( ) ) );
    		}
    		else
    			m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->UnableToSetHCLInvalid( ) );
    	}
    	else
    		m_GHost->m_CurrentGame->SendAllChat( m_GHost->m_Language->TheHCLIs( m_GHost->m_CurrentGame->GetHCLCommandString( ) ) );
    }
  18. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Спасиба большое, всё отлично работает !