feat(net): MATCH_REQUEST and MATCH_TRANSFER chat packets and the chat server's MatchUpdate

MATCH_TRANSFER is appended after GUILD_DISBAND (71); the chat ids from
CREATE_TEAM on are pinned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-30 04:11:59 -05:00
parent 9a4282e6b3
commit e11493008d
8 changed files with 277 additions and 1 deletions

View File

@@ -22,6 +22,7 @@
#include "eGuildCreateResponse.h"
#include "eGuildInviteResponse.h"
#include "eGuildRank.h"
#include "eMatchUpdate.h"
#include "eUgcResourceType.h"
#include "MessageType/Client.h"
#include "MessageType/Game.h"
@@ -553,6 +554,17 @@ namespace ClientPackets {
bool Deserialize(RakNet::BitStream& bitStream) override;
};
// The activity lobby's MatchUpdate, written by the chat server's matchmaking (docs/Matchmaking.md). Byte for byte
// GameMessages::MatchUpdate: name-value text (widened to UTF-16), then the eMatchUpdate type.
struct MatchUpdate : public TeamGameMsg {
std::string data; // name-value text, one byte per character here
eMatchUpdate type{};
MatchUpdate() : TeamGameMsg(MessageType::Game::MATCH_UPDATE) {}
void Serialize(RakNet::BitStream& bitStream) const override;
bool Deserialize(RakNet::BitStream& bitStream) override;
};
/**
* Guild packets (docs/Guilds.md), written by the chat server and routed through the player's world. The client
* copies them into packed structs: every string is a fixed-size UTF-16 buffer it reads up to the first NUL, so