コード例 #1
0
ファイル: AuctionHandler.cs プロジェクト: 0xFh/Asda2-Project
 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);
     }
 }
コード例 #2
0
        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);
        }
コード例 #3
0
ファイル: AuctionHandler.cs プロジェクト: Zerant/WCell
		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);
			}
		}
コード例 #4
0
ファイル: AuctionMgr.cs プロジェクト: 0xFh/Asda2-Project
        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);
                }
            }
        }