From b662eb75dfd651e431e70500fa6ef5b00a1a6995 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Sat, 31 Oct 2026 18:37:01 +0000 Subject: [PATCH] Decompile fn_24199 (CSession::BuildMessengerReplayRecords) Batch #8514 by youko: 0 byte-identical, 1 confirmed by peer review. - fn_24199 CSession::BuildMessengerReplayRecords: logic confirmed by peer review Peer-reviewed-by: eAthena, SapitoSucio Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Client/Replay.cpp | 45 ++++++++++++++++++++++++++++++++++++++++ Source/Client/Session.h | 1 + 2 files changed, 46 insertions(+) diff --git a/Source/Client/Replay.cpp b/Source/Client/Replay.cpp index 98508e23..f10f2c5c 100644 --- a/Source/Client/Replay.cpp +++ b/Source/Client/Replay.cpp @@ -1913,3 +1913,48 @@ std::vector CSession::BuildStatsReplayRecords() { } return records; } + +// OFFSET: 0x00E40C60 +// FUNCTION: fn_24199 +std::vector CSession::BuildMessengerReplayRecords() { + std::vector records; + { + const auto record = BuildReplayTaggedRecord(4000, nullptr, 0); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto record = BuildReplayTaggedRecord(4010, &this->unknown_5938, 1); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto record = BuildReplayTaggedRecord(4011, &this->unknown_5460, sizeof(this->unknown_5460)); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto record = BuildReplayTaggedRecord(4012, &this->unknown_5464, sizeof(this->unknown_5464)); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto record = BuildReplayTaggedRecord(4013, this->unknown_54AC.c_str(), this->unknown_54AC.size()); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto record = BuildReplayTaggedRecord(4014, this->unknown_54C4.c_str(), this->unknown_54C4.size()); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto bytes = SerializeMessengerMembers(this->m_partyMembers); + const auto record = MakeFramedMessage(4015, reinterpret_cast&>(bytes)); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto bytes = SerializeMessengerMembers(this->m_friends); + const auto record = MakeFramedMessage(4016, reinterpret_cast&>(bytes)); + records.insert(records.end(), record.begin(), record.end()); + } + { + const auto record = BuildReplayTaggedRecord(4001, nullptr, 0); + records.insert(records.end(), record.begin(), record.end()); + } + return records; +} diff --git a/Source/Client/Session.h b/Source/Client/Session.h index 6caf9d71..51779629 100644 --- a/Source/Client/Session.h +++ b/Source/Client/Session.h @@ -829,6 +829,7 @@ public: std::vector BuildReservedReplayRecords(); std::vector BuildShopReplayRecords(); std::vector BuildExtraReplayRecords(); std::vector BuildStatsReplayRecords(); std::vector BuildItemReplayRecords(); std::vector BuildCompanionReplayRecords(); + std::vector BuildMessengerReplayRecords(); std::vector BuildSkillListReplayPacket(short id); void SetHomunculusAutoFeed(bool enabled); void SetPetAutoFeed(bool enabled);