Core/PacketIO: Update opcodes and packet structures to 8.2.5

Port From (https://github.com/TrinityCore/TrinityCore/commit/ee2e49429f4383732b4e0f39b493470b9c1dd10c)
This commit is contained in:
hondacrx
2019-10-28 14:33:43 -04:00
parent 1e2ce61e5c
commit c6e53b2ba7
34 changed files with 1792 additions and 1280 deletions
@@ -19,6 +19,7 @@ using Framework.Constants;
using Game.Entities;
using System;
using System.Collections.Generic;
using Framework.Dynamic;
namespace Game.Network.Packets
{
@@ -302,7 +303,11 @@ namespace Game.Network.Packets
data.WriteUInt32(TimeFromStart);
data.WriteUInt32(TimeFromCreate);
data.WriteBits(Flags, 4);
data.WriteBit(RafAcceptanceID.HasValue);
data.FlushBits();
if (RafAcceptanceID.HasValue)
data.WriteUInt64(RafAcceptanceID.Value);
}
public uint Id;
@@ -312,6 +317,7 @@ namespace Game.Network.Packets
public long Date;
public uint TimeFromStart;
public uint TimeFromCreate;
public Optional<ulong> RafAcceptanceID;
}
public struct GuildCriteriaProgress
@@ -135,6 +135,25 @@ namespace Game.Network.Packets
public uint ContributionPoints;
}
public struct PVPMatchPlayerPVPStat
{
public int PvpStatID;
public uint PvpStatValue;
public PVPMatchPlayerPVPStat(int pvpStatID, uint pvpStatValue)
{
PvpStatID = pvpStatID;
PvpStatValue = pvpStatValue;
}
public void Write(WorldPacket data)
{
data.WriteInt32(PvpStatID);
data.WriteUInt32(PvpStatValue);
}
}
public class PVPMatchPlayerStatistics
{
public void Write(WorldPacket data)
@@ -151,8 +170,8 @@ namespace Game.Network.Packets
data.WriteInt32(CreatureID);
data.WriteInt32(HonorLevel);
foreach (var id in Stats)
data.WriteUInt32(id);
foreach (var pvpStat in Stats)
pvpStat.Write(data);
data.WriteBit(Faction);
data.WriteBit(IsInWorld);
@@ -190,7 +209,7 @@ namespace Game.Network.Packets
public Optional<int> RatingChange;
public Optional<uint> PreMatchMMR;
public Optional<int> MmrChange;
public List<uint> Stats = new List<uint>();
public List<PVPMatchPlayerPVPStat> Stats = new List<PVPMatchPlayerPVPStat>();
public int PrimaryTalentTree;
public int Sex;
public Race PlayerRace;
@@ -116,6 +116,7 @@ namespace Game.Network.Packets
_worldPacket.WriteUInt32((uint)ChannelFlags);
_worldPacket.WriteInt32(ChatChannelID);
_worldPacket.WriteUInt64((ulong)InstanceID);
_worldPacket.WritePackedGuid(ChannelGUID);
_worldPacket.WriteString(Channel);
_worldPacket.WriteString(ChannelWelcomeMsg);
}
@@ -125,6 +126,7 @@ namespace Game.Network.Packets
public int InstanceID;
public ChannelFlags ChannelFlags;
public string Channel = "";
public ObjectGuid ChannelGUID;
}
public class ChannelNotifyLeft : ServerPacket
+35 -30
View File
@@ -97,19 +97,19 @@ namespace Game.Network.Packets
Name = fields.Read<string>(1);
RaceId = fields.Read<byte>(2);
ClassId = (Class)fields.Read<byte>(3);
Sex = fields.Read<byte>(4);
Skin = fields.Read<byte>(5);
Face = fields.Read<byte>(6);
SexId = fields.Read<byte>(4);
SkinId = fields.Read<byte>(5);
FaceId = fields.Read<byte>(6);
HairStyle = fields.Read<byte>(7);
HairColor = fields.Read<byte>(8);
FacialHair = fields.Read<byte>(9);
CustomDisplay[0] = fields.Read<byte>(10);
CustomDisplay[1] = fields.Read<byte>(11);
CustomDisplay[2] = fields.Read<byte>(12);
Level = fields.Read<byte>(13);
ExperienceLevel = fields.Read<byte>(13);
ZoneId = fields.Read<uint>(14);
MapId = fields.Read<uint>(15);
PreLoadPosition = new Vector3(fields.Read<float>(16), fields.Read<float>(17), fields.Read<float>(18));
PreloadPos = new Vector3(fields.Read<float>(16), fields.Read<float>(17), fields.Read<float>(18));
ulong guildId = fields.Read<ulong>(19);
if (guildId != 0)
@@ -134,11 +134,11 @@ namespace Game.Network.Packets
Flags |= CharacterFlags.Declined;
if (atLoginFlags.HasAnyFlag(AtLoginFlags.Customize))
CustomizationFlag = CharacterCustomizeFlags.Customize;
Flags2 = CharacterCustomizeFlags.Customize;
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeFaction))
CustomizationFlag = CharacterCustomizeFlags.Faction;
Flags2 = CharacterCustomizeFlags.Faction;
else if (atLoginFlags.HasAnyFlag(AtLoginFlags.ChangeRace))
CustomizationFlag = CharacterCustomizeFlags.Race;
Flags2 = CharacterCustomizeFlags.Race;
Flags3 = 0;
Flags4 = 0;
@@ -150,9 +150,9 @@ namespace Game.Network.Packets
CreatureTemplate creatureInfo = Global.ObjectMgr.GetCreatureTemplate(fields.Read<uint>(22));
if (creatureInfo != null)
{
Pet.CreatureDisplayId = fields.Read<uint>(23);
Pet.Level = fields.Read<ushort>(24);
Pet.CreatureFamily = (uint)creatureInfo.Family;
PetCreatureDisplayId = fields.Read<uint>(23);
PetExperienceLevel = fields.Read<ushort>(24);
PetCreatureFamilyId = (uint)creatureInfo.Family;
}
}
@@ -172,9 +172,10 @@ namespace Game.Network.Packets
for (byte slot = 0; slot < InventorySlots.BagEnd; ++slot)
{
VisualItems[slot].InventoryType = (byte)equipment.NextUInt32();
VisualItems[slot].InvType = (byte)equipment.NextUInt32();
VisualItems[slot].DisplayId = equipment.NextUInt32();
VisualItems[slot].DisplayEnchantId = equipment.NextUInt32();
VisualItems[slot].Subclass = (byte)equipment.NextUInt32();
}
}
@@ -185,9 +186,9 @@ namespace Game.Network.Packets
data.WriteUInt8(ListPosition);
data.WriteUInt8(RaceId);
data.WriteUInt8((byte)ClassId);
data.WriteUInt8(Sex);
data.WriteUInt8(Skin);
data.WriteUInt8(Face);
data.WriteUInt8(SexId);
data.WriteUInt8(SkinId);
data.WriteUInt8(FaceId);
data.WriteUInt8(HairStyle);
data.WriteUInt8(HairColor);
data.WriteUInt8(FacialHair);
@@ -195,17 +196,17 @@ namespace Game.Network.Packets
foreach (var display in CustomDisplay)
data.WriteUInt8(display);
data.WriteUInt8(Level);
data.WriteUInt8(ExperienceLevel);
data.WriteUInt32(ZoneId);
data.WriteUInt32(MapId);
data.WriteVector3(PreLoadPosition);
data.WriteVector3(PreloadPos);
data.WritePackedGuid(GuildGuid);
data.WriteUInt32((uint)Flags);
data.WriteUInt32((uint)CustomizationFlag);
data.WriteUInt32((uint)Flags2);
data.WriteUInt32(Flags3);
data.WriteUInt32(Pet.CreatureDisplayId);
data.WriteUInt32(Pet.Level);
data.WriteUInt32(Pet.CreatureFamily);
data.WriteUInt32(PetCreatureDisplayId);
data.WriteUInt32(PetExperienceLevel);
data.WriteUInt32(PetCreatureFamilyId);
data.WriteUInt32(ProfessionIds[0]);
data.WriteUInt32(ProfessionIds[1]);
@@ -233,20 +234,20 @@ namespace Game.Network.Packets
public byte ListPosition; // Order of the characters in list
public byte RaceId;
public Class ClassId;
public byte Sex;
public byte Skin;
public byte Face;
public byte SexId;
public byte SkinId;
public byte FaceId;
public byte HairStyle;
public byte HairColor;
public byte FacialHair;
public Array<byte> CustomDisplay = new Array<byte>(PlayerConst.CustomDisplaySize);
public byte Level;
public byte ExperienceLevel;
public uint ZoneId;
public uint MapId;
public Vector3 PreLoadPosition;
public Vector3 PreloadPos;
public ObjectGuid GuildGuid;
public CharacterFlags Flags; // Character flag @see enum CharacterFlags
public CharacterCustomizeFlags CustomizationFlag; // Character customization flags @see enum CharacterCustomizeFlags
public CharacterCustomizeFlags Flags2; // Character customization flags @see enum CharacterCustomizeFlags
public uint Flags3; // Character flags 3 @todo research
public uint Flags4;
public bool FirstLogin;
@@ -255,7 +256,9 @@ namespace Game.Network.Packets
public ushort SpecID;
public uint Unknown703;
public uint LastLoginVersion;
public PetInfo Pet = new PetInfo();
public uint PetCreatureDisplayId;
public uint PetExperienceLevel;
public uint PetCreatureFamilyId;
public bool BoostInProgress; // @todo
public uint[] ProfessionIds = new uint[2]; // @todo
public VisualItemInfo[] VisualItems = new VisualItemInfo[InventorySlots.BagEnd];
@@ -266,12 +269,14 @@ namespace Game.Network.Packets
{
data.WriteUInt32(DisplayId);
data.WriteUInt32(DisplayEnchantId);
data.WriteUInt8(InventoryType);
data.WriteUInt8(InvType);
data.WriteUInt8(Subclass);
}
public uint DisplayId;
public uint DisplayEnchantId;
public byte InventoryType;
public byte InvType;
public byte Subclass;
}
public struct PetInfo
+4 -3
View File
@@ -559,7 +559,6 @@ namespace Game.Network.Packets
RankID = _worldPacket.ReadInt32();
RankOrder = _worldPacket.ReadInt32();
Flags = _worldPacket.ReadUInt32();
OldFlags = _worldPacket.ReadUInt32();
WithdrawGoldLimit = _worldPacket.ReadUInt32();
for (byte i = 0; i < GuildConst.MaxBankTabs; i++)
@@ -572,6 +571,8 @@ namespace Game.Network.Packets
uint rankNameLen = _worldPacket.ReadBits<uint>(7);
RankName = _worldPacket.ReadString(rankNameLen);
OldFlags = _worldPacket.ReadUInt32();
}
public int RankID;
@@ -1445,7 +1446,7 @@ namespace Game.Network.Packets
{
public void Write(WorldPacket data)
{
data.WriteUInt32(RankID);
data.WriteUInt8(RankID);
data.WriteUInt32(RankOrder);
data.WriteUInt32(Flags);
data.WriteUInt32(WithdrawGoldLimit);
@@ -1460,7 +1461,7 @@ namespace Game.Network.Packets
data.WriteString(RankName);
}
public uint RankID;
public byte RankID;
public uint RankOrder;
public uint Flags;
public uint WithdrawGoldLimit;
@@ -179,6 +179,7 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(Slots.Count);
_worldPacket.WriteUInt32(RequestedRoles);
_worldPacket.WriteInt32(SuspendedPlayers.Count);
_worldPacket.WriteUInt32(QueueMapID);
foreach (var slot in Slots)
_worldPacket.WriteUInt32(slot);
@@ -201,6 +202,7 @@ namespace Game.Network.Packets
public List<uint> Slots = new List<uint>();
public uint RequestedRoles;
public List<ObjectGuid> SuspendedPlayers = new List<ObjectGuid>();
public uint QueueMapID;
public bool NotifyUI;
public bool IsParty;
public bool Joined;
@@ -731,7 +731,6 @@ namespace Game.Network.Packets
public struct DBQueryRecord
{
public ObjectGuid GUID;
public uint RecordID;
}
@@ -202,6 +202,7 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(Info.TreasurePickerID);
_worldPacket.WriteInt32(Info.Expansion);
_worldPacket.WriteInt32(Info.ManagedWorldStateID);
_worldPacket.WriteInt32(Info.QuestSessionBonus);
_worldPacket.WriteBits(Info.LogTitle.GetByteCount(), 9);
_worldPacket.WriteBits(Info.LogDescription.GetByteCount(), 12);
@@ -428,6 +429,7 @@ namespace Game.Network.Packets
_worldPacket.WriteInt32(DescEmotes.Count);
_worldPacket.WriteInt32(Objectives.Count);
_worldPacket.WriteInt32(QuestStartItemID);
_worldPacket.WriteInt32(QuestSessionBonus);
foreach (uint spell in LearnSpells)
_worldPacket.WriteUInt32(spell);
@@ -454,6 +456,7 @@ namespace Game.Network.Packets
_worldPacket.WriteBits(PortraitTurnInText.GetByteCount(), 10);
_worldPacket.WriteBits(PortraitTurnInName.GetByteCount(), 8);
_worldPacket.WriteBit(AutoLaunched);
_worldPacket.WriteBit(false); // unused in client
_worldPacket.WriteBit(StartCheat);
_worldPacket.WriteBit(DisplayPopup);
_worldPacket.FlushBits();
@@ -483,6 +486,7 @@ namespace Game.Network.Packets
public uint PortraitGiver;
public uint PortraitGiverMount;
public int QuestStartItemID;
public int QuestSessionBonus;
public string PortraitGiverText = "";
public string PortraitGiverName = "";
public string PortraitTurnInText = "";
@@ -969,6 +973,7 @@ namespace Game.Network.Packets
public int TreasurePickerID;
public int Expansion;
public int ManagedWorldStateID;
public int QuestSessionBonus;
public List<QuestObjective> Objectives = new List<QuestObjective>();
public uint[] RewardItems = new uint[SharedConst.QuestRewardItemCount];
public uint[] RewardAmount = new uint[SharedConst.QuestRewardItemCount];
@@ -45,7 +45,7 @@ namespace Game.Network.Packets
public ObjectGuid Target;
}
public class ProposeLevelGrant : ServerPacket
/*public class ProposeLevelGrant : ServerPacket
{
public ProposeLevelGrant() : base(ServerOpcodes.ProposeLevelGrant) { }
@@ -55,7 +55,7 @@ namespace Game.Network.Packets
}
public ObjectGuid Sender;
}
}*/
public class ReferAFriendFailure : ServerPacket
{
+26 -9
View File
@@ -41,11 +41,15 @@ namespace Game.Network.Packets
_worldPacket.WriteUInt32(CfgRealmID);
_worldPacket.WriteInt32(CfgRealmRecID);
_worldPacket.WriteUInt32(RAFSystem.MaxRecruits);
_worldPacket.WriteUInt32(RAFSystem.MaxRecruitMonths);
_worldPacket.WriteUInt32(RAFSystem.MaxRecruitmentUses);
_worldPacket.WriteUInt32(RAFSystem.DaysInCycle);
_worldPacket.WriteUInt32(TwitterPostThrottleLimit);
_worldPacket.WriteUInt32(TwitterPostThrottleCooldown);
_worldPacket.WriteUInt32(TokenPollTimeSeconds);
_worldPacket.WriteUInt32(TokenRedeemIndex);
_worldPacket.WriteInt64(TokenBalanceAmount);
_worldPacket.WriteUInt32(BpayStoreProductDeliveryDelay);
@@ -61,7 +65,8 @@ namespace Game.Network.Packets
_worldPacket.WriteBit(ItemRestorationButtonEnabled);
_worldPacket.WriteBit(BrowserEnabled);
_worldPacket.WriteBit(SessionAlert.HasValue);
_worldPacket.WriteBit(RecruitAFriendSendingEnabled);
_worldPacket.WriteBit(RAFSystem.Enabled);
_worldPacket.WriteBit(RAFSystem.RecruitingEnabled);
_worldPacket.WriteBit(CharUndeleteEnabled);
_worldPacket.WriteBit(RestrictedAccount);
_worldPacket.WriteBit(CommerceSystemEnabled);
@@ -81,6 +86,9 @@ namespace Game.Network.Packets
_worldPacket.WriteBit(ClubsPresenceUpdateEnabled);
_worldPacket.WriteBit(VoiceChatDisabledByParentalControl);
_worldPacket.WriteBit(VoiceChatMutedByParentalControl);
_worldPacket.WriteBit(QuestSessionEnabled);
_worldPacket.WriteBit(Unused825);
_worldPacket.WriteBit(ClubFinderEnabled);
_worldPacket.FlushBits();
{
@@ -144,7 +152,6 @@ namespace Game.Network.Packets
public bool VoiceEnabled;
public bool BrowserEnabled;
public bool BpayStoreAvailable;
public bool RecruitAFriendSendingEnabled;
public bool BpayStoreEnabled;
public Optional<SessionAlertConfig> SessionAlert;
public uint ScrollOfResurrectionMaxRequestsPerDay;
@@ -157,7 +164,6 @@ namespace Game.Network.Packets
public uint TwitterPostThrottleLimit;
public uint TwitterPostThrottleCooldown;
public uint TokenPollTimeSeconds;
public uint TokenRedeemIndex;
public long TokenBalanceAmount;
public uint BpayStoreProductDeliveryDelay;
public uint ClubsPresenceUpdateTimer;
@@ -182,10 +188,14 @@ namespace Game.Network.Packets
public bool ClubsPresenceUpdateEnabled;
public bool VoiceChatDisabledByParentalControl;
public bool VoiceChatMutedByParentalControl;
public bool QuestSessionEnabled;
public bool Unused825;
public bool ClubFinderEnabled;
public Optional<List<byte>> RaceClassExpansionLevels;
public SocialQueueConfig QuickJoinConfig;
public VoiceChatProxySettings VoiceChatManagerSettings;
public RafSystemFeatureInfo RAFSystem;
public struct SavedThrottleObjectState
{
@@ -245,6 +255,16 @@ namespace Game.Network.Packets
public ObjectGuid BnetAccountGuid;
public ObjectGuid GuildGuid;
}
public struct RafSystemFeatureInfo
{
public bool Enabled;
public bool RecruitingEnabled;
public uint MaxRecruits;
public uint MaxRecruitMonths;
public uint MaxRecruitmentUses;
public uint DaysInCycle;
}
}
public class FeatureSystemStatusGlueScreen : ServerPacket
@@ -263,7 +283,6 @@ namespace Game.Network.Packets
_worldPacket.WriteBit(IsExpansionPreorderInStore);
_worldPacket.WriteBit(KioskModeEnabled);
_worldPacket.WriteBit(CompetitiveModeEnabled);
_worldPacket.WriteBit(false); // not accessed in handler
_worldPacket.WriteBit(TrialBoostEnabled);
_worldPacket.WriteBit(TokenBalanceEnabled);
_worldPacket.WriteBit(LiveRegionCharacterListEnabled);
@@ -271,8 +290,7 @@ namespace Game.Network.Packets
_worldPacket.WriteBit(LiveRegionAccountCopyEnabled);
_worldPacket.FlushBits();
_worldPacket.WriteInt32(TokenPollTimeSeconds);
_worldPacket.WriteInt32(TokenRedeemIndex);
_worldPacket.WriteUInt32(TokenPollTimeSeconds);
_worldPacket.WriteInt64(TokenBalanceAmount);
_worldPacket.WriteInt32(MaxCharactersPerRealm);
_worldPacket.WriteUInt32(BpayStoreProductDeliveryDelay);
@@ -297,8 +315,7 @@ namespace Game.Network.Packets
public bool LiveRegionCharacterListEnabled; // NYI
public bool LiveRegionCharacterCopyEnabled; // NYI
public bool LiveRegionAccountCopyEnabled; // NYI
public int TokenPollTimeSeconds; // NYI
public int TokenRedeemIndex; // NYI
public uint TokenPollTimeSeconds; // NYI
public long TokenBalanceAmount; // NYI
public int MaxCharactersPerRealm;
public uint BpayStoreProductDeliveryDelay; // NYI
+127 -24
View File
@@ -149,6 +149,7 @@ namespace Game.Network.Packets
bool hasLFGListSearchResult = _worldPacket.HasBit();
bool hasLFGListApplicant = _worldPacket.HasBit();
bool hasClubMessage = _worldPacket.HasBit();
bool hasClubFinderResult = _worldPacket.HasBit();
_worldPacket.ResetBitPos();
@@ -159,14 +160,16 @@ namespace Game.Network.Packets
_worldPacket.ResetBitPos();
}
HorusChatLog.Read(_worldPacket);
Note = _worldPacket.ReadString(noteLength);
if (hasMailInfo)
{
MailInfo.HasValue = true;
MailInfo.Value.Read(_worldPacket);
}
Note = _worldPacket.ReadString(noteLength);
if (hasCalendarInfo)
{
CalenderInfo.HasValue = true;
@@ -196,6 +199,12 @@ namespace Game.Network.Packets
LFGListApplicant.HasValue = true;
LFGListApplicant.Value.Read(_worldPacket);
}
if (hasClubFinderResult)
{
ClubFinderResult.HasValue = true;
ClubFinderResult.Value.Read(_worldPacket);
}
}
public SupportTicketHeader Header;
@@ -203,6 +212,7 @@ namespace Game.Network.Packets
public ObjectGuid TargetCharacterGUID;
public byte ComplaintType;
public string Note;
public SupportTicketHorusChatLog HorusChatLog;
public Optional<SupportTicketMailInfo> MailInfo;
public Optional<SupportTicketCalendarEventInfo> CalenderInfo;
public Optional<SupportTicketPetInfo> PetInfo;
@@ -210,6 +220,7 @@ namespace Game.Network.Packets
public Optional<SupportTicketLFGListSearchResult> LFGListSearchResult;
public Optional<SupportTicketLFGListApplicant> LFGListApplicant;
public Optional<SupportTicketCommunityMessage> CommunityMessage;
public Optional<SupportTicketClubFinderResult> ClubFinderResult;
public struct SupportTicketChatLine
{
@@ -254,6 +265,82 @@ namespace Game.Network.Packets
public Optional<uint> ReportLineIndex;
}
public struct SupportTicketHorusChatLine
{
public void Read(WorldPacket data)
{
Timestamp = data.ReadInt32();
AuthorGUID = data.ReadPackedGuid();
bool hasClubID = data.HasBit();
bool hasChannelGUID = data.HasBit();
bool hasRealmAddress = data.HasBit();
bool hasSlashCmd = data.HasBit();
uint textLength = data.ReadBits<uint>(12);
if (hasClubID)
{
ClubID.HasValue = true;
ClubID.Value = data.ReadUInt64();
}
if (hasChannelGUID)
{
ChannelGUID.HasValue = true;
ChannelGUID.Value = data.ReadPackedGuid();
}
if (hasRealmAddress)
{
RealmAddress.HasValue = true;
RealmAddress.Value.VirtualRealmAddress = data.ReadUInt32();
RealmAddress.Value.field_4 = data.ReadUInt16();
RealmAddress.Value.field_6 = data.ReadUInt8();
}
if (hasSlashCmd)
{
SlashCmd.HasValue = true;
SlashCmd.Value = data.ReadInt32();
}
Text = data.ReadString(textLength);
}
public struct SenderRealm
{
public uint VirtualRealmAddress;
public ushort field_4;
public byte field_6;
}
public int Timestamp;
public ObjectGuid AuthorGUID;
public Optional<ulong> ClubID;
public Optional<ObjectGuid> ChannelGUID;
public Optional<SenderRealm> RealmAddress;
public Optional<int> SlashCmd;
public string Text;
}
public class SupportTicketHorusChatLog
{
public List<SupportTicketHorusChatLine> Lines = new List<SupportTicketHorusChatLine>();
public void Read(WorldPacket data)
{
uint linesCount = data.ReadUInt32();
data.ResetBitPos();
for (uint i = 0; i < linesCount; i++)
{
var chatLine = new SupportTicketHorusChatLine();
chatLine.Read(data);
Lines.Add(chatLine);
}
}
}
public struct SupportTicketMailInfo
{
public void Read(WorldPacket data)
@@ -266,9 +353,9 @@ namespace Game.Network.Packets
MailSubject = data.ReadString(subjectLength);
}
int MailID;
string MailSubject;
string MailBody;
public int MailID;
public string MailSubject;
public string MailBody;
}
public struct SupportTicketCalendarEventInfo
@@ -281,9 +368,9 @@ namespace Game.Network.Packets
EventTitle = data.ReadString(data.ReadBits<byte>(8));
}
ulong EventID;
ulong InviteID;
string EventTitle;
public ulong EventID;
public ulong InviteID;
public string EventTitle;
}
public struct SupportTicketPetInfo
@@ -295,8 +382,8 @@ namespace Game.Network.Packets
PetName = data.ReadString(data.ReadBits<byte>(8));
}
ObjectGuid PetID;
string PetName;
public ObjectGuid PetID;
public string PetName;
}
public struct SupportTicketGuildInfo
@@ -309,8 +396,8 @@ namespace Game.Network.Packets
GuildName = data.ReadString(nameLength);
}
ObjectGuid GuildID;
string GuildName;
public ObjectGuid GuildID;
public string GuildName;
}
public struct SupportTicketLFGListSearchResult
@@ -336,16 +423,16 @@ namespace Game.Network.Packets
VoiceChat = data.ReadString(voiceChatLength);
}
RideTicket RideTicket;
uint GroupFinderActivityID;
ObjectGuid LastTitleAuthorGuid;
ObjectGuid LastDescriptionAuthorGuid;
ObjectGuid LastVoiceChatAuthorGuid;
ObjectGuid ListingCreatorGuid;
ObjectGuid Unknown735;
string Title;
string Description;
string VoiceChat;
public RideTicket RideTicket;
public uint GroupFinderActivityID;
public ObjectGuid LastTitleAuthorGuid;
public ObjectGuid LastDescriptionAuthorGuid;
public ObjectGuid LastVoiceChatAuthorGuid;
public ObjectGuid ListingCreatorGuid;
public ObjectGuid Unknown735;
public string Title;
public string Description;
public string VoiceChat;
}
public struct SupportTicketLFGListApplicant
@@ -358,14 +445,30 @@ namespace Game.Network.Packets
Comment = data.ReadString(data.ReadBits<uint>(9));
}
RideTicket RideTicket;
string Comment;
public RideTicket RideTicket;
public string Comment;
}
public struct SupportTicketCommunityMessage
{
public bool IsPlayerUsingVoice;
}
public struct SupportTicketClubFinderResult
{
public ulong ClubFinderPostingID;
public ulong ClubID;
public ObjectGuid ClubFinderGUID;
public string ClubName;
public void Read(WorldPacket data)
{
ClubFinderPostingID = data.ReadUInt64();
ClubID = data.ReadUInt64();
ClubFinderGUID = data.ReadPackedGuid();
ClubName = data.ReadString(data.ReadBits<uint>(12));
}
}
}
class Complaint : ClientPacket
@@ -54,14 +54,19 @@ namespace Game.Network.Packets
_worldPacket.WriteBit(IsFullUpdate);
_worldPacket.WriteBit(IsSetFavorite);
_worldPacket.WriteInt32(FavoriteAppearances.Count);
_worldPacket.WriteInt32(NewAppearances.Count);
foreach (uint itemModifiedAppearanceId in FavoriteAppearances)
_worldPacket.WriteUInt32(itemModifiedAppearanceId);
foreach (var newAppearance in NewAppearances)
_worldPacket.WriteUInt32(newAppearance);
}
public bool IsFullUpdate;
public bool IsSetFavorite;
public List<uint> FavoriteAppearances = new List<uint>();
public List<uint> NewAppearances = new List<uint>();
}
class OpenTransmogrifier : ServerPacket
+1 -1
View File
@@ -37,7 +37,7 @@ namespace Game.Network
static byte[] ContinuedSessionSeed = { 0x16, 0xAD, 0x0C, 0xD4, 0x46, 0xF9, 0x4F, 0xB2, 0xEF, 0x7D, 0xEA, 0x2A, 0x17, 0x66, 0x4D, 0x2F };
static byte[] EncryptionKeySeed = { 0xE9, 0x75, 0x3C, 0x50, 0x90, 0x93, 0x61, 0xDA, 0x3B, 0x07, 0xEE, 0xFA, 0xFF, 0x9D, 0x41, 0xB8 };
static byte[] ClientTypeSeed_Wn64 = { 0x79, 0x73, 0xA8, 0xD5, 0x4B, 0xDB, 0x8B, 0x79, 0x8D, 0x92, 0x97, 0xB0, 0x96, 0xE7, 0x71, 0xEF };
static byte[] ClientTypeSeed_Wn64 = { 0x21, 0xF5, 0xA6, 0xFC, 0x7A, 0xD8, 0x9F, 0xBF, 0x41, 0x1F, 0xDA, 0x8B, 0x87, 0x38, 0x18, 0x6A };
static byte[] ClientTypeSeed_Mc64 = { 0x34, 0x1C, 0xFE, 0xFE, 0x3D, 0x72, 0xAC, 0xA9, 0xA4, 0x40, 0x7D, 0xC5, 0x35, 0xDE, 0xD6, 0x6A };
public WorldSocket(Socket socket) : base(socket)