public void KillBossAddAuction(int KillBossRole, long BossLife, List <AuctionRoleData> PointInfoList, AuctionEnum AuctionSource)
 {
     try
     {
         lock (this.AuctionMsgMutex)
         {
             AuctionAwardConfig AuctionAwardCfg = GoldAuctionConfigModel.RandAuctionAwardConfig();
             if (null == AuctionAwardCfg)
             {
                 LogManager.WriteLog(LogTypes.Error, "[ljl]KillBossAddAuction RandAuctionAwardConfig null == config", null, true);
             }
             else
             {
                 AuctionConfig AuctionCfg = GoldAuctionConfigModel.GetAuctionConfig((int)AuctionSource);
                 if (null == AuctionCfg)
                 {
                     LogManager.WriteLog(LogTypes.Error, string.Format("[ljl]GoldAuctionConfigModel.GetAuctionConfig({0}) null == config", AuctionSource), null, true);
                 }
                 else
                 {
                     GoldAuctionItem item = new GoldAuctionItem();
                     item.AuctionSource      = (int)AuctionSource;
                     item.KillBossRoleID     = KillBossRole;
                     item.UpDBWay            = 2;
                     item.ProductionTime     = TimeUtil.NowDataTimeString("yyyy-MM-dd HH:mm:ss.fff");
                     item.BuyerData          = new AuctionRoleData();
                     item.BuyerData.m_RoleID = 0;
                     item.BuyerData.Value    = (long)AuctionCfg.OriginPrice;
                     int index = Global.GetRandomNumber(AuctionAwardCfg.StartValues, AuctionAwardCfg.EndValues) - 1;
                     index         = Math.Min(index, AuctionAwardCfg.strGoodsList.Count - 1);
                     item.StrGoods = AuctionAwardCfg.strGoodsList[index];
                     if (null == GlobalNew.ParseGoodsData(AuctionAwardCfg.strGoodsList[index]))
                     {
                         LogManager.WriteLog(LogTypes.Error, string.Format("[ljl]null == item.Goods index={0}  ,  GoodsList.Count = {1}", index, AuctionAwardCfg.strGoodsList.Count), null, true);
                     }
                     else
                     {
                         item.BossLife = 0L;
                         foreach (AuctionRoleData PointInfo in PointInfoList)
                         {
                             item.BossLife += PointInfo.Value;
                             if (PointInfo.Value >= GameManager.systemParamsList.GetParamValueIntByName("AngelTempleAuction", -1))
                             {
                                 AuctionRoleData RoleData = new AuctionRoleData();
                                 CopyData.Copy <AuctionRoleData>(PointInfo, ref RoleData);
                                 item.RoleList.Add(RoleData);
                             }
                         }
                         if (item.BossLife < 1L)
                         {
                             item.BossLife = BossLife;
                         }
                         bool addFlag = false;
                         for (int i = 0; i < AuctionCfg.OrderList.Count; i++)
                         {
                             if (GoldAuctionManager.IsOpenAuction((AuctionOrderEnum)AuctionCfg.OrderList[i]))
                             {
                                 item.AuctionType = AuctionCfg.OrderList[i];
                                 item.LifeTime    = AuctionCfg.TimeList[i];
                                 if (item.AuctionType > 0 && item.AuctionType < 3)
                                 {
                                     if (this.GoldAuctionMgr.SendUpdate2DB(item))
                                     {
                                         this.GoldAuctionMgr.AddNewAuctionItem(item);
                                     }
                                     else
                                     {
                                         LogManager.WriteLog(LogTypes.Error, string.Format("[ljl]新拍卖物品存库失败 未加入 time={0},AuctionSource={1}", item.ProductionTime, AuctionSource), null, true);
                                     }
                                     addFlag = true;
                                     break;
                                 }
                                 LogManager.WriteLog(LogTypes.Error, string.Format("[ljl]AuctionType ={1} err,AuctionSource={0}", AuctionSource, item.AuctionType), null, true);
                             }
                         }
                         if (!addFlag)
                         {
                             int roleID = item.GetMaxmDamageID();
                             this.GoldAuctionMgr.SendItem(roleID, item.RoleList.Find((AuctionRoleData x) => x.m_RoleID == roleID), item, AuctionCfg);
                             LogManager.WriteLog(LogTypes.Info, string.Format("[ljl]新拍卖物品未加入 直接邮件发送给玩家第一名 time={0},AuctionSource={1}", item.ProductionTime, AuctionSource), null, true);
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl]{0}", ex.ToString()), null, true);
     }
 }
Ejemplo n.º 2
0
        public bool DisposeAward(GoldAuctionItem Item)
        {
            try
            {
                lock (this.AuctionMutex)
                {
                    if (null == Item)
                    {
                        return(false);
                    }

                    AuctionConfig AuctionCfg = GoldAuctionConfigModel.GetAuctionConfig(Item.AuctionSource);
                    if (null == AuctionCfg)
                    {
                        LogManager.WriteLog(LogTypes.Error,
                                            string.Format("[ljl]GoldAuctionConfigModel.GetAuctionConfig({0}) null == config",
                                                          (AuctionEnum)Item.AuctionSource), null, true);
                        return(false);
                    }

                    long averageNum = 0L;
                    int  minNum     = (int)GameManager.systemParamsList.GetParamValueIntByName("AngelTempleAuctionMin", 0);
                    if (minNum < 0)
                    {
                        LogManager.WriteLog(LogTypes.Error, "[ljl]AngelTempleAuctionMin < 0", null, true);
                        minNum = 1;
                    }

                    long delNum = 0L;
                    if (0 == Item.BuyerData.m_RoleID)
                    {
                        averageNum = 0L;
                        delNum     = Item.BuyerData.Value;
                    }
                    else if (Item.RoleList.Count < 1)
                    {
                        averageNum = 0L;
                    }
                    else if ((long)(minNum * Item.RoleList.Count) < Item.BuyerData.Value)
                    {
                        averageNum = (long)minNum;
                        delNum     = (long)Item.RoleList.Count * averageNum;
                    }
                    else if ((long)(minNum * Item.RoleList.Count) >= Item.BuyerData.Value)
                    {
                        averageNum = Item.BuyerData.Value / (long)Item.RoleList.Count;
                        delNum     = Item.BuyerData.Value;
                    }

                    Item.UpDBWay        = 1;
                    Item.OldAuctionType = Item.AuctionType;
                    this.S2CCache.Clear();
                    if (!this.SendUpdate2DB(Item))
                    {
                        Item.UpDBWay = 3;
                        return(false);
                    }

                    Item.BuyerData.Value -= delNum;
                    int AwardRole = Item.BuyerData.m_RoleID;
                    if (AwardRole > 0)
                    {
                        this.SendMoney(Item, averageNum, AuctionCfg);
                        this.SendItem(AwardRole, Item.BuyerData, Item, AuctionCfg);
                    }
                    else
                    {
                        AwardRole = Item.GetMaxmDamageID();
                        this.SendItem(AwardRole, Item.RoleList.Find((AuctionRoleData x) => x.m_RoleID == AwardRole),
                                      Item, AuctionCfg);
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Exception, string.Format("[ljl]{0}", ex.ToString()), null, true);
                return(false);
            }
            return(true);
        }