示例#1
0
 public static void AddUniversalInfo(List <UniversalInfo> universalInfoList, ItemBaseInfo itemInfo, int num)
 {
     if (universalInfoList != null)
     {
         var universalInfo = universalInfoList.Find(s => s.HeadID == itemInfo.HeadID);
         if (universalInfo != null)
         {
             universalInfo.UpdateNotify(obj =>
             {
                 universalInfo.Num = MathUtils.Addition(universalInfo.Num, num);
                 return(true);
             }
                                        );
         }
         else
         {
             universalInfo             = new UniversalInfo();
             universalInfo.Name        = itemInfo.ItemName;
             universalInfo.HeadID      = itemInfo.HeadID;
             universalInfo.Num         = num;
             universalInfo.ItemID      = itemInfo.ItemID;
             universalInfo.MaxHeadID   = itemInfo.MaxHeadID;
             universalInfo.ItemDesc    = itemInfo.ItemDesc;
             universalInfo.QualityType = itemInfo.QualityType.ToInt();
             universalInfoList.Add(universalInfo);
         }
     }
 }
示例#2
0
        private static string SetUserItem(UserItemInfo userItem, string userID, ItemBaseInfo itemInfo, ItemStatus itemStatus, short itemLv)
        {
            string uitemID = System.Guid.NewGuid().ToString();

            userItem.UserItemID = uitemID;
            userItem.ItemID     = itemInfo.ItemID;
            userItem.ItemStatus = itemStatus;
            userItem.GeneralID  = itemStatus == ItemStatus.YongBing ? UserGeneral.MainID : 0;
            userItem.ItemLv     = itemLv;
            userItem.ItemType   = itemInfo.ItemType;
            return(uitemID);
        }
示例#3
0
        /// <summary>
        /// ˢ����ȴʱ��
        /// </summary>
        /// <returns>����ʣ����ȴʱ��</returns>
        public int DoRefresh()
        {
            int          coldTime = 0;
            var          cache    = new ConfigCacheSet <ItemBaseInfo>();
            ItemBaseInfo itemInfo = cache.FindKey(ItemID);

            if (itemInfo != null && (itemInfo.PropType == 3 || itemInfo.PropType == 9))
            {
                TimeSpan ts = DateTime.Now - ChangeTime;

                coldTime = MathUtils.Subtraction(itemInfo.EffectNum, (int)Math.Floor(ts.TotalSeconds), 0);
                coldTime = MathUtils.Addition(coldTime, 0, itemInfo.EffectNum);
            }
            return(coldTime);
        }
示例#4
0
 public override bool TakeAction()
 {
     itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(itemID);
     List<MonsterInfo> monsterArray = new ConfigCacheSet<MonsterInfo>().FindAll(m => m.ItemID == itemID);
     if (monsterArray.Count > 0)
     {
         PlotNPCInfo npcInfo = new ConfigCacheSet<PlotNPCInfo>().FindKey(monsterArray[0].MonsterID);
         if (npcInfo != null)
         {
             PlotInfo plotInfo = new ConfigCacheSet<PlotInfo>().FindKey(plotID);
             if (plotInfo != null)
             {
                 plotID = plotInfo.PlotID;
                 plotName = plotInfo.PlotName;
             }
         }
     }
     return true;
 }
示例#5
0
        public override bool TakeAction()
        {
            int uItemID = 0;
            if (itemID == 0 && userItemID != "")
            {
                var package = UserItemPackage.Get(Uid);
                UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));
                if (userItem != null)
                {
                    uItemID = userItem.ItemID;
                }
            }
            else
            {
                uItemID = itemID;
            }
            List<ItemSynthesisInfo> itemSynthesisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(u => u.SynthesisID.Equals(uItemID));
            if (itemSynthesisArray.Count > 0)
            {
                itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(itemSynthesisArray[0].ItemID); //合成物品的信息
                //synthesisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(u => u.ItemID.Equals(itemInfo.ItemID) && u.SynthesisID != itemID);
                synthesisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(u => u.ItemID.Equals(itemInfo.ItemID));
                equAttrInfo = new ShareCacheStruct<ItemEquAttrInfo>().FindAll(u => u.ItemID.Equals(itemInfo.ItemID));
            }

            synthesisMinLv = ConfigEnvSet.GetInt("ItemInfo.SynthesisMinLv");
            return true;
        }
示例#6
0
 private static string SetUserItem(UserItemInfo userItem, string userID, ItemBaseInfo itemInfo, ItemStatus itemStatus, short itemLv)
 {
     string uitemID = System.Guid.NewGuid().ToString();
     userItem.UserItemID = uitemID;
     userItem.ItemID = itemInfo.ItemID;
     userItem.ItemStatus = itemStatus;
     userItem.GeneralID = itemStatus == ItemStatus.YongBing ? UserGeneral.MainID : 0;
     userItem.ItemLv = itemLv;
     userItem.ItemType = itemInfo.ItemType;
     return uitemID;
 }
示例#7
0
 // 重载构造函数,用于强化 10 次
 public UserItemHelper(UserItemInfo item, int count)
 {
     _item = item;
     _itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo();
     _strongCount = count;
 }
示例#8
0
        private static int _strongCount = 1;  // 强化次数

        public UserItemHelper(UserItemInfo item)
        {
            _item = item;
            _itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo();
        }
示例#9
0
        private static int _strongCount = 1;  // 强化次数

        public UserItemHelper(UserItemInfo item)
        {
            _item     = item;
            _itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo();
        }
示例#10
0
        private static bool UseProps(string userID, ItemBaseInfo itemInfo)
        {
            var cacheSet = new GameDataCacheSet<UserProps>();
            List<UserProps> propsArray = cacheSet.FindAll(userID, u => u.PropType == itemInfo.PropType);

            if (itemInfo.PropType == 9 && propsArray.Count > 0)
            {
                int refreshNum = propsArray[0].DoRefresh();
                if (refreshNum > 0)
                {
                    return false;
                }
            }
            bool isUsed = false;
            foreach (UserProps propse in propsArray)
            {
                if (propse.ItemID == 7003 || propse.ItemID == 5200)
                {
                    continue;
                }
                if (!isUsed && propse.ItemID == itemInfo.ItemID)
                {
                    isUsed = true;
                    propse.SurplusNum += itemInfo.EffectNum;
                    propse.ChangeTime = DateTime.Now;
                    //propse.Update();
                }
                else
                {
                    cacheSet.Delete(propse);
                }

            }
            //List<UserProps> propsArray1 = new GameDataCacheSet<UserProps>().FindAll(UserProps.Index_UserID, u => u.PropType == itemInfo.PropType && u.ItemID == itemInfo.ItemID, userID);
            if (!isUsed)
            {
                UserProps uProps = new UserProps(userID, itemInfo.ItemID)
                {
                    SurplusNum = itemInfo.EffectNum,
                    ChangeTime = DateTime.Now
                };
                new GameDataCacheSet<UserProps>().Add(uProps, GameEnvironment.CacheUserPeriod);
            }
            return true;
        }
示例#11
0
 /// <summary>
 /// 获取配置信息
 /// </summary>
 /// <param name="itemInfo"></param>
 /// <returns></returns>
 public static List<PrizeInfo> GetPrizeInfo(ItemBaseInfo itemInfo)
 {
     if (itemInfo.ItemPack == null || itemInfo.ItemPack.Count <= 0)
         return null;
     return PrizeHelper.GetPrizeInfo(itemInfo.ItemPack).ToList();
 }
示例#12
0
        public override bool TakeAction()
        {
            int maxEquNum = ConfigEnvSet.GetInt("UserQueue.EquStrengMaxNum");
            UserItemPackage package;
            if (!string.IsNullOrEmpty(_toUserId))
            {
                package = UserItemPackage.Get(_toUserId);
            }
            else
            {
                package = UserItemPackage.Get(ContextUser.UserID);
            }

             _userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(_userItemId)) ?? new UserItemInfo();

            _itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(_userItem.ItemID);
            if (_itemInfo == null)
            {
                SaveDebuLog(string.Format("玩家{0}物品ID={1}[{2}]不存在!", Uid, _userItem.UserItemID, _userItem.ItemID));
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough;
                return false;
            }

            if (_userItem.ItemLv > _itemInfo.DemandLv)
            {
                _demandLv = _userItem.ItemLv;
            }
            else
            {
                _demandLv = _itemInfo.DemandLv;
            }

            _strongMoney = new UserItemHelper(_userItem, 1).StrongMoney;
            _tenTimesStrongMoney = new UserItemHelper(_userItem, 10).StrongMoney;  // 强化 10 次用钱
            _itemEquArray = new ConfigCacheSet<ItemEquAttrInfo>().FindAll(m => m.ItemID == _userItem.ItemID);

            if (_userItem.ItemLv >= ContextUser.UserLv || _strongMoney > ContextUser.GameCoin)
            {
                _isStrong = 1;
            }
            List<UserQueue> userQueueArray = new GameDataCacheSet<UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.EquipmentStrong);
            userQueueArray.QuickSort((x, y) =>
            {
                if (x == null && y == null) return 0;
                if (x != null && y == null) return 1;
                if (x == null) return -1;
                return y.Timing.CompareTo(x.Timing);
            });
            if (userQueueArray.Count == ContextUser.QueueNum)
            {
                DateTime minDateTime = DateTime.MinValue;
                foreach (UserQueue queue in userQueueArray)
                {
                    if (queue.DoRefresh() > 0 && !queue.IsSuspend && minDateTime < queue.Timing && queue.StrengNum >= maxEquNum)
                    {
                        _coldTime = queue.DoRefresh();
                    }
                }
            }
            UserHelper.SparePartPropertyList(Uid, _userItemId); //灵件属性
            return true;
        }
示例#13
0
 // 重载构造函数,用于强化 10 次
 public UserItemHelper(UserItemInfo item, int count)
 {
     _item        = item;
     _itemInfo    = new ConfigCacheSet <ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo();
     _strongCount = count;
 }
示例#14
0
        private static int _strongCount = 1;  // 强化次数

        public UserItemHelper(UserItemInfo item)
        {
            _item     = item;
            _itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo();
        }
示例#15
0
        public override bool TakeAction()
        {
            if (!string.IsNullOrEmpty(_toUserID))
            {
                packUser = _toUserID;
            }
            else
            {
                packUser = ContextUser.UserID;
            }
            var package = UserItemPackage.Get(packUser);
            _useritem = package.ItemPackage.Find(m => string.Equals(m.UserItemID, _userItemID)) ?? new UserItemInfo();
            if (_useritem == null || _useritem.ItemID == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough;
                return false;
            }

            _itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(_useritem.ItemID);
            if (_itemInfo == null)
            {
                ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough;
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return false;
            }

            if (_useritem.ItemLv > _itemInfo.DemandLv)
            {
                demandLv = _useritem.ItemLv;
            }
            else
            {
                demandLv = _itemInfo.DemandLv;
            }
            if (_itemInfo.ItemType == ItemType.ZhuangBei)
            {
                _salePrice = UserHelper.StrongEquPayPrice(packUser, _userItemID);
            }
            else
            {
                if (isShow > 0)
                {
                    _salePrice = (_itemInfo.SalePrice / 4);

                }
                else
                {
                    _salePrice = ((_itemInfo.SalePrice / 4) * _useritem.Num);
                }
            }

            _itemEquArray = new ShareCacheStruct<ItemEquAttrInfo>().FindAll(m => m.ItemID == _useritem.ItemID);
            List<ItemSynthesisInfo> synthsisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(m => m.SynthesisID == _useritem.ItemID);
            if (synthsisArray.Count > 0)
            {
                var synthsis = synthsisArray[0];
                if (_itemInfo.ItemType == ItemType.TuZhi || _itemInfo.ItemType == ItemType.TuZhi)
                {
                    _itemSynthsisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(m => m.ItemID == synthsis.ItemID && m.SynthesisID != _useritem.ItemID);
                }
            }

            if (_itemInfo.CareerRange != null && _itemInfo.CareerRange.Trim() != "0")
            {
                _careerList = _itemInfo.CareerRange.Split(',');
            }
            PropertyArray = UserHelper.SparePartPropertyList(packUser, _userItemID); //灵件属性
            return true;
        }
示例#16
0
文件: Action1204.cs 项目: 0jpq0/Scut
        public override bool TakeAction()
        {
            //int maxEquNum = ConfigEnvSet.GetInt("UserQueue.EquStrengMaxNum");
            //int coldTime = ConfigEnvSet.GetInt("UserItem.EquColdTime");

            //铜钱不足
            var package = UserItemPackage.Get(Uid);
            userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID)) ?? new UserItemInfo();
            if (ops == StrongOnce)
            {
                // 强化 1 次用钱
                strongMoney = new UserItemHelper(userItem, 1).StrongMoney;
            }
            else if (ops == StrongTenTimes)
            {
                // 强化 10 次用钱
                strongMoney = new UserItemHelper(userItem, 10).StrongMoney;
            }
            short strongMaxLv = (ContextUser.UserLv * 3).ToShort(); //MathUtils.Addition(ContextUser.UserLv, 1.ToShort()); //强化最高等级
            if (ContextUser.GameCoin < strongMoney)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough;
                return false;
            }

            //UserGeneral userGeneral = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID);
            //if (userGeneral != null && userItem.ItemLv >= strongMaxLv)
            //{
            //    ErrorCode = LanguageManager.GetLang().ErrorCode;
            //    ErrorInfo = LanguageManager.GetLang().St1204_EquGeneralMaxLv;
            //    return false;
            //}

            if (userItem.ItemLv >= strongMaxLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1204_EquMaxLv;
                return false;
            }

            itemInfo = new ConfigCacheSet<ItemBaseInfo>().FindKey(userItem.ItemID);
            if (itemInfo != null)
            {
                itemEquArray = new ConfigCacheSet<ItemEquAttrInfo>().FindAll(m => m.ItemID == itemInfo.ItemID);
            }

            if (strongMoney > ContextUser.GameCoin)
            {
                isStrong = 1;
            }
            else if (userItem.ItemLv >= strongMaxLv)
            {
                isStrong = 2;
            }

            UpdateUserItem(ContextUser, userItem, strongMoney);
            //日常任务-强化
            TaskHelper.TriggerDailyTask(Uid, 4001);

            UserGeneral general = new GameDataCacheSet<UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID);
            if (general != null)
            {
                general.RefreshMaxLife();
            }
            return true;
        }
示例#17
0
        public override bool TakeAction()
        {
            curLevel = 1;
            itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(itemID);
            if (itemInfo == null)
            {
                return false;
            }

            itemEquArray = new ShareCacheStruct<ItemEquAttrInfo>().FindAll(m => m.ItemID ==  itemID);

            if (mallType == ShopType.Blackmarket)
            {
                price = itemInfo.SalePrice;
            }
            else
            {
                MallItemsInfo mallitemsInfo = new ShareCacheStruct<MallItemsInfo>().FindKey(itemID, cityID, mallType);
                if (mallitemsInfo != null)
                {
                    ItemBaseInfo qishiItemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(mallitemsInfo.QishiID);
                    if (qishiItemInfo != null)
                    {
                        qiShiName = qishiItemInfo.ItemName;
                    }
                    price = mallitemsInfo.Price;
                }
            }
            if (itemInfo.ItemType == ItemType.TuZhi || itemInfo.ItemType == ItemType.ZhuangBei || itemInfo.ItemType == ItemType.TuZhi)
            {
                List<ItemSynthesisInfo> synthsisArray = new ShareCacheStruct<ItemSynthesisInfo>().FindAll(s => s.SynthesisID.Equals(itemID));
                if (synthsisArray.Count > 0)
                {
                    itemSynthsisArray =
                        new ShareCacheStruct<ItemSynthesisInfo>().FindAll(
                            s => s.ItemID.Equals(synthsisArray[0].ItemID) && s.SynthesisID != itemID);
                }
            }
            return true;
        }
示例#18
0
 public static void AddUniversalInfo(List<UniversalInfo> universalInfoList, ItemBaseInfo itemInfo,int num)
 {
     if (universalInfoList != null)
     {
         var universalInfo = universalInfoList.Find(s => s.HeadID == itemInfo.HeadID);
         if (universalInfo != null)
         {
             universalInfo.UpdateNotify(obj =>
             {
                 universalInfo.Num = MathUtils.Addition(universalInfo.Num, num);
                 return true;
             }
             );
         }
         else
         {
             universalInfo = new UniversalInfo();
             universalInfo.Name = itemInfo.ItemName;
             universalInfo.HeadID = itemInfo.HeadID;
             universalInfo.Num = num;
             universalInfo.ItemID = itemInfo.ItemID;
             universalInfo.MaxHeadID = itemInfo.MaxHeadID;
             universalInfo.ItemDesc = itemInfo.ItemDesc;
             universalInfo.QualityType = itemInfo.QualityType.ToInt();
             universalInfoList.Add(universalInfo);
         }
     }
 }
示例#19
0
        /// <summary>
        /// 双倍材料,月饼道具使用
        /// </summary>
        /// <param name="userItem"></param>
        /// <param name="itemInfo"></param>
        /// <returns></returns>
        private bool DoCaiLiaoYueBingItem(UserItemInfo userItem, ItemBaseInfo itemInfo)
        {
            UserProps props = new GameDataCacheSet<UserProps>().FindKey(ContextUser.UserID, userItem.ItemID);
            if (props != null)
            {
                if (userItem.ItemID == 5200 && props.DoRefresh() > 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1608_CombatPowerNotEnough;
                    return false;
                }

                props.SurplusNum += itemInfo.EffectNum;
                props.ChangeTime = DateTime.Now;
                //props.Update();

            }
            else
            {
                UserProps uProps = new UserProps(ContextUser.UserID, itemInfo.ItemID)
                                       {
                                           SurplusNum = itemInfo.EffectNum,
                                           ChangeTime = DateTime.Now
                                       };
                new GameDataCacheSet<UserProps>().Add(uProps, GameEnvironment.CacheUserPeriod);
            }
            return true;
        }
示例#20
0
        private static int _strongCount = 1;  // 强化次数

        public UserItemHelper(UserItemInfo item)
        {
            _item = item;
            _itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(_item.ItemID) ?? new ItemBaseInfo();
        }