public override bool TakeAction() { var package = UserEnchant.Get(ContextUser.UserID); if (package == null) { return(false); } UserEnchantInfo userEnchantInfo = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID); if (userEnchantInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough; return(false); } EnchantInfo enchant = new ShareCacheStruct <EnchantInfo>().FindKey(userEnchantInfo.EnchantID); EnchantLvInfo enchantLvInfo = new ShareCacheStruct <EnchantLvInfo>().FindKey(userEnchantInfo.EnchantID, userEnchantInfo.EnchantLv); if (enchant != null && enchantLvInfo != null) { ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, enchantLvInfo.CoinPrice); if (ContextUser.UserExtend == null) { ContextUser.UserExtend = new GameUserExtend(); } ContextUser.UserExtend.UpdateNotify(obj => { ContextUser.UserExtend.MoJingNum = MathUtils.Addition(ContextUser.UserExtend.MoJingNum, enchantLvInfo.MoJingPrice); return(true); }); UserLogHelper.AppenEnchantLog(ContextUser.UserID, 1, userEnchantInfo, new CacheList <SynthesisInfo>()); package.RemoveEnchant(userEnchantInfo); } return(true); }
/// <summary> /// 附魔符ID=等级=数量 /// </summary> /// <param name="list"></param> /// <param name="userID"></param> private static void PutEnchant(string[] list, string userID) { var package = UserEnchant.Get(userID); foreach (string enchant in list) { if (string.IsNullOrEmpty(enchant)) { continue; } string[] crystalList = enchant.Split(new char[] { '=' }); int enchantID = crystalList.Length > 0 ? Convert.ToInt32(crystalList[0]) : 0; short enchantLv = crystalList.Length > 1 ? Convert.ToInt16(crystalList[1]) : (short)0; int enchantNum = crystalList.Length > 2 ? Convert.ToInt32(crystalList[2]) : 0; EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(enchantID); var enchantLvInfo = new ShareCacheStruct <EnchantLvInfo>().FindKey(enchantID, enchantLv); if (enchantInfo != null && package != null && enchantLvInfo != null) { for (int i = 0; i < enchantNum; i++) { UserEnchantInfo userenchant = EnchantHelper.GetUserEnchantInfo(enchantID, enchantLv); if (userenchant != null) { UserLogHelper.AppenEnchantLog(userID, 2, userenchant, new CacheList <SynthesisInfo>()); package.SaveEnchant(userenchant); } } } else { new Base.BaseLog().SaveLog("领取附魔符异常", new Exception(string.Format("userID:{3},enchantID:{0},enchantNum:{1},enchantLv:{2}", enchantID, enchantNum, enchantLv, userID))); } } }
public override bool TakeAction() { var syntheList = new CacheList <SynthesisInfo>(); var package = UserEnchant.Get(ContextUser.UserID); if (ops == 1) { UserEnchantInfo userEnchantinfo1 = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID1); UserEnchantInfo userEnchantinfo2 = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID2); if (userEnchantinfo1 == null || userEnchantinfo2 == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough; return(false); } if (userEnchantinfo1.EnchantLv >= GameConfigSet.MaxEnchantLv) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_OutMaxEnchantLv; return(false); } int entExprience1 = 0; int entExprience2 = 0; EnchantInfo enchant1 = new ShareCacheStruct <EnchantInfo>().FindKey(userEnchantinfo1.EnchantID); EnchantInfo enchant2 = new ShareCacheStruct <EnchantInfo>().FindKey(userEnchantinfo2.EnchantID); if (enchant1 != null && enchant2 != null) { entExprience1 = enchant1.Experience; entExprience2 = enchant2.Experience; if (userEnchantinfo1.EnchantLv > userEnchantinfo2.EnchantLv || (userEnchantinfo1.EnchantLv == userEnchantinfo2.EnchantLv && userEnchantinfo1.CurrExprience >= userEnchantinfo2.CurrExprience)) { UpdateEnchant(userEnchantID1, userEnchantID2, entExprience2); syntheList.Add(new SynthesisInfo() { DemandID = userEnchantinfo2.EnchantID, Num = userEnchantinfo2.CurrExprience }); UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, userEnchantinfo1, syntheList); } else { UpdateEnchant(userEnchantID2, userEnchantID1, entExprience1); syntheList.Add(new SynthesisInfo() { DemandID = userEnchantinfo1.EnchantID, Num = userEnchantinfo1.CurrExprience }); UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, userEnchantinfo2, syntheList); } } } else if (ops == 2) { int experience = 0; var enchantArray = package.EnchantPackage.FindAll(m => string.IsNullOrEmpty(m.UserItemID)); if (enchantArray.Count == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNotEnough; return(false); } if (enchantArray.Count == 1) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_EnchantNumNotEnough; return(false); } enchantArray.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.EnchantLv.CompareTo(x.EnchantLv); if (result == 0) { result = y.CurrExprience.CompareTo(x.CurrExprience); } return(result); }); UserEnchantInfo uEnchantInfo = package.EnchantPackage.Find(m => m.UserEnchantID == enchantArray[0].UserEnchantID); if (uEnchantInfo == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1262_EnchantSynthesisNotEnough; return(false); } EnchantLvInfo enchantLvInfo = new ShareCacheStruct <EnchantLvInfo>().FindKey(uEnchantInfo.EnchantID, GameConfigSet.MaxEnchantLv); int maxExprience = enchantLvInfo == null ? 0 : enchantLvInfo.Experience; foreach (var info in enchantArray) { EnchantInfo enchantInfo = new ShareCacheStruct <EnchantInfo>().FindKey(info.EnchantID); if (enchantInfo != null) { experience = enchantInfo.Experience; } if (uEnchantInfo.UserEnchantID != info.UserEnchantID) { if (uEnchantInfo.CurrExprience >= maxExprience) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1256_OutMaxEnchantLv; return(false); } syntheList.Add(new SynthesisInfo() { DemandID = info.EnchantID, Num = info.CurrExprience }); UpdateEnchant(uEnchantInfo.UserEnchantID, info.UserEnchantID, experience); } } UserLogHelper.AppenEnchantLog(ContextUser.UserID, 4, uEnchantInfo, syntheList); } return(true); }
public override bool TakeAction() { var package = UserEnchant.Get(ContextUser.UserID); if (package != null) { var userEnchant = package.EnchantPackage.Find(m => m.UserEnchantID == userEnchantID); if (userEnchant != null) { if (userEnchant.MaxMature >= GameConfigSet.MaxEnchantMature) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1258_OutMaxEnchantMature; return(false); } List <EnchantCulTure> culTuresList = EnchantHelper.EnchantCultureList(); EnchantCulTure enchantCulTure = culTuresList.Find(m => m.CultureType == cultureType); if (enchantCulTure != null) { if (cultureType == EnchantCultureType.Ordinary) { if (ContextUser.UserExtend == null || ContextUser.UserExtend.MoJingNum < enchantCulTure.MoJingNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1258_MagicCrystalNotEnough; return(false); } } else { if (ContextUser.GoldNum < enchantCulTure.GoldNum) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } } string content = string.Empty; if (RandomUtils.IsHit(enchantCulTure.SuccessNum)) { if (cultureType == EnchantCultureType.Ordinary) { ContextUser.UserExtend.MoJingNum = MathUtils.Subtraction(ContextUser.UserExtend.MoJingNum, enchantCulTure.MoJingNum); content = string.Format(LanguageManager.GetLang().St1258_ConsumeMagicCrystalUpEnhance, enchantCulTure.MoJingNum, enchantCulTure.UpMature); } else { ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, enchantCulTure.GoldNum); content = string.Format(LanguageManager.GetLang().St1258_ConsumeGoldNumUpEnhance, enchantCulTure.GoldNum, enchantCulTure.UpMature); } short maxMatureNum = MathUtils.Addition(userEnchant.MaxMature, enchantCulTure.UpMature, (short)GameConfigSet.MaxEnchantMature); userEnchant.UpdateNotify(obj => { userEnchant.MaxMature = maxMatureNum; return(true); }); UserLogHelper.AppenEnchantLog(ContextUser.UserID, 3, userEnchant, new CacheList <SynthesisInfo>()); } else { if (cultureType == EnchantCultureType.Ordinary) { ContextUser.UserExtend.MoJingNum = MathUtils.Subtraction(ContextUser.UserExtend.MoJingNum, enchantCulTure.MoJingNum); content = string.Format(LanguageManager.GetLang().St1258_EnhanceCultureFailedMagicCrystal, enchantCulTure.MoJingNum); } else { ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, enchantCulTure.GoldNum); content = string.Format(LanguageManager.GetLang().St1258_EnhanceCultureFailedGold, enchantCulTure.GoldNum); } } ErrorCode = 0; ErrorInfo = content; } } } return(true); }