Exemplo n.º 1
0
 private static void InitBuChangDict()
 {
     lock (BuChangManager._BuChangItemDict)
     {
         BuChangManager._BuChangItemDict.Clear();
     }
     foreach (SystemXmlItem systemBuChangItem in GameManager.SystemBuChang.SystemXmlItemDict.Values)
     {
         BuChangItem buChangItem = new BuChangItem
         {
             MinLevel      = systemBuChangItem.GetIntValue("MinLevel", -1),
             MinZhuanSheng = systemBuChangItem.GetIntValue("MinZhuanSheng", -1),
             MaxLevel      = systemBuChangItem.GetIntValue("MaxLevel", -1),
             MaxZhuanSheng = systemBuChangItem.GetIntValue("MaxZhuanSheng", -1),
             Experience    = Math.Max(0L, (long)systemBuChangItem.GetDoubleValue("AwardExp")),
             MoJing        = Math.Max(0, systemBuChangItem.GetIntValue("MoJing", -1)),
             GoodsDataList = BuChangManager.ParseGoodsDataList(systemBuChangItem.GetStringValue("Goods"))
         };
         int minUnionLevel = Global.GetUnionLevel(buChangItem.MinZhuanSheng, buChangItem.MinLevel, false);
         int maxUnionLevel = Global.GetUnionLevel(buChangItem.MaxZhuanSheng, buChangItem.MaxLevel, false);
         lock (BuChangManager._BuChangItemDict)
         {
             BuChangManager._BuChangItemDict[new RangeKey(minUnionLevel, maxUnionLevel, null)] = buChangItem;
         }
     }
 }
Exemplo n.º 2
0
        /// <summary>
        /// 获取物品列表
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static List <GoodsData> GetBuChangGoodsDataList(GameClient client)
        {
            BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client));

            if (null == buChangItem)
            {
                return(null);
            }

            return(buChangItem.GoodsDataList);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 获取补偿绑定元宝
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static int GetBuChangBindYuanBao(GameClient client)
        {
            BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client));

            if (null == buChangItem)
            {
                return(0);
            }

            return(buChangItem.MoJing);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 获取补偿经验
        /// </summary>
        /// <param name="client"></param>
        /// <returns></returns>
        public static long GetBuChangExp(GameClient client)
        {
            BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client));

            if (null == buChangItem)
            {
                return(0);
            }

            return(buChangItem.Experience);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 背包中是否有足够的位置
        /// </summary>
        /// <returns></returns>
        public static bool HasEnoughBagSpaceForAwardGoods(GameClient client, BuChangItem buChangItem)
        {
            int needSpace = 0;

            needSpace = buChangItem.GoodsDataList.Count;
            if (needSpace <= 0)
            {
                return(true);
            }

            //判断背包空格是否能提交接受奖励的物品
            return(Global.CanAddGoodsDataList(client, buChangItem.GoodsDataList));
        }
Exemplo n.º 6
0
        public static List <GoodsData> GetBuChangGoodsDataList(GameClient client)
        {
            BuChangItem      buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false));
            List <GoodsData> result;

            if (null == buChangItem)
            {
                result = null;
            }
            else
            {
                result = buChangItem.GoodsDataList;
            }
            return(result);
        }
Exemplo n.º 7
0
        public static int GetBuChangBindYuanBao(GameClient client)
        {
            BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false));
            int         result;

            if (null == buChangItem)
            {
                result = 0;
            }
            else
            {
                result = buChangItem.MoJing;
            }
            return(result);
        }
Exemplo n.º 8
0
        public static long GetBuChangExp(GameClient client)
        {
            BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false));
            long        result;

            if (null == buChangItem)
            {
                result = 0L;
            }
            else
            {
                result = buChangItem.Experience;
            }
            return(result);
        }
Exemplo n.º 9
0
 public static void GiveBuChang(GameClient client)
 {
     if (!BuChangManager.CanGiveBuChang())
     {
         GameManager.LuaMgr.Error(client, GLang.GetLang(24, new object[0]), 0);
     }
     else
     {
         BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false));
         if (null == buChangItem)
         {
             GameManager.LuaMgr.Error(client, GLang.GetLang(25, new object[0]), 0);
         }
         else if (!BuChangManager.HasEnoughBagSpaceForAwardGoods(client, buChangItem))
         {
             GameManager.LuaMgr.Error(client, GLang.GetLang(26, new object[0]), 0);
         }
         else
         {
             DateTime buChangDateTime = Global.GetBuChangStartDay();
             int      buChangFlag     = Global.GetRoleParamsInt32FromDB(client, "BuChangFlag");
             if (buChangDateTime.DayOfYear == buChangFlag)
             {
                 GameManager.LuaMgr.Error(client, GLang.GetLang(27, new object[0]), 0);
             }
             else
             {
                 Global.SaveRoleParamsInt32ValueToDB(client, "BuChangFlag", buChangDateTime.DayOfYear, true);
                 for (int i = 0; i < buChangItem.GoodsDataList.Count; i++)
                 {
                     Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client, buChangItem.GoodsDataList[i].GoodsID, buChangItem.GoodsDataList[i].GCount, buChangItem.GoodsDataList[i].Quality, "", buChangItem.GoodsDataList[i].Forge_level, buChangItem.GoodsDataList[i].Binding, 0, "", true, 1, "系统补偿物品", "1900-01-01 12:00:00", buChangItem.GoodsDataList[i].AddPropIndex, buChangItem.GoodsDataList[i].BornIndex, buChangItem.GoodsDataList[i].Lucky, buChangItem.GoodsDataList[i].Strong, 0, 0, 0, null, null, 0, true);
                 }
                 if (buChangItem.MoJing > 0)
                 {
                     GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, buChangItem.MoJing, "系统补偿", false, true, false);
                 }
                 if (buChangItem.Experience > 0L)
                 {
                     GameManager.ClientMgr.ProcessRoleExperience(client, buChangItem.Experience, false, true, false, "none");
                 }
                 client._IconStateMgr.CheckBuChangState(client);
                 client._IconStateMgr.SendIconStateToClient(client);
             }
         }
     }
 }
Exemplo n.º 10
0
        public static BuChangItem GetBuChangItem(int unionLevel)
        {
            BuChangItem buChangItem = null;

            lock (BuChangManager._BuChangItemDict)
            {
                if (BuChangManager._BuChangItemDict.TryGetValue(unionLevel, out buChangItem))
                {
                    return(buChangItem);
                }
            }
            BuChangManager.InitBuChangDict();
            lock (BuChangManager._BuChangItemDict)
            {
                if (BuChangManager._BuChangItemDict.TryGetValue(unionLevel, out buChangItem))
                {
                    return(buChangItem);
                }
            }
            return(buChangItem);
        }
Exemplo n.º 11
0
        public static bool CheckGiveBuChang(GameClient client)
        {
            bool result;

            if (!BuChangManager.CanGiveBuChang())
            {
                result = false;
            }
            else
            {
                BuChangItem buChangItem = BuChangManager.GetBuChangItem(Global.GetUnionLevel(client, false));
                if (null == buChangItem)
                {
                    result = false;
                }
                else
                {
                    DateTime buChangDateTime = Global.GetBuChangStartDay();
                    int      buChangFlag     = Global.GetRoleParamsInt32FromDB(client, "BuChangFlag");
                    result = (buChangDateTime.DayOfYear != buChangFlag);
                }
            }
            return(result);
        }
Exemplo n.º 12
0
        /// <summary>
        /// 给予补偿
        /// </summary>
        /// <param name="client"></param>
        public static bool CheckGiveBuChang(GameClient client)
        {
            if (!CanGiveBuChang())
            {
                return(false);
            }

            BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client));

            if (null == buChangItem)
            {
                return(false);
            }

            DateTime buChangDateTime = Global.GetBuChangStartDay();
            int      buChangFlag     = Global.GetRoleParamsInt32FromDB(client, RoleParamName.BuChangFlag);

            if (buChangDateTime.DayOfYear == buChangFlag)
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 13
0
        public static bool HasEnoughBagSpaceForAwardGoods(GameClient client, BuChangItem buChangItem)
        {
            int needSpace = buChangItem.GoodsDataList.Count;

            return(needSpace <= 0 || Global.CanAddGoodsDataList(client, buChangItem.GoodsDataList));
        }
Exemplo n.º 14
0
        /// <summary>
        /// 给予补偿
        /// </summary>
        /// <param name="client"></param>
        public static void GiveBuChang(GameClient client)
        {
            /// 根据奖励时间判断当前时间是否满足给予补偿时间

            if (!CanGiveBuChang())
            {
                GameManager.LuaMgr.Error(client, Global.GetLang("非补偿期间,无法获取补偿!"));
                return;
            }

            BuChangItem buChangItem = GetBuChangItem(Global.GetUnionLevel(client));

            if (null == buChangItem)
            {
                GameManager.LuaMgr.Error(client, Global.GetLang("没有找到对应的补偿项!"));
                return;
            }

            /// 背包中是否有足够的位置
            if (!HasEnoughBagSpaceForAwardGoods(client, buChangItem))
            {
                GameManager.LuaMgr.Error(client, Global.GetLang("背包已满,请先清理出空格后再领取补偿!"));
                return;
            }

            DateTime buChangDateTime = Global.GetBuChangStartDay();
            int      buChangFlag     = Global.GetRoleParamsInt32FromDB(client, RoleParamName.BuChangFlag);

            if (buChangDateTime.DayOfYear == buChangFlag)
            {
                GameManager.LuaMgr.Error(client, Global.GetLang("已经领取过补偿,无法再次领取!"));
                return;
            }

            Global.SaveRoleParamsInt32ValueToDB(client, RoleParamName.BuChangFlag, buChangDateTime.DayOfYear, true); //先保存后给予奖励

            //获取奖励的物品
            for (int i = 0; i < buChangItem.GoodsDataList.Count; i++)
            {
                //想DBServer请求加入某个新的物品到背包中
                //添加物品
                Global.AddGoodsDBCommand(Global._TCPManager.TcpOutPacketPool, client,
                                         buChangItem.GoodsDataList[i].GoodsID, buChangItem.GoodsDataList[i].GCount,
                                         buChangItem.GoodsDataList[i].Quality, "", buChangItem.GoodsDataList[i].Forge_level,
                                         buChangItem.GoodsDataList[i].Binding, 0, "", true, 1,
                                         /**/ "系统补偿物品", Global.ConstGoodsEndTime, buChangItem.GoodsDataList[i].AddPropIndex, buChangItem.GoodsDataList[i].BornIndex, buChangItem.GoodsDataList[i].Lucky, buChangItem.GoodsDataList[i].Strong);
            }

            //获取奖励的魔晶
            if (buChangItem.MoJing > 0)
            {
                GameManager.ClientMgr.ModifyTianDiJingYuanValue(client, buChangItem.MoJing, "系统补偿", false, true);
            }

            //获取奖励的经验
            if (buChangItem.Experience > 0)
            {
                //处理角色经验
                GameManager.ClientMgr.ProcessRoleExperience(client, buChangItem.Experience, false, true);
            }

            client._IconStateMgr.CheckBuChangState(client);
            client._IconStateMgr.SendIconStateToClient(client);
        }