work around 6xD9 client bug
This commit is contained in:
@@ -6356,7 +6356,10 @@ struct G_AddSRankWeaponSpecial_BB_6xD8 {
|
|||||||
} __packed_ws__(G_AddSRankWeaponSpecial_BB_6xD8, 0x24);
|
} __packed_ws__(G_AddSRankWeaponSpecial_BB_6xD8, 0x24);
|
||||||
|
|
||||||
// 6xD9: Momoka item exchange (BB; handled by server)
|
// 6xD9: Momoka item exchange (BB; handled by server)
|
||||||
// The client sends this when it executes an F95B quest opcode.
|
// The client sends this when it executes an F95B quest opcode. The client has
|
||||||
|
// an unfortunate bug where it doesn't set the size field when generating this
|
||||||
|
// command, so the size ends up as an uninitialized value and the client sends
|
||||||
|
// more (or less!) data than necessary.
|
||||||
|
|
||||||
struct G_MomokaItemExchange_BB_6xD9 {
|
struct G_MomokaItemExchange_BB_6xD9 {
|
||||||
G_ClientIDHeader header;
|
G_ClientIDHeader header;
|
||||||
|
|||||||
@@ -5194,7 +5194,8 @@ static asio::awaitable<void> on_momoka_item_exchange_bb(shared_ptr<Client> c, Su
|
|||||||
throw runtime_error("6xD9 command sent during free play");
|
throw runtime_error("6xD9 command sent during free play");
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto& cmd = msg.check_size_t<G_MomokaItemExchange_BB_6xD9>();
|
// See notes in CommandFormats.hh about why we allow larger commands here
|
||||||
|
const auto& cmd = msg.check_size_t<G_MomokaItemExchange_BB_6xD9>(0xFFFF);
|
||||||
auto s = c->require_server_state();
|
auto s = c->require_server_state();
|
||||||
auto p = c->character_file();
|
auto p = c->character_file();
|
||||||
try {
|
try {
|
||||||
|
|||||||
Reference in New Issue
Block a user