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

OpenSource !votestart + !go

Тема в разделе 'Кодинг/Собственные решения', создана пользователем ]PaLaCh[, 10 май 2013.

  1. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    команда !го з голосованиям а также ставлять минимальное количество игроков для команды работа на всех ботах

    game_base.h ищем
    Код:
    uint32_t m_StartedKickVoteTime;                    // GetTime when the kick vote was started
    добавляем ниже
    Код:
    uint32_t m_StartedVoteStartTime;                // GetTime when the votestart was started
    game.cpp ищем
    // !VOTEKICK
    добавляем ниже
    Код:
        //
        // !VOTESTART
        //
     
        else if( Command == "votestart" || Command == "go"|| Command == "го")
        {
            bool votestartAuth = player->GetSpoofed( ) && ( AdminCheck || RootAdminCheck || IsOwner( User ) );
            bool votestartAutohost = m_GameState == GAME_PUBLIC && !m_GHost->m_AutoHostGameName.empty( ) && m_GHost->m_AutoHostMaximumGames != 0 && m_GHost->m_AutoHostAutoStartPlayers != 0 && m_AutoStartPlayers != 0;
     
            if( m_GHost->m_VoteStartAllowed && !m_CountDownStarted && (votestartAuth || votestartAutohost || !m_GHost->m_VoteStartAutohostOnly) )
            {
                if( m_GHost->m_CurrentGame->GetLocked( ) )
                {
                    SendChat( player, "Error: cannot votestart because the game is locked. Owner is " + m_OwnerName );
                    return HideCommand;
                }
     
     
                if(m_StartedVoteStartTime == 0)
                { //need >minplayers or admin to START a votestart
                    if (GetNumHumanPlayers() < m_GHost->m_VoteStartMinPlayers && !votestartAuth)
                    { //need at least eight players to votestart
                        SendChat( player, "You cannot use !votestart until there " + UTIL_ToString(m_GHost->m_VoteStartMinPlayers) + " or more players!" );
                        return HideCommand;
                    }
     
                    for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); ++i )
                        (*i)->SetStartVote( false );
     
                    m_StartedVoteStartTime = GetTime();
       
                    CONSOLE_Print( "[GAME: " + m_GameName + "] votestart started by player [" + User + "]" );
                }
     
                player->SetStartVote(true);
           
                uint32_t VotesNeeded;
                uint32_t Votes = 0;
     
     
                for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); ++i )
                {
                    if( (*i)->GetStartVote( ) )
                        ++Votes;
                }
     
     
                if( m_GHost->m_VoteStartPercentalVoting)
                {
                    VotesNeeded = ((uint32_t) (GetNumHumanPlayers() *  (m_GHost->m_VoteStartPercent - 1) / 100)) + 1;
                }
                else
                {
                    VotesNeeded = m_GHost->m_VoteStartMinPlayers;
                }
     
                if( Votes < VotesNeeded )
                {
                    SendAllChat( UTIL_ToString(VotesNeeded - Votes) + " more votes needed to votestart.");
                }
                else
                {
                    StartCountDown( true );
                }
     
            }
        }
    game_base.cpp ищем
    // expire the votekick
    добавляем ниже
    Код:
        // expire the votestart
     
        if( m_StartedVoteStartTime != 0 && GetTime( ) - m_StartedVoteStartTime >= 60 )
          {
            CONSOLE_Print( "[GAME: " + m_GameName + "] votestart expired" );
            SendAllChat( "Votestart expired (sixty seconds without pass)." );
            m_StartedVoteStartTime = 0;
          }
    ищем
    // abort the votekick
    добавляем ниже
    Код:
        // abort the votestart
     
        if( m_StartedVoteStartTime != 0 )
          SendAllChat( "Votestart cancelled!" );
     
        m_StartedVoteStartTime = 0;
    ghost.cpp ищем
    Код:
    m_SyncLimit = CFG->GetInt( "bot_synclimit", 50 );
    добавляем
    Код:
        m_VoteStartAllowed = CFG->GetInt( "bot_votestartallowed", 1 ) == 0 ? false : true;
        m_VoteStartAutohostOnly = CFG->GetInt( "bot_votestartautohostonly", 1 ) == 0 ? false : true;
        m_VoteStartMinPlayers = CFG->GetInt( "bot_votestartminplayers", 8 );
        m_VoteStartPercentalVoting = CFG->GetInt( "bot_votestartpercentalvoting", 1) == 0 ? false : true;
        m_VoteStartPercent = CFG->GetInt( "bot_votestartpercent", 60);
     
            if( m_VoteStartPercent > 100 )
        {
            m_VoteStartPercent = 100;
            CONSOLE_Print( "[GHOST] warning - bot_votestartpercentage is greater than 100, using 100 instead" );
        }
    
    ghost.h ищем
    Код:
    uint32_t m_SyncLimit;                    // config value: the maximum number of packets a player can fall out of sync before starting the lag screen (by default)
    ниже добавляем
    Код:
        bool m_VoteStartAllowed;                // config value: if votestarts are allowed or not
        bool m_VoteStartAutohostOnly;                // config value: if votestarts are only allowed in autohosted games
        uint32_t m_VoteStartMinPlayers;                // config value: minimum number of players before users can !votestart
        bool m_VoteStartPercentalVoting;            // config value: votestart percental (true) or absolute (false)
        uint16_t m_VoteStartPercent;                // config value: value in percent for votestart
    gameplayer.h ищем
    Код:
    bool m_KickVote;                            // if the player voted to kick a player or not
    ниже добавляем
    Код:
    bool m_StartVote;            // if the player voted to start or not
    ищем
    Код:
    bool GetKickVote( )                            { return m_KickVote; }
    ниже добавляем
    Код:
    bool GetStartVote( )            { return m_StartVote; }
    ищем
    Код:
    void SetKickVote( bool nKickVote )                                                { m_KickVote = nKickVote; }
    ниже добавляем
    Код:
    void SetStartVote( bool nStartVote )                      { m_StartVote = nStartVote; }
    в конфиге бота добавляем
    ## Added with patch votestart ##
    # Set bot_votestartpercentalvoting to 1 for set the number of player who have to vote in percent
    # or set bot_votestartpercentalvoting to 0 for set an absolute value
    bot_votestartpercentalvoting = 1

    # set bot_votestartallowed to 1 to allow votestart otherwise to 0
    bot_votestartallowed = 1

    # if you like to have votestart only in autohosted games set bot_votestartautohostonly to 0
    # if you like to have votestart in all games set it to 1
    bot_votestartautohostonly = 1

    # This value will be ignored if bot_votestartpercentalvoting is set to 0
    # else it set the percent of users joined the game who has to vote for starting the game
    # set it to a value between 0 and 100
    # example for needed votes joinedplayer/needed_votes
    # for 60%:
    # 1/1 2/2 2/3 3/4
    bot_votestartpercent = 90

    # if bot_votestartpercentalvoting is set to 1, bot_votestartminplayers will set the minimal
    # players who has to have joined the game, to make it possible to startvote.
    # othervise it will set the number of needed votes for starting the game!
    bot_votestartminplayers = 2
    KradaBash, ZeratuL1986, Sky и ещё 1-му нравится это.
  2. Guard Старожила

    Сообщения:
    473
    Спасибы:
    47
    Сборка бота GHost:
    Ghost++ RAKAL Edition
    Дата начала использования бота:
    00.00.2009
    Skype:
    Мой статус
    Гж. Еще одна тема.
    Doterok нравится это.
  3. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    Поделился кодом просто
  4. Suicider Старожила

    Сообщения:
    673
    Спасибы:
    117
    Сборка бота GHost:
    Ghost++ 17.1 by w3gh
    Дата начала использования бота:
    12.07.2011
    в BRT ласт ревизии уже есть это...
  5. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    я не знаю как у брт я им не пользуюсь он не стабильный на виндовс 7 х 64
  6. AlexGhost Давний приятель

    Сообщения:
    17
    Спасибы:
    1
    Выдает кучу ошибок с чем это может быть связано? Бот GhostOne
  7. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    какие ошибки ?
  8. AlexGhost Давний приятель

    Сообщения:
    17
    Спасибы:
    1
    При компиляции

    Код:
    1>------ Построение начато: проект: ghost, Конфигурация: Release MySQL Win32 ------
    1>Компиляция...
    1>game.cpp
    1>.\game.cpp(5666) : error C2039: m_VoteStartAllowed: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>.\game.cpp(5666) : error C2039: m_VoteStartAutohostOnly: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>.\game.cpp(5677) : error C2039: m_VoteStartMinPlayers: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>.\game.cpp(5679) : error C2039: m_VoteStartMinPlayers: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>.\game.cpp(5704) : error C2039: m_VoteStartPercentalVoting: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>.\game.cpp(5706) : error C2039: m_VoteStartPercent: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>.\game.cpp(5710) : error C2039: m_VoteStartMinPlayers: не является членом "CGHost"
    1>        f:\games\ghost one 1.7.266 by teken\ghost\ghost.h(66): см. объявление 'CGHost'
    1>game_base.cpp
    1>.\game_base.cpp(130) : error C2065: CFG: необъявленный идентификатор
    1>.\game_base.cpp(130) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
    1>        тип: 'unknown-type'
    1>.\game_base.cpp(131) : error C2065: CFG: необъявленный идентификатор
    1>.\game_base.cpp(131) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
    1>        тип: 'unknown-type'
    1>.\game_base.cpp(132) : error C2065: CFG: необъявленный идентификатор
    1>.\game_base.cpp(132) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
    1>        тип: 'unknown-type'
    1>.\game_base.cpp(133) : error C2065: CFG: необъявленный идентификатор
    1>.\game_base.cpp(133) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
    1>        тип: 'unknown-type'
    1>.\game_base.cpp(134) : error C2065: CFG: необъявленный идентификатор
    1>.\game_base.cpp(134) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
    1>        тип: 'unknown-type'
    1>Журнал построения был сохранен в "file://f:\Games\GHost One 1.7.266 by TeKeN\ghost\Release MySQL\BuildLog.htm"
    1>ghost - ошибок 17, предупреждений 0
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 1, пропущено: 0 ==========
  9. Sparko_Dima Старожила

    Сообщения:
    744
    Спасибы:
    104
    Сборка бота GHost:
    Ghost Sparko
    Дата начала использования бота:
    10.10.09
    обьяви
    m_VoteStartMinPlayers:
    uint32_t m_VoteStartMinPlayers;
    ghost.h
    AlexGhost нравится это.
  10. AlexGhost Давний приятель

    Сообщения:
    17
    Спасибы:
    1
    Проблему нашел: Перепутал ghost.h с ghost.cpp...
  11. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    Бывает спасибку за команду
  12. AlexGhost Давний приятель

    Сообщения:
    17
    Спасибы:
    1
    Я вот только заметил что не там добавил, переделываю... Но если опять что-то не так пойдет напишу=)
  13. magistrral Ньюфаг

    Сообщения:
    11
    Спасибы:
    0
    Дата начала использования бота:
    11.05.2013
    ребят, небольшой трабл. Пишу команду !go и он пишет что осталось 297+ голосов) когда как, иногда пишет 2000
    Еще другие писать не могут почему-то команду, но это мб из за nonadmincommandsallowed, с этим я думаю разберусь
  14. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    В ghost.cpp проставь везде про голоса не везде задал
    а что бы писали другие команды не админ команды включи
  15. magistrral Ньюфаг

    Сообщения:
    11
    Спасибы:
    0
    Дата начала использования бота:
    11.05.2013
    И правда, спасибо)
    А вот то, что шару из открытого доступа скомпиленную раздаешь без исходников - не одобряю :)
  16. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    почему
  17. magistrral Ньюфаг

    Сообщения:
    11
    Спасибы:
    0
    Дата начала использования бота:
    11.05.2013
    Потому что гораздо полезнее было бы выложить гхост оне со всеми этими изменениями открытым, с исходниками + руководством что ты поменял, где поменял, и что это дало.
    Если ты это делать не собираешься, то в скором времени это сделаю я)
  18. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    удачи могу пожелать просто нада что бы люди включали мозг а не тупо брали готовые
  19. magistrral Ньюфаг

    Сообщения:
    11
    Спасибы:
    0
    Дата начала использования бота:
    11.05.2013
    Именно поэтому ты выкладываешь готовые?) :D
  20. ]PaLaCh[ Гуру

    Сообщения:
    139
    Спасибы:
    35
    Сборка бота GHost:
    GHost One PaLACh
    Дата начала использования бота:
    10.11.2012
    просто я сделал простого бота готово для хостованя и всьо у меня уже другой доработаю 2 функции и может выложу бота