diff --git a/src/Database.cpp b/src/Database.cpp index 656e3fa..b1213c9 100644 --- a/src/Database.cpp +++ b/src/Database.cpp @@ -327,19 +327,12 @@ Database::DbPlayer Database::playerToDb(Player *player) result.BatteryW = player->batteryW; result.Mentor = player->mentor; - // quests + // quests: parsing to blob result.QuestFlag = std::vector(); - // parsing long array to char vector for (int i=0; i<16; i++) { - int64_t temp = player->aQuestFlag[i]; - for (int j = 0; j < 8; j++) { - int64_t check2 = (temp >> (8 * (7 - j))); - char toadd = check2; - result.QuestFlag.push_back( - toadd - ); - } + int64_t flag = player->aQuestFlag[i]; + appendBlob(&result.QuestFlag, flag); } @@ -539,3 +532,13 @@ void Database::getNanos(Player* player) { } } #pragma endregion ShardServer + +#pragma region parsingBlobs + +void Database::appendBlob(std::vector *blob, int64_t input) { + for (int i = 0; i < 8; i++) { + char toadd = (input >> (8 * (7 - i))); + blob->push_back(toadd); + } +} +#pragma endregion parsingBlobs diff --git a/src/Database.hpp b/src/Database.hpp index 20c3c27..29ba433 100644 --- a/src/Database.hpp +++ b/src/Database.hpp @@ -110,4 +110,7 @@ namespace Database { void getInventory(Player* player); void getNanos(Player* player); + + //parsing blobs + void appendBlob(std::vector*blob, int64_t input); } diff --git a/src/Player.hpp b/src/Player.hpp index 86b8c5c..6a5bb0d 100644 --- a/src/Player.hpp +++ b/src/Player.hpp @@ -41,7 +41,7 @@ struct Player { bool isTradeConfirm; bool IsGM; - int64_t aQuestFlag[16]; + int64_t aQuestFlag[16]; int tasks[ACTIVE_MISSION_COUNT]; sItemBase QInven[AQINVEN_COUNT]; }; diff --git a/src/PlayerManager.cpp b/src/PlayerManager.cpp index 8eb58a8..b4a3fe8 100644 --- a/src/PlayerManager.cpp +++ b/src/PlayerManager.cpp @@ -237,6 +237,7 @@ void PlayerManager::enterPlayer(CNSocket* sock, CNPacketData* data) { } // missions + // the packet requires 32 items, but the client only checks the first 16 (shrug) for (int i = 0; i < 16; i++) { response.PCLoadData2CL.aQuestFlag[i] = plr.aQuestFlag[i]; }