diff options
author | Ovahlord <dreadkiller@gmx.de> | 2025-04-07 20:26:28 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2025-04-08 07:02:13 +0200 |
commit | 0412678e50412c87aadc643b672b86763fe4a23b (patch) | |
tree | 28ce6ac9e6975bf38aa72b24b3e81af1e0313efa /src | |
parent | e8a5b17e5d6fa195d22fad009c9f45b4e597a461 (diff) |
Core/Packets: updated Auction House packets to 4.4.2
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AuctionHouse/AuctionHouseMgr.cpp | 18 | ||||
-rw-r--r-- | src/server/game/Handlers/AuctionHouseHandler.cpp | 36 | ||||
-rw-r--r-- | src/server/game/Server/Packets/AuctionHousePackets.cpp | 241 | ||||
-rw-r--r-- | src/server/game/Server/Packets/AuctionHousePackets.h | 15 |
4 files changed, 144 insertions, 166 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 29f11b82d59..1e512a98a97 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -441,13 +441,23 @@ Item* AuctionHouseMgr::GetAItem(ObjectGuid itemGuid) uint64 AuctionHouseMgr::GetCommodityAuctionDeposit(ItemTemplate const* item, Minutes time, uint32 quantity) { uint32 sellPrice = item->GetSellPrice(); - return uint64(std::ceil(std::floor(fmax(0.15 * quantity * sellPrice, 100.0)) / int64(SILVER)) * int64(SILVER)) * (time.count() / (MIN_AUCTION_TIME / MINUTE)); + uint64 deposit = uint64(sellPrice * 0.15); // rounding off the remainder + uint32 remainder = std::ceil(sellPrice * 0.15 - deposit); // and subtracting a ceiled remainder on top of it + if (deposit >= remainder) + deposit -= remainder; + + return uint64(deposit * quantity) * (time.count() / (MIN_AUCTION_TIME / MINUTE)); } uint64 AuctionHouseMgr::GetItemAuctionDeposit(Player const* player, Item const* item, Minutes time) { uint32 sellPrice = item->GetSellPrice(player); - return uint64(std::ceil(std::floor(fmax(sellPrice * 0.15, 100.0)) / int64(SILVER)) * int64(SILVER)) * (time.count() / (MIN_AUCTION_TIME / MINUTE)); + uint64 deposit = uint64(sellPrice * 0.15); // rounding off the remainder + uint32 remainder = std::ceil(sellPrice * 0.15 - deposit); // and subtracting a ceiled remainder on top of it + if (deposit >= remainder) + deposit -= remainder; + + return deposit * (time.count() / (MIN_AUCTION_TIME / MINUTE)); } std::string AuctionHouseMgr::BuildItemAuctionMailSubject(AuctionMailType type, AuctionPosting const* auction) @@ -1703,7 +1713,7 @@ bool AuctionHouseObject::BuyCommodity(CharacterDatabaseTransaction trans, Player } WorldPackets::AuctionHouse::AuctionWonNotification packet; - packet.Info.Initialize(auctions[0], items[0].Items[0]); + packet.Info.Initialize(_auctionHouse->ID, auctions[0], items[0].Items[0]); player->SendDirectMessage(packet.Write()); for (std::size_t i = 0; i < auctions.size(); ++i) @@ -1805,7 +1815,7 @@ void AuctionHouseObject::SendAuctionWon(AuctionPosting const* auction, Player* b if (bidder) { WorldPackets::AuctionHouse::AuctionWonNotification packet; - packet.Info.Initialize(auction, auction->Items[0]); + packet.Info.Initialize(_auctionHouse->ID, auction, auction->Items[0]); bidder->SendDirectMessage(packet.Write()); // FIXME: for offline player need also diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index bea51adb4f6..fb309602ca8 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -363,11 +363,12 @@ void WorldSession::HandleAuctionPlaceBid(WorldPackets::AuctionHouse::AuctionPlac } // auction house does not deal with copper - if (placeBid.BidAmount % SILVER) - { - SendAuctionCommandResult(placeBid.AuctionID, AuctionCommand::PlaceBid, AuctionResult::BidIncrement, throttle.DelayUntilNext); - return; - } + // But not in Classic + //if (placeBid.BidAmount % SILVER) + //{ + // SendAuctionCommandResult(placeBid.AuctionID, AuctionCommand::PlaceBid, AuctionResult::BidIncrement, throttle.DelayUntilNext); + // return; + //} // remove fake death if (GetPlayer()->HasUnitState(UNIT_STATE_DIED)) @@ -617,11 +618,12 @@ void WorldSession::HandleAuctionSellCommodity(WorldPackets::AuctionHouse::Auctio } // auction house does not deal with copper - if (sellCommodity.UnitPrice % SILVER) - { - SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext); - return; - } + // But not in Classic + //if (sellCommodity.UnitPrice % SILVER) + //{ + // SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext); + // return; + //} Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(sellCommodity.Auctioneer, UNIT_NPC_FLAG_AUCTIONEER, UNIT_NPC_FLAG_2_NONE); if (!creature) @@ -841,11 +843,12 @@ void WorldSession::HandleAuctionSellItem(WorldPackets::AuctionHouse::AuctionSell } // auction house does not deal with copper - if (sellItem.MinBid % SILVER || sellItem.BuyoutPrice % SILVER) - { - SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext); - return; - } + // But not in Classic + //if (sellItem.MinBid % SILVER || sellItem.BuyoutPrice % SILVER) + //{ + // SendAuctionCommandResult(0, AuctionCommand::SellItem, AuctionResult::DatabaseError, throttle.DelayUntilNext); + // return; + //} Creature* creature = GetPlayer()->GetNPCIfCanInteractWith(sellItem.Auctioneer, UNIT_NPC_FLAG_AUCTIONEER, UNIT_NPC_FLAG_2_NONE); if (!creature) @@ -1005,7 +1008,8 @@ void WorldSession::SendAuctionHello(ObjectGuid guid, Unit const* unit) return; WorldPackets::AuctionHouse::AuctionHelloResponse auctionHelloResponse; - auctionHelloResponse.Guid = guid; + auctionHelloResponse.Auctioneer = guid; + auctionHelloResponse.AuctionHouseID = ahEntry->ID; auctionHelloResponse.OpenForBusiness = true; // 3.3.3: 1 - AH enabled, 0 - AH disabled SendPacket(auctionHelloResponse.Write()); } diff --git a/src/server/game/Server/Packets/AuctionHousePackets.cpp b/src/server/game/Server/Packets/AuctionHousePackets.cpp index 7eec7ad4077..0bab4259ff7 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.cpp +++ b/src/server/game/Server/Packets/AuctionHousePackets.cpp @@ -21,9 +21,7 @@ #include "ObjectGuid.h" #include "Util.h" -namespace WorldPackets -{ -namespace AuctionHouse +namespace WorldPackets::AuctionHouse { AuctionBucketKey& AuctionBucketKey::operator=(AuctionsBucketKey const& key) { @@ -42,15 +40,10 @@ AuctionBucketKey& AuctionBucketKey::operator=(AuctionsBucketKey const& key) ByteBuffer& operator>>(ByteBuffer& data, AuctionBucketKey& itemKey) { data.ResetBitPos(); - itemKey.ItemID = data.ReadBits(20); - - if (data.ReadBit()) - itemKey.BattlePetSpeciesID.emplace(); - - itemKey.ItemLevel = data.ReadBits(11); - - if (data.ReadBit()) - itemKey.ItemSuffix.emplace(); + data >> Bits<20>(itemKey.ItemID); + data >> OptionalInit(itemKey.BattlePetSpeciesID); + data >> Bits<11>(itemKey.ItemLevel); + data >> OptionalInit(itemKey.ItemSuffix); if (itemKey.BattlePetSpeciesID) data >> *itemKey.BattlePetSpeciesID; @@ -63,10 +56,10 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionBucketKey& itemKey) ByteBuffer& operator<<(ByteBuffer& data, AuctionBucketKey const& itemKey) { - data.WriteBits(itemKey.ItemID, 20); - data.WriteBit(itemKey.BattlePetSpeciesID.has_value()); - data.WriteBits(itemKey.ItemLevel, 11); - data.WriteBit(itemKey.ItemSuffix.has_value()); + data << Bits<20>(itemKey.ItemID); + data << OptionalInit(itemKey.BattlePetSpeciesID); + data << Bits<11>(itemKey.ItemLevel); + data << OptionalInit(itemKey.ItemSuffix); data.FlushBits(); if (itemKey.BattlePetSpeciesID) @@ -89,7 +82,7 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterSubClass& filterSubCla ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass) { data >> filterClass.ItemClass; - filterClass.SubClassFilters.resize(data.ReadBits(5)); + data >> BitsSize<5>(filterClass.SubClassFilters); for (AuctionListFilterSubClass& filterSubClass : filterClass.SubClassFilters) data >> filterSubClass; @@ -99,7 +92,7 @@ ByteBuffer& operator>>(ByteBuffer& data, AuctionListFilterClass& filterClass) ByteBuffer& operator>>(ByteBuffer& data, AuctionSortDef& sortDef) { data.ResetBitPos(); - data >> Bits<4>(sortDef.SortOrder); + data >> As<uint8>(sortDef.SortOrder); data >> Bits<1>(sortDef.ReverseSort); return data; @@ -161,12 +154,12 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo) if (!bucketInfo.ItemModifiedAppearanceIDs.empty()) data.append(bucketInfo.ItemModifiedAppearanceIDs.data(), bucketInfo.ItemModifiedAppearanceIDs.size()); - data.WriteBit(bucketInfo.MaxBattlePetQuality.has_value()); - data.WriteBit(bucketInfo.MaxBattlePetLevel.has_value()); - data.WriteBit(bucketInfo.BattlePetBreedID.has_value()); - data.WriteBit(bucketInfo.BattlePetLevelMask.has_value()); - data.WriteBit(bucketInfo.ContainsOwnerItem); - data.WriteBit(bucketInfo.ContainsOnlyCollectedAppearances); + data << OptionalInit(bucketInfo.MaxBattlePetQuality); + data << OptionalInit(bucketInfo.MaxBattlePetLevel); + data << OptionalInit(bucketInfo.BattlePetBreedID); + data << OptionalInit(bucketInfo.BattlePetLevelMask); + data << Bits<1>(bucketInfo.ContainsOwnerItem); + data << Bits<1>(bucketInfo.ContainsOnlyCollectedAppearances); data.FlushBits(); if (bucketInfo.MaxBattlePetQuality) @@ -186,21 +179,21 @@ ByteBuffer& operator<<(ByteBuffer& data, BucketInfo const& bucketInfo) ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) { - data.WriteBit(auctionItem.Item.has_value()); - data.WriteBits(auctionItem.Enchantments.size(), 4); - data.WriteBits(auctionItem.Gems.size(), 2); - data.WriteBit(auctionItem.MinBid.has_value()); - data.WriteBit(auctionItem.MinIncrement.has_value()); - data.WriteBit(auctionItem.BuyoutPrice.has_value()); - data.WriteBit(auctionItem.UnitPrice.has_value()); - data.WriteBit(auctionItem.CensorServerSideInfo); - data.WriteBit(auctionItem.CensorBidInfo); - data.WriteBit(auctionItem.AuctionBucketKey.has_value()); - data.WriteBit(auctionItem.Creator.has_value()); + data << OptionalInit(auctionItem.Item); + data << BitsSize<4>(auctionItem.Enchantments); + data << BitsSize<2>(auctionItem.Gems); + data << OptionalInit(auctionItem.MinBid); + data << OptionalInit(auctionItem.MinIncrement); + data << OptionalInit(auctionItem.BuyoutPrice); + data << OptionalInit(auctionItem.UnitPrice); + data << Bits<1>(auctionItem.CensorServerSideInfo); + data << Bits<1>(auctionItem.CensorBidInfo); + data << OptionalInit(auctionItem.AuctionBucketKey); + data << OptionalInit(auctionItem.Creator); if (!auctionItem.CensorBidInfo) { - data.WriteBit(auctionItem.Bidder.has_value()); - data.WriteBit(auctionItem.BidAmount.has_value()); + data << OptionalInit(auctionItem.Bidder); + data << OptionalInit(auctionItem.BidAmount); } data.FlushBits(); @@ -215,6 +208,7 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) data << auctionItem.Owner; data << int32(auctionItem.DurationLeft); data << uint8(auctionItem.DeleteReason); + data << uint32(auctionItem.Unused1110); for (WorldPackets::Item::ItemEnchantData const& enchant : auctionItem.Enchantments) data << enchant; @@ -259,8 +253,9 @@ ByteBuffer& operator<<(ByteBuffer& data, AuctionItem const& auctionItem) return data; } -void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::Item const* item) +void AuctionBidderNotification::Initialize(int32 auctionHouseId, ::AuctionPosting const* auction, ::Item const* item) { + AuctionHouseID = auctionHouseId; AuctionID = auction->Id; Item.Initialize(item); Bidder = auction->Bidder; @@ -268,6 +263,7 @@ void AuctionBidderNotification::Initialize(::AuctionPosting const* auction, ::It ByteBuffer& operator<<(ByteBuffer& data, AuctionBidderNotification const& bidderNotification) { + data << int32(bidderNotification.AuctionHouseID); data << int32(bidderNotification.AuctionID); data << bidderNotification.Bidder; data << bidderNotification.Item; @@ -291,35 +287,32 @@ void AuctionBrowseQuery::Read() KnownPets.resize(knownPetsSize); _worldPacket >> MaxPetLevel; + _worldPacket >> Unused1026; for (uint8& knownPetMask : KnownPets) _worldPacket >> knownPetMask; - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - uint32 nameLength = _worldPacket.ReadBits(8); - ItemClassFilters.resize(_worldPacket.ReadBits(3)); - Sorts.resize(_worldPacket.ReadBits(2)); - - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> SizedString::BitsSize<8>(Name); + _worldPacket >> BitsSize<3>(ItemClassFilters); + _worldPacket >> BitsSize<2>(Sorts); if (TaintedBy) _worldPacket >> *TaintedBy; - Name = _worldPacket.ReadString(nameLength); + _worldPacket >> SizedString::Data(Name); for (AuctionListFilterClass& filterClass : ItemClassFilters) _worldPacket >> filterClass; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionCancelCommoditiesPurchase::Read() { _worldPacket >> Auctioneer; - if (_worldPacket.ReadBit()) - { - TaintedBy.emplace(); + _worldPacket >> OptionalInit(TaintedBy); + if (TaintedBy) _worldPacket >> *TaintedBy; - } } void AuctionConfirmCommoditiesPurchase::Read() @@ -327,11 +320,9 @@ void AuctionConfirmCommoditiesPurchase::Read() _worldPacket >> Auctioneer; _worldPacket >> ItemID; _worldPacket >> Quantity; - if (_worldPacket.ReadBit()) - { - TaintedBy.emplace(); + _worldPacket >> OptionalInit(TaintedBy); + if (TaintedBy) _worldPacket >> *TaintedBy; - } } void AuctionHelloRequest::Read() @@ -343,41 +334,35 @@ void AuctionListBiddedItems::Read() { _worldPacket >> Auctioneer; _worldPacket >> Offset; - - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - AuctionIDs.resize(_worldPacket.ReadBits(7)); - Sorts.resize(_worldPacket.ReadBits(2)); - - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<7>(AuctionIDs); + _worldPacket >> BitsSize<2>(Sorts); if (TaintedBy) _worldPacket >> *TaintedBy; for (uint32& auctionID : AuctionIDs) _worldPacket >> auctionID; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListBucketsByBucketKeys::Read() { _worldPacket >> Auctioneer; - - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - BucketKeys.resize(_worldPacket.ReadBits(7)); - Sorts.resize(_worldPacket.ReadBits(2)); - - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<7>(BucketKeys); + _worldPacket >> BitsSize<2>(Sorts); if (TaintedBy) _worldPacket >> *TaintedBy; for (AuctionBucketKey& bucketKey : BucketKeys) _worldPacket >> bucketKey; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListItemsByBucketKey::Read() @@ -385,19 +370,16 @@ void AuctionListItemsByBucketKey::Read() _worldPacket >> Auctioneer; _worldPacket >> Offset; _worldPacket >> Unknown830; - - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - Sorts.resize(_worldPacket.ReadBits(2)); - - for (AuctionSortDef& sortDef : Sorts) - _worldPacket >> sortDef; + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<2>(Sorts); _worldPacket >> BucketKey; if (TaintedBy) _worldPacket >> *TaintedBy; + + for (AuctionSortDef& sortDef : Sorts) + _worldPacket >> sortDef; } void AuctionListItemsByItemID::Read() @@ -406,34 +388,28 @@ void AuctionListItemsByItemID::Read() _worldPacket >> ItemID; _worldPacket >> SuffixItemNameDescriptionID; _worldPacket >> Offset; + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<2>(Sorts); - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - Sorts.resize(_worldPacket.ReadBits(2)); + if (TaintedBy) + _worldPacket >> *TaintedBy; for (AuctionSortDef& sortDef : Sorts) _worldPacket >> sortDef; - - if (TaintedBy) - _worldPacket >> *TaintedBy; } void AuctionListOwnedItems::Read() { _worldPacket >> Auctioneer; _worldPacket >> Offset; + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<2>(Sorts); - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - Sorts.resize(_worldPacket.ReadBits(2)); + if (TaintedBy) + _worldPacket >> *TaintedBy; for (AuctionSortDef& sortDef : Sorts) _worldPacket >> sortDef; - - if (TaintedBy) - _worldPacket >> *TaintedBy; } void AuctionPlaceBid::Read() @@ -441,11 +417,9 @@ void AuctionPlaceBid::Read() _worldPacket >> Auctioneer; _worldPacket >> AuctionID; _worldPacket >> BidAmount; - if (_worldPacket.ReadBit()) - { - TaintedBy.emplace(); + _worldPacket >> OptionalInit(TaintedBy); + if (TaintedBy) _worldPacket >> *TaintedBy; - } } void AuctionRemoveItem::Read() @@ -453,11 +427,9 @@ void AuctionRemoveItem::Read() _worldPacket >> Auctioneer; _worldPacket >> AuctionID; _worldPacket >> ItemID; - if (_worldPacket.ReadBit()) - { - TaintedBy.emplace(); + _worldPacket >> OptionalInit(TaintedBy); + if (TaintedBy) _worldPacket >> *TaintedBy; - } } void AuctionReplicateItems::Read() @@ -467,11 +439,9 @@ void AuctionReplicateItems::Read() _worldPacket >> ChangeNumberCursor; _worldPacket >> ChangeNumberTombstone; _worldPacket >> Count; - if (_worldPacket.ReadBit()) - { - TaintedBy.emplace(); + _worldPacket >> OptionalInit(TaintedBy); + if (TaintedBy) _worldPacket >> *TaintedBy; - } } void AuctionSellCommodity::Read() @@ -479,11 +449,8 @@ void AuctionSellCommodity::Read() _worldPacket >> Auctioneer; _worldPacket >> UnitPrice; _worldPacket >> RunTime; - - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - Items.resize(_worldPacket.ReadBits(6)); + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<6>(Items); if (TaintedBy) _worldPacket >> *TaintedBy; @@ -498,11 +465,8 @@ void AuctionSellItem::Read() _worldPacket >> MinBid; _worldPacket >> BuyoutPrice; _worldPacket >> RunTime; - - if (_worldPacket.ReadBit()) - TaintedBy.emplace(); - - Items.resize(_worldPacket.ReadBits(5)); + _worldPacket >> OptionalInit(TaintedBy); + _worldPacket >> BitsSize<6>(Items); if (TaintedBy) _worldPacket >> *TaintedBy; @@ -513,7 +477,7 @@ void AuctionSellItem::Read() void AuctionSetFavoriteItem::Read() { - IsNotFavorite = _worldPacket.ReadBit(); + _worldPacket >> Bits<1>(IsNotFavorite); _worldPacket >> Item; } @@ -522,18 +486,16 @@ void AuctionGetCommodityQuote::Read() _worldPacket >> Auctioneer; _worldPacket >> ItemID; _worldPacket >> Quantity; - if (_worldPacket.ReadBit()) - { - TaintedBy.emplace(); + _worldPacket >> OptionalInit(TaintedBy); + if (TaintedBy) _worldPacket >> *TaintedBy; - } } WorldPacket const* AuctionClosedNotification::Write() { _worldPacket << Info; _worldPacket << float(ProceedsMailDelay); - _worldPacket.WriteBit(Sold); + _worldPacket << Bits<1>(Sold); _worldPacket.FlushBits(); return &_worldPacket; @@ -555,9 +517,9 @@ WorldPacket const* AuctionCommandResult::Write() WorldPacket const* AuctionGetCommodityQuoteResult::Write() { - _worldPacket.WriteBit(TotalPrice.has_value()); - _worldPacket.WriteBit(Quantity.has_value()); - _worldPacket.WriteBit(QuoteDuration.has_value()); + _worldPacket << OptionalInit(TotalPrice); + _worldPacket << OptionalInit(Quantity); + _worldPacket << OptionalInit(QuoteDuration); _worldPacket << int32(ItemID); _worldPacket << uint32(DesiredDelay); @@ -576,7 +538,7 @@ WorldPacket const* AuctionGetCommodityQuoteResult::Write() WorldPacket const* AuctionFavoriteList::Write() { _worldPacket << uint32(DesiredDelay); - _worldPacket.WriteBits(Items.size(), 7); + _worldPacket << BitsSize<7>(Items); _worldPacket.FlushBits(); for (AuctionFavoriteInfo const& favoriteInfo : Items) @@ -587,11 +549,11 @@ WorldPacket const* AuctionFavoriteList::Write() WorldPacket const* AuctionHelloResponse::Write() { - _worldPacket << Guid; - _worldPacket << uint32(PurchasedItemDeliveryDelay); - _worldPacket << uint32(CancelledItemDeliveryDelay); - _worldPacket << uint32(DeliveryDelay); - _worldPacket.WriteBit(OpenForBusiness); + _worldPacket << Auctioneer; + _worldPacket << uint32(PurchaseDeliveryDelay); + _worldPacket << uint32(CancelDeliveryDelay); + _worldPacket << int32(AuctionHouseID); + _worldPacket << Bits<1>(OpenForBusiness); _worldPacket.FlushBits(); return &_worldPacket; @@ -601,7 +563,7 @@ WorldPacket const* AuctionListBiddedItemsResult::Write() { _worldPacket << uint32(Items.size()); _worldPacket << uint32(DesiredDelay); - _worldPacket.WriteBit(HasMoreResults); + _worldPacket << Bits<1>(HasMoreResults); _worldPacket.FlushBits(); for (AuctionItem const& item : Items) @@ -616,8 +578,8 @@ WorldPacket const* AuctionListBucketsResult::Write() _worldPacket << uint32(DesiredDelay); _worldPacket << int32(Unknown830_0); _worldPacket << int32(Unknown830_1); - _worldPacket.WriteBits(AsUnderlyingType(BrowseMode), 1); - _worldPacket.WriteBit(HasMoreResults); + _worldPacket << Bits<1>(BrowseMode); + _worldPacket << Bits<1>(HasMoreResults); _worldPacket.FlushBits(); for (BucketInfo const& bucketInfo : Buckets) @@ -637,8 +599,8 @@ WorldPacket const* AuctionListItemsResult::Write() } { - _worldPacket.WriteBits(AsUnderlyingType(ListType), 2); - _worldPacket.WriteBit(HasMoreResults); + _worldPacket << Bits<2>(ListType); + _worldPacket << Bits<1>(HasMoreResults); _worldPacket.FlushBits(); _worldPacket << BucketKey; @@ -653,7 +615,7 @@ WorldPacket const* AuctionListOwnedItemsResult::Write() _worldPacket << int32(Items.size()); _worldPacket << int32(SoldItems.size()); _worldPacket << uint32(DesiredDelay); - _worldPacket.WriteBit(HasMoreResults); + _worldPacket << Bits<1>(HasMoreResults); _worldPacket.FlushBits(); for (AuctionItem const& item : Items) @@ -705,4 +667,3 @@ WorldPacket const* AuctionWonNotification::Write() return &_worldPacket; } } -} diff --git a/src/server/game/Server/Packets/AuctionHousePackets.h b/src/server/game/Server/Packets/AuctionHousePackets.h index d44111291ca..203e4b4d0fc 100644 --- a/src/server/game/Server/Packets/AuctionHousePackets.h +++ b/src/server/game/Server/Packets/AuctionHousePackets.h @@ -125,6 +125,7 @@ namespace WorldPackets ObjectGuid ItemGuid; ObjectGuid OwnerAccountID; uint32 EndTime = 0; + uint32 Unused1110 = 0; Optional<ObjectGuid> Bidder; Optional<uint64> BidAmount; std::vector<Item::ItemGemData> Gems; @@ -134,14 +135,15 @@ namespace WorldPackets struct AuctionBidderNotification { - void Initialize(::AuctionPosting const* auction, ::Item const* item); + void Initialize(int32 auctionHouseId, ::AuctionPosting const* auction, ::Item const* item); + int32 AuctionHouseID = 0; int32 AuctionID = 0; ObjectGuid Bidder; Item::ItemInstance Item; }; - class AuctionBrowseQuery final : public ClientPacket + class AuctionBrowseQuery final : public ClientPacket { public: AuctionBrowseQuery(WorldPacket&& packet) : ClientPacket(CMSG_AUCTION_BROWSE_QUERY, std::move(packet)) { } @@ -157,6 +159,7 @@ namespace WorldPackets AuctionHouseFilterMask Filters = AuctionHouseFilterMask(0); std::vector<uint8> KnownPets; // size checked separately in Read() int8 MaxPetLevel = 0; + uint32 Unused1026 = 0; Optional<Addon::AddOnInfo> TaintedBy; std::string Name; Array<AuctionListFilterClass, 7> ItemClassFilters; @@ -411,10 +414,10 @@ namespace WorldPackets WorldPacket const* Write() override; - ObjectGuid Guid; - uint32 PurchasedItemDeliveryDelay = 0; - uint32 CancelledItemDeliveryDelay = 0; - uint32 DeliveryDelay = 0; + ObjectGuid Auctioneer; + uint32 PurchaseDeliveryDelay = 0; + uint32 CancelDeliveryDelay = 0; + int32 AuctionHouseID = 0; bool OpenForBusiness = true; }; |