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

Userscanhost

Тема в разделе 'Кодинг/Собственные решения', создана пользователем ApoloZ, 22 фев 2019.

  1. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    нашел я кусок кода где описано что если этот параметр включен то только владелец игры может стартовать карту...но как быть если владельца нет? для этого и хочу узнать как редактировать код чтобы любой мог стартануть по команде !start и как редактировать команду !го чтобы она понимала не минимум 2 игрока для старта нужно а 1
    вот кусок кода который отвечает за команду !го с проверкой кол-во игроков...поставил в 2 сработал это
    Код:
                        if (GetNumHumanPlayers( ) < m_GHost->m_VoteStartChislo)
                {
                  SendChat( player->GetPID(), "Недостаточно людей. Минимум " + UTIL_ToString(m_GHost->m_VoteStartChislo) + " человека." );
                  SendChat( player->GetPID(), "Необходимо еще " + UTIL_ToString(m_GHost->m_VoteStartChislo - GetNumHumanPlayers( )) + " человек(а)");
                  return HideCommand;
    поставил в 1 сработал этот
    Код:
            if ( m_StartedStartVoteTime == 0 ){
                if ( m_Players.size( ) ==1 )
                    SendChat( player->GetPID(), "Голосование невозможно, надо больше игроков" );
                else
                {
                    uint32_t VotesNeeded = (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteStartPercentage / 100 );
                    m_StartedStartVoteTime = GetTime( );
                    for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); ++i )
                        (*i)->SetStartVote( false );
                    player->SetStartVote( true );
                 
                    SendAllChat( "" + User + " начал голосование, чтобы начать игру, нужно " + UTIL_ToString( VotesNeeded ) + " голосов. Пишите "+ string( 1, m_GHost->m_CommandTrigger ) +"go" );
                    CONSOLE_Print( "[GAME: " + m_GameName + " vote to start game started, needed " + UTIL_ToString( VotesNeeded ) + " votes" );
                }
            }
    это отвечает за старт
    Код:
                if( Votes >= VotesNeeded )
                {
                    CONSOLE_Print( "[GAME: " + m_GameName + "] votestart passed with  " + UTIL_ToString( Votes ) + "/" + UTIL_ToString( GetNumHumanPlayers( ) ) + " votes" );
                    SendAllChat( "Голосование завершено. Старт!" );
                    m_StartedStartVoteTime = 0;
                    m_CountDownStarted = true;
                    m_CountDownCounter = 3;
                }
    код мне немного понятен, но как его редактировать чтобы он понимал что нужно 1 игрок для старта игры?
  2. Max5 Старожила

    Сообщения:
    345
    Спасибы:
    64
    Сборка бота GHost:
    GhostOne 1.7.266
    Дата начала использования бота:
    14.05.2013
    о боже, тут мой говнокод, значит это был не чистый ghostone, как минимум команда голосование за старт есть и gcbi патч для гарены
    Ну сори, значит нет у меня чистого one.

    Если владельца нет, есть вариант включить автостарт, да и как в игре нет владельца, значит автохост? Тогда автостарт уже есть.
    Вот же условие на 1 игрока
    Код:
    if ( m_Players.size( ) ==1 )
    убираешь его и всё
  3. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    я поставил 0 вместо 1...и в ghost.cfg поставил 0...команда вообще не сработала...к тому же тут идет проверка...если условие верное то делай это иначе это.....как он поймет что игроки начали голосовать и запишет в votesneeded это кол-во...не проще обнулить эту переменную и сразу стартовать?
  4. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    мне пока синтаксис мало известен
  5. Max5 Старожила

    Сообщения:
    345
    Спасибы:
    64
    Сборка бота GHost:
    GhostOne 1.7.266
    Дата начала использования бота:
    14.05.2013
    Код:
     if ( m_Players.size( ) ==1 )
                    SendChat( player->GetPID(), "Голосование невозможно, надо больше игроков" );
                else
                {
                    uint32_t VotesNeeded = (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteStartPercentage / 100 );
                    m_StartedStartVoteTime = GetTime( );
                    for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); ++i )
                        (*i)->SetStartVote( false );
                    player->SetStartVote( true );
               
                    SendAllChat( "" + User + " начал голосование, чтобы начать игру, нужно " + UTIL_ToString( VotesNeeded ) + " голосов. Пишите "+ string( 1, m_GHost->m_CommandTrigger ) +"go" );
                    CONSOLE_Print( "[GAME: " + m_GameName + " vote to start game started, needed " + UTIL_ToString( VotesNeeded ) + " votes" );
                }
    замени на
    Код:
                    uint32_t VotesNeeded = (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteStartPercentage / 100 );
                    m_StartedStartVoteTime = GetTime( );
                    for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); ++i )
                        (*i)->SetStartVote( false );
                    player->SetStartVote( true );
               
                    SendAllChat( "" + User + " начал голосование, чтобы начать игру, нужно " + UTIL_ToString( VotesNeeded ) + " голосов. Пишите "+ string( 1, m_GHost->m_CommandTrigger ) +"go" );
                    CONSOLE_Print( "[GAME: " + m_GameName + " vote to start game started, needed " + UTIL_ToString( VotesNeeded ) + " votes" );
  6. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    проверим....странно...он не сохраняет изменения....из под visual studio сохранять?
  7. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    я нашел проект студии в папке ghost...открыть и переносить его? да но он по прежнему не сохранит изменения хоть я администратор и редактирую через notepad++ от имени админа
  8. Max5 Старожила

    Сообщения:
    345
    Спасибы:
    64
    Сборка бота GHost:
    GhostOne 1.7.266
    Дата начала использования бота:
    14.05.2013
    это потому что вы не компилируете код https://community.w3gh.ru/threads/ghost-windows-Компиляция.708/
    в том архиве уже лежат либы, нужно только бусты соответствующей версии скачать, без ошибок должно компилироваться под visual studio 2008, на более новых точно будут ошибки, исправление которых описано тут https://community.w3gh.ru/threads/Ошибки-при-переходе-на-microsoft-visual-studio-10-0.4665/#post-42202
  9. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    Такого файла не существует, доступ к нему ограничен или он был удален из-за нарушения авторских прав.///// как называется компилятор?
  10. Max5 Старожила

    Сообщения:
    345
    Спасибы:
    64
    Сборка бота GHost:
    GhostOne 1.7.266
    Дата начала использования бота:
    14.05.2013
    visual studio 2008
  11. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    нашел его...и чем же он отличается от 2017? на моем стоит 2017 надо только либы подключить и все...платформа же...одна и та же

    УСЛОВИЯ ЛИЦЕНЗИИ НА ИСПОЛЬЗОВАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ КОРПОРАЦИИ МАЙКРОСОФТ
    MICROSOFT VISUAL C++ 2008, ЭКСПРЕСС-ВЫПУСК...как понимаю там есть и С и С++...уж лучше на assembler-e писать ....либы я нашел в папке boost/lib...в боте который скинули есть уже
  12. Max5 Старожила

    Сообщения:
    345
    Спасибы:
    64
    Сборка бота GHost:
    GhostOne 1.7.266
    Дата начала использования бота:
    14.05.2013
    я не собираюсь вас отговаривать, вы спросили, я ответил как сделать просто, хотите умничать, пожалуйста, 2017 ничем не хуже
    ApoloZ нравится это.
  13. ApoloZ Ньюфаг

    Сообщения:
    10
    Спасибы:
    0
    отлично тогда можно закрыть вопрос