Где конкретно запрос на score ?? Чето ищу, нашол только ну суммарную выборку (киллс деас и тд...) А оно же берет просто както скоре, тока невижу запроса
Для GHost++ & One - ghostdbmysql.cpp Код: string Query = "SELECT score FROM scores WHERE category='" + EscCategory + "' AND name='" + EscName + "' AND server='" + EscServer + "'";
Странно че так много where ну ок. Как достать еще 1 значение из scores и вытащить его из game.cpp и bnet.cpp ну типа как kills только чтобы оно брало именно из scores (нужно кароче в !sd всунуть скажем так) Мой вариант (накидал на быструю): Код: string Query = "SELECT score, needvalue FROM scores WHERE category='" + EscCategory + "' AND name='" + EscName + "' AND server='" + EscServer + "'"; дальше там чтото типа, не сильно всохну че тут нужно Код: if( Row.size( ) == 1 ) Score = UTIL_ToDouble( Row[0] ); /* else *error = "error checking score [" + category + " : " + name + " : " + server + "] - row doesn't have 1 column"; */ mysql_free_result( Result ); Ну и получитсо ли Код: Summary = m_GHost->m_Language->GetLang(sd_lang, "$USER$", i->second->GetName( ), "$TOTALGAMES$", UTIL_ToString(DotAPlayerSummary->GetTotalGames( )), "$TOTALWINS$", UTIL_ToString( DotAPlayerSummary->GetTotalWins( ) ), "$TOTALLOSSES$", UTIL_ToString( DotAPlayerSummary->GetTotalLosses( ) ), "$COUNT$", leave_games_count, "$RANK$", RankS, "$LEAVE$", UTIL_ToString(DotAPlayerSummary->GetLeaveCount()), "$LEAVEPCNT$", leave_games_count, "$SCORE$", UTIL_ToString(DotAPlayerSummary->GetScore(), 0), "$WINS$", UTIL_ToString( DotAPlayerSummary->GetWinsPerGame( )), "$CLASS$", player_class, "$KILLS$", UTIL_ToString( DotAPlayerSummary->GetKillsPerGame( )), "$DEATHS$", UTIL_ToString( DotAPlayerSummary->GetDeathsPerGame( )), "$ASSISTS$", UTIL_ToString( DotAPlayerSummary->GetAssistsPerGame( )), "$CKILLS$", UTIL_ToString( DotAPlayerSummary->GetCreepKillsPerGame( )), "$CDENIED$", UTIL_ToString( DotAPlayerSummary->GetCreepDeniesPerGame( ))); Добавить чтото типа Код: "$NEEDVALUE$", UTIL_ToString(DotAPlayerSummary->GetNeedValue(), 0), хз, прокоментируйте чето лажа выходит...
Функция возвращает одно значение: Код: return Score; Копируй поэтапно все что связано с LeaveCount, поменяв тока запрос и офк названия функций и калабл.
А тут Код: bool MySQLCalculateScores( void *conn, string *error, uint32_t botid, string formula, string mingames ) { bool Success = false; string Query = "select name,server, (" + formula + ") as totalscore from(select *, (kills/deaths) as killdeathratio, (totgames-wins) as losses from (select gp.name as name,ga.server as server,gp.gameid as gameid, gp.colour as colour, count(*) as totgames... Это влияет на !SD, ну тобишь там где GetTotalKills - это от сюда берет число?? Если изменю выборку под себя покатит?
Чето не пойму, ты мне показываешь уже другую функцию, не та что была выше. Тебе где нужно и что нужно, напиши точно.
Вот мой последний пост да. Я пишу !sd мне нужно чтобы кпримеру GetTotalKills - вывело не килс, а то что я туда впишу (в подсчет, я тоже указал) Вот, сработает?
Ну я уже зделал, просто уточнить решил. Ок думаю волноватсо небуду, так как на положительныей результат и расчитывал, это легче мне чем щас мудиться из скоре вытаскивать время тратить, ну его... Спс :bIbIbIblya:
Ммм.. Почему долго? Я запрос переписал, у меня выводится !sd, !statsdota, при заходе игры, всё из новой отдельной таблицы. Я только с Leave count не разобрался. Ибо не могу найти место, где для неё идёт чтение из массива по count где left < время игры - 180. Я хочу чтобы ливы отдельно были тоже в таблице.
Я неговорю за СД. Я по своему отпимизировал. У меня выводит скоре 1-о число, нечего вообще не считает, 1 таблица, 1 число, после окончания игры нету перещета, так что бот немучает все таблицы. Мне требывалось другое, но я решил по своему, просто очистил запрос, оставил только подсчет нужного для моего значения. Так что оно берет только Килс Деас Ассистс... и нечего ненагружает, так как тут через 2 таблицы прыгает, и нечего сложного, Select да Sum А хотел зделать тоже 1-м числом, чтобы как скоре выводило, но нестал заморачиваться
Ну прыгать не прыгать. Я пытаюсь сделать оптимизацию, с возможностью указания под опенстатс. То есть, усе данные из одной таблицы. Единственное я вот ещё не решил. Мне в боте добавление новых значений в эту таблицу прописывать. или всётаки триггер на Mysql написать, который новые бы значения просчитывал и записывал.
Ну эт конечно да.. Любой бот будет вылетать, если он начнёт пересчитывать все знаения очков для всех игроков, каждый раз когда игра закончилась. То есть раз в 5 минут это минимум, а когда БД находится ещё где-то удалённо... То за 5 минут ещё эти данные не занесутся ))) ЗЫ: я думаю по возможности лучше сделать и так и так. ))) Так сказать про запас.
Я это понял вскоре как меня напрягали эти скачки раз в 3-5 минут. Ну и вдуплил про перещет. И зделал чтобы щитало только игроков которые играли. Ну и сама формула)) 2 значения плюсует. Очки за и очки против) ;D
Ммм. а как ты организовал чтобы именно только те кто играли? для них стата считалась. интересно код увидеть.