diff --git a/dGame/dGameMessages/GameMessages.cpp b/dGame/dGameMessages/GameMessages.cpp index 1a1795f2..d2dcc54b 100644 --- a/dGame/dGameMessages/GameMessages.cpp +++ b/dGame/dGameMessages/GameMessages.cpp @@ -5925,6 +5925,7 @@ void GameMessages::HandleReportBug(RakNet::BitStream* inStream, Entity* entity) std::string nOtherPlayerID; std::string selection; uint32_t messageLength; + int32_t reporterID = 0; //Reading: inStream->Read(messageLength); @@ -5935,6 +5936,9 @@ void GameMessages::HandleReportBug(RakNet::BitStream* inStream, Entity* entity) body.push_back(character); } + auto character = entity->GetCharacter(); + if (character) reporterID = character->GetID(); + uint32_t clientVersionLength; inStream->Read(clientVersionLength); for (unsigned int k = 0; k < clientVersionLength; k++) { @@ -5950,6 +5954,9 @@ void GameMessages::HandleReportBug(RakNet::BitStream* inStream, Entity* entity) inStream->Read(character); nOtherPlayerID.push_back(character); } + // Convert other player id from LWOOBJID to the database id. + uint32_t otherPlayer = LWOOBJID_EMPTY; + if (nOtherPlayerID != "") otherPlayer = std::atoi(nOtherPlayerID.c_str()); uint32_t selectionLength; inStream->Read(selectionLength); @@ -5960,16 +5967,17 @@ void GameMessages::HandleReportBug(RakNet::BitStream* inStream, Entity* entity) } try { - sql::PreparedStatement* insertBug = Database::CreatePreppedStmt("INSERT INTO `bug_reports`(body, client_version, other_player_id, selection) VALUES (?, ?, ?, ?)"); + sql::PreparedStatement* insertBug = Database::CreatePreppedStmt("INSERT INTO `bug_reports`(body, client_version, other_player_id, selection, reporter_id) VALUES (?, ?, ?, ?, ?)"); insertBug->setString(1, GeneralUtils::UTF16ToWTF8(body)); insertBug->setString(2, clientVersion); - insertBug->setString(3, nOtherPlayerID); + insertBug->setString(3, std::to_string(otherPlayer)); insertBug->setString(4, selection); + insertBug->setInt(5, reporterID); insertBug->execute(); delete insertBug; } catch (sql::SQLException& e) { - Game::logger->Log("HandleReportBug", "Couldn't save bug report!\n"); + Game::logger->Log("HandleReportBug", "Couldn't save bug report! (%s)\n", e.what()); } } diff --git a/migrations/dlu/2_reporter_id.sql b/migrations/dlu/2_reporter_id.sql new file mode 100644 index 00000000..26103342 --- /dev/null +++ b/migrations/dlu/2_reporter_id.sql @@ -0,0 +1 @@ +ALTER TABLE bug_reports ADD reporter_id INT NOT NULL DEFAULT 0;