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

Нужна помощь с функцией votekick

Тема в разделе 'Запуск и Поддержка', создана пользователем MooDBlooD, 9 ноя 2010.

  1. MooDBlooD Ньюфаг

    Сообщения:
    56
    Спасибы:
    1
    Собственно у меня на боте эта функция переведена на русский.
    Но очень не удобно писать в голосовании начальные буквы ника игрока, так как все ники на английском.
    Есть у меня задумка вместо ника писать цвет слота или номер слота, чтобы было удобнее.
    Может кто-нибудь помочь советом по реализации данной функции?
    Собственно вот пункт команды из game.cpp
    Код:
    //
        // !VOTEKICK
        //
    
        if( ( Command == "votekick" || Command == m_GHost->m_Language->cmdvotekick( ) ) && m_GHost->m_VoteKickAllowed && !Payload.empty( ) )
        {
            if( !m_KickVotePlayer.empty( ) )
                SendChat( player, m_GHost->m_Language->UnableToVoteKickAlreadyInProgress( ) );
            else if( m_Players.size( ) == 2 )
                SendChat( player, m_GHost->m_Language->UnableToVoteKickNotEnoughPlayers( ) );
            else
            {
                CGamePlayer *LastMatch = NULL;
                uint32_t Matches = GetPlayerFromNamePartial( Payload, &LastMatch );
    
                if( Matches == 0 )
                    SendChat( player, m_GHost->m_Language->UnableToVoteKickNoMatchesFound( Payload ) );
                else if( Matches == 1 )
                {
                    if( LastMatch->GetReserved( ) )
                        SendChat( player, m_GHost->m_Language->UnableToVoteKickPlayerIsReserved( LastMatch->GetName( ) ) );
                    else
                    {
                        m_KickVotePlayer = LastMatch->GetName( );
                        m_StartedKickVoteTime = GetTime( );
    
                        for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
                            (*i)->SetKickVote( false );
    
                        player->SetKickVote( true );
                        CONSOLE_Print( "[GAME: " + m_GameName + "] votekick against player [" + m_KickVotePlayer + "] started by player [" + User + "]" );
                        SendAllChat( m_GHost->m_Language->StartedVoteKick( LastMatch->GetName( ), User, UTIL_ToString( (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteKickPercentage / 100 ) - 1 ) ) );
                        SendAllChat( m_GHost->m_Language->TypeYesToVote( string( 1, m_GHost->m_CommandTrigger ) ) );
                    }
                }
                else
                    SendChat( player, m_GHost->m_Language->UnableToVoteKickFoundMoreThanOneMatch( Payload ) );
            }
        }
    
    Если я правильно понимаю, то получается, что у нас требуются дополнения в функции первой строки, что-бы команда была следующей:
    !выкинуть 3 (где !выкинуть - это команда, а 3 - номер слота)
    Вот только никак не могу догнать где искать полную функцию отвечающую за строку
    Код:
    m_GHost->m_VoteKickAllowed && !Payload.empty( )
  2. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Ну как-то так...
    ПС: Только без всяких проверок... уж я думаю сделаешь сам - тороплюсь
    Код:
    //
        // !VOTEKICK
        //
    
        if( ( Command == "votekick" || Command == m_GHost->m_Language->cmdvotekick( ) ) && m_GHost->m_VoteKickAllowed && !Payload.empty( ) )
        {
            if( !m_KickVotePlayer.empty( ) )
                SendChat( player, m_GHost->m_Language->UnableToVoteKickAlreadyInProgress( ) );
            else if( m_Players.size( ) == 2 )
                SendChat( player, m_GHost->m_Language->UnableToVoteKickNotEnoughPlayers( ) );
            else
            {
    
    				
    
    			uint32_t vkss = UTIL_ToUInt32( Payload );
    					CGamePlayer *vks = m_Game->GetPlayerFromColour( vkss );
                        m_KickVotePlayer = vks->GetName();
                        m_StartedKickVoteTime = GetTime( );
    
                        for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
                            (*i)->SetKickVote( false );
    
                        player->SetKickVote( true );
                        CONSOLE_Print( "[GAME: " + m_GameName + "] votekick against player [" + m_KickVotePlayer + "] started by player [" + User + "]" );
                        SendAllChat( m_GHost->m_Language->StartedVoteKick( m_KickVotePlayer, User, UTIL_ToString( (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteKickPercentage / 100 ) - 1 ) ) );
                        SendAllChat( m_GHost->m_Language->TypeYesToVote( string( 1, m_GHost->m_CommandTrigger ) ) );
                    
    		}
    	
    	}
  3. MooDBlooD Ньюфаг

    Сообщения:
    56
    Спасибы:
    1
    Неполучилось!
  4. fake Старожила

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

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