Exemplo n.º 1
0
        /// <summary>
        /// 装备先攻值
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="generalID"></param>
        /// <returns></returns>
        public static int GeneralEquPriority(string userID, int generalID)
        {
            int itemEquPriority = 0;
            var package         = UserItemPackage.Get(userID);
            List <UserItemInfo> userItemArray = package.ItemPackage.FindAll(m => m.GeneralID.Equals(generalID));

            foreach (UserItemInfo item in userItemArray)
            {
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(item.ItemID);
                if (itemInfo != null)
                {
                    PriorityQuality quality   = UserEquPriorityQuality(itemInfo.QualityType); //itemInfo.QualityType.ToInt().ToEnum<PriorityQuality>();
                    int             baseNum   = PriorityBaseNum(PriorityType.Equ, quality);
                    int             effectNum = PriorityEffectNum(PriorityType.Equ, quality);
                    itemEquPriority += (MathUtils.Addition(baseNum, item.ItemLv * effectNum));
                    itemEquPriority += GeneralSparePriority(userID, item.UserItemID);
                }
            }
            return(itemEquPriority);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 附魔符属性
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="generalID"></param>
        /// <param name="abilityType"></param>
        /// <returns></returns>
        public static decimal EnchantProprety(string userID, int generalID, AbilityType abilityType)
        {
            decimal proNum         = 0;
            var     package        = UserItemPackage.Get(userID);
            var     enchantPackage = UserEnchant.Get(userID);

            if (package != null && enchantPackage != null)
            {
                var useritem = package.ItemPackage.Find(m => !m.IsRemove && m.GeneralID == generalID && m.Equparts == EquParts.WuQi);
                if (useritem != null)
                {
                    var enchantList = enchantPackage.EnchantPackage.FindAll(m => m.UserItemID == useritem.UserItemID && m.AbilityType == abilityType);
                    foreach (var info in enchantList)
                    {
                        decimal abilityNum = EnchantFinalNum(info);
                        proNum = MathUtils.Addition(proNum, abilityNum);
                    }
                }
            }
            return(proNum);
        }
Exemplo n.º 3
0
        public static int ItemNum(string userID, int itemId)
        {
            var package = UserItemPackage.Get(userID);
            int num     = 0;

            if (package == null)
            {
                return(0);
            }
            var useritemList = package.ItemPackage.FindAll(s => !s.IsRemove && s.ItemID == itemId);

            if (useritemList == null)
            {
                return(0);
            }
            useritemList.ForEach(obj =>
            {
                num = MathUtils.Addition(num, obj.Num);
            });
            return(num);
        }
Exemplo n.º 4
0
        public override bool TakeAction()
        {
            ErrorCode = _ops;
            int goldNum = ConfigEnvSet.GetInt("SparePart.PropertyGoldNum");

            if (_ops == 1)
            {
                ErrorInfo = string.Format(LanguageManager.GetLang().St1216_EnableSpartProperty, goldNum, _position);
            }
            else if (_ops == 2)
            {
                if (ContextUser.GoldNum < goldNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }
                if (ContextUser.EnableSpareProperty(_sparepartID, out _sparePart))
                {
                    ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, goldNum);
                    //ContextUser.Update();
                    var          itempackage = UserItemPackage.Get(ContextUser.UserID);
                    UserItemInfo userItem    = itempackage.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(_sparePart.UserItemID));
                    if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing))
                    {
                        var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, userItem.GeneralID);
                        if (userGeneral != null)
                        {
                            userGeneral.RefreshMaxLife();
                        }
                    }
                }
                else
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
            }
            return(true);
        }
Exemplo n.º 5
0
        public override bool TakeAction()
        {
            var          package  = UserItemPackage.Get(Uid);
            UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));

            if (userItem != null)
            {
                package.UpdateNotify(obj =>
                {
                    package.RemoveItem(userItem);
                    return(true);
                });
                UserItemHelper.AddItemLog(ContextUser.UserID, userItem.ItemID, userItem.Num, userItem.ItemLv, 8, userItem.UserItemID);
            }
            else
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().ServerBusy;
                return(false);
            }
            return(true);
        }
Exemplo n.º 6
0
        public override bool TakeAction()
        {
            var package = UserItemPackage.Get(Uid);
            List <UserItemInfo> itemSortArray = new List <UserItemInfo>();

            if (itemType == 1)
            {
                itemSortArray = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemType == ItemType.ZhuangBei);
            }
            else if (itemType == 2)
            {
                itemSortArray = package.ItemPackage.FindAll(m => !m.IsRemove && (m.ItemType == ItemType.TuZhi || m.ItemType == ItemType.TuZhi));
            }
            else
            {
                itemSortArray = package.ItemPackage.FindAll(m => !m.IsRemove && (m.ItemType == ItemType.DaoJu ||
                                                                                 m.ItemType == ItemType.XinShouLiBao || m.ItemType == ItemType.BengDai || m.ItemType == ItemType.CaiLiao ||
                                                                                 m.ItemType == ItemType.QiShi || m.ItemType == ItemType.XinShouLiBao || m.ItemType == ItemType.YaoJi || m.ItemType == ItemType.ZuoJi));
            }
            mlist = itemSortArray.GetPaging(pageIndex, pageSize, out pageCount);
            return(true);
        }
Exemplo n.º 7
0
        private void ResetProperty()
        {
            //洗涤属性
            var sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID));

            if (sparePart != null)
            {
                var sparePartInfo = new ConfigCacheSet <SparePartInfo>().FindKey(sparePart.SparePartId) ?? new SparePartInfo();
                sparePart.UpdateNotify(obj =>
                {
                    for (int i = 0; i < sparePart.Propertys.Count; i++)
                    {
                        if (!sparePart.Propertys[i].IsEnable)
                        {
                            continue;
                        }
                        if (_partPropertys.Length > 0 && Array.Exists(_partPropertys, m => m.ToInt() - 1 == i))
                        {
                            continue;
                        }

                        sparePart.Propertys[i] = UserSparePart.RandomProperty(sparePartInfo, false, sparePart.Propertys);
                        var package            = UserItemPackage.Get(Uid);
                        UserItemInfo userItem  = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(sparePart.UserItemID));
                        if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing))
                        {
                            var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(Uid, userItem.GeneralID);
                            if (userGeneral != null)
                            {
                                userGeneral.RefreshMaxLife();
                            }
                        }
                    }
                    return(true);
                });
                _sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID));
                //ContextUser.UpdateSparePart();
            }
        }
Exemplo n.º 8
0
        public override bool TakeAction()
        {
            int intervalDate      = ConfigEnvSet.GetInt("UserItemSold.IntervalDate");
            int totalIntervalDate = (intervalDate * 60 * 60);

            var package  = UserItemPackage.Get(Uid);
            var sellItem = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.Sell);

            foreach (var item in sellItem)
            {
                if ((DateTime.Now - item.SoldDate).TotalSeconds > totalIntervalDate)
                {
                    UserItemHelper.AddItemLog(ContextUser.UserID, item.ItemID, item.Num, item.ItemLv, 4, item.UserItemID);

                    package.RemoveItem(item);
                }
            }

            var tempList = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.Sell);

            userItemArray = tempList.GetPaging(pageIndex, pageSize, out pageCount);
            return(true);
        }
Exemplo n.º 9
0
        public override bool TakeAction()
        {
            UserGeneral general = new PersonalCacheStruct <UserGeneral>().FindKey(Uid, _generalID);

            if (general != null)
            {
                var package = UserItemPackage.Get(Uid);
                _userItemArray = package.ItemPackage.FindAll(
                    u =>
                {
                    var itemInfo = new UserItemHelper(u);
                    return(!u.IsRemove && itemInfo.EquPartsID == _equParts &&
                           itemInfo.DemandLv <= general.GeneralLv &&
                           //u.ItemLv <= general.GeneralLv &&
                           u.ItemStatus.ToEnum <ItemStatus>() != ItemStatus.YongBing &&      //点击装备或者更换装备的时候,在筛选时去掉已经装备
                           itemInfo.CheckCareer(general.CareerID));
                });
                _userItemArray.QuickSort((a, b) => a.CompareTo(b));
            }
            //var package = UserItemPackage.Get(Uid);
            //_userItemArray = package.ItemPackage.FindAll(s=>s.ItemType==ItemType.ZhuangBei);
            return(true);
        }
Exemplo n.º 10
0
        public override bool TakeAction()
        {
            UserHelper.ChechDailyRestrain(ContextUser.UserID);
            int maxNum = 0;
            int useNum = 0;
            DailyRestrainSet restrainSet = new ShareCacheStruct <DailyRestrainSet>().FindKey(RestrainType.DragonHolyWater);

            if (restrainSet != null)
            {
                maxNum = restrainSet.MaxNum;
            }

            int         _itemID = 5050;
            UserGeneral general = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (general == null || general.SaturationNum == 0)
            {
                return(false);
            }

            var          package       = UserItemPackage.Get(ContextUser.UserID);
            var          userItemArray = package.ItemPackage.FindAll(m => m.ItemID.Equals(_itemID));
            UserItemInfo useritem      = new UserItemInfo();

            if (userItemArray.Count > 0)
            {
                useritem = userItemArray[0];
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1423_UserItemNotEnough;
                return(false);
            }
            ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(useritem.ItemID);

            if (itemInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1107_UserItemNotEnough;
                return(false);
            }
            var cacheSet = new GameDataCacheSet <UserDailyRestrain>();
            UserDailyRestrain userRestrain = cacheSet.FindKey(ContextUser.UserID);

            if (userRestrain != null && userRestrain.UserExtend != null && userRestrain.UserExtend.WaterNum.Count > 0)
            {
                List <DailyRestrain> daliyrestrainList = userRestrain.UserExtend.WaterNum.FindAll(m => m.ID == generalID);
                useNum = daliyrestrainList.Count;
            }
            if (ops == 1)
            {
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St1423_ClearCurrSatiation, itemInfo.ItemName);
                return(false);
            }
            else if (ops == 2)
            {
                if (useNum >= maxNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1423_DragonHolyWater;
                    return(false);
                }
                if (general.SaturationNum > 0)
                {
                    ErrorCode             = ops;
                    general.SaturationNum = 0; //general.SaturationNum.Subtraction(itemInfo.SatiationNum, 0);
                    DailyRestrain restrain = new DailyRestrain();
                    restrain.ID = generalID;
                    if (userRestrain != null)
                    {
                        userRestrain.UserExtend.UpdateNotify(obj =>
                        {
                            userRestrain.UserExtend.WaterNum.Add(restrain);
                            return(true);
                        });
                    }
                    UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1);
                }
            }
            return(true);
        }
Exemplo n.º 11
0
        public override bool TakeAction()
        {
            UserGeneral userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (userGeneral == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (ops == 0)
            {
                //用户装备更换
                var package = UserItemPackage.Get(Uid);
                if (package == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));
                if (userItem == null)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(userItem.ItemID);
                if (itemInfo != null)
                {
                    if (string.IsNullOrEmpty(itemInfo.CareerRange) || itemInfo.CareerRange.IndexOf(userGeneral.CareerID.ToString()) == -1)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1203_CareerError;
                        return(false);
                    }
                    //佣兵装备部位为空才能更换
                    var generalItem = package.ItemPackage.Find(s => !s.IsRemove && s.Equparts == itemInfo.EquParts && s.GeneralID == userGeneral.GeneralID && s.ItemStatus == ItemStatus.YongBing);
                    if (generalItem != null)
                    {
                        generalItem.GeneralID  = 0;
                        generalItem.ItemStatus = ItemStatus.BeiBao;
                        package.SaveItem(generalItem);
                        userItem.GeneralID  = generalID;
                        userItem.ItemStatus = ItemStatus.YongBing;
                        package.SaveItem(userItem);
                    }
                    else
                    {
                        userItem.GeneralID  = generalID;
                        userItem.ItemStatus = ItemStatus.YongBing;
                        package.SaveItem(userItem);
                    }
                    //int equCount = UserItemHelper.GetItems(Uid).FindAll(
                    //    m => new UserItemHelper(m).EquPartsID == (int)itemInfo.EquParts && m.GeneralID == userGeneral.GeneralID && m.ItemStatus == ItemStatus.YongBing).Count;
                    //if (equCount == 0)
                    //{
                    //    userItem.GeneralID = generalID;
                    //    userItem.ItemStatus = ItemStatus.YongBing;
                    //    package.SaveItem(userItem);
                    //}
                }
            }
            else if (ops == 1)
            {
                //卸下
                //if (UserItemHelper.CheckItemOut(ContextUser, ItemStatus.BeiBao))
                //{
                //    ErrorCode = LanguageManager.GetLang().ErrorCode;
                //    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                //    return false;
                //}
                string str = string.Empty;
                if (UserPackHelper.PackIsFull(ContextUser, BackpackType.ZhuangBei, 1, out str))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                    ErrorInfo = str;
                    return(false);
                }
                var          package  = UserItemPackage.Get(Uid);
                UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));

                if (userItem != null && userItem.GeneralID > 0 && userItem.ItemStatus == ItemStatus.YongBing)
                {
                    userItem.GeneralID  = 0;
                    userItem.ItemStatus = ItemStatus.BeiBao;
                    package.SaveItem(userItem);
                }
            }
            userGeneral.RefreshMaxLife();
            return(true);
        }
Exemplo n.º 12
0
        public override bool TakeAction()
        {
            if (!TrumpHelper.IsLearnProperty(ContextUser))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1466_WorshipPropertyNotEnough;
                return(false);
            }
            UserTrump userTrump = new GameDataCacheSet <UserTrump>().FindKey(ContextUser.UserID, TrumpInfo.CurrTrumpID);

            if (userTrump == null)
            {
                return(false);
            }
            UserItemInfo userItem = null;
            var          package  = UserItemPackage.Get(ContextUser.UserID);

            if (package != null)
            {
                userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID == userItemID);
                if (userItem == null || (userItem.ItemType != ItemType.DaoJu && userItem.PropType == 13))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1466_ItemPropertyNotEnough;
                    return(false);
                }
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID);
                if (itemInfo != null)
                {
                    GeneralProperty property = null;
                    if (userTrump.PropertyInfo.Count > 0)
                    {
                        property = userTrump.PropertyInfo.Find(m => m.AbilityType == itemInfo.AbilityType);
                        if (property != null)
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St1466_ItemPropertyExite;
                            return(false);
                        }
                    }
                    else
                    {
                        userTrump.PropertyInfo.Clear();
                    }
                    short             baseLv        = 1;
                    TrumpPropertyInfo trumpProperty =
                        new ConfigCacheSet <TrumpPropertyInfo>().FindKey(itemInfo.AbilityType, baseLv);
                    if (trumpProperty != null)
                    {
                        property              = new GeneralProperty();
                        property.AbilityType  = itemInfo.AbilityType;
                        property.AbilityLv    = 1;
                        property.AbilityValue = trumpProperty.PropertyNum;
                        userTrump.PropertyInfo.Add(property);
                        TraceProperty(userTrump);
                        UserItemHelper.UseUserItem(ContextUser.UserID, userItem.ItemID, trumpProperty.ItemNum);

                        var usergeneral = UserGeneral.GetMainGeneral(ContextUser.UserID);
                        if (usergeneral != null)
                        {
                            usergeneral.RefreshMaxLife();
                        }

                        ErrorCode = 0;
                        ErrorInfo = LanguageManager.GetLang().St1466_LearningSuccess;
                    }
                }
            }

            return(true);
        }
Exemplo n.º 13
0
        public override bool TakeAction()
        {
            UserHelper.ChechDailyRestrain(ContextUser.UserID);
            UserGeneral general = new GameDataCacheSet <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (general == null)
            {
                return(false);
            }
            if (general.FeelLv >= GiftHelper.maxFeelLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1422_MaxFeelFull;
                return(false);
            }
            int     useGold         = ConfigEnvSet.GetInt("User.PresentationGold");
            int     feelNum         = ConfigEnvSet.GetInt("User.PresentationFeelNum");
            int     maxSatiationNum = ConfigEnvSet.GetInt("User.FeelMaxSatiationNum");
            decimal generalEffect   = ConfigEnvSet.GetDecimal("Gift.GeneralEffectNum");

            if (ops == 1)
            {
                var package  = UserItemPackage.Get(ContextUser.UserID);
                var useritem = package.ItemPackage.Find(m => m.UserItemID.Equals(userItemID));
                if (useritem == null)
                {
                    return(false);
                }
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(useritem.ItemID);
                if (itemInfo != null)
                {
                    if (general.SaturationNum >= maxSatiationNum)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1422_FeelMaxSatiationNum;
                        return(false);
                    }
                    int giftEffect = itemInfo.EffectNum;
                    //佣兵喜欢类型的礼物,好感度加成
                    GeneralInfo generalInfo = new ConfigCacheSet <GeneralInfo>().FindKey(generalID);
                    if (generalInfo != null && itemInfo.GiftType == generalInfo.GiftType)
                    {
                        decimal sumGeneralEffect = MathUtils.Addition(generalEffect, 1, decimal.MaxValue);
                        giftEffect = MathUtils.RoundCustom(giftEffect * sumGeneralEffect).ToShort();
                    }
                    GiftHelper.GeneralFeelUpgrade(general, giftEffect, itemInfo.SatiationNum);
                    UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1);
                    ErrorCode = ops;
                    ErrorInfo = string.Format(LanguageManager.GetLang().St1422_PresentationFeelNum, giftEffect);
                }
            }
            else if (ops == 2)
            {
                int addNum = UseGoldZengSong(ContextUser.UserID);
                useGold   = MathUtils.Addition(useGold, addNum);
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St1422_PresentationUseGold, useGold, feelNum);
                return(false);
            }
            else if (ops == 3)
            {
                if (GiftHelper.SurplusGoldNum(ContextUser.UserID) <= 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1422_PresentationGoldNum;
                    return(false);
                }
                UserDailyRestrain userDaily = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID);
                int addNum = UseGoldZengSong(ContextUser.UserID);
                useGold = MathUtils.Addition(useGold, addNum);
                if (ContextUser.GoldNum < useGold)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }

                if (userDaily != null)
                {
                    if (userDaily.UserExtend == null)
                    {
                        userDaily.UserExtend = new DailyUserExtend();
                    }
                    userDaily.UserExtend.UpdateNotify(obj =>
                    {
                        userDaily.UserExtend.GoldNum = MathUtils.Addition(userDaily.UserExtend.GoldNum, (short)1);
                        return(true);
                    });
                }
                int feelExp = general.FeelExperience;
                int upExp   = MathUtils.Addition(feelExp, feelNum);
                ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold);
                GiftHelper.GeneralFeelUpgrade(general, feelNum, 0);
                //TraceLog.ReleaseWrite(string.Format("玩家{0}(通行证ID)的佣兵{1}(ID){2}使用晶石赠送增加好感度{3}。好感度从{4}上升到{5}。",
                //    ContextUser.Pid,
                //    ContextUser.UserID,
                //    ContextUser.NickName, feelNum,
                //    feelExp, upExp));
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St1422_PresentationFeelNum, feelNum);
            }
            return(true);
        }
Exemplo n.º 14
0
        public override bool TakeAction()
        {
            if (string.IsNullOrEmpty(ContextUser.MercenariesID) || guildID != ContextUser.MercenariesID)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6011_GuildMemberNotMember;
                return(false);
            }
            UserGuild userGuild = new ShareCacheStruct <UserGuild>().FindKey(guildID);

            if (userGuild == null)
            {
                return(false);
            }
            List <UserGuild> guildArray = new ShareCacheStruct <UserGuild>().FindAll(m => m.GuildName == guildName);

            if (guildArray.Count > 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6017_Rename;
                return(false);
            }

            int nameLength = System.Text.Encoding.Default.GetByteCount(guildName);

            if (nameLength < 4 || nameLength > 12)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St6017_GuildNameTooLong;
                return(false);
            }

            //UserItem userItem = UserItem.FindKey(itemID);
            var          package  = UserItemPackage.Get(Uid);
            UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.ItemID == itemID);

            if (userItem == null || userItem.Num <= 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            GuildMember member = new ShareCacheStruct <GuildMember>().FindKey(ContextUser.MercenariesID, ContextUser.UserID);

            if (member != null)
            {
                if (member.PostType == PostType.Member)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St6007_AuditPermissions;
                    return(false);
                }
            }
            else
            {
                return(false);
            }
            userGuild.GuildName = guildName;
            //userGuild.Update();
            UserItemHelper.UseUserItem(ContextUser.UserID, itemID, 1);
            return(true);
        }
Exemplo n.º 15
0
        public override bool TakeAction()
        {
            int    currMaxLv  = GameConfigSet.CurrMaxLv;
            string lifeUserID = string.Empty;

            UserCrystalInfo[] userCrystalsArrray = new UserCrystalInfo[0];
            if (!string.IsNullOrEmpty(toUserID))
            {
                var packageCrystal = UserCrystalPackage.Get(toUserID);
                userGeneral        = new PersonalCacheStruct <UserGeneral>().FindKey(toUserID, generalID);
                userCrystalsArrray = packageCrystal.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(generalID)).ToArray();
                var package = UserItemPackage.Get(toUserID);
                userItemArray = package.ItemPackage.FindAll(
                    u => !u.IsRemove && u.GeneralID.Equals(generalID) &&
                    u.ItemStatus == ItemStatus.YongBing);
                lifeUserID = toUserID;
            }
            else
            {
                var packageCrystal = UserCrystalPackage.Get(ContextUser.UserID);
                userGeneral        = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);
                userCrystalsArrray = packageCrystal.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(generalID)).ToArray();

                var package = UserItemPackage.Get(ContextUser.UserID);
                userItemArray = package.ItemPackage.FindAll(u => !u.IsRemove && u.GeneralID.Equals(generalID) && u.ItemStatus == ItemStatus.YongBing);
                lifeUserID    = ContextUser.UserID;
            }
            UserCacheGlobal.LoadOffline(lifeUserID);
            GeneralInfo generalInfo = new ShareCacheStruct <GeneralInfo>().FindKey(generalID);

            generalQuality = generalInfo == null ? (short)0 : generalInfo.GeneralQuality;
            if (generalInfo != null && userGeneral != null)
            {
                description = generalInfo.Description;
                if (userGeneral.GeneralLv >= currMaxLv)
                {
                    genLv = (short)currMaxLv;
                    userGeneral.CurrExperience = 0;
                }
                else
                {
                    genLv = userGeneral.GeneralLv;
                }
                generalName     = userGeneral.GeneralName;
                headID          = userGeneral.HeadID;
                picturesID      = userGeneral.PicturesID;
                _battleHeadId   = generalInfo.BattleHeadID;
                _hitProbability = generalInfo.HitProbability;
                careerInfo      = new ShareCacheStruct <CareerInfo>().FindKey(userGeneral.CareerID);
                GeneralEscalateInfo generalEscalate = new ShareCacheStruct <GeneralEscalateInfo>().FindKey(genLv);
                if (generalEscalate != null)
                {
                    currExperience = userGeneral.CurrExperience;
                    maxExperience  = generalEscalate.UpExperience;
                }
                powerNum     = MathUtils.Addition(userGeneral.PowerNum, userGeneral.TrainingPower, short.MaxValue);
                soulNum      = MathUtils.Addition(userGeneral.SoulNum, userGeneral.TrainingSoul, short.MaxValue);
                intellectNum = MathUtils.Addition(userGeneral.IntellectNum, userGeneral.TrainingIntellect, short.MaxValue);
                if (!string.IsNullOrEmpty(ContextUser.MercenariesID) && generalID == LanguageManager.GetLang().GameUserGeneralID)
                {
                    //公会技能加成
                    powerNum     = MathUtils.RoundCustom(powerNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.PowerNum)).ToShort();
                    soulNum      = MathUtils.RoundCustom(soulNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.SoulNum)).ToShort();
                    intellectNum = MathUtils.RoundCustom(intellectNum * CombatHelper.GetGuildAbilityNum(ContextUser.UserID, GuildAbilityType.IntellectNum)).ToShort();
                }
                if (generalID == LanguageManager.GetLang().GameUserGeneralID)
                {
                    //法宝基础属性加成
                    powerNum     = MathUtils.Addition(powerNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.PowerNum));
                    soulNum      = MathUtils.Addition(soulNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.SoulNum));
                    intellectNum = MathUtils.Addition(intellectNum, TrumpAbilityAttack.TrumpPropertyNum(ContextUser.UserID, generalID, AbilityType.IntelligenceNum));

                    //法宝--技能属性转换获得的值
                    //法宝--技能属性转换获得的值
                    decimal trumpPower     = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.PowerNum);
                    decimal trumpsoul      = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.SoulNum);
                    decimal trumpintellect = TrumpAbilityAttack.ConversionPropertyNum(ContextUser.UserID, powerNum, soulNum, intellectNum, AbilityType.IntelligenceNum);
                    powerNum     = MathUtils.Addition(trumpPower.ToShort(), powerNum);
                    soulNum      = MathUtils.Addition(trumpsoul.ToShort(), soulNum);
                    intellectNum = MathUtils.Addition(trumpintellect.ToShort(), intellectNum);
                }
                lifeNum       = userGeneral.LifeNum;
                lifeMaxNum    = UserHelper.GetMaxLife(lifeUserID, generalID);
                genLv         = userGeneral.GeneralLv;
                generalStatus = (short)userGeneral.GeneralStatus;

                talentAbility = userGeneral.AbilityID;
                _potential    = userGeneral.Potential;
                _battleHeadID = generalInfo.BattleHeadID;
                //玩家佣兵职业名称
                userCareerName = careerInfo.CareerName;
            }
            else if (generalInfo != null)
            {
                genLv         = 1;
                generalName   = generalInfo.GeneralName;
                headID        = generalInfo.HeadID;
                picturesID    = generalInfo.PicturesID;
                _battleHeadId = generalInfo.BattleHeadID;
                careerInfo    = new ShareCacheStruct <CareerInfo>().FindKey(generalInfo.CareerID);
                GeneralEscalateInfo generalEscalate = new ShareCacheStruct <GeneralEscalateInfo>().FindKey(genLv);
                if (generalEscalate != null)
                {
                    currExperience = 0;
                    maxExperience  = generalEscalate.UpExperience;
                }
                powerNum      = generalInfo.PowerNum;
                soulNum       = generalInfo.SoulNum;
                intellectNum  = generalInfo.IntellectNum;
                lifeNum       = generalInfo.LifeNum;
                lifeMaxNum    = generalInfo.LifeNum;
                genLv         = generalInfo.GeneralLv;
                generalStatus = (short)GeneralStatus.KeZhaoMu;

                talentAbility = generalInfo.AbilityID;
            }
            AbilityInfo ability = new ShareCacheStruct <AbilityInfo>().FindKey(talentAbility);

            talentName = ability == null ? string.Empty : ability.AbilityName;

            gPropertyList = CombatHelper.GetAbility(lifeUserID, generalID, userGeneral);

            int sumCrystal = 0;

            foreach (UserCrystalInfo crystal in userCrystalsArrray)
            {
                sumCrystal = MathUtils.Addition(sumCrystal, crystal.CurrExprience, int.MaxValue);
            }
            vitalityNum  = (sumCrystal / 10);
            functionList = ViewHelper.GetFunctionList(lifeUserID);

            //佣兵魂技
            UserAbility userAbility = new PersonalCacheStruct <UserAbility>().FindKey(ContextUser.UserID);

            if (userAbility != null)
            {
                abilityList = userAbility.AbilityList.FindAll(s => s.GeneralID == generalID);
            }
            soulGrid = UserPackHelper.GetPackTypePositionNum(BackpackType.HunJi, ContextUser.UserID);

            // 缘分系统
            KarmaInfo karmaInfo = new ShareCacheStruct <KarmaInfo>().FindKey(generalID);

            if (karmaInfo != null && karmaInfo.KarmaList != null)
            {
                // 满足缘分条件显示激活状态

                // 判断佣兵
                UserMagic    userMagic            = new PersonalCacheStruct <UserMagic>().Find(ContextUser.UserID, s => s.IsEnabled);
                var          cacheSetUserEmbattle = new PersonalCacheStruct <UserEmbattle>();
                List <Karma> yongBingList         = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.YongBing);
                yongBingList.ForEach(yongBingInfo =>
                {
                    //yongBingInfo.IsActive = 1;
                    // 若阵型中存在该记录,该缘分为激活状态
                    if (yongBingInfo.ValueID.Contains(","))
                    {
                        string[] valueID = yongBingInfo.ValueID.Split(',');
                        int i            = 0;
                        foreach (var id in valueID)
                        {
                            if (cacheSetUserEmbattle.Find(ContextUser.UserID, s => s.MagicID == userMagic.MagicID && s.GeneralID == MathUtils.ToInt(id)) != null)
                            {
                                i++;
                            }
                        }
                        yongBingInfo.IsActive = i == valueID.Length ? 1 : 0;
                    }
                    else
                    {
                        if (cacheSetUserEmbattle.Find(ContextUser.UserID, s => s.MagicID == userMagic.MagicID && s.GeneralID == MathUtils.ToInt(yongBingInfo.ValueID)) != null)
                        {
                            yongBingInfo.IsActive = 1;
                        }
                        else
                        {
                            yongBingInfo.IsActive = 0;
                        }
                    }
                });
                // 判断装备
                UserItemPackage itemPackage = new PersonalCacheStruct <UserItemPackage>().FindKey(UserId.ToString());
                if (itemPackage != null)
                {
                    List <Karma> itemList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.ZhuangBei);
                    itemList.ForEach(itemInfo =>
                    {
                        if (itemPackage.ItemPackage.Find(s => s.ItemID == MathUtils.ToInt(itemInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            itemInfo.IsActive = 1;
                        }
                        else
                        {
                            itemInfo.IsActive = 0;
                        }
                    });
                }

                // 判断命运水晶
                UserCrystalPackage crystalPackage = new PersonalCacheStruct <UserCrystalPackage>().FindKey(UserId.ToString());
                if (itemPackage != null)
                {
                    List <Karma> crystalList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.ShuiJing);
                    crystalList.ForEach(crystalInfo =>
                    {
                        if (crystalPackage.CrystalPackage.Find(s => s.CrystalID == MathUtils.ToInt(crystalInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            crystalInfo.IsActive = 1;
                        }
                        else
                        {
                            crystalInfo.IsActive = 0;
                        }
                    });
                }

                // 判断技能
                UserAbility userAbilityInfo = new PersonalCacheStruct <UserAbility>().FindKey(UserId.ToString());
                if (userAbilityInfo != null)
                {
                    List <Karma> abilityList = karmaInfo.KarmaList.FindAll(s => s.KarmaType == KarmaType.JiNen);
                    abilityList.ForEach(abilityInfo =>
                    {
                        if (userAbilityInfo.AbilityList.Find(s => s.AbilityID == MathUtils.ToInt(abilityInfo.ValueID) && s.GeneralID == generalID) != null)
                        {
                            abilityInfo.IsActive = 1;
                        }
                        else
                        {
                            abilityInfo.IsActive = 0;
                        }
                    });
                }
                karmaList = karmaInfo.KarmaList;
                if (userGeneral != null)
                {
                    lifeNum    = userGeneral.TLifeNum;
                    lifeMaxNum = userGeneral.TLifeMaxNun;
                }
            }
            return(true);
        }
Exemplo n.º 16
0
        public override bool TakeAction()
        {
            string publicUserID = string.Empty;

            if (string.IsNullOrEmpty(toUserID))
            {
                publicUserID = ContextUser.UserID;
            }
            else
            {
                publicUserID = toUserID;
                UserCacheGlobal.LoadOffline(publicUserID);
            }
            user = new GameDataCacheSet <GameUser>().FindKey(publicUserID);
            if (user == null)
            {
                return(false);
            }
            if (user.UserExtend == null)
            {
                user.UserExtend = new GameUserExtend();
            }
            if (new GameDataCacheSet <UserFunction>().FindKey(publicUserID, FunctionEnum.Fengling) == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_NoFun;
                return(false);
            }
            CheckUserPlotLayerNum(user);
            _lingshiNum       = user.UserExtend.LingshiNum;
            _userGeneralArray = new GameDataCacheSet <UserGeneral>().FindAll(publicUserID, u => u.GeneralStatus == GeneralStatus.DuiWuZhong && u.GeneralType != GeneralType.Soul);
            int generalId = 0;

            foreach (var userGeneral in _userGeneralArray)
            {
                if (userGeneral != null && !userItemDict.ContainsKey(userGeneral.GeneralID))
                {
                    var package       = UserItemPackage.Get(publicUserID);
                    var userItemArray = package.ItemPackage.FindAll(u => !u.IsRemove && u.GeneralID.Equals(userGeneral.GeneralID) && u.ItemStatus == ItemStatus.YongBing);
                    userItemDict.Add(userGeneral.GeneralID, userItemArray);

                    if (generalId == 0)
                    {
                        generalId = userGeneral.GeneralID;
                    }
                }
            }
            if (generalId > 0)
            {
                //首个是武器的灵件列表
                var package   = UserItemPackage.Get(publicUserID);
                var userItems = package.ItemPackage.FindAll(
                    u => !u.IsRemove && u.GeneralID.Equals(generalId) &&
                    new UserItemHelper(u).EquPartsID.Equals((int)EquParts.WuQi) &&
                    u.ItemStatus == ItemStatus.YongBing
                    );
                if (userItems.Count > 0)
                {
                    var tempPartList = user.SparePartList.FindAll(m => m.UserItemID.Equals(userItems[0].UserItemID));
                    for (int i = 0; i < tempPartList.Count; i++)
                    {
                        var part = tempPartList[i];
                        if (part != null && part.Position > 0 && part.Position - 1 < _sparePartList.Length)
                        {
                            part.UpdateNotify(obj =>
                            {
                                _sparePartList[part.Position - 1] = part;
                                return(true);
                            });
                        }
                        else if (part != null && part.Position == 0 && !string.IsNullOrEmpty(part.UserItemID))
                        {
                            //修正灵石在装备上位置为同一的
                            part.UpdateNotify(obj =>
                            {
                                part.UserItemID = string.Empty;
                                return(true);
                            });
                        }
                    }

                    // ContextUser.UpdateSparePart();
                }
            }
            return(true);
        }
Exemplo n.º 17
0
        public override bool TakeAction()
        {
            int subLifeNum = 0;

            var          package  = UserItemPackage.Get(Uid);
            UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));

            if (userItem == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            //wuzf modify 2012-05-19
            ItemBaseInfo itemInfo   = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID);
            var          propsArray = new GameDataCacheSet <UserProps>().FindAll(ContextUser.UserID, u => u.PropType == 1);

            if (propsArray.Count > 0 && propsArray[0].SurplusNum > 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1605_BandageUse;
                return(false);
            }

            //判断背包是否有血包,没有提示去商城
            var userItems = package.ItemPackage.FindAll(m => !m.IsRemove && new UserItemHelper(m).PropType == 1);

            if (userItems.Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1605_UseTwoGold;
                return(false);
            }

            //给佣兵补血
            var userGeneralArray = new GameDataCacheSet <UserGeneral>().FindAll(ContextUser.UserID, u => u.GeneralStatus == GeneralStatus.DuiWuZhong);
            int effectNum        = itemInfo.EffectNum;

            foreach (var userGeneral in userGeneralArray)
            {
                int maxLifeNum = UserHelper.GetMaxLife(ContextUser.UserID, userGeneral.GeneralID);
                if (userGeneral.LifeNum < maxLifeNum)
                {
                    subLifeNum          = MathUtils.Subtraction(maxLifeNum, userGeneral.LifeNum, 0);
                    userGeneral.LifeNum = MathUtils.Addition(userGeneral.LifeNum, effectNum, maxLifeNum);
                    //userGeneral.Update();
                    effectNum = MathUtils.Subtraction(effectNum, subLifeNum, 0);
                }
            }
            var       cacheSet = new GameDataCacheSet <UserProps>();
            UserProps props    = new GameDataCacheSet <UserProps>().FindKey(ContextUser.UserID, userItem.ItemID);

            if (props != null)
            {
                props.SurplusNum = effectNum;
                //props.Update();
            }
            else
            {
                props = new UserProps(ContextUser.UserID, itemInfo.ItemID)
                {
                    SurplusNum = effectNum
                };
                cacheSet.Add(props);
            }

            ContextUser.IsUseupItem = false;
            UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1);
            foreach (UserProps userPropse in propsArray)
            {
                if (userPropse.SurplusNum == 0)
                {
                    cacheSet.Delete(userPropse);
                }
            }
            return(true);
        }
Exemplo n.º 18
0
        public override bool TakeAction()
        {
            var package = UserItemPackage.Get(ContextUser.UserID);

            if (package == null)
            {
                return(false);
            }
            if (equParts == EquParts.Whole)
            {
                userItemList = package.ItemPackage.FindAll(s => !s.IsRemove && s.ItemType == ItemType.ZhuangBei);
            }
            else
            {
                //userItemList = package.ItemPackage.FindAll(s => !s.IsRemove && s.ItemType == ItemType.ZhuangBei && s.Equparts == equParts);
                if (equParts == EquParts.WuQi || equParts == EquParts.HunQi)
                {
                    userItemList = package.ItemPackage.FindAll(s => !s.IsRemove && s.ItemType == ItemType.ZhuangBei && s.Equparts == equParts);
                }
                else
                {
                    userItemList = package.ItemPackage.FindAll(s => !s.IsRemove && s.ItemType == ItemType.ZhuangBei && s.Equparts != EquParts.WuQi && s.Equparts != EquParts.HunQi);
                }
            }

            // 增加排序
            userItemList.QuickSort((x, y) =>
            {
                int result = 0;
                if (x == null && y == null)
                {
                    return(0);
                }
                if (x != null && y == null)
                {
                    return(1);
                }
                if (x == null)
                {
                    return(-1);
                }

                // 1、品质高低 2、是否上阵
                result = y.ItemQuality.CompareTo(x.ItemQuality);
                if (result == 0)
                {
                    result = y.ItemStatus.CompareTo(x.ItemStatus);
                    if (result == 0)
                    {
                        result = x.ItemStatus.CompareTo(y.ItemStatus);
                        if (result == 0)
                        {
                            result = x.ItemID.CompareTo(y.ItemID);
                        }
                    }
                }

                return(result);
            });

            return(true);
        }
Exemplo n.º 19
0
        public override bool TakeAction()
        {
            ErrorCode = _ops;
            //1:镶嵌 2:卸下 3:出售
            if (_ops == 1)
            {
                if (string.IsNullOrEmpty(_userItemID))
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    return(false);
                }
                UserSparePart[] sparePartsArray = ContextUser.SparePartList.FindAll(m => m.UserItemID.Equals(_userItemID)).ToArray();
                if (sparePartsArray.Length > 0)
                {
                    //原因:装备上镶嵌超出开启位置数量的灵件
                    if (ContextUser.UserExtend != null)
                    {
                        if (_position > ContextUser.UserExtend.MaxLayerNum)
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St1213_GridNumNotEnough;
                            return(false);
                        }
                        if (sparePartsArray.Length >= ContextUser.UserExtend.MaxLayerNum)
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St1213_OpenNumNotEnough;
                            return(false);
                        }
                    }
                    foreach (UserSparePart part in sparePartsArray)
                    {
                        if (part.Position == _position)
                        {
                            ErrorCode = LanguageManager.GetLang().ErrorCode;
                            ErrorInfo = LanguageManager.GetLang().St1213_GridPotionFull;
                            return(false);
                        }
                    }
                }

                var sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID));
                if (sparePart != null && string.IsNullOrEmpty(sparePart.UserItemID))
                {
                    sparePart.UpdateNotify(obj =>
                    {
                        sparePart.UserItemID = _userItemID;
                        sparePart.SetPosition(_position);
                        return(true);
                    });
                    UserLogHelper.AppendSparePartLog(ContextUser.UserID, sparePart, 3);
                    //ContextUser.UpdateSparePart();

                    var          package  = UserItemPackage.Get(Uid);
                    UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(sparePart.UserItemID));
                    if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing))
                    {
                        var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(Uid, userItem.GeneralID);
                        if (userGeneral != null)
                        {
                            userGeneral.RefreshMaxLife();
                        }
                    }
                }
            }
            else if (_ops == 2)
            {
                int currNum = ContextUser.SparePartList.FindAll(m => string.IsNullOrEmpty(m.UserItemID)).Count;
                if (currNum >= ContextUser.UserExtend.SparePartGridNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1213_GridNumFull;
                    return(false);
                }
                var sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID));
                if (sparePart != null && !string.IsNullOrEmpty(sparePart.UserItemID))
                {
                    var          package  = UserItemPackage.Get(Uid);
                    UserItemInfo userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(sparePart.UserItemID));

                    sparePart.UpdateNotify(obj =>
                    {
                        sparePart.SetPosition(0);
                        sparePart.UserItemID = string.Empty;
                        return(true);
                    });
                    UserLogHelper.AppendSparePartLog(ContextUser.UserID, sparePart, 3);
                    if (userItem != null && userItem.ItemStatus.Equals(ItemStatus.YongBing))
                    {
                        var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(Uid, userItem.GeneralID);
                        if (userGeneral != null)
                        {
                            userGeneral.RefreshMaxLife();
                        }
                    }
                }
            }
            else if (_ops == 3)
            {
                var sparePart = ContextUser.SparePartList.Find(m => m.UserSparepartID.Equals(_sparepartID));
                if (sparePart != null)
                {
                    var sparePartInfo = new ConfigCacheSet <SparePartInfo>().FindKey(sparePart.SparePartId) ?? new SparePartInfo();
                    ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, sparePartInfo.CoinPrice);
                    ContextUser.UserExtend.UpdateNotify(obj =>
                    {
                        ContextUser.UserExtend.LingshiNum = MathUtils.Addition(ContextUser.UserExtend.LingshiNum, sparePartInfo.LingshiPrice);
                        return(true);
                    });
                    UserLogHelper.AppendSparePartLog(ContextUser.UserID, sparePart, 2);
                    ContextUser.RemoveSparePart(sparePart);
                    //ContextUser.Update();
                }
            }
            return(true);
        }
Exemplo n.º 20
0
        public override bool TakeAction()
        {
            UserItemInfo useritem    = null;
            var          itemPackage = UserItemPackage.Get(ContextUser.UserID);
            var          package     = UserEnchant.Get(ContextUser.UserID);

            if (itemPackage == null || package == null)
            {
                return(false);
            }
            useritem = itemPackage.ItemPackage.Find(m => !m.IsRemove && m.UserItemID == userItemID);
            if (ops == 0)
            {
                int currNum = package.EnchantPackage.FindAll(m => string.IsNullOrEmpty(m.UserItemID)).Count;
                if (currNum >= ContextUser.UserExtend.EnchantGridNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1259_EnchantGridNumFull;
                    return(false);
                }
                var uEnchantInfo = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID);
                if (uEnchantInfo != null && !string.IsNullOrEmpty(uEnchantInfo.UserItemID))
                {
                    useritem = itemPackage.ItemPackage.Find(m => !m.IsRemove && m.UserItemID == uEnchantInfo.UserItemID);
                    uEnchantInfo.Position   = 0;
                    uEnchantInfo.UserItemID = string.Empty;
                    package.SaveEnchant(uEnchantInfo);
                    if (useritem != null && useritem.ItemStatus.Equals(ItemStatus.YongBing))
                    {
                        var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(Uid, useritem.GeneralID);
                        if (userGeneral != null)
                        {
                            userGeneral.RefreshMaxLife();
                        }
                    }
                }
            }
            else if (ops == 1)
            {
                if (useritem == null || useritem.Equparts != EquParts.WuQi)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1259_UserItemNotWuQi;
                    return(false);
                }
                int openGridNum = EnchantHelper.EnchantOpenGridNum(useritem.ItemLv);
                if (potion > openGridNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1213_GridNumNotEnough;
                    return(false);
                }
                var userEnchantArray = package.EnchantPackage.FindAll(m => m.UserItemID == userItemID);
                if (userEnchantArray.Count >= openGridNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1213_OpenNumNotEnough;
                    return(false);
                }
                foreach (var info in userEnchantArray)
                {
                    if (info.Position == potion)
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St1259_EnchantOpenGridFull;
                        return(false);
                    }
                }
                var uEnchantInfo = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID);
                if (uEnchantInfo != null && string.IsNullOrEmpty(uEnchantInfo.UserItemID))
                {
                    uEnchantInfo.Position   = (short)potion;
                    uEnchantInfo.UserItemID = userItemID;
                    package.SaveEnchant(uEnchantInfo);
                    var userGeneral = new GameDataCacheSet <UserGeneral>().FindKey(Uid, useritem.GeneralID);
                    if (userGeneral != null)
                    {
                        userGeneral.RefreshMaxLife();
                    }
                }
            }
            return(true);
        }
Exemplo n.º 21
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);
        }
Exemplo n.º 22
0
        public override bool TakeAction()
        {
            UserHelper.GetFeelHunger(ContextUser.UserID, generalID);
            UserHelper.ChechDailyRestrain(ContextUser.UserID);
            generalInfo = new ShareCacheStruct <GeneralInfo>().FindKey(generalID);
            if (generalInfo != null)
            {
                giftName = GiftHelper.GetGiftTypeName(generalInfo.GiftType);
                if (generalInfo.ReplaceSkills != null)
                {
                    demandLv = generalInfo.ReplaceSkills.FeelLv;
                    AbilityInfo abilityInfo =
                        new ShareCacheStruct <AbilityInfo>().FindKey(generalInfo.ReplaceSkills.AbilityID);
                    if (abilityInfo != null)
                    {
                        skillName = abilityInfo.AbilityName;
                        skillDesc = abilityInfo.AbilityDesc;
                    }
                }
            }
            userGeneral = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);
            if (userGeneral != null)
            {
                FeelLvInfo feelLvInfo = new ShareCacheStruct <FeelLvInfo>().FindKey(userGeneral.FeelLv);
                if (feelLvInfo != null)
                {
                    propertyList = feelLvInfo.Property.ToList();
                }
                short      feelLv       = MathUtils.Addition(userGeneral.FeelLv, (short)1, GiftHelper.maxFeelLv);
                FeelLvInfo upfeelLvInfo = new ShareCacheStruct <FeelLvInfo>().FindKey(feelLv);
                if (upfeelLvInfo != null)
                {
                    upExperience = upfeelLvInfo.Experience;
                }
                if (demandLv > 0 && userGeneral.FeelLv >= demandLv)
                {
                    isLearn = 1;
                }
                else
                {
                    isLearn = 0;
                }
            }

            goldNum = GiftHelper.SurplusGoldNum(ContextUser.UserID);
            int _itemid   = 5050; //消除饱食度物品ID
            var package   = UserItemPackage.Get(ContextUser.UserID);
            var itemArray =
                package.ItemPackage.FindAll(
                    m => m.ItemStatus.Equals(ItemStatus.BeiBao) && m.ItemID.Equals(_itemid));

            if (itemArray.Count > 0)
            {
                isSaturation = 1;
            }
            else
            {
                isSaturation = 0;
            }

            return(true);
        }
Exemplo n.º 23
0
        public override bool TakeAction()
        {
            var cacheSetPack = new PersonalCacheStruct <UserPack>();
            var userPack     = cacheSetPack.FindKey(UserId.ToString());
            var pack         = userPack != null && userPack.PackTypeList != null?userPack.PackTypeList.Find(s => s.BackpackType == BackpackType.BeiBao) : null;

            _gridNum = pack != null ? pack.Position : 0;
            //int sellDate = (ConfigEnvSet.GetInt("UserItemSold.IntervalDate") * 60 * 60);

            var package  = UserItemPackage.Get(Uid);
            var sellItem = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.Sell && m.ItemType.ToInt() == _packType);

            _itemCount = package != null && package.ItemPackage != null
                            ? package.ItemPackage.FindAll(s => s.ItemType != ItemType.ZhuangBei).Count
                            : 0;

            foreach (var item in sellItem)
            {
                UserItemHelper.AddItemLog(ContextUser.UserID, item.ItemID, item.Num, item.ItemLv, 4, item.UserItemID);
                package.RemoveItem(item);
            }

            var itemSortArray = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemStatus == ItemStatus.BeiBao && m.ItemType.ToInt() == _packType);

            itemSortArray.QuickSort((x, y) =>
            {
                int result = 0;
                if (x == null && y == null)
                {
                    return(0);
                }
                if (x != null && y == null)
                {
                    return(1);
                }
                if (x == null)
                {
                    return(-1);
                }

                result = (y.CanUse).CompareTo(x.CanUse);
                if (result == 0)
                {
                    result = ((int)x.ItemType).CompareTo((int)y.ItemType);
                    if (result == 0)
                    {
                        result = x.ItemID.CompareTo(y.ItemID);
                        if (result == 0)
                        {
                            if (x.ItemType == ItemType.ZhuangBei)
                            {
                                UserItemHelper h1 = new UserItemHelper(y);
                                UserItemHelper h2 = new UserItemHelper(x);
                                result            = ((int)h2.QualityType).CompareTo((int)h1.QualityType);
                                if (result == 0)
                                {
                                    result = ((int)y.ItemLv).CompareTo(x.ItemLv);
                                }
                            }
                            else
                            {
                                result = ((int)y.ItemLv).CompareTo(x.ItemLv);
                            }
                        }
                    }
                }
                return(result);
            });

            mlist = itemSortArray.GetPaging(pageIndex, pageSize, out pageCount);
            return(true);
        }
Exemplo n.º 24
0
        public override bool TakeAction()
        {
            ItemBaseInfo itemInfo = new ShareCacheStruct <ItemBaseInfo>().FindKey(medicineID);

            if (itemInfo == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (ops == 1)
            {
                ErrorCode = 1;
                ErrorInfo = string.Format(LanguageManager.GetLang().St11415_ClearMedicine, itemInfo.ItemName, itemInfo.MedicineLv, itemInfo.EffectNum);
                return(false);
            }

            UserGeneral general = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, generalID);

            if (general == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St10006_DoesNotExistTheGeneral;
                return(false);
            }
            var cacheSet = new PersonalCacheStruct <GeneralMedicine>();
            List <GeneralMedicine> generalMedicineArray = cacheSet.FindAll(ContextUser.UserID, g => g.MedicineID.Equals(medicineID) && g.GeneralID == generalID);

            generalMedicineArray.QuickSort((x, y) =>
            {
                if (x == null && y == null)
                {
                    return(0);
                }
                if (x != null && y == null)
                {
                    return(1);
                }
                if (x == null)
                {
                    return(-1);
                }
                return(x.BaseNum.CompareTo(y.BaseNum));
            });
            if (generalMedicineArray.Count <= 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1415_MedicineNum;
                return(false);
            }
            if (UserHelper.IsBeiBaoFull(ContextUser))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1415_GridNumNotEnough;
                return(false);
            }

            //UserItem[] userItemArray = UserItem.FindAll(UserItem.Index_UserID, u => (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu) && u.ItemID == itemID, ContextUser.UserID);
            var package = UserItemPackage.Get(Uid);
            List <UserItemInfo> userItemArray = package.ItemPackage.FindAll(m => !m.IsRemove && m.ItemID == itemID);
            //药剂摘除道不足
            int Num = itemInfo.MedicineLv;

            if (userItemArray.Count <= 0 || UserItemMedicineNum(userItemArray) < Num)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1415_MedicineNum;
                return(false);
            }
            UserItemHelper.UseUserItem(ContextUser.UserID, itemID, Num);
            if (RandomUtils.GetRandom() <= itemInfo.EffectNum)
            {
                short propertyNum = MedicinePropertyNum(ContextUser.UserID, medicineID, generalID);
                switch (itemInfo.MedicineType)
                {
                case 1:
                    general.PowerNum = MathUtils.Subtraction(general.PowerNum, propertyNum);
                    break;

                case 2:
                    general.SoulNum = MathUtils.Subtraction(general.SoulNum, propertyNum);
                    break;

                case 3:
                    general.IntellectNum = MathUtils.Subtraction(general.IntellectNum, propertyNum);
                    break;

                default:
                    general.PowerNum = general.PowerNum;;
                    break;
                }
                //general.Update();
                cacheSet.Delete(generalMedicineArray[0]);
                ErrorCode = 2;
                UserItemHelper.AddUserItem(ContextUser.UserID, medicineID, 1);
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St11415_Clearfail;
                return(false);
            }

            return(true);
        }
Exemplo n.º 25
0
        public override bool TakeAction()
        {
            var package      = UserItemPackage.Get(Uid);
            var userItemList = package.ItemPackage.FindAll(m => !m.IsRemove && m.UserItemID.Equals(_userItemId));

            if (userItemList.Count == 0)
            {
                return(false);
            }
            //原因:卖出装备,装备上有灵件时提示
            int currNum = ContextUser.SparePartList.FindAll(m => m.UserItemID.Equals(_userItemId)).Count;

            if (currNum > 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St7006_UserItemHaveSpare;
                return(false);
            }
            foreach (var userItem in userItemList)
            {
                if (ItemCheck.check(_userItemId))
                {
                    continue;
                }
                if (userItem.ItemStatus == ItemStatus.Sell)
                {
                    package.RemoveItem(userItem);
                    continue;
                }
                if (userItem.ItemStatus != ItemStatus.Sell && userItem.SoldDate > MathUtils.SqlMinDate)
                {
                    userItem.SoldDate = MathUtils.SqlMinDate;
                    //package.Update();
                    continue;
                }
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID);
                if (itemInfo != null)
                {
                    int salePrice;
                    if (itemInfo.ItemType == ItemType.ZhuangBei)
                    {
                        salePrice = UserHelper.StrongEquPayPrice(Uid, userItem.UserItemID);
                    }
                    else
                    {
                        salePrice = (itemInfo.SalePrice * userItem.Num);
                    }
                    _salePrice = salePrice;
                    if (userItem.ItemStatus != ItemStatus.Sell)
                    {
                        ItemCheck.add(_userItemId);
                        UserItemHelper.AddItemLog(ContextUser.UserID, userItem.ItemID, userItem.Num, userItem.ItemLv, 3, userItem.UserItemID);
                        //package.RemoveItem(userItem);
                        package.ItemPackage.Remove(userItem);
                        ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, salePrice, int.MaxValue);
                        //ContextUser.Update();
                    }
                }
            }
            return(true);
        }
Exemplo n.º 26
0
        public override bool TakeAction()
        {
            short        opType            = 0;
            UserItemInfo synthesisUserItem = null;
            var          package           = UserItemPackage.Get(Uid);
            UserItemInfo userItem          = null;

            if (!string.IsNullOrEmpty(_userItemID))
            {
                var userItemList = package.ItemPackage.FindAll(m => !m.IsRemove && m.UserItemID.Equals(_userItemID));
                foreach (var item in userItemList)
                {
                    if (item.ItemStatus == ItemStatus.Sell)
                    {
                        package.RemoveItem(userItem);
                        continue;
                    }
                    else if (item.SoldDate > MathUtils.SqlMinDate)
                    {
                        item.SoldDate = MathUtils.SqlMinDate;
                        //package.Update();
                        userItem = item;
                    }
                    else
                    {
                        userItem = item;
                    }
                }
                if (userItem == null)
                {
                    return(false);
                }
                ItemBaseInfo itemBaseOpType = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID);
                if (itemBaseOpType == null)
                {
                    return(false);
                }
                if (itemBaseOpType.ItemType == ItemType.TuZhi)
                {
                    opType = 1;
                }
                else
                {
                    opType = 2;
                }
            }
            else if (!string.IsNullOrEmpty(_userEquID))
            {
                opType   = 1;
                userItem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(_userEquID));
            }
            if (userItem == null)
            {
                return(false);
            }
            int genlv = ContextUser.UserLv;
            CacheList <SynthesisInfo> synthesisInfoList = new CacheList <SynthesisInfo>();
            short itemLv = 0;
            List <ItemSynthesisInfo> itemSynthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.SynthesisID == userItem.ItemID); //图纸ID

            if (itemSynthesisArray.Count > 0)
            {
                ItemSynthesisInfo synthesisInfo = itemSynthesisArray[0];
                if (synthesisInfo == null)
                {
                    return(false);
                }
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(synthesisInfo.ItemID);
                if (itemInfo != null && itemInfo.ItemType == ItemType.ZhuangBei && itemInfo.DemandLv > genlv)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                    return(false);
                }
                List <ItemSynthesisInfo> synthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.ItemID == synthesisInfo.ItemID);//合成物品的材料数组
                if (synthesisArray.Count == 0)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().LoadDataError;
                    return(false);
                }
                int useGold = GetSytnthesisGold(ContextUser.UserID, synthesisInfo.ItemID);
                if (_ops == 1)
                {
                    #region 普通合成
                    if (!GetMaterialsNum(ContextUser.UserID, synthesisInfo.ItemID) && ContextUser.VipLv < 4)
                    {
                        ErrorCode = 3;
                        ErrorInfo = LanguageManager.GetLang().St1603_MaterialsNotEnough;
                        return(false);
                    }
                    if (!GetMaterialsNum(ContextUser.UserID, synthesisInfo.ItemID) && ContextUser.VipLv >= 4)
                    {
                        ErrorCode = 2;
                        ErrorInfo = LanguageManager.GetLang().St1603_MaterialsNotEnough + "," + string.Format(LanguageManager.GetLang().St1603_SynthesisEnergyNum, useGold);
                        return(false);
                    }
                    foreach (ItemSynthesisInfo synthesis in synthesisArray)
                    {
                        ItemBaseInfo itemsInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(synthesis.SynthesisID);
                        if (itemInfo == null)
                        {
                            return(false);
                        }
                        if (!string.IsNullOrEmpty(_userEquID) && synthesis.SynthesisID == userItem.ItemID && itemsInfo != null && itemInfo.ItemType == ItemType.ZhuangBei)
                        {
                            if (userItem.ItemStatus == ItemStatus.YongBing)
                            {
                                //if (UserHelper.IsItemEquSpare(ContextUser, userItem.UserItemID))
                                //{
                                //    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                //    ErrorInfo = LanguageManager.GetLang().St_ItemEquIndexOfSpare;
                                //    return false;
                                //}
                                if (IsLevelNotEnough(ContextUser, userItem.GeneralID, synthesisInfo.ItemID))
                                {
                                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                    ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                                    return(false);
                                }
                                UserItemHelper.AddItemLog(ContextUser.UserID, userItem.ItemID, userItem.Num, userItem.ItemLv, 9, userItem.UserItemID);
                                synthesisInfoList.Add(new SynthesisInfo()
                                {
                                    DemandID = userItem.ItemID, Num = 1
                                });
                                //package.SyncCache(() =>
                                //{
                                //    userItem.IsRemove = true;
                                //    package.ItemPackage.Remove(userItem);
                                //    package.DelayChange();
                                //});
                            }
                        }
                        else
                        {
                            if (itemsInfo != null && itemsInfo.ItemType == ItemType.ZhuangBei)
                            {
                                synthesisUserItem = GetUserItemInfo(ContextUser.UserID, itemsInfo.ItemID);
                                if (IsLevelNotEnough(ContextUser, synthesisUserItem.GeneralID, synthesisInfo.ItemID))
                                {
                                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                    ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                                    return(false);
                                }
                                //synthesisUserItem = GetUserItemInfo(ContextUser.UserID, itemsInfo.ItemID);
                            }
                            else
                            {
                                synthesisInfoList.Add(new SynthesisInfo()
                                {
                                    DemandID = synthesis.SynthesisID, Num = synthesis.DemandNum
                                });
                                UserItemHelper.UseUserItem(ContextUser.UserID, synthesis.SynthesisID, synthesis.DemandNum);
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(_userEquID))
                    {
                        itemLv = MathUtils.Subtraction(userItem.ItemLv, (short)5, (short)1);
                        UpdateUserItem(synthesisInfo.ItemID, userItem);
                        UserLogHelper.AppenItemSynthesisLog(ContextUser.UserID, opType, synthesisInfo.ItemID, 1, synthesisInfoList, null, 0, itemLv, userItem.ItemLv);
                    }
                    else
                    {
                        if (synthesisUserItem != null)
                        {
                            itemLv = MathUtils.Subtraction(synthesisUserItem.ItemLv, (short)5, (short)1);
                            UpdateUserItem(synthesisInfo.ItemID, synthesisUserItem);
                            UserLogHelper.AppenItemSynthesisLog(ContextUser.UserID, opType, synthesisInfo.ItemID, 1, synthesisInfoList, null, 0, itemLv, userItem.ItemLv);
                        }
                        else
                        {
                            UserItemHelper.AddUserItem(ContextUser.UserID, synthesisInfo.ItemID, synthesisArray[0].SynthesisNum);
                            UserLogHelper.AppenItemSynthesisLog(ContextUser.UserID, opType, synthesisInfo.ItemID, 1, synthesisInfoList, null, 0, itemLv, userItem.ItemLv);
                        }
                    }
                    #endregion
                }
                else if (_ops == 2)
                {
                    #region 晶石合成
                    if (!VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.JuanZouZhiJieWanCheng))
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = LanguageManager.GetLang().St_VipNotEnoughNotFuntion;
                        return(false);
                    }
                    ErrorCode = 1;
                    ErrorInfo = string.Format(LanguageManager.GetLang().St1603_SynthesisEnergyNum, useGold);
                    return(false);

                    #endregion
                }
                else if (_ops == 3)
                {
                    #region 确认晶石合成
                    if (ContextUser.GoldNum < useGold)
                    {
                        ErrorCode = 1;
                        ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                        return(false);
                    }
                    //原因:配置材料不使用晶石合成时提示
                    string userItemName = UseritemGoldName(ContextUser.UserID, synthesisArray);
                    if (!string.IsNullOrEmpty(userItemName))
                    {
                        ErrorCode = LanguageManager.GetLang().ErrorCode;
                        ErrorInfo = string.Format(LanguageManager.GetLang().St_ItemIsGold, userItemName);
                        return(false);
                    }

                    foreach (ItemSynthesisInfo synthesis in synthesisArray)
                    {
                        int          curNum    = 0;
                        ItemBaseInfo itemsInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(synthesis.SynthesisID);
                        if (!string.IsNullOrEmpty(_userEquID) && synthesis.SynthesisID == userItem.ItemID)
                        {
                            if (userItem.ItemStatus == ItemStatus.YongBing)
                            {
                                if (IsLevelNotEnough(ContextUser, userItem.GeneralID, synthesisInfo.ItemID))
                                {
                                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                    ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                                    return(false);
                                }

                                UserItemHelper.AddItemLog(ContextUser.UserID, userItem.ItemID, userItem.Num, userItem.ItemLv, 9, userItem.UserItemID);
                                synthesisInfoList.Add(new SynthesisInfo()
                                {
                                    DemandID = userItem.ItemID, Num = 1
                                });
                            }
                        }
                        else
                        {
                            if (itemsInfo != null && itemsInfo.ItemType == ItemType.ZhuangBei)
                            {
                                synthesisUserItem = GetUserItemInfo(ContextUser.UserID, itemsInfo.ItemID);
                                if (IsLevelNotEnough(ContextUser, synthesisUserItem.GeneralID, synthesisInfo.ItemID))
                                {
                                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                                    ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                                    return(false);
                                }
                            }
                            else
                            {
                                var itemArray = UserItemHelper.GetItems(Uid).FindAll(u => u.ItemID.Equals(synthesis.SynthesisID) && (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu));
                                if (itemArray.Count > 0)
                                {
                                    foreach (var item in itemArray)
                                    {
                                        curNum += item.Num;
                                    }
                                    if (synthesis.DemandNum < curNum)
                                    {
                                        UserItemHelper.UseUserItem(ContextUser.UserID, synthesis.SynthesisID, synthesis.DemandNum);
                                        synthesisInfoList.Add(new SynthesisInfo()
                                        {
                                            DemandID = synthesis.SynthesisID, Num = synthesis.DemandNum
                                        });
                                    }
                                    else
                                    {
                                        UserItemHelper.UseUserItem(ContextUser.UserID, synthesis.SynthesisID, curNum);
                                        synthesisInfoList.Add(new SynthesisInfo()
                                        {
                                            DemandID = synthesis.SynthesisID, Num = curNum
                                        });
                                    }
                                }
                            }
                        }
                    }
                    if (!string.IsNullOrEmpty(_userEquID))
                    {
                        itemLv = MathUtils.Subtraction(userItem.ItemLv, (short)5, (short)1);
                        UpdateUserItem(synthesisInfo.ItemID, userItem);
                        UserLogHelper.AppenItemSynthesisLog(ContextUser.UserID, opType, synthesisInfo.ItemID, 1, synthesisInfoList, null, 0, itemLv, userItem.ItemLv);
                    }
                    else
                    {
                        if (synthesisUserItem != null)
                        {
                            itemLv = MathUtils.Subtraction(synthesisUserItem.ItemLv, (short)5, (short)1);
                            UpdateUserItem(synthesisInfo.ItemID, synthesisUserItem);
                            UserLogHelper.AppenItemSynthesisLog(ContextUser.UserID, opType, synthesisInfo.ItemID, 1, synthesisInfoList, null, 0, itemLv, userItem.ItemLv);
                        }
                        else
                        {
                            UserItemHelper.AddUserItem(ContextUser.UserID, synthesisInfo.ItemID, synthesisArray[0].SynthesisNum);
                            UserLogHelper.AppenItemSynthesisLog(ContextUser.UserID, opType, synthesisInfo.ItemID, 1, synthesisInfoList, null, 0, itemLv, userItem.ItemLv);
                        }
                    }

                    ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, useGold, int.MaxValue);
                    // ContextUser.Update();

                    #endregion
                }
            }
            return(true);
        }
Exemplo n.º 27
0
        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);
        }
Exemplo n.º 28
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 ConfigCacheSet <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 ConfigCacheSet <ItemEquAttrInfo>().FindAll(m => m.ItemID == _useritem.ItemID);
            List <ItemSynthesisInfo> synthsisArray = new ConfigCacheSet <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 ConfigCacheSet <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);
        }
Exemplo n.º 29
0
        public bool UseItem(string userItemID, string userID)
        {
            var package = UserItemPackage.Get(userID);

            if (package == null)
            {
                return(false);
            }
            UserItemInfo useritem = package.ItemPackage.Find(m => !m.IsRemove && m.UserItemID.Equals(userItemID));

            //UserItem useritem = UserItem.FindKey(userItemID);
            if (useritem == null || useritem.Num <= 0)
            {
                content = LanguageManager.GetLang().St1107_UserItemNotEnough;
                return(false);
            }
            GameUser userInfo = new GameDataCacheSet <GameUser>().FindKey(userID);

            if (userInfo == null)
            {
                content = LanguageManager.GetLang().Load_User_Error;
                return(false);
            }
            ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(useritem.ItemID);

            if (itemInfo == null)
            {
                content = LanguageManager.GetLang().St1107_UserItemNotEnough;
                return(false);
            }
            if (itemInfo.ItemType != ItemType.VipItem && itemInfo.DemandLv > userInfo.UserLv)
            {
                content = LanguageManager.GetLang().St_LevelNotEnough;
                return(false);
            }
            int beibaonum = 0;
            int crystalid = 0;
            int sparenum  = 0;

            List <PrizeInfo> prizeInfosArray = itemInfo.ItemPack.ToList();

            foreach (PrizeInfo info in prizeInfosArray)
            {
                if (info.Type == RewardType.CrystalId || info.Type == RewardType.CrystalType)
                {
                    if (info.Reward == 2 && crystalid > 0)
                    {
                        continue;
                    }
                    crystalid++;
                }
                else if (info.Type == RewardType.Item)
                {
                    if (info.Reward == 2 && beibaonum > 0)
                    {
                        continue;
                    }
                    beibaonum++;
                }
                else if (info.Type == RewardType.Spare)
                {
                    if (info.Reward == 2 && sparenum > 0)
                    {
                        continue;
                    }
                    sparenum++;
                }
                //原因:开启礼包消耗的物品
                if (info.DemandItem > 0)
                {
                    int demandItemNum = UserHelper.GetUserItemNum(userID, info.DemandItem);
                    if (demandItemNum < info.DemandNum)
                    {
                        ItemBaseInfo itembaseInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(info.DemandItem);
                        if (itembaseInfo != null)
                        {
                            content = string.Format(LanguageManager.GetLang().St1606_OpenPackLackItem, itembaseInfo.ItemName, itemInfo.ItemName);
                            return(false);
                        }
                    }
                }
            }

            if (beibaonum > 0 && crystalid > 0 && sparenum > 0)
            {
                if (UserHelper.IsBeiBaoFull(userInfo, 0))
                {
                    content = LanguageManager.GetLang().St1107_GridNumFull;
                    return(false);
                }

                if (!UserCrystalInfo.CheckFull(userInfo.UserID, 0))
                {
                    content = LanguageManager.GetLang().St1307_FateBackpackFull;
                    return(false);
                }

                if (UserHelper.IsSpareGridNum(userInfo, 0))
                {
                    content = LanguageManager.GetLang().St1213_GridNumFull;
                    return(false);
                }
            }

            if (beibaonum > 0 && UserHelper.IsBeiBaoFull(userInfo, beibaonum))
            {
                content = LanguageManager.GetLang().St1107_GridNumFull;
                return(false);
            }

            if (crystalid > 0 && !UserCrystalInfo.CheckFull(userInfo.UserID, crystalid))
            {
                content = LanguageManager.GetLang().St1307_FateBackSpaceFull;
                return(false);
            }

            if (sparenum > 0 && UserHelper.IsSpareGridNum(userInfo, sparenum))
            {
                content = LanguageManager.GetLang().St1213_GridNumFull;
                return(false);
            }

            List <PrizeInfo> prize = GetPrizeInfo(itemInfo);

            if (prize.Count == 0)
            {
                content = LanguageManager.GetLang().St1107_UserItemNotEnough;
                return(false);
            }

            if (DoPrize(userInfo, prize))
            {
                UserItemHelper.UseUserItem(userInfo.UserID, useritem.ItemID, 1);
                result = true;
                return(true);
            }
            return(false);
        }