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

Аналог Анонса на автохосте (Помогите)

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

  1. MooDBlooD Ньюфаг

    Сообщения:
    56
    Спасибы:
    1
    Короче...
    Ищу в исходнике строку с функцией команды start и прочих... копирую их, и изменяю переменную на ту которая в языковом h и cpp.
    Далее в языковом cpp ставлю ланги которые у меня в языковом конфиге будут...
    И в конечном итоге у меня получится, что и start и страт приведут к действию старта с отсчётом...
    Правильно я понимаю?
  2. MooDBlooD Ньюфаг

    Сообщения:
    56
    Спасибы:
    1
    Слушай, не мог бы ты помочь?
    Вот у меня сейчас такая делема.
    Та инструкция по которой менялся вывод строк про МС, эта функция делает вывод текста.
    А какйю функцию лучше создать для того чтобы через неё принимался русский текст.
    Просто проблема в том, что я в С++ не очень то шарю, посему и не могу самостоятельно спроэктировать функцию для ввода.
    А как я понимаю функции ввода и вывода не равнозначны, таким образом использую функцию вывода я думаю не получится спроэктировать функцию воосоздания проэкта команды для хоста...
    Проще говоря я не особо понял всю эту тему пока!
    Возьмем к примеру перевод команды ПИНГ!
    Код:
                //
                // !PING
                // !P
                //
    
                if( Command == "ping" || Command == "p" )
                {
                    // kick players with ping higher than payload if payload isn't empty
                    // we only do this if the game hasn't started since we don't want to kick players from a game in progress
    
                    uint32_t Kicked = 0;
                    uint32_t KickPing = 0;
                    string Pings;
                    string CN = string();
    
                    if (!Payload.empty())
                    {
                        CGamePlayer *LastMatch = NULL;
                        uint32_t Matches = GetPlayerFromNamePartial( Payload , &LastMatch );
    
                        if( Matches == 0 )
                            CONSOLE_Print("No matches");
    
                        else if( Matches == 1 )
                        {
                            Pings = LastMatch->GetName( );
                            Pings +=": ";
                            if( LastMatch->GetNumPings( ) > 0 )
                            {
                                Pings += UTIL_ToString( LastMatch->GetPing( m_GHost->m_LCPings ) );
                                Pings += m_GHost->m_Language->Ping();
                            } else
                                Pings += "N/A";
    
                            Pings += " (";
                            CN = LastMatch->GetCountry();
                            Pings += CN;
                            Pings += ")";
                            SendAllChat(Pings);
                            return HideCommand;
                        }
                        else
                            CONSOLE_Print("Found more than one match");
                    }
    
                    if( !m_GameLoading && !m_GameLoaded && !Payload.empty( ) )
                        KickPing = UTIL_ToUInt32( Payload );
    
                    // copy the m_Players vector so we can sort by descending ping so it's easier to find players with high pings
    
                    vector<CGamePlayer *> SortedPlayers = m_Players;
                    sort( SortedPlayers.begin( ), SortedPlayers.end( ), CGamePlayerSortDescByPing( ) );
    
                    for( vector<CGamePlayer *> :: iterator i = SortedPlayers.begin( ); i != SortedPlayers.end( ); i++ )
                    {
                        Pings += (*i)->GetNameTerminated( );
                        Pings += ": ";
    
                        if( (*i)->GetNumPings( ) > 0 )
                        {
                            Pings += UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) );
    
                            if( !m_GameLoading && !m_GameLoaded && !(*i)->GetReserved( ) && KickPing > 0 && (*i)->GetPing( m_GHost->m_LCPings ) > KickPing )
                            {
                                (*i)->SetDeleteMe( true );
                                (*i)->SetLeftReason( "was kicked for excessive ping " + UTIL_ToString( (*i)->GetPing( m_GHost->m_LCPings ) ) + " > " + UTIL_ToString( KickPing ) );
                                (*i)->SetLeftCode( PLAYERLEAVE_LOBBY );
                                OpenSlot( GetSIDFromPID( (*i)->GetPID( ) ), false );
                                Kicked++;
                            }
    
                            Pings += "ms";
                        }
                        else
                            Pings += "N/A";
    
                        if( i != SortedPlayers.end( ) - 1 )
                            Pings += ", ";
                    }
    
                    SendAllChat( Pings );
    
                    m_GHost->UDPChatSend("|lobbyupdate");
    
                    if( Kicked > 0 )
                        SendAllChat( m_GHost->m_Language->KickingPlayersWithPingsGreaterThan( UTIL_ToString( Kicked ), UTIL_ToString( KickPing ) ) );
                    return HideCommand;
                }
    
    Из исходника мы видим что есть 2 команды !ping и !p
    В соответствии с этим мы пытаемся добавить сюда команду !пинг.
    Если я правильно все понял, то функцию нам надо строить в самом начале.
    Таким образом мы забираем только строчку
    Код:
                if( Command == "ping" || Command == "p" )
    Тут нам надо добавить функцию, благодаря которой будет команда работать с русского...
    Код:
                if( Command == "ping" || Command == "p" || Command == "#F#")
    Где "#F#" - это наша функция.
    Теперь звучит вопрос...
    Та-да!
    А как построить функцию ввода человеку, который только несколько дней пытается вникнуть в суть С++?

    P.S. Так как удалились от основной темы, думаю свойственно будет создать тему с соответствующим названием.
    P.P.S. Предлагаю продолжить общение в ЭТОЙ теме.
  3. Zarj Старожила

    Сообщения:
    1.007
    Спасибы:
    23
    Сборка бота GHost:
    Ghost One 1.7.266
    Дата начала использования бота:
    01.01.1992
    Ответил, читай )