Core/AuctionHouse: Fixed buying commodities
Port From (https://github.com/TrinityCore/TrinityCore/commit/61a7026f1765271595377be0c37a8228fe620c0d)
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user