Esempio n. 1
0
        private static bool IsGridNumFull(GameUser user)
        {
            int itemid         = 5019;
            var userItemsArray = UserItemHelper.GetItems(user.UserID).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);

            if (userItemsArray.Count < user.GridNum)
            {
                UserItemHelper.AddUserItem(user.UserID, itemid, 1);
                return(true);
            }
            return(false);
        }
Esempio n. 2
0
        public override void BuildPacket()
        {
            PushIntoStack(itemInfo == null ? 0 : itemInfo.ItemID);
            PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
            PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
            PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : (short)itemInfo.QualityType);
            PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.DemandLv);
            PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.MedicineLv);
            PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.MedicineType);
            PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : itemInfo.MedicineNum);

            PushIntoStack(equAttrInfo.Count);
            foreach (ItemEquAttrInfo equ in equAttrInfo)
            {
                DataStruct dsItem = new DataStruct();
                dsItem.PushIntoStack(equ.AttributeID.ToShort());
                dsItem.PushIntoStack(equ.BaseNum);

                PushIntoStack(dsItem);
            }

            PushIntoStack(synthesisArray.Count);
            foreach (ItemSynthesisInfo synthesis in synthesisArray)
            {
                ItemBaseInfo item          = new ConfigCacheSet <ItemBaseInfo>().FindKey(synthesis.SynthesisID);
                var          userItemArray = UserItemHelper.GetItems(Uid).FindAll(u => u.ItemID.Equals(synthesis.SynthesisID) && u.ItemStatus != ItemStatus.Sell && new UserItemHelper(u).GeneralStatus(Uid) != GeneralStatus.LiDui);
                int          maxNum        = 0;
                int          sumNum        = 0;
                foreach (var userItem in userItemArray)
                {
                    sumNum += userItem.Num;
                }
                if (sumNum >= synthesis.DemandNum)
                {
                    maxNum = synthesis.DemandNum;
                }
                else
                {
                    maxNum = sumNum;
                }
                DataStruct ds = new DataStruct();
                ds.PushIntoStack(synthesis.SynthesisID);
                ds.PushIntoStack(item == null ? string.Empty : item.ItemName.ToNotNullString());
                ds.PushIntoStack(item == null ? string.Empty : item.HeadID.ToNotNullString());
                ds.PushIntoStack(maxNum);
                ds.PushIntoStack(synthesis.DemandNum);
                ds.PushIntoStack(0);
                this.PushIntoStack(ds);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 被合成的装备
        /// </summary>
        /// <param name="userID"></param>
        /// <param name="itemID"></param>
        /// <returns></returns>
        public static UserItemInfo GetUserItemInfo(string userID, int itemID)
        {
            UserItemInfo userItemInfo   = null;
            var          userItemsArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID == itemID && (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu));

            if (userItemsArray.Count == 0)
            {
                userItemsArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID == itemID && u.ItemStatus == ItemStatus.YongBing && new UserItemHelper(u).GeneralStatus(userID) != GeneralStatus.LiDui);
            }
            if (userItemsArray.Count > 0)
            {
                userItemInfo = userItemsArray[0];
            }
            return(userItemInfo);
        }
Esempio n. 4
0
        /// <summary>
        /// 是否有装备
        /// </summary>
        /// <returns></returns>
        public static bool IsHaveEqu(string userID, int itemID)
        {
            bool isequ = false;
            List <ItemSynthesisInfo> synthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(u => u.ItemID.Equals(itemID));//合成物品的材料数组

            foreach (ItemSynthesisInfo synthesis in synthesisArray)
            {
                var itemArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID.Equals(synthesis.SynthesisID) && u.ItemStatus != ItemStatus.Sell && u.ItemType == ItemType.ZhuangBei && new UserItemHelper(u).GeneralStatus(userID) != GeneralStatus.LiDui);
                if (itemArray.Count > 0)
                {
                    isequ = true;
                    break;
                }
            }
            return(isequ);
        }
Esempio n. 5
0
        public static int GetSytnthesisGold(string userID, int itemID)
        {
            int useGold = 0;
            List <ItemSynthesisInfo> synthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.ItemID == itemID); //.FindAll(u => u.ItemID.Equals(itemID));//合成物品的材料数组)

            foreach (ItemSynthesisInfo synthesis in synthesisArray)
            {
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(synthesis.SynthesisID);
                if (itemInfo == null)
                {
                    return(0);
                }
                if (!itemInfo.IsGold)
                {
                    useGold = MathUtils.Addition(useGold, 0);
                    continue;
                }
                var itemArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID.Equals(itemInfo.ItemID) && (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu));
                if (itemArray.Count > 0)
                {
                    int curNum = 0;
                    foreach (var item in itemArray)
                    {
                        curNum = MathUtils.Addition(curNum, item.Num, int.MaxValue);
                    }
                    if (synthesis.DemandNum <= curNum)
                    {
                        //useGold = useGold;
                    }
                    else
                    {
                        useGold = MathUtils.Addition(useGold, (MathUtils.Subtraction(synthesis.DemandNum, curNum, 0) * itemInfo.DemandEnergy), int.MaxValue);
                    }
                }
                else
                {
                    useGold = MathUtils.Addition(useGold, (synthesis.DemandNum * itemInfo.DemandEnergy), int.MaxValue);
                }
            }
            return(useGold);
        }
Esempio n. 6
0
        public static bool GetMaterialsNum(string userID, int itemID)
        {
            bool isNotEnough = true;
            List <ItemSynthesisInfo> synthesisArray = new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.ItemID == itemID);//合成物品的材料数组

            foreach (ItemSynthesisInfo itemSyn in synthesisArray)
            {
                ItemBaseInfo itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(itemSyn.SynthesisID);
                if (itemInfo == null)
                {
                    return(false);
                }
                // List<UserItem> itemsList = new List<UserItem>(UserItem.FindAll(UserItem.Index_UserID, u => u.ItemID == itemInfo.ItemID, userID));
                //UserItem[] itemArray = itemsList.FindAll(m => m.ItemStatus != ItemStatus.Sell&&m.);

                var itemArray = UserItemHelper.GetItems(userID).FindAll(u => u.ItemID == itemInfo.ItemID && u.ItemStatus != ItemStatus.Sell && new UserItemHelper(u).GeneralStatus(userID) != GeneralStatus.LiDui);

                if (itemArray.Count > 0)
                {
                    int curNum = 0;
                    foreach (var item in itemArray)
                    {
                        curNum += item.Num;
                    }
                    if (itemSyn.DemandNum <= curNum)
                    {
                        continue;
                    }
                    else
                    {
                        isNotEnough = false;
                    }
                }
                else
                {
                    isNotEnough = false;
                }
            }
            return(isNotEnough);
        }
Esempio n. 7
0
        /// <summary>
        /// 装备的属性值
        /// </summary>
        /// <returns></returns>
        public static decimal GetEquNum(string userID, int generalID, AbilityType abilityType)
        {
            int     valueNum      = 0;
            decimal equSumNum     = 0;
            var     userItemArray = UserItemHelper.GetItems(userID).FindAll(u => u.GeneralID.Equals(generalID) && u.ItemStatus == ItemStatus.YongBing);

            foreach (var item in userItemArray)
            {
                //ItemBaseInfo itemInfo = new ShareCacheStruct<ItemBaseInfo>().FindKey(item.ItemID);
                var itemEquArray = new ShareCacheStruct <ItemEquAttrInfo>().FindAll(m => m.ItemID == item.ItemID);
                foreach (ItemEquAttrInfo equ in itemEquArray)
                {
                    if (equ.AttributeID == abilityType)
                    {
                        valueNum  = MathUtils.Addition(equ.BaseNum, (equ.IncreaseNum * item.ItemLv), int.MaxValue);
                        equSumNum = MathUtils.Addition(equSumNum, valueNum, int.MaxValue);
                        break;
                    }
                }
                //灵件配置
                var user = new PersonalCacheStruct <GameUser>().FindKey(userID);
                if (user != null)
                {
                    var sparepartList = user.SparePartList.FindAll(m => m.UserItemID.Equals(item.UserItemID));
                    foreach (var sparepart in sparepartList)
                    {
                        foreach (var property in sparepart.Propertys)
                        {
                            if (property.AbilityType == abilityType)
                            {
                                equSumNum = MathUtils.Addition(equSumNum, property.Num.ToDecimal(), decimal.MaxValue);
                            }
                        }
                    }
                }
            }
            return(equSumNum);
        }
Esempio n. 8
0
        public override void BuildPacket()
        {
            PushIntoStack(_coldTime);
            PushIntoStack(_userGeneralArray.Count);
            foreach (UserGeneral general in _userGeneralArray)
            {
                UserGeneral         general1      = general;
                List <UserItemInfo> userItemArray = UserItemHelper.GetItems(Uid).FindAll(u => u.GeneralID.Equals(general1.GeneralID) && u.ItemStatus == ItemStatus.YongBing);
                userItemArray.QuickSort((x, y) =>
                {
                    if (x == null && y == null)
                    {
                        return(0);
                    }
                    if (x != null && y == null)
                    {
                        return(1);
                    }
                    if (x == null)
                    {
                        return(-1);
                    }
                    return(new ConfigCacheSet <ItemBaseInfo>().FindKey(x.ItemID).EquParts.CompareTo(new ConfigCacheSet <ItemBaseInfo>().FindKey(y.ItemID).EquParts));
                });

                DataStruct ds = new DataStruct();
                ds.PushIntoStack(general == null ? 0 : general.GeneralID);
                ds.PushIntoStack(general == null ? string.Empty : general.GeneralName.ToNotNullString());
                // List<UserItem> itemList = userItemDict.ContainsKey(general.UserID) ? userItemDict[general.UserID] : new List<UserItem>();

                ds.PushIntoStack(userItemArray.Count);
                foreach (UserItemInfo userItem in userItemArray)
                {
                    int   equCodeTime = ConfigEnvSet.GetInt("UserItem.EquColdTime");
                    short isStrong    = 0;
                    int   strongMoney = new UserItemHelper(userItem).StrongMoney;
                    if (strongMoney > ContextUser.GameCoin)
                    {
                        isStrong = 1;
                    }
                    else if (userItem.ItemLv >= general.GeneralLv)
                    {
                        isStrong = 2;
                    }
                    ItemBaseInfo             itemInfo = new ConfigCacheSet <ItemBaseInfo>().FindKey(userItem.ItemID);
                    List <ItemSynthesisInfo> itemSynthesisInfosArray =
                        new ConfigCacheSet <ItemSynthesisInfo>().FindAll(m => m.SynthesisID == userItem.ItemID);
                    if (itemSynthesisInfosArray.Count > 0 && itemInfo.DemandLv <= ContextUser.UserLv)
                    {
                        isSynthesis = 1;
                    }
                    else
                    {
                        isSynthesis = 2;
                    }

                    DataStruct dsItem = new DataStruct();
                    dsItem.PushIntoStack(userItem.UserItemID);
                    dsItem.PushIntoStack(itemInfo == null ? 0 : itemInfo.ItemID);
                    dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.ItemName.ToNotNullString());
                    dsItem.PushIntoStack(itemInfo == null ? string.Empty : itemInfo.HeadID.ToNotNullString());
                    dsItem.PushIntoStack(userItem.ItemLv);
                    dsItem.PushIntoStack(itemInfo == null ? LanguageManager.GetLang().shortInt : (short)itemInfo.QualityType);
                    dsItem.PushIntoStack(strongMoney);
                    dsItem.PushIntoStack(equCodeTime);
                    dsItem.PushIntoStack(isStrong);
                    dsItem.PushIntoStack(isSynthesis);

                    if (itemInfo != null)
                    {
                        List <ItemEquAttrInfo> itemEquArray = new ConfigCacheSet <ItemEquAttrInfo>().FindAll(e => e.ItemID.Equals(itemInfo.ItemID));
                        dsItem.PushIntoStack(itemEquArray.Count);
                        foreach (ItemEquAttrInfo equ in itemEquArray)
                        {
                            DataStruct dsDetail = new DataStruct();
                            dsDetail.PushIntoStack((int)equ.AttributeID);
                            int baseNum;
                            {
                                baseNum = MathUtils.Addition(equ.BaseNum, userItem.ItemLv * equ.IncreaseNum, int.MaxValue);
                            }
                            dsDetail.PushIntoStack(baseNum);
                            dsItem.PushIntoStack(dsDetail);
                        }

                        dsItem.PushIntoStack(itemEquArray.Count);
                        foreach (ItemEquAttrInfo equ in itemEquArray)
                        {
                            DataStruct dsDetail = new DataStruct();
                            dsDetail.PushIntoStack((int)equ.AttributeID);
                            int baseNum;
                            {
                                baseNum = MathUtils.Addition(equ.BaseNum, (int)(MathUtils.Addition(userItem.ItemLv, (short)1, short.MaxValue)) * equ.IncreaseNum, int.MaxValue);
                            }
                            dsDetail.PushIntoStack(baseNum);
                            dsItem.PushIntoStack(dsDetail);
                        }
                    }

                    ds.PushIntoStack(dsItem);
                }

                PushIntoStack(ds);
            }
            PushIntoStack(queueID);
        }
Esempio n. 9
0
        public override bool TakeAction()
        {
            UserQueue userQueue = null;
            int       energyNum;
            int       coleTime  = GetSweepColdTime(out energyNum);
            short     surEnergy = MathUtils.Addition(ContextUser.EnergyNum, ContextUser.SurplusEnergy, short.MaxValue);

            if ((ContextUser.EnergyNum == 0 && ContextUser.SurplusEnergy == 0) || surEnergy < energyNum)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough;
                return(false);
            }
            int goldNum = GetGoldNum(out userQueue);

            if (goldNum == 0)
            {
                return(false);
            }
            if (ops == 1)
            {
                //提示晶石操作
                ErrorCode = ops;
                ErrorInfo = string.Format(LanguageManager.GetLang().St4008_Tip, goldNum);
            }
            else if (ops == 2)
            {
                //使用晶石确认操作
                int userGoldNum = ContextUser.GoldNum;
                if (userGoldNum < goldNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }
                //晶石扫荡
                if (userQueue != null)
                {
                    DoAccelerateQueue(goldNum, userQueue.DoRefresh(), userQueue.GetTiming(), userQueue.TotalColdTime);
                    //加速完清除队列
                    var queueCacheSet = new PersonalCacheStruct <UserQueue>();
                    queueCacheSet.Delete(userQueue);
                    ContextUser.ResetSweepPool(0);
                    //ContextUser.Update();
                }
                else
                {
                    //清除扫荡池
                    var sweepCacheSet = new PersonalCacheStruct <UserSweepPool>();
                    List <UserSweepPool> sweepPoolList = sweepCacheSet.FindAll(ContextUser.UserID);
                    foreach (UserSweepPool sweepPool in sweepPoolList)
                    {
                        if (sweepPool != null)
                        {
                            sweepCacheSet.Delete(sweepPool);
                        }
                    }
                    var itemList = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);
                    if (itemList.Count >= ContextUser.GridNum)
                    {
                        this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                        this.ErrorInfo = LanguageManager.GetLang().St4007_BeiBaoTimeOut;
                        return(false);
                    }
                    DoAccelerateQueue(goldNum, coleTime, 0, coleTime);
                }
                DateTime startDate = userQueue != null ? userQueue.Timing : DateTime.Now;
                UserLogHelper.AppenRaidsLog(ContextUser.UserID, 2, startDate, DateTime.Now, (short)GetSweepEnergy(out energyNum), goldNum);
            }
            else
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            return(true);
        }
Esempio n. 10
0
        public override bool TakeAction()
        {
            List <PlotNPCInfo> plotNPCInfoList = new ConfigCacheSet <PlotNPCInfo>().FindAll(m => m.PlotID == plotID);

            npcCount = (short)plotNPCInfoList.Count;
            var cacheSet = new GameDataCacheSet <UserQueue>();
            List <UserQueue> userQueueList = cacheSet.FindAll(ContextUser.UserID, m => m.QueueType == QueueType.SaoDang);

            if (userQueueList.Count > 0)
            {
                UserQueue userQueue = userQueueList[0];
                coldTime = userQueue.DoRefresh();
                if (coldTime == 0)
                {
                    cacheSet.Delete(userQueue);
                    ContextUser.ResetSweepPool(0);
                    ContextUser.UserStatus = UserStatus.Normal;
                    //ContextUser.Update();
                }
                int tempNum = PlotHelper.GetBattleNum(userQueue.GetTiming()) + 1;
                if (npcCount > 0)
                {
                    turnsNum = PlotHelper.GetTurnsNum(npcCount, tempNum);
                    timesNum = PlotHelper.GetTimesNum(npcCount, tempNum);
                }
                //PlotHelper.CheckSweepCount(npcCount, userQueue.GetTiming(), out turnsNum, out battleNum);

                //if (battleNum >= npcCount)
                //{
                //    turnsNum = turnsNum + 1;
                //}
                //else
                //{
                //    battleNum = battleNum + 1;
                //}
            }
            userItemCount = (short)UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao).Count;
            plotInfo      = new ConfigCacheSet <PlotInfo>().FindKey(plotID);
            if (plotInfo == null)
            {
                return(false);
            }
            foreach (PlotNPCInfo npcInfo in plotNPCInfoList)
            {
                if (npcInfo == null)
                {
                    continue;
                }
                List <PlotEmbattleInfo> embattleInfoList = new ConfigCacheSet <PlotEmbattleInfo>().FindAll(m => m.PlotNpcID == npcInfo.PlotNpcID);
                foreach (PlotEmbattleInfo embattleInfo in embattleInfoList)
                {
                    if (monsterDict.ContainsKey(embattleInfo.MonsterID))
                    {
                        if (monsterNumDict.ContainsKey(embattleInfo.MonsterID))
                        {
                            monsterNumDict[embattleInfo.MonsterID] = monsterNumDict[embattleInfo.MonsterID] + 1;
                        }
                    }
                    else
                    {
                        MonsterInfo monsterInfo = new ConfigCacheSet <MonsterInfo>().FindKey(embattleInfo.MonsterID);
                        if (monsterInfo != null)
                        {
                            monsterDict.Add(embattleInfo.MonsterID, monsterInfo);
                            monsterNumDict.Add(embattleInfo.MonsterID, 1);
                        }
                    }
                }
            }
            return(true);
        }
Esempio n. 11
0
        public override bool TakeAction()
        {
            ItemBaseInfo itemInfo      = new ShareCacheStruct <ItemBaseInfo>().FindKey(medicineID);
            var          userItemArray = UserItemHelper.GetItems(Uid).FindAll(u => (u.ItemStatus == ItemStatus.BeiBao || u.ItemStatus == ItemStatus.CangKu));

            if (userItemArray.Count == 0)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St1407_MedicineNum;
                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);
            }
            if (itemInfo.DemandLv > general.GeneralLv)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St_LevelNotEnough;
                return(false);
            }

            int   sum     = 0;
            short baseNum = 0;
            //佣兵服用ID为medicineID的丹药
            var generalMedicineArray = new PersonalCacheStruct <GeneralMedicine>().FindAll(ContextUser.UserID, g => g.MedicineID.Equals(medicineID) && g.GeneralID == generalID);

            if (generalMedicineArray.Count > 0)
            {
                int mLv  = itemInfo.MedicineLv;
                int mNum = generalMedicineArray.Count;
                if (mLv == 1 && mNum >= 2 || mLv == 2 && mNum >= 3 || mLv == 3 && mNum >= 4 || mLv == 4 && mNum >= 5 || mLv == 5 && mNum >= 6 || mLv == 6 && mNum >= 7)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1407_MedicineNumFull;
                    return(false);
                }

                sum     = mNum * 5; //
                baseNum = MathUtils.Subtraction(itemInfo.MedicineNum, (short)sum, (short)0);
            }
            else
            {
                baseNum = itemInfo.MedicineNum;
            }

            //vip
            int useGold = 0;

            int[] vipMeArray = { 30, 150, 300, 600, 1200, 2400 };
            for (int i = 1; i <= vipMeArray.Length; i++)
            {
                if (itemInfo.MedicineLv == i)
                {
                    useGold = vipMeArray[i - 1];
                }
            }

            if (ops == 0)
            {
                GeneralMedicine generalMedicine = new GeneralMedicine()
                {
                    GeneralMedicineID = Guid.NewGuid().ToString(),
                    UserID            = ContextUser.UserID,
                    GeneralID         = generalID,
                    MedicineID        = medicineID,
                    BaseNum           = (int)baseNum
                };
                var cacheSet = new PersonalCacheStruct <GeneralMedicine>();
                cacheSet.Add(generalMedicine);

                UserItemHelper.UseUserItem(ContextUser.UserID, itemInfo.ItemID, 1);

                if (itemInfo.MedicineType == 1)
                {
                    general.PowerNum = MathUtils.Addition(general.PowerNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 2)
                {
                    general.SoulNum = MathUtils.Addition(general.SoulNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 3)
                {
                    general.IntellectNum = MathUtils.Addition(general.IntellectNum, baseNum, short.MaxValue);
                }
                //general.Update();
            }
            else if (ops == 1)
            {
                ErrorCode = 1;
                ErrorInfo = string.Format(LanguageManager.GetLang().St1407_MedicineUseGold, useGold);
                return(false);
            }
            else if (ops == 2)
            {
                if (ContextUser.GoldNum < useGold)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough;
                    return(false);
                }

                GeneralMedicine generalMedicine = new GeneralMedicine()
                {
                    GeneralMedicineID = Guid.NewGuid().ToString(),
                    UserID            = ContextUser.UserID,
                    GeneralID         = generalID,
                    MedicineID        = medicineID,
                    BaseNum           = (int)baseNum
                };
                var cacheSet = new PersonalCacheStruct <GeneralMedicine>();
                cacheSet.Add(generalMedicine);

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

                if (itemInfo.MedicineType == 1)
                {
                    general.PowerNum = MathUtils.Addition(general.PowerNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 2)
                {
                    general.SoulNum = MathUtils.Addition(general.SoulNum, baseNum, short.MaxValue);
                }
                else if (itemInfo.MedicineType == 3)
                {
                    general.IntellectNum = MathUtils.Addition(general.IntellectNum, baseNum, short.MaxValue);
                }
                //general.Update();
            }
            else
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().UrlElement;
                return(false);
            }
            return(true);
        }
Esempio n. 12
0
        public override bool TakeAction()
        {
            //判断充值礼包是否开启
            FestivalInfo festivalInfo = new ShareCacheStruct <FestivalInfo>().FindKey(festivalID);

            if (festivalInfo != null && !festivalInfo.IsStop)
            {
                return(false);
            }

            UserRecharge         recharges   = new GameDataCacheSet <UserRecharge>().FindKey(ContextUser.UserID);
            RechargePacks        rePacksInfo = new ConfigCacheSet <RechargePacks>().FindKey(_packsID);
            List <PackageReward> rewardArray = new List <PackageReward>();

            if (rePacksInfo != null)
            {
                rewardArray = rePacksInfo.Reward.ToList();
                var userItemArray = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);
                int subPackNum    = MathUtils.Subtraction(ContextUser.GridNum, userItemArray.Count, 0);
                if (rewardArray.Count > subPackNum)
                {
                    ErrorCode = LanguageManager.GetLang().ErrorCode;
                    ErrorInfo = LanguageManager.GetLang().St1606_GridNumNotEnough;
                    return(false);
                }
            }
            else
            {
                return(false);
            }
            if (!isRecevies(ContextUser.UserID, _packsID))
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived;
                return(false);
            }
            List <PackageReceive> receiveArray = new GameDataCacheSet <PackageReceive>().FindAll(ContextUser.UserID, m => m.PacksID == _packsID);

            bool           isRece   = false;
            PackageReceive pReceive = null;

            foreach (PackageReceive receive in receiveArray)
            {
                if (!receive.IsReceive)
                {
                    isRece            = true;
                    receive.IsReceive = true;
                    pReceive          = receive;
                    break;
                }
            }
            if (pReceive == null)
            {
                ErrorCode = LanguageManager.GetLang().ErrorCode;
                ErrorInfo = LanguageManager.GetLang().St9003_AlreadyReceived;
                return(false);
            }


            pReceive.IsReceive   = true;
            pReceive.ReceiveDate = DateTime.Now;
            //pReceive.Update();


            if (pReceive.PacksType == 1 && recharges != null && isRece)
            {
                int totalPay = (int)(recharges.FirstNum * rePacksInfo.ProportionNum);
                if (totalPay >= 1)
                {
                    ContextUser.ItemGold = MathUtils.Addition(ContextUser.ItemGold, totalPay, int.MaxValue);
                    //ContextUser.Update();
                }
                //ContextUser.PayGold = ContextUser.PayGold.Addition(recharges.FirstNum, int.MaxValue);

                foreach (PackageReward reward in rewardArray)
                {
                    UserItemHelper.AddUserItem(ContextUser.UserID, reward.Num, 1);
                }
            }
            else if (recharges != null && isRece)
            {
                foreach (PackageReward reward in rewardArray)
                {
                    if (reward.Type == 2)
                    {
                        ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 3)
                    {
                        ContextUser.ExpNum = MathUtils.Addition(ContextUser.ExpNum, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 4)
                    {
                        ContextUser.ObtainNum = MathUtils.Addition(ContextUser.ObtainNum, reward.Num, int.MaxValue);
                    }
                    else if (reward.Type == 5)
                    {
                        ContextUser.EnergyNum = MathUtils.Addition(ContextUser.EnergyNum, reward.Num.ToShort(), short.MaxValue);
                    }
                    else if (reward.Type == 6)
                    {
                        GameUserExtend extend = ContextUser.UserExtend;
                        extend.GainBlessing = MathUtils.Addition(extend.GainBlessing, reward.Num, int.MaxValue);

                        //List<GuildMember> memberArray = new ShareCacheStruct<GuildMember>().FindAll(m => m.UserID ==  ContextUser.UserID);
                        //if (memberArray.Length > 0)
                        //{
                        //    memberArray[0].GainBlessing = memberArray[0].GainBlessing.Addition(reward.Num, int.MaxValue);
                        //    memberArray[0].Update();
                        //}
                    }
                    //ContextUser.Update();
                }
            }

            PackageReceiveLog receiveLog = new PackageReceiveLog()
            {
                LogID       = Guid.NewGuid().ToString(),
                ReceiveID   = receiveArray[0].ReceiveID,
                PacksID     = _packsID,
                UserID      = ContextUser.UserID,
                ReceiveDate = DateTime.Now,
            };
            var sender = DataSyncManager.GetDataSender();

            sender.Send(receiveLog);
            return(true);
        }
Esempio n. 13
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);
        }
Esempio n. 14
0
        public override bool TakeAction()
        {
            List <UserQueue> queueList = new PersonalCacheStruct <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.SaoDang);

            if (queueList.Count > 0)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St4007_Saodanging;
                return(false);
            }
            var itemList = UserItemHelper.GetItems(Uid).FindAll(m => m.ItemStatus == ItemStatus.BeiBao);

            if (itemList.Count >= ContextUser.GridNum)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St4007_BeiBaoTimeOut;
                return(false);
            }
            List <PlotNPCInfo> npcList = new ShareCacheStruct <PlotNPCInfo>().FindAll(m => m.PlotID == plotID);
            //战斗次数
            int plotNpcNum = npcList.Count;
            int energyNum  = 0;
            int battleNum;

            if (ops == 1)
            {
                //用尽精力,玩家可扫荡轮数
                energyNum = ContextUser.EnergyNum > 200 ? 200 : ContextUser.EnergyNum.ToInt();
                int userTurnsNum = (int)Math.Floor((double)energyNum / PlotInfo.BattleEnergyNum);
                battleNum = userTurnsNum * plotNpcNum;
                coldTime  = battleNum * PlotInfo.BattleSpeedNum;
            }
            else if (ops == 2)
            {
                //30分钟
                coldTime  = Time_30;
                battleNum = PlotHelper.GetBattleNum(Time_30);
                energyNum = PlotHelper.GetTurnsNum(plotNpcNum, battleNum) * PlotInfo.BattleEnergyNum;
            }
            else if (ops == 3)
            {
                //60分钟
                coldTime  = Time_60;
                battleNum = PlotHelper.GetBattleNum(Time_60);
                energyNum = PlotHelper.GetTurnsNum(plotNpcNum, battleNum) * PlotInfo.BattleEnergyNum;
            }
            else
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                return(false);
            }
            if (ContextUser.EnergyNum == 0 || ContextUser.EnergyNum < energyNum)
            {
                this.ErrorCode = LanguageManager.GetLang().ErrorCode;
                this.ErrorInfo = LanguageManager.GetLang().St_EnergyNotEnough;
                return(false);
            }
            //清除扫荡池
            var sweepCacheSet = new PersonalCacheStruct <UserSweepPool>();
            List <UserSweepPool> sweepPoolList = sweepCacheSet.FindAll(ContextUser.UserID);

            foreach (UserSweepPool sweepPool in sweepPoolList)
            {
                if (sweepPool != null)
                {
                    sweepCacheSet.Delete(sweepPool);
                }
            }

            if (coldTime > 0)
            {
                //在开始战斗时扣一次玩家精力,无战斗离开返还
                ContextUser.ResetSweepPool(plotID);
                //开始扫荡暂不扣精力
                //ContextUser.RemoveEnergyNum(PlotInfo.BattleEnergyNum);
                ContextUser.UserStatus = UserStatus.SaoDang;
                //ContextUser.Update();

                //放入队列中
                UserQueue userQueue = new UserQueue()
                {
                    QueueID       = Guid.NewGuid().ToString(),
                    UserID        = ContextUser.UserID,
                    QueueType     = QueueType.SaoDang,
                    QueueName     = QueueType.SaoDang.ToString(),
                    TotalColdTime = coldTime,
                    Timing        = DateTime.Now,
                    ColdTime      = coldTime,
                    IsSuspend     = false
                };
                new PersonalCacheStruct <UserQueue>().Add(userQueue);
            }
            return(true);
        }