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); }
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); } }
/// <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); }
/// <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); }
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); }
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); }
/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }