Core/AuctionHouse: Fixed buying commodities

Port From (https://github.com/TrinityCore/TrinityCore/commit/61a7026f1765271595377be0c37a8228fe620c0d)
This commit is contained in:
hondacrx
2021-06-24 00:10:23 -04:00
parent 6b45e87c92
commit 1be17e7ff3
3 changed files with 16 additions and 7 deletions
+13 -5
View File
@@ -1138,7 +1138,11 @@ namespace Game
public CommodityQuote CreateCommodityQuote(Player player, uint itemId, uint quantity) public CommodityQuote CreateCommodityQuote(Player player, uint itemId, uint quantity)
{ {
var bucketData = _buckets.LookupByKey(AuctionsBucketKey.ForCommodity(itemId)); ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(itemId);
if (itemTemplate == null)
return null;
var bucketData = _buckets.LookupByKey(AuctionsBucketKey.ForCommodity(itemTemplate));
if (bucketData == null) if (bucketData == null)
return null; return null;
@@ -1181,7 +1185,11 @@ namespace Game
public bool BuyCommodity(SQLTransaction trans, Player player, uint itemId, uint quantity, TimeSpan delayForNextAction) public bool BuyCommodity(SQLTransaction trans, Player player, uint itemId, uint quantity, TimeSpan delayForNextAction)
{ {
var bucketItr = _buckets.LookupByKey(AuctionsBucketKey.ForCommodity(itemId)); ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(itemId);
if (itemTemplate == null)
return false;
var bucketItr = _buckets.LookupByKey(AuctionsBucketKey.ForCommodity(itemTemplate));
if (bucketItr == null) if (bucketItr == null)
{ {
player.GetSession().SendAuctionCommandResult(0, AuctionCommand.PlaceBid, AuctionResult.CommodityPurchaseFailed, delayForNextAction); player.GetSession().SendAuctionCommandResult(0, AuctionCommand.PlaceBid, AuctionResult.CommodityPurchaseFailed, delayForNextAction);
@@ -1966,12 +1974,12 @@ namespace Game
(ushort)item.GetModifier(ItemModifier.BattlePetSpeciesId), (ushort)item.GetBonus().Suffix); (ushort)item.GetModifier(ItemModifier.BattlePetSpeciesId), (ushort)item.GetBonus().Suffix);
} }
else else
return ForCommodity(item.GetEntry()); return ForCommodity(itemTemplate);
} }
public static AuctionsBucketKey ForCommodity(uint itemId) public static AuctionsBucketKey ForCommodity(ItemTemplate itemTemplate)
{ {
return new AuctionsBucketKey(itemId, 0, 0, 0); return new AuctionsBucketKey(itemTemplate.GetId(), (ushort)itemTemplate.GetBaseItemLevel(), 0, 0);
} }
} }
+1
View File
@@ -954,6 +954,7 @@ namespace Game
commodityQuoteResult.QuoteDuration.Set((int)(quote.ValidTo - GameTime.GetGameTimeSteadyPoint()).TotalMilliseconds); commodityQuoteResult.QuoteDuration.Set((int)(quote.ValidTo - GameTime.GetGameTimeSteadyPoint()).TotalMilliseconds);
} }
commodityQuoteResult.ItemID = getCommodityQuote.ItemID;
commodityQuoteResult.DesiredDelay = (uint)throttle.DelayUntilNext.TotalSeconds; commodityQuoteResult.DesiredDelay = (uint)throttle.DelayUntilNext.TotalSeconds;
SendPacket(commodityQuoteResult); SendPacket(commodityQuoteResult);
@@ -465,7 +465,7 @@ namespace Game.Networking.Packets
public Optional<ulong> TotalPrice; public Optional<ulong> TotalPrice;
public Optional<uint> Quantity; public Optional<uint> Quantity;
public Optional<int> QuoteDuration; public Optional<int> QuoteDuration;
public int Unknown830; public int ItemID;
public uint DesiredDelay; public uint DesiredDelay;
public AuctionGetCommodityQuoteResult() : base(ServerOpcodes.AuctionGetCommodityQuoteResult) { } public AuctionGetCommodityQuoteResult() : base(ServerOpcodes.AuctionGetCommodityQuoteResult) { }
@@ -475,7 +475,7 @@ namespace Game.Networking.Packets
_worldPacket.WriteBit(TotalPrice.HasValue); _worldPacket.WriteBit(TotalPrice.HasValue);
_worldPacket.WriteBit(Quantity.HasValue); _worldPacket.WriteBit(Quantity.HasValue);
_worldPacket.WriteBit(QuoteDuration.HasValue); _worldPacket.WriteBit(QuoteDuration.HasValue);
_worldPacket.WriteInt32(Unknown830); _worldPacket.WriteInt32(ItemID);
_worldPacket.WriteUInt32(DesiredDelay); _worldPacket.WriteUInt32(DesiredDelay);
if (TotalPrice.HasValue) if (TotalPrice.HasValue)