From dc7ec97c0c4f00d8c193dc4da6137e7dc9e7707e Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 8 May 2022 00:55:36 -0700 Subject: [PATCH] split bb team rewards field --- src/Player.cc | 1 + src/Player.hh | 14 +++----------- src/ReceiveCommands.cc | 4 ++-- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/src/Player.cc b/src/Player.cc index 32439ecf..43221cfb 100644 --- a/src/Player.cc +++ b/src/Player.cc @@ -487,6 +487,7 @@ PlayerBB ClientGameData::export_player_bb() { ret.unknown6.clear(); ret.quest_data2 = player->quest_data2; ret.key_config = account->key_config; + ret.unused = 0; return ret; } diff --git a/src/Player.hh b/src/Player.hh index 95aef50b..053866c3 100644 --- a/src/Player.hh +++ b/src/Player.hh @@ -238,7 +238,6 @@ struct GuildCardFileBB { parray unknown_a2; } __attribute__((packed)); -// PSOBB key config and team info struct KeyAndTeamConfigBB { parray unknown_a1; // 0000 parray key_config; // 0114 @@ -250,16 +249,7 @@ struct KeyAndTeamConfigBB { le_uint16_t reserved; // 02CA ptext team_name; // 02CC parray team_flag; // 02EC - le_uint64_t team_rewards; // 0AEC -} __attribute__((packed)); - -// BB account data -struct PlayerAccountDataBB { - parray symbol_chats; - KeyAndTeamConfigBB key_config; - GuildCardFileBB guild_cards; - le_uint32_t options; - parray shortcuts; // chat shortcuts (@1FB4 in E7 command) + le_uint32_t team_rewards; // 0AEC } __attribute__((packed)); @@ -349,6 +339,7 @@ struct PlayerBB { // Used in 00E7 command parray unknown6; // 2E20 // parray quest_data2; // 2E4C // player KeyAndTeamConfigBB key_config; // 2EA4 // account + le_uint32_t unused; } __attribute__((packed)); // total size: 39A0 @@ -378,6 +369,7 @@ struct SavedAccountDataBB { // .nsa file format parray blocked_senders; GuildCardFileBB guild_cards; KeyAndTeamConfigBB key_config; + le_uint32_t unused; le_uint32_t option_flags; parray shortcuts; parray symbol_chats; diff --git a/src/ReceiveCommands.cc b/src/ReceiveCommands.cc index 35f8436b..302bc6fe 100644 --- a/src/ReceiveCommands.cc +++ b/src/ReceiveCommands.cc @@ -1340,9 +1340,9 @@ void process_return_player_data_bb(shared_ptr, shared_ptr c void process_update_key_config_bb(shared_ptr, shared_ptr c, uint16_t, uint32_t, const string& data) { // Some clients have only a uint32_t at the end for team rewards - check_size_t(data, + auto& cmd = check_size_t(data, sizeof(KeyAndTeamConfigBB) - 4, sizeof(KeyAndTeamConfigBB)); - memcpy(&c->game_data.account()->key_config, data.data(), data.size()); + c->game_data.account()->key_config = cmd; // TODO: We should send a response here, but I don't know which one! }