diff --git a/src/game/server/score/sql_score.cpp b/src/game/server/score/sql_score.cpp index 7a74e036d..7deb8a4f8 100644 --- a/src/game/server/score/sql_score.cpp +++ b/src/game/server/score/sql_score.cpp @@ -1760,19 +1760,13 @@ bool CSqlScore::LoadTeamThread(CSqlServer* pSqlServer, const CSqlDatam_ClientID = ClientID; - Tmp->m_Name = Server()->ClientName(ClientID); - - thread_init_and_detach(ExecSqlFunc, new CSqlExecData(GetSavesThread, Tmp, false), "get saves"); - */ + ExecPlayerThread(GetSavesThread, "get saves", ClientID, "", 0); } bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlData *pGameData, bool HandleFailure) { - /* - const CSqlGetSavesData *pData = dynamic_cast(pGameData); + const CSqlPlayerRequest *pData = dynamic_cast(pGameData); + auto paMessages = pData->m_pResult->m_aaMessages; if (HandleFailure) return true; @@ -1781,7 +1775,15 @@ bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlDataGetPrefix(), pData->m_Map.ClrStr(), pData->m_Name.ClrStr()); + str_format(aBuf, sizeof(aBuf), + "SELECT COUNT(*) as NumSaves, " + "UNIX_TIMESTAMP(CURRENT_TIMESTAMP)-UNIX_TIMESTAMP(max(Timestamp)) as Ago " + "FROM %s_saves " + "WHERE Map='%s' AND Savegame regexp '\\n%s\\t';", + pSqlServer->GetPrefix(), + pData->m_Map.ClrStr(), + pData->m_RequestingPlayer.ClrStr() + ); pSqlServer->executeSqlQuery(aBuf); if(pSqlServer->GetResults()->next()) { @@ -1796,11 +1798,14 @@ bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlDatam_pResult->m_Message, - sizeof(pData->m_pResult->m_Message), - "%s has %d save%s on %s%s", pData->m_Name.Str(), NumSaves, NumSaves == 1 ? "" : "s", pData->m_Map.Str(), aLastSavedString); + str_format(paMessages[0], sizeof(paMessages[0]), + "%s has %d save%s on %s%s", + pData->m_RequestingPlayer.Str(), + NumSaves, NumSaves == 1 ? "" : "s", + pData->m_Map.Str(), aLastSavedString); } + pData->m_pResult->m_Done = true; dbg_msg("sql", "Showing saves done"); return true; } @@ -1808,11 +1813,8 @@ bool CSqlScore::GetSavesThread(CSqlServer* pSqlServer, const CSqlDataGameServer()->SendChatTarget(pData->m_ClientID, "MySQL Error: Could not get saves"); } return false; - */ - return false; } #endif diff --git a/src/game/server/score/sql_score.h b/src/game/server/score/sql_score.h index 0185cbf4a..5cce6348f 100644 --- a/src/game/server/score/sql_score.h +++ b/src/game/server/score/sql_score.h @@ -147,11 +147,6 @@ struct CSqlTeamLoad : CSqlData char m_ClientName[MAX_NAME_LENGTH]; }; -struct CSqlGetSavesData: CSqlData -{ - sqlstr::CSqlString m_Name; -}; - struct CSqlRandomMap : CSqlData { using CSqlData::CSqlData;