public static void SendAuctionCommandResult(IPacketReceiver client, Auction auction, AuctionAction action, AuctionError error) { using (RealmPacketOut packet = new RealmPacketOut(RealmServerOpCode.SMSG_AUCTION_COMMAND_RESULT, 12)) { if (auction != null) { packet.Write(auction.ItemLowId); } else { packet.Write(0U); } packet.Write((uint)action); packet.Write((uint)error); client.Send(packet, false); } }
public void SendAuctionCommandResult(AuctionEntry auction, AuctionAction action, AuctionError errorCode, uint bidError = 0) { AuctionCommandResult auctionCommandResult = new AuctionCommandResult(); auctionCommandResult.InitializeAuction(auction); auctionCommandResult.Command = action; auctionCommandResult.ErrorCode = errorCode; SendPacket(auctionCommandResult); }
public static void SendAuctionCommandResult(IPacketReceiver client, Auction auction, AuctionAction action, AuctionError error) { using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_AUCTION_COMMAND_RESULT, 12)) { if (auction != null) { packet.Write(auction.ItemLowId); } else { packet.Write(0u); } packet.Write((uint)action); packet.Write((uint)error); client.Send(packet); } }
public void AuctionPlaceBid(Character chr, NPC auctioneer, uint auctionId, uint bid) { if (!DoAuctioneerInteraction(chr, auctioneer)) { return; } Auction auction = null; if (!auctioneer.AuctioneerEntry.Auctions.TryGetAuction(auctionId, out auction)) { AuctionHandler.SendAuctionCommandResult(chr.Client, null, AuctionAction.PlaceBid, AuctionError.InternalError); } else { AuctionError error = AuctionBidChecks(auction, chr, bid); if (error != AuctionError.Ok) { AuctionHandler.SendAuctionCommandResult(chr.Client, auction, AuctionAction.PlaceBid, error); } else if (bid < auction.BuyoutPrice || auction.BuyoutPrice == 0U) { if (auction.BidderLowId == (long)(ulong)chr.EntityId) { chr.SubtractMoney(bid - auction.CurrentBid); } else { chr.SubtractMoney(bid); SendOutbidMail(auction, bid); } auction.BidderLowId = chr.EntityId.Low; auction.CurrentBid = bid; AuctionHandler.SendAuctionCommandResult(chr.Client, auction, AuctionAction.PlaceBid, AuctionError.Ok); } else { if (auction.BidderLowId == (long)(ulong)chr.EntityId) { chr.SubtractMoney(auction.BuyoutPrice - auction.CurrentBid); } else { chr.SubtractMoney(auction.BuyoutPrice); if ((int)auction.BidderLowId != (int)auction.OwnerLowId) { SendOutbidMail(auction, auction.BuyoutPrice); } } auction.BidderLowId = chr.EntityId.Low; auction.CurrentBid = auction.BuyoutPrice; SendAuctionSuccessfullMail(auction); SendAuctionWonMail(auction); AuctionHandler.SendAuctionCommandResult(chr.Client, auction, AuctionAction.PlaceBid, AuctionError.Ok); auctioneer.AuctioneerEntry.Auctions.RemoveAuction(auction); } } }