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

[Новая команда] Подсчет статистики команд в лобби, хелп :]

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

  1. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Вдруг в голову пришла одна идея, о том, чтобы сделать команду (например, !ts (!teamstats)) - которая будет считать статистику 2-ух команда (допустим, по - Score игроков).
    И выводить коэффициент этих команда.
    Не знаю даже как объяснить.... :)
    Короче, максимальный коэффициент = 2, он распределяется на 2 команды в зависимости от их Score ( Если Team1 с меньшим Score (Общим), то у них коэффициент больше, чем у Team2 ( Team1\Team2: 1.5\0.5 ) )
    И из этого коэффициента добавлять + в статистику ( оО ) Тобишь, то что получилось с scoreformula*коэффициент.
    Думаю понятно написал ^^

    Так вот, даже не знаю с чего начать... ладно там коэффициент посчитать, может как-нибудь и смогу сделать, НО вот чтобы с этого коэффициента шла и статистика - хз :)

    Хелп плз ^^
    с++ не знаю ;P :prayy: :prayy:
  2. Synth (LM) Пантограф!

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

    Забудь тогда?

    Сабж:

    game.cpp

    Код:
    //!TEAMSCORE !TS
    
    			if( (Command == "teamscore" || Command == "ts") && !m_GameLoading && !m_GameLoaded )
    			{
    				if (!CMDCheck(CMD_close, AdminAccess))
    				{
    					SendChat(player->GetPID(), m_GHost->m_Language->YouDontHaveAccessToThatCommand( ));
    					return HideCommand;
    				}
    
    	for( unsigned char i = 0; i < 12; i++ )
    	{
    		bool TeamHasPlayers = false;
    		double TeamScore = 0.0;
    
    		for( vector<CGamePlayer *> :: iterator j = m_Players.begin( ); j != m_Players.end( ); j++ )
    		{
    			unsigned char SID = GetSIDFromPID( (*j)->GetPID( ) );
    
    			if( SID < m_Slots.size( ) && m_Slots[SID].GetTeam( ) == i )
    			{
    				TeamHasPlayers = true;
    				double Score = (*j)->GetScore( );
    
    				if( Score < -99999.0 )
    					Score = m_Map->GetMapDefaultPlayerScore( );
    
    				TeamScore += Score;
    			}
    		}
    
    		if( TeamHasPlayers )
    			SendAllChat( m_GHost->m_Language->TeamCombinedScore( UTIL_ToString( i + 1 ), UTIL_ToString( TeamScore, 1 ) ) );
    			
    			}
    			}
  3. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Re: [Новая команда] Подсчет статистики команд в лобби, хелп

    ммм. Спасибо, но есть пару вопросов.
    double Score = (*j)->GetScore( ); - что значит?:) я так понимаю GetScore - ф-я? Тогда откуда она берется.

    И как мне этот коэффициент занести в базу (в базу с игрой dotagames: Team1: K1; Team2: K2)
    Тобишь как мне его "запросить" из скрипта, который заносит игру в базу... )
  4. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Re: [Новая команда] Подсчет статистики команд в лобби, хелп

    Я он считает score только одной команды, а надо двух :(
  5. Synth (LM) Пантограф!

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

    Как это одной, ты че. Сам юзаю ежедневно - одной будет, если в другой тиме нету народа. Только так. И вообще, как это понять - коэффицент? 2:5? Ты напиши формулу че с очками делать, потом прикрутим.
  6. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Re: [Новая команда] Подсчет статистики команд в лобби, хелп

    Так работает, но коэффициент у обоих команда 0.0! :)

    Ну допустим, форумла = player_score / team_score; team_score - противоположенная команда.
    И этот коэффициент в базу залить, чтобы потом прибавить к очкам по формуле :)
  7. Synth (LM) Пантограф!

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

    А ты какой способ занесения очков в базу юзаешь? дота_эло?
  8. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Re: [Новая команда] Подсчет статистики команд в лобби, хелп

    неа, через функцию - MySQLCalculateScores ()

    Офф топ, как можно проверить, что игрок вышел из игры до конца - хочу за это минусануть 10 очков.... С вин\луз уже сделал, а вот это хз..)

    game.cpp ->
    Код:
    						string formula = m_GHost->m_ScoreFormula;
    						string mingames = m_GHost->m_ScoreMinGames;
    						CONSOLE_Print( "[GAME: " + m_GameName + "] calculating scores..." );
    						m_PairedCalculateScores.push_back( PairedCalculateScores( m_OwnerName, m_GHost->m_DB->ThreadedCalculateScores( formula, mingames, m_Winner, Team ) ) );
    
    В этом коде - Team является чем? Тобишь хочу сделать такое:

    ghostdbmysql.cpp
    Код:
    if( m_winner == Team )
    {
         scores[i] += 5;
    }
    else
    {
         scores[i] -= 3;
    }
    
    p.s. может в аську? если время есть у тебя, и желание помочь :)
  9. DhL Ньюфаг

    Сообщения:
    36
    Спасибы:
    0
    Re: [Новая команда] Подсчет статистики команд в лобби, хелп

    ап

    На счет формулы - надо сделать так, чтобы число, получившиеся при делении\умножении, не превышало 2!

    Допустим:
    тим1: 2000 общий score
    тим2: 3000 общий score

    т.е. тим1 "слабее" тим2 - значит и рейтинг должен быть больше

    тим1(K) по сравнению к тим2(К) имеет рейтинг: 1.216 =>

    тим1(к) = 1.216
    тим2(к) = 0.784

    p.s. если у тим1(к) = 2, то тим2(к) = 0!! т.е. макс. значение = 2.
    p.s. К = коэффициент.

    Числа, естественно, из головы.
    Потому что не знаю как такое реализовать...