diff options
| author | Shauren <shauren.trinity@gmail.com> | 2021-04-09 20:57:47 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2021-04-09 20:57:47 +0200 |
| commit | f2202869f71f5a1a35191de303ee5166e4275884 (patch) | |
| tree | 594ee97fbcd8a840ca96396ba0be84289abf70fb /src/server/game/Entities/Object | |
| parent | f759809d9d4364bc1d988e4390d3d5a33d5469e9 (diff) | |
Core/PacketIO: Updated packet structures to 9.0.5
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 1 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.cpp | 116 | ||||
| -rw-r--r-- | src/server/game/Entities/Object/Updates/UpdateFields.h | 67 |
3 files changed, 98 insertions, 86 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 01ade19f1d4..55be0ac8e52 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -609,6 +609,7 @@ void Object::BuildMovementUpdate(ByteBuffer* data, CreateObjectBits flags) const //if (flags.SmoothPhasing) //{ // data->WriteBit(ReplaceActive); + // data->WriteBit(StopAnimKits); // data->WriteBit(HasReplaceObject); // data->FlushBits(); // if (HasReplaceObject) diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.cpp b/src/server/game/Entities/Object/Updates/UpdateFields.cpp index e350de8d24e..2d210afde5b 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.cpp +++ b/src/server/game/Entities/Object/Updates/UpdateFields.cpp @@ -298,7 +298,7 @@ void ItemData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisi } data << uint32(CreatePlayedTime); data << int32(Context); - data << int32(CreateTime); + data << int64(CreateTime); if (fieldVisibilityFlags.HasFlag(UpdateFieldFlag::Owner)) { data << uint64(ArtifactXP); @@ -446,7 +446,7 @@ void ItemData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bool ignor } if (changesMask[15]) { - data << int32(CreateTime); + data << int64(CreateTime); } if (changesMask[16]) { @@ -2555,7 +2555,7 @@ void PVPInfo::WriteCreate(ByteBuffer& data, Player const* owner, Player const* r data << uint32(Field_14); data << uint32(Field_18); data << uint32(PvpTierID); - data.WriteBits(Field_20, 1); + data.WriteBit(Field_20); data.FlushBits(); } @@ -2567,44 +2567,47 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const data.WriteBits(changesMask.GetBlock(0), 10); - data.FlushBits(); if (changesMask[0]) { if (changesMask[1]) { - data << uint32(Field_0); + data.WriteBit(Field_20); } + } + data.FlushBits(); + if (changesMask[0]) + { if (changesMask[2]) { - data << uint32(Field_4); + data << uint32(Field_0); } if (changesMask[3]) { - data << uint32(Field_8); + data << uint32(Field_4); } if (changesMask[4]) { - data << uint32(Field_C); + data << uint32(Field_8); } if (changesMask[5]) { - data << uint32(Rating); + data << uint32(Field_C); } if (changesMask[6]) { - data << uint32(Field_14); + data << uint32(Rating); } if (changesMask[7]) { - data << uint32(Field_18); + data << uint32(Field_14); } if (changesMask[8]) { - data << uint32(PvpTierID); + data << uint32(Field_18); } if (changesMask[9]) { - data.WriteBits(Field_20, 1); + data << uint32(PvpTierID); } } data.FlushBits(); @@ -2612,6 +2615,7 @@ void PVPInfo::WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const void PVPInfo::ClearChangesMask() { + Base::ClearChangesMask(Field_20); Base::ClearChangesMask(Field_0); Base::ClearChangesMask(Field_4); Base::ClearChangesMask(Field_8); @@ -2620,7 +2624,6 @@ void PVPInfo::ClearChangesMask() Base::ClearChangesMask(Field_14); Base::ClearChangesMask(Field_18); Base::ClearChangesMask(PvpTierID); - Base::ClearChangesMask(Field_20); _changesMask.ResetAll(); } @@ -3019,11 +3022,11 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f } data << int32(Honor); data << int32(HonorNextLevel); - data << int32(PvpRewardAchieved); + data << int64(PvpRewardAchieved); data << int32(PvpTierMaxFromWins); - data << int32(PvpLastWeeksRewardAchieved); + data << int64(PvpLastWeeksRewardAchieved); data << int32(PvpLastWeeksTierMaxFromWins); - data << int32(PvpLastWeeksRewardClaimed); + data << int64(PvpLastWeeksRewardClaimed); data << uint8(NumBankSlots); data << uint32(ResearchSites.size()); data << uint32(ResearchSiteProgress.size()); @@ -3056,6 +3059,7 @@ void ActivePlayerData::WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> f data << uint32(DisabledSpells.size()); data << int32(UiChromieTimeExpansionID); data << int32(TransportServerTime); + data << uint32(WeeklyRewardsPeriodSinceOrigin); for (std::size_t i = 0; i < KnownTitles.size(); ++i) { data << uint64(KnownTitles[i]); @@ -3334,6 +3338,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } + data.FlushBits(); if (changesMask[0]) { if (changesMask[22]) @@ -3894,7 +3899,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[104]) { - data << int32(PvpRewardAchieved); + data << int64(PvpRewardAchieved); } if (changesMask[105]) { @@ -3902,7 +3907,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[106]) { - data << int32(PvpLastWeeksRewardAchieved); + data << int64(PvpLastWeeksRewardAchieved); } if (changesMask[107]) { @@ -3910,7 +3915,7 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } if (changesMask[108]) { - data << int32(PvpLastWeeksRewardClaimed); + data << int64(PvpLastWeeksRewardClaimed); } if (changesMask[109]) { @@ -3924,6 +3929,10 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo { data << int32(TransportServerTime); } + if (changesMask[114]) + { + data << uint32(WeeklyRewardsPeriodSinceOrigin); + } } if (changesMask[98]) { @@ -3940,161 +3949,161 @@ void ActivePlayerData::WriteUpdate(ByteBuffer& data, Mask const& changesMask, bo } } } - if (changesMask[114]) + if (changesMask[115]) { for (std::size_t i = 0; i < 199; ++i) { - if (changesMask[115 + i]) + if (changesMask[116 + i]) { data << InvSlots[i]; } } } - if (changesMask[314]) + if (changesMask[315]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[315 + i]) + if (changesMask[316 + i]) { data << uint32(TrackResourceMask[i]); } } } - if (changesMask[317]) + if (changesMask[318]) { for (std::size_t i = 0; i < 192; ++i) { - if (changesMask[318 + i]) + if (changesMask[319 + i]) { data << uint64(ExploredZones[i]); } } } - if (changesMask[510]) + if (changesMask[511]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[511 + i]) + if (changesMask[512 + i]) { RestInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } } } - if (changesMask[513]) + if (changesMask[514]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[514 + i]) + if (changesMask[515 + i]) { data << int32(ModDamageDonePos[i]); } - if (changesMask[521 + i]) + if (changesMask[522 + i]) { data << int32(ModDamageDoneNeg[i]); } - if (changesMask[528 + i]) + if (changesMask[529 + i]) { data << float(ModDamageDonePercent[i]); } - if (changesMask[535 + i]) + if (changesMask[536 + i]) { data << float(ModHealingDonePercent[i]); } } } - if (changesMask[542]) + if (changesMask[543]) { for (std::size_t i = 0; i < 3; ++i) { - if (changesMask[543 + i]) + if (changesMask[544 + i]) { data << float(WeaponDmgMultipliers[i]); } - if (changesMask[546 + i]) + if (changesMask[547 + i]) { data << float(WeaponAtkSpeedMultipliers[i]); } } } - if (changesMask[549]) + if (changesMask[550]) { for (std::size_t i = 0; i < 12; ++i) { - if (changesMask[550 + i]) + if (changesMask[551 + i]) { data << uint32(BuybackPrice[i]); } - if (changesMask[562 + i]) + if (changesMask[563 + i]) { data << uint32(BuybackTimestamp[i]); } } } - if (changesMask[574]) + if (changesMask[575]) { for (std::size_t i = 0; i < 32; ++i) { - if (changesMask[575 + i]) + if (changesMask[576 + i]) { data << int32(CombatRatings[i]); } } } - if (changesMask[614]) + if (changesMask[615]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[615 + i]) + if (changesMask[616 + i]) { data << uint32(NoReagentCostMask[i]); } } } - if (changesMask[619]) + if (changesMask[620]) { for (std::size_t i = 0; i < 2; ++i) { - if (changesMask[620 + i]) + if (changesMask[621 + i]) { data << int32(ProfessionSkillLine[i]); } } } - if (changesMask[622]) + if (changesMask[623]) { for (std::size_t i = 0; i < 4; ++i) { - if (changesMask[623 + i]) + if (changesMask[624 + i]) { data << uint32(BagSlotFlags[i]); } } } - if (changesMask[627]) + if (changesMask[628]) { for (std::size_t i = 0; i < 7; ++i) { - if (changesMask[628 + i]) + if (changesMask[629 + i]) { data << uint32(BankBagSlotFlags[i]); } } } - if (changesMask[635]) + if (changesMask[636]) { for (std::size_t i = 0; i < 875; ++i) { - if (changesMask[636 + i]) + if (changesMask[637 + i]) { data << uint64(QuestCompleted[i]); } } } - if (changesMask[607]) + if (changesMask[608]) { for (std::size_t i = 0; i < 6; ++i) { - if (changesMask[608 + i]) + if (changesMask[609 + i]) { PvpInfo[i].WriteUpdate(data, ignoreNestedChangesMask, owner, receiver); } @@ -4214,6 +4223,7 @@ void ActivePlayerData::ClearChangesMask() Base::ClearChangesMask(QuestSession); Base::ClearChangesMask(UiChromieTimeExpansionID); Base::ClearChangesMask(TransportServerTime); + Base::ClearChangesMask(WeeklyRewardsPeriodSinceOrigin); Base::ClearChangesMask(InvSlots); Base::ClearChangesMask(TrackResourceMask); Base::ClearChangesMask(ExploredZones); diff --git a/src/server/game/Entities/Object/Updates/UpdateFields.h b/src/server/game/Entities/Object/Updates/UpdateFields.h index 78bdccfa0e6..7b450dac5fe 100644 --- a/src/server/game/Entities/Object/Updates/UpdateFields.h +++ b/src/server/game/Entities/Object/Updates/UpdateFields.h @@ -127,7 +127,7 @@ struct ItemData : public IsUpdateFieldStructureTag, public HasChangesMask<40> UpdateField<uint32, 0, 12> MaxDurability; UpdateField<uint32, 0, 13> CreatePlayedTime; UpdateField<int32, 0, 14> Context; - UpdateField<int32, 0, 15> CreateTime; + UpdateField<int64, 0, 15> CreateTime; UpdateField<uint64, 0, 16> ArtifactXP; UpdateField<uint8, 0, 17> ItemAppearanceModID; UpdateField<UF::ItemModList, 0, 18> Modifiers; @@ -522,15 +522,15 @@ struct RestInfo : public IsUpdateFieldStructureTag, public HasChangesMask<3> struct PVPInfo : public IsUpdateFieldStructureTag, public HasChangesMask<10> { - UpdateField<uint32, 0, 1> Field_0; - UpdateField<uint32, 0, 2> Field_4; - UpdateField<uint32, 0, 3> Field_8; - UpdateField<uint32, 0, 4> Field_C; - UpdateField<uint32, 0, 5> Rating; - UpdateField<uint32, 0, 6> Field_14; - UpdateField<uint32, 0, 7> Field_18; - UpdateField<uint32, 0, 8> PvpTierID; - UpdateField<uint32, 0, 9> Field_20; + UpdateField<bool, 0, 1> Field_20; + UpdateField<uint32, 0, 2> Field_0; + UpdateField<uint32, 0, 3> Field_4; + UpdateField<uint32, 0, 4> Field_8; + UpdateField<uint32, 0, 5> Field_C; + UpdateField<uint32, 0, 6> Rating; + UpdateField<uint32, 0, 7> Field_14; + UpdateField<uint32, 0, 8> Field_18; + UpdateField<uint32, 0, 9> PvpTierID; void WriteCreate(ByteBuffer& data, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, bool ignoreChangesMask, Player const* owner, Player const* receiver) const; @@ -647,7 +647,7 @@ struct ReplayedQuest : public IsUpdateFieldStructureTag, public HasChangesMask<3 void ClearChangesMask(); }; -struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1511> +struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMask<1512> { UpdateField<bool, 0, 1> BackpackAutoSortDisabled; UpdateField<bool, 0, 2> BankAutoSortDisabled; @@ -748,35 +748,36 @@ struct ActivePlayerData : public IsUpdateFieldStructureTag, public HasChangesMas UpdateField<uint64, 98, 101> GuildClubMemberID; UpdateField<int32, 98, 102> Honor; UpdateField<int32, 98, 103> HonorNextLevel; - UpdateField<int32, 98, 104> PvpRewardAchieved; + UpdateField<int64, 98, 104> PvpRewardAchieved; UpdateField<int32, 98, 105> PvpTierMaxFromWins; - UpdateField<int32, 98, 106> PvpLastWeeksRewardAchieved; + UpdateField<int64, 98, 106> PvpLastWeeksRewardAchieved; UpdateField<int32, 98, 107> PvpLastWeeksTierMaxFromWins; - UpdateField<int32, 98, 108> PvpLastWeeksRewardClaimed; + UpdateField<int64, 98, 108> PvpLastWeeksRewardClaimed; UpdateField<uint8, 98, 109> NumBankSlots; UpdateField<UF::ActivePlayerUnk901, 98, 111> Field_1410; OptionalUpdateField<UF::QuestSession, 98, 110> QuestSession; UpdateField<int32, 98, 112> UiChromieTimeExpansionID; UpdateField<int32, 98, 113> TransportServerTime; - UpdateFieldArray<ObjectGuid, 199, 114, 115> InvSlots; - UpdateFieldArray<uint32, 2, 314, 315> TrackResourceMask; - UpdateFieldArray<uint64, 192, 317, 318> ExploredZones; - UpdateFieldArray<UF::RestInfo, 2, 510, 511> RestInfo; - UpdateFieldArray<int32, 7, 513, 514> ModDamageDonePos; - UpdateFieldArray<int32, 7, 513, 521> ModDamageDoneNeg; - UpdateFieldArray<float, 7, 513, 528> ModDamageDonePercent; - UpdateFieldArray<float, 7, 513, 535> ModHealingDonePercent; - UpdateFieldArray<float, 3, 542, 543> WeaponDmgMultipliers; - UpdateFieldArray<float, 3, 542, 546> WeaponAtkSpeedMultipliers; - UpdateFieldArray<uint32, 12, 549, 550> BuybackPrice; - UpdateFieldArray<uint32, 12, 549, 562> BuybackTimestamp; - UpdateFieldArray<int32, 32, 574, 575> CombatRatings; - UpdateFieldArray<UF::PVPInfo, 6, 607, 608> PvpInfo; - UpdateFieldArray<uint32, 4, 614, 615> NoReagentCostMask; - UpdateFieldArray<int32, 2, 619, 620> ProfessionSkillLine; - UpdateFieldArray<uint32, 4, 622, 623> BagSlotFlags; - UpdateFieldArray<uint32, 7, 627, 628> BankBagSlotFlags; - UpdateFieldArray<uint64, 875, 635, 636> QuestCompleted; + UpdateField<uint32, 98, 114> WeeklyRewardsPeriodSinceOrigin; // week count since Cfg_RegionsEntry::ChallengeOrigin + UpdateFieldArray<ObjectGuid, 199, 115, 116> InvSlots; + UpdateFieldArray<uint32, 2, 315, 316> TrackResourceMask; + UpdateFieldArray<uint64, 192, 318, 319> ExploredZones; + UpdateFieldArray<UF::RestInfo, 2, 511, 512> RestInfo; + UpdateFieldArray<int32, 7, 514, 515> ModDamageDonePos; + UpdateFieldArray<int32, 7, 514, 522> ModDamageDoneNeg; + UpdateFieldArray<float, 7, 514, 529> ModDamageDonePercent; + UpdateFieldArray<float, 7, 514, 536> ModHealingDonePercent; + UpdateFieldArray<float, 3, 543, 544> WeaponDmgMultipliers; + UpdateFieldArray<float, 3, 543, 547> WeaponAtkSpeedMultipliers; + UpdateFieldArray<uint32, 12, 550, 551> BuybackPrice; + UpdateFieldArray<uint32, 12, 550, 563> BuybackTimestamp; + UpdateFieldArray<int32, 32, 575, 576> CombatRatings; + UpdateFieldArray<UF::PVPInfo, 6, 608, 609> PvpInfo; + UpdateFieldArray<uint32, 4, 615, 616> NoReagentCostMask; + UpdateFieldArray<int32, 2, 620, 621> ProfessionSkillLine; + UpdateFieldArray<uint32, 4, 623, 624> BagSlotFlags; + UpdateFieldArray<uint32, 7, 628, 629> BankBagSlotFlags; + UpdateFieldArray<uint64, 875, 636, 637> QuestCompleted; void WriteCreate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; void WriteUpdate(ByteBuffer& data, EnumFlag<UpdateFieldFlag> fieldVisibilityFlags, Player const* owner, Player const* receiver) const; |
