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

votestart

Тема в разделе 'Кодинг/Собственные решения', создана пользователем ink08, 24 апр 2011.

Статус темы:
Закрыта.
  1. Mr_LiSa Старожила

    Сообщения:
    421
    Спасибы:
    3
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    А вот и головоломка ^^
    Код:
    Компиляция...
    game.cpp
    .\game.cpp(5752) : error C2059: синтаксическая ошибка: if
    .\game.cpp(5753) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\game.cpp(5753) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    .\game.cpp(5794) : error C2059: синтаксическая ошибка: if
    .\game.cpp(5795) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\game.cpp(5795) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    .\game.cpp(5837) : error C2059: синтаксическая ошибка: if
    .\game.cpp(5838) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\game.cpp(5838) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    .\game.cpp(5853) : error C2059: синтаксическая ошибка: if
    .\game.cpp(5854) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\game.cpp(5854) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    .\game.cpp(5875) : error C2059: синтаксическая ошибка: if
    .\game.cpp(5876) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\game.cpp(5876) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    .\game.cpp(5896) : error C2059: синтаксическая ошибка: return
    .\game.cpp(5897) : error C2059: синтаксическая ошибка: }
    .\game.cpp(5897) : error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
    .\game.cpp(5897) : error C2059: синтаксическая ошибка: }
    .\game.cpp(5900) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\game.cpp(5900) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    ghost.cpp
    .\ghost.cpp(2176) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
    .\ghost.cpp(2176) : error C2065: CFG: необъявленный идентификатор
    .\ghost.cpp(2176) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
            тип: 'unknown-type'
    .\ghost.cpp(2177) : error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
    .\ghost.cpp(2177) : error C2065: CFG: необъявленный идентификатор
    .\ghost.cpp(2177) : error C2227: выражение слева от "->GetInt" должно указывать на тип класса, структуры или объединения либо на универсальный тип
            тип: 'unknown-type'
    .\ghost.cpp(2179) : error C2059: синтаксическая ошибка: if
    .\ghost.cpp(2180) : error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
    .\ghost.cpp(2180) : error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
    
  2. Mr_LiSa Старожила

    Сообщения:
    421
    Спасибы:
    3
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    как в вотекике
    Код:
    ### процент голосов нужный для срабатывания votekick
    ###  предпологается что игрок стартовавший Голосование проголосовал ДА и если он стартовал Голосование опять то предпологается что он проголосовал НЕТ
    ###  формула для расчета количества необходимых голосов votes_needed = ceil( ( num_players - 1 ) * bot_votekickpercentage / 100 )
    ###  это значит что он будет округлять нужное число голосов в высшую сторону
    ###  если вы установите 100 это требует 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 10/11, и 11/12 голосов для результата
    ###  если вы установите 90 это требует 2/3, 3/4, 4/5, 5/6, 6/7, 7/8, 8/9, 9/10, 9/11, и 10/12 голосов для результата
    ###  если вы установите 80 это требует 2/3, 3/4, 4/5, 4/6, 5/7, 6/8, 7/9, 8/10, 8/11, и 9/12 голосов для результата
    ###  если вы установите 70 это требует 2/3, 3/4, 3/5, 4/6, 5/7, 5/8, 6/9, 7/10, 7/11, и 8/12 голосов для результата
    ###  если вы установите 60 это требует 2/3, 2/4, 3/5, 3/6, 4/7, 5/8, 5/9, 6/10, 6/11, и 7/12 голосов для результата
    
    
    MuP
  3. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    где это находится? что-то у себя я этого не припомню) или ты это от себя уже добавлял?
  4. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Mr_Lisa проверь скобки { или } , походу лишние затесались. я когда выкладывал, по моему захватил лишний кусок кода, поэтому он ругается :stenka: + да расчет кол-ва народу взял полностью из вотекика, они идентичны
    Туман, да работать будет, т.к. я полностью выложил команды.
    PS перед выкладыванием все протестировал, все работало на ура.
    PPS по поводу ошибок связанных с "->GetInt", я точно номер строчки не могу сказать, т.к. юзаю гхост++, там все по разному, забор значений из конфига желательно влепить сразу после забора значений вотекика(он находиться по поиску) это относиться к ghost.cpp & ghost.h
  5. Mr_LiSa Старожила

    Сообщения:
    421
    Спасибы:
    3
    Сборка бота GHost:
    Ghost One 1.7.266
    Skype:
    Мой статус
    синтаксическая ошибка: if
    а тут что делать убирать if ?
  6. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    Может MuP поправишь этот код,ну где лишнее взял убери. если не сложно
  7. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Глянул код гхост оне, там чутка по другому сделано (if вместо else if), у вас будет так.
    Придеться чутка включить мозги, чтобы корректно перенести старую !YEs в новую + изменить game_base.cpp, game_base.h, gameplayer.h , gameplayer.cpp (см 1 страницу 1 пост)
    Код:
    	//
    	// !YES
    	//
    
    	if( Command == "yes" )
    	{
    		// Votekick
                    if( !m_KickVotePlayer.empty( ) && player->GetName( ) != m_KickVotePlayer && !player->GetKickVote( ) )
                    { 
                    !!!Сюда копируем тело прежней команды !YES . предназначенной для вотекика!!!
                    }
    		// Votestart
    		if ( !player->GetStartVote() && m_StartedStartVoteTime != 0 ){
    			player->SetStartVote( true );
    			uint32_t Votes = 0;
    			uint32_t VotesNeeded = (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteStartPercentage / 100 );
    
    			for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); ++i )
    			{
    				if( (*i)->GetStartVote( ) )
    					++Votes;
    			}
    			if( Votes >= VotesNeeded )
    			{
    				CONSOLE_Print( "[GAME: " + m_GameName + "] votestart passed with  " + UTIL_ToString( Votes ) + "/" + UTIL_ToString( GetNumHumanPlayers( ) ) + " votes" );
    				SendAllChat( "Голосование завершено, пошел отсчет" );
    				StartCountDown( true );
    				m_StartedStartVoteTime = 0;
    			}
    			else
    				SendAllChat( "Игрок " + User + " проголосовал за начало игры. Надо еще " + UTIL_ToString( VotesNeeded - Votes ) + " голосов" );
    		}
    	}
    Код:
    	//
    	// !VOTESTART
    	//
    	if( Command == "votestart" && !m_CountDownStarted && m_GHost->m_VoteStartAllowed && m_KickVotePlayer.empty( ))
    	{
    		if ( m_StartedStartVoteTime == 0 ){
    			if ( m_Players.size( ) ==1 )
    				SendChat( player, "Голосование невозможно, надо больше игроков" );
    			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( "Началось госование, чтобы начать игру, нужно " + UTIL_ToString( VotesNeeded ) + " голосов" );
    				CONSOLE_Print( "[GAME: " + m_GameName + " vote to start game started, needed" + UTIL_ToString( VotesNeeded ) + " votes" );
    			}
    		}else{
    			SendAllChat( "Голосование за начало игры уже было запущено, !yes для согласия" );
    		}
    	}
    Что касаемо ghost.cpp, находим
    Код:
    	m_VoteKickAllowed = CFG->GetInt( "bot_votekickallowed", 1 ) == 0 ? false : true;
    	m_VoteKickPercentage = CFG->GetInt( "bot_votekickpercentage", 100 );
    
    	if( m_VoteKickPercentage > 100 )
    	{
    		m_VoteKickPercentage = 100;
    		CONSOLE_Print( "[GHOST] warning - bot_votekickpercentage is greater than 100, using 100 instead" );
    	}
    после нее добавляем
    Код:
    	m_VoteStartAllowed = CFG->GetInt( "bot_votestartallowed", 1 ) == 0 ? false : true;
    	m_VoteStartPercentage = CFG->GetInt( "bot_votestartpercentage", 100 );
    
    	if( m_VoteStartPercentage > 100 )
    	{
    		m_VoteStartPercentage = 100;
    		CONSOLE_Print( "[GHOST] warning - bot_votestartpercentage is greater than 100, using 100 instead" );
    	}
    Ghost.h, ищем
    Код:
    	bool m_VoteKickAllowed;					// config value: if votekicks are allowed or not
    	uint32_t m_VoteKickPercentage;			// config value: percentage of players required to vote yes for a votekick to pass
    
    вставляем после этих строк
    Код:
    	bool m_VoteStartAllowed;				// config value: if votestart is allowed or not
    	uint32_t m_VoteStartPercentage;			// config value: percentage of players required to vote yes for a votestart to pass
    + опять же добавить значения в конфиг, опосля протестить.
  8. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    а можешь такой конфиг с процентом сделать на rmk, чтоб конфиге можно было указать количество голосов для rmk.. а то я как не настраиваю этот rmk, у меня багнуто выходит..то вообще не работает,то 1 раз за игру :-\
  9. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    Ну а в чем проблема, в ghost.h объявляешь переменную, ghost.cpp задаешь ее значение, вставляешь в команду рмк(game.cpp), туда где идет подсчет голосов.
  10. TyMaH Рекомендуемый

    Сообщения:
    154
    Спасибы:
    1
    Сборка бота GHost:
    Ghost One 1.7
    я в этих делах ноль) я сам недавно тока с Ghost one'ом знаком.. научился комплировать и писать это слово :D
  11. Mr-Fane Ньюфаг

    Сообщения:
    110
    Спасибы:
    4
    Сборка бота GHost:
    GHo 1.7.266
    Мир твой вотестарт выдает что надо мол 14342394832 голосов для начала игры.В чом ошибка?
  12. Synth (LM) Пантограф!

    Сообщения:
    2.762
    Спасибы:
    172
    Сборка бота GHost:
    My own version of GhostOne
    Дата начала использования бота:
    15.06.2008
    Skype:
    Мой статус
    Не установлено начальное значение переменной или инт переменная ниже нуля.
  13. Mr-Fane Ньюфаг

    Сообщения:
    110
    Спасибы:
    4
    Сборка бота GHost:
    GHo 1.7.266
    А по рабоче крестьянски?)

    Код:
     //
       // !VOTESTART
       //
       if( Command == "votestart" && !m_CountDownStarted && m_GHost->m_VoteStartAllowed && m_KickVotePlayer.empty( ))
       {
          if ( m_StartedStartVoteTime == 0 ){
             if ( m_Players.size( ) ==1 )
                SendChat( player, "Голосование невозможно, надо больше игроков" );
             else
             {
                          for( vector<CGamePlayer *> :: iterator i = m_Players.begin( ); i != m_Players.end( ); i++ )
                   (*i)->SetStartVote( false );
                player->SetStartVote( true );
               
               uint32_t VotesNeeded = (uint32_t)ceil( ( GetNumHumanPlayers( ) - 1 ) * (float)m_GHost->m_VoteStartPercentage / 100 );
               uint32_t Votes = 0;
                m_StartedStartVoteTime = GetTime( );
    
                
                SendAllChat( "Началось голосование, чтобы начать игру, нужно  " + UTIL_ToString( VotesNeeded ) + " голосов" );
                CONSOLE_Print( "[GAME: " + m_GameName + " vote to start game started, needed" + UTIL_ToString( VotesNeeded ) + " votes" );
             }
          }else{
             SendAllChat( "Голосование для старта игры уже было запущено, !yes для согласия" );
          }
       }
    у меня так стоит
  14. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    хз, как у вас, но у меня он просит ровно столько, сколько указано в конфиге. у вас косяк в значении VotesNeeded
  15. Monster Ньюфаг

    Сообщения:
    37
    Спасибы:
    0
    Код:
    1>------ Построение начато: проект: ghost, Конфигурация: Release MySQL Win32 ------
    1>  util.cpp
    1>d:\images\warcraft\battle.net\detroid\ghostone\ghost\util.h(35): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "UTIL_CreateByteArray"
    .... тут около 1000 строк и в конце
    1>d:\images\warcraft\battle.net\detroid\ghostone\ghost\util.h(67): fatal error C1003: число ошибок превышает 100; остановка компиляции
    ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
    
    тратил час вот те результат =((
  16. Ziko Гуру

    Сообщения:
    130
    Спасибы:
    2
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    01.09.2010
    Skype:
    Мой статус
    чо за . . . МиР исправ это пожалуста
    Код:
    2>game.cpp
    2>.\game.cpp(2076) : error C2059: syntax error : 'if'
    2>.\game.cpp(2077) : error C2143: syntax error : missing ';' before '{'
    2>.\game.cpp(2077) : error C2447: '{' : missing function header (old-style formal list?)
    2>.\game.cpp(2101) : error C2059: syntax error : 'else'
    2>.\game.cpp(2102) : error C2143: syntax error : missing ';' before '{'
    2>.\game.cpp(2102) : error C2447: '{' : missing function header (old-style formal list?)
    У меня ghostcb source помоги пожалуста :jump:
  17. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    тут код смотреть надо
  18. Ziko Гуру

    Сообщения:
    130
    Спасибы:
    2
    Сборка бота GHost:
    Ghost ++17.1
    Дата начала использования бота:
    01.09.2010
    Skype:
    Мой статус
    Ура у меня получился Спасибо MuP
  19. MuP .

    Сообщения:
    653
    Спасибы:
    202
    Сборка бота GHost:
    Ghost++ rev 579
    Дата начала использования бота:
    00.00.0000
    я рад
  20. Mr-Fane Ньюфаг

    Сообщения:
    110
    Спасибы:
    4
    Сборка бота GHost:
    GHo 1.7.266
    Ziko напиши пожалуйсто порядок своих действий и как ты делал, что получилось.Тебе будут очень благодарны.
    Просто в теме как-то все в кучу написано и по несколько вариантов то так то сяк надо и в итоге ерунда получается.
Статус темы:
Закрыта.