コード例 #1
0
        public int HandlePacket(GameClient client, GSPacketIn packet)
        {
          
                eBageType bagType = (eBageType)packet.ReadByte();
                int place = packet.ReadInt();
                int payType = packet.ReadByte();
                int price = packet.ReadInt();
                int mouthful = packet.ReadInt();
                int validDate = packet.ReadInt();

                string msg = "AuctionAddHandler.Fail";
                payType = 1;
                if (client.Player.PlayerCharacter.HasBagPassword && client.Player.PlayerCharacter.IsLocked)
                {

                    client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation("Bag.Locked"));
                    return 0;
                }

                if (price < 0 || (mouthful != 0 && mouthful < price))
                    return 0;

                int multiple = 1;
                if (payType != 0)
                {
                    //multiple = 10;
                    multiple = 1;
                    payType = 1;
                }
                int needGold = (int)(multiple * price * 0.03 * (validDate == 0 ? 1 : validDate == 1 ? 3 : 6));
                needGold = needGold < 1 ? 1 : needGold;
                ItemInfo goods = client.Player.GetItemAt(bagType, place);

                if (price < 0)
                {
                    msg = "AuctionAddHandler.Msg1";
                }
                else if (mouthful != 0 && mouthful < price)
                {
                    msg = "AuctionAddHandler.Msg2";
                }
                else if (needGold > client.Player.PlayerCharacter.Gold)
                {
                    msg = "AuctionAddHandler.Msg3";
                }
                else if (goods == null)
                {
                    msg = "AuctionAddHandler.Msg4";
                }
                else if (goods.IsBinds)
                {
                    msg = "AuctionAddHandler.Msg5";
                }
                else
                {
                    client.Player.SaveIntoDatabase();
                    AuctionInfo info = new AuctionInfo();
                    info.AuctioneerID = client.Player.PlayerCharacter.ID;//获取物品ID
                    info.AuctioneerName = client.Player.PlayerCharacter.NickName;//获取物品妮称
                    info.BeginDate = DateTime.Now;
                    info.BuyerID = 0;
                    info.BuyerName = "";
                    info.IsExist = true;
                    info.ItemID = goods.ItemID;
                    info.Mouthful = mouthful;
                    info.PayType = payType;
                    info.Price = price;
                    info.Rise = price / 10;
                    info.Rise = info.Rise < 1 ? 1 : info.Rise;
                    info.Name = goods.Template.Name;
                    info.Category = goods.Template.CategoryID;
                    info.ValidDate = validDate == 0 ? 8 : validDate == 1 ? 24 : 48;
                    info.TemplateID = goods.TemplateID;

                    info.Random = Bussiness.ThreadSafeRandom.NextStatic(GameProperties.BeginAuction, GameProperties.EndAuction);
                    using (PlayerBussiness db = new PlayerBussiness())//写数据库
                    {
                        if (db.AddAuction(info))
                        {
                            //client.Player.RemoveAllItem(goods, true, Game.Server.Statics.ItemRemoveType.Auction, bagType);
                            //client.Player.up
                            //client.Player.SaveIntoDatabase();
                            //client.Player.SetGold(-needGold, Game.Server.Statics.GoldRemoveType.Auction);
                            //msg = "AuctionAddHandler.Msg6";
                            //client.Out.SendAuctionRefresh(info, info.AuctionID, true, goods);
                            client.Player.RemoveItem(goods);

                            goods.IsExist = true;

                            client.Player.SaveIntoDatabase();
                            client.Player.RemoveGold(needGold);
                            msg = "AuctionAddHandler.Msg6";
                            client.Out.SendAuctionRefresh(info, info.AuctionID, true, goods);
                        }
                    }
                }

                //client.Out.SendMailResponse(client.Player.PlayerCharacter.ID, eMailRespose.Receiver);
                client.Out.SendMessage(eMessageType.Normal, LanguageMgr.GetTranslation(msg));
                return 0;
            
         
        }