Core/Packets: fixed packet structure and opcode for SMSG_UPDATE_TALENT_DATA (for real this time)

This commit is contained in:
Ovahlord
2023-11-16 07:53:01 +01:00
parent 6cc08c7668
commit a3ade79899
4 changed files with 25 additions and 20 deletions

View File

@@ -40,28 +40,34 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentInfo const&
ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Talent::TalentGroupInfo const& talentGroupInfo)
{
data << uint32(talentGroupInfo.GlyphInfo.size());
data << uint32(talentGroupInfo.TalentInfos.size());
data << uint32(talentGroupInfo.SpecID);
data << uint8(talentGroupInfo.Talents.size());
data << uint32(talentGroupInfo.Talents.size());
for (uint16 glyph : talentGroupInfo.GlyphInfo)
data << uint16(glyph);
data << uint8(talentGroupInfo.GlyphIDs.size());
data << uint32(talentGroupInfo.GlyphIDs.size());
for (auto& talentInfo : talentGroupInfo.TalentInfos)
data << talentInfo;
data << uint8(talentGroupInfo.SpecID);
for (auto const& talent : talentGroupInfo.Talents)
data << talent;
for (uint16 glyphId : talentGroupInfo.GlyphIDs)
data << uint16(glyphId);
return data;
}
WorldPacket const* WorldPackets::Talent::UpdateTalentData::Write()
{
_worldPacket << uint8(ActiveGroup);
_worldPacket << uint32(UnspentTalentPoints);
_worldPacket << uint8(ActiveGroup);
_worldPacket << uint32(TalentGroupInfos.size());
for (auto& talentGroupInfo : TalentGroupInfos)
for (auto const& talentGroupInfo : TalentGroupInfos)
_worldPacket << talentGroupInfo;
_worldPacket.WriteBit(IsPetTalents);
return &_worldPacket;
}

View File

@@ -41,9 +41,9 @@ namespace WorldPackets
struct TalentGroupInfo
{
uint8 SpecID = 0;
std::vector<TalentInfo> TalentInfos;
std::vector<uint16> GlyphInfo;
int32 SpecID = 0;
std::vector<uint16> Talents;
std::vector<uint16> GlyphIDs;
};
class UpdateTalentData final : public ServerPacket
@@ -55,6 +55,7 @@ namespace WorldPackets
uint32 UnspentTalentPoints = 0;
uint8 ActiveGroup = 0;
bool IsPetTalents = false;
std::vector<TalentGroupInfo> TalentGroupInfos;
};

View File

@@ -1929,19 +1929,19 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_PVP_SEASON, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ARENA_TEAM_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_BATTLE_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_CREATURE_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GAME_OBJECT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GARRISON_PET_NAME_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_FOLLOW_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_GUILD_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_ITEM_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_NPC_TEXT_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PAGE_TEXT_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PETITION_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PET_NAME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAME_BY_COMMUNITY_ID_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAMES_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_PLAYER_NAMES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_QUEST_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_REALM_GUILD_MASTER_INFO_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUERY_TIME_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_QUEST_COMPLETION_NPC_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
@@ -2196,7 +2196,6 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_INSTANCE_OWNERSHIP, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_LAST_INSTANCE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_OBJECT, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_PET_TALENT_DATA, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_PRIMARY_SPEC, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_REALM_HIDDEN_INFO, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UPDATE_RECENT_PLAYER_GUIDS, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);

View File

@@ -1841,10 +1841,9 @@ enum OpcodeServer : uint16
SMSG_UPDATE_INSTANCE_OWNERSHIP = 0x26A9,
SMSG_UPDATE_LAST_INSTANCE = 0x2688,
SMSG_UPDATE_OBJECT = 0x27CB,
SMSG_UPDATE_PET_TALENT_DATA = 0x25D7,
SMSG_UPDATE_PRIMARY_SPEC = 0x25D8,
SMSG_UPDATE_REALM_HIDDEN_INFO = 0x28AC,
SMSG_UPDATE_TALENT_DATA = 0x25D6,
SMSG_UPDATE_TALENT_DATA = 0x25D7,
SMSG_UPDATE_WORLD_STATE = 0x2748,
SMSG_USERLIST_ADD = 0x2BB9,
SMSG_USERLIST_REMOVE = 0x2BBA,