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

команда <new> !change <nameplayer> <slot> bnet.cpp

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

  1. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    GHost++. Вообщем решил добавить свою команду !change <nameplayer> <slot> (Работает как свап, только вместо slot1 - nameplayer). Так вот:
    Код:
    				//
    				// !CHANGE
    				//
    
    				if( Command == "change" && !Payload.empty( ) && m_GHost->m_CurrentGame )
    				{
    					if( !m_GHost->m_CurrentGame->GetLocked( ) )
    					{
    						uint32_t SID1;
    						uint32_t SID2;
    						string cName;
    						stringstream SS;
    						SS << Payload;
    						SS >> cName;
    
    						if( SS.fail( ) )
    							CONSOLE_Print( "[BNET: " + m_ServerAlias + "] bad input #1 to change command" );
    						else
    						{
    							if( SS.eof( ) )
    								CONSOLE_Print( "[BNET: " + m_ServerAlias + "] missing input #2 to change command" );
    							else
    							{
    								SS >> SID2;
    
    								if( SS.fail( ) )
    									CONSOLE_Print( "[BNET: " + m_ServerAlias + "] bad input #2 to change command" );
    								else
    								{
    									SID1 = m_GHost->m_CurrentGame->GetSIDFromPID( m_GHost->m_CurrentGame->GetPID( cName ) );
    									m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( SID1 - 1 ), (unsigned char)( SID2 - 1 ) );
    								}
    							}
    						}
    					}
    					else
    						QueueChatCommand( m_GHost->m_Language->TheGameIsLockedBNET( ), User, Whisper );
    				}
    Выдаёт ошибку при компиляции:
    Код:
    Компиляция...
    bnet.cpp
    .\bnet.cpp(2129) : error C2039: GetPID: не является членом "CBaseGame"
            d:\for me\bot\ghost\ghost\game_base.h(44): см. объявление 'CBaseGame'
    :patsak:
  2. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Up ! ^^ Вопрос всё ещё в силе ! :avtoradolf:
  3. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    А зачем ты в bnet.cpp кинул?
  4. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Чтобы когда в приват с канала к боту пишешь он менял местами :limon:
  5. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Блин лажа. Уже столько всего перепробывал, всеравно ошибки
  6. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    у класса CBaseGame нету метода GetPID( ), но он есть у CGamePlayer
  7. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Напиши плз решение. В принципе я понимаю о чём ты, но вот не могу понять как это сделать -_-
  8. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    вот этот кусок:
    Код:
    SID1 = m_GHost->m_CurrentGame->GetSIDFromPID( m_GHost->m_CurrentGame->GetPID( cName ) );
    m_GHost->m_CurrentGame->SwapSlots( (unsigned char)( SID1 - 1 ), (unsigned char)( SID2 - 1 ) );
    преобразуем как-то так:
    Код:
    CGamePlayer * Player = m_GHost->m_CurrentGame->GetPlayerFromName( cName, false );
    if ( Player )
    m_GHost->m_CurrentGame->SwapSlots( m_GHost->m_CurrentGame->GetSIDFromPID( Player->GetPID( ) ), (unsigned char)( SID2 - 1 ) );
    else
    QueueChatCommand( "GOLAKTEKO OPASNOSTE!!11 NET TAKOGO USERA!!111", User, Whisper );
    
    в итоге SID1 ваще не нужен. работоспособность не гарантирую, ибо не тестил.
  9. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Я так пробывал, но решил попробывать твой вариант и сразу ошибки:
    Код:
    ------ Построение начато: проект: ghost, Конфигурация: Release MySQL Win32 ------
    Компиляция...
    bnet.cpp
    .\bnet.cpp(2131) : error C2027: использование неопределенного типа "CGamePlayer"
            d:\for me\bot\ghost\ghost\gameprotocol.h(53): см. объявление 'CGamePlayer'
    .\bnet.cpp(2131) : error C2227: выражение слева от "->GetPID" должно указывать на тип класса, структуры или объединения либо на универсальный тип
    Не всё так просто ...
  10. Fanat Ranetok Старожила

    Сообщения:
    167
    Спасибы:
    0
    Сборка бота GHost:
    Skynet++ 2.0
    вверху добавляем:
    Код:
    #include "gameplayer.h"
    а ваще конечно лучше было бы в классе бнета дергать только параметры, а остальной алгоритм выполнять в контексте CBaseGame.
  11. JudFai Ньюфаг

    Сообщения:
    47
    Спасибы:
    0
    Всё спасиба большое, я тоже инклюд делал, но у меня как бы была компиляция нормальная, а вот когда я писал в приват к боту, то он выдавал ошибку, потому что я не проверял существует ли бот. Я меня местами fakeplayer из-за этого у меня не получалось, всё спасиба ты настоящий друг))