public override bool TakeAction() { int saleNum = 0; if (ops == 1) { var package = UserCrystalPackage.Get(Uid); UserCrystalInfo userCrystal = package.CrystalPackage.Find(m => m.UserCrystalID.Equals(userCrystalID)); if (userCrystal != null) { totalPrice = (new ConfigCacheSet <CrystalInfo>().FindKey(userCrystal.CrystalID) ?? new CrystalInfo()).Price; ContextUser.GameCoin = MathUtils.Addition(ContextUser.GameCoin, totalPrice, int.MaxValue); //ContextUser.Update(); UserLogHelper.AppenCtystalLog(ContextUser.UserID, 4, userCrystal.CrystalID, totalPrice, 0, null, userCrystal.CrystalLv, userCrystal.CurrExprience); package.RemoveCrystal(userCrystal); } else { CrystalHelper.SellGrayCrystal(ContextUser, userCrystalID, out saleNum); } } else if (ops == 2) { CrystalHelper.SellGrayCrystal(ContextUser, null, out saleNum); } else { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().ServerBusy; return(false); } return(true); }
/// <summary> /// 合成水晶 /// </summary> /// <param name="userCryStal1"></param> /// <param name="userCryStal2"></param> /// <param name="cryExprience2"></param> private void UpdateCrystal(string _userCrystalID1, string _userCrystalID2, int cryExprience2) { var package = UserCrystalPackage.Get(Uid); UserCrystalInfo userCryStalInfo1 = package.CrystalPackage.Find(m => m.UserCrystalID.Equals(_userCrystalID1)); UserCrystalInfo userCryStalInfo2 = package.CrystalPackage.Find(m => m.UserCrystalID.Equals(_userCrystalID2)); CacheList <SynthesisInfo> SynList = new CacheList <SynthesisInfo>(); SynList.Add(new SynthesisInfo() { DemandID = userCryStalInfo2.CrystalID, Num = userCryStalInfo2.CurrExprience }); userCryStalInfo1.CurrExprience = MathUtils.Addition(userCryStalInfo1.CurrExprience, cryExprience2); userCryStalInfo1.CurrExprience = MathUtils.Addition(userCryStalInfo1.CurrExprience, userCryStalInfo2.CurrExprience); package.SaveCrystal(userCryStalInfo1); //package.DelayChange(); UserHelper.CheckCrystalEscalate(ContextUser.UserID, userCryStalInfo1.UserCrystalID); UserLogHelper.AppenCtystalLog(ContextUser.UserID, 3, userCryStalInfo1.CrystalID, 0, 0, SynList, userCryStalInfo1.CrystalLv, userCryStalInfo1.CurrExprience); package.RemoveCrystal(userCryStalInfo2); }
public override bool TakeAction() { var package = UserCrystalPackage.Get(Uid); if (ops == 1) { UserCrystalInfo userCryStal1 = package.CrystalPackage.Find(m => m.UserCrystalID.Equals(userCrystalID1)); UserCrystalInfo userCryStal2 = package.CrystalPackage.Find(m => m.UserCrystalID.Equals(userCrystalID2)); // UserCrystal userCryStal1 = UserCrystal.FindKey(userCrystalID1); //UserCrystal userCryStal2 = UserCrystal.FindKey(userCrystalID2); if (userCryStal1 == null || userCryStal2 == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1308_CrystalNotEnough; return(false); } if (userCryStal1.CrystalLv > 9) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1308_CrystalLvFull; return(false); } CrystalInfo crystalInfo1 = new ShareCacheStruct <CrystalInfo>().FindKey(userCryStal1.CrystalID); CrystalInfo crystalInfo2 = new ShareCacheStruct <CrystalInfo>().FindKey(userCryStal2.CrystalID); int cryExprience1 = 0; int cryExprience2 = 0; if (crystalInfo1 != null && crystalInfo2 != null) { cryExprience1 = crystalInfo1.Experience; cryExprience2 = crystalInfo2.Experience; if (crystalInfo1.CrystalQuality == crystalInfo2.CrystalQuality) { if (userCryStal1.CurrExprience >= userCryStal2.CurrExprience) { UpdateCrystal(userCrystalID1, userCrystalID2, cryExprience2); } else { UpdateCrystal(userCrystalID2, userCrystalID1, cryExprience1); } } else if (crystalInfo1.CrystalQuality > crystalInfo2.CrystalQuality) { UpdateCrystal(userCrystalID1, userCrystalID2, cryExprience2); } else { UpdateCrystal(userCrystalID2, userCrystalID1, cryExprience1); } } } else if (ops == 2) { CacheList <SynthesisInfo> SynList = new CacheList <SynthesisInfo>(); int experience = 0; var userCrystalArray = package.CrystalPackage.FindAll(m => m.IsSale == 2 && m.GeneralID.Equals(0)); if (userCrystalArray.Count == 0) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1308_CrystalNotEnough; return(false); } userCrystalArray.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 = (int)new ShareCacheStruct <CrystalInfo>().FindKey(y.CrystalID).CrystalQuality.CompareTo( new ShareCacheStruct <CrystalInfo>().FindKey(x.CrystalID).CrystalQuality); if (result == 0) { result = y.CurrExprience.CompareTo(x.CurrExprience); } return(result); }); UserCrystalInfo userCrystal1 = package.CrystalPackage.Find(m => m.UserCrystalID == userCrystalArray[0].UserCrystalID); int maxExprience = 0; if (userCrystal1 == null) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1308_CrystalNotEnough; return(false); } short upLv = 10; CrystalLvInfo crystalLvInfo = new ShareCacheStruct <CrystalLvInfo>().FindKey(userCrystal1.CrystalID, upLv); maxExprience = crystalLvInfo == null ? 0 : crystalLvInfo.UpExperience; foreach (UserCrystalInfo crystal in userCrystalArray) { CrystalInfo crystalInfo = new ShareCacheStruct <CrystalInfo>().FindKey(crystal.CrystalID); if (crystalInfo != null) { experience = crystalInfo.Experience; } if (userCrystal1.UserCrystalID != crystal.UserCrystalID) { SynList.Add(new SynthesisInfo() { DemandID = crystal.CrystalID, Num = crystal.CurrExprience }); if (userCrystal1.CurrExprience >= maxExprience) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1308_CrystalLvFull; break; } experience = MathUtils.Addition(experience, userCrystal1.CurrExprience); experience = MathUtils.Addition(experience, crystal.CurrExprience); userCrystal1.CurrExprience = experience; package.SaveCrystal(userCrystal1); //package.DelayChange(); package.RemoveCrystal(crystal); } } UserLogHelper.AppenCtystalLog(ContextUser.UserID, 3, userCrystal1.CrystalID, 0, 0, SynList, userCrystal1.CrystalLv, userCrystal1.CurrExprience); UserHelper.CheckCrystalEscalate(ContextUser.UserID, userCrystalArray[0].UserCrystalID); } return(true); }
public override bool TakeAction() { UserHelper.GetUserLightOpen(ContextUser.UserID); short opType = 0; int huntingID2 = 0; if (huntingID < 1005) { huntingID2 = MathUtils.Addition(huntingID, 1, int.MaxValue); } else { huntingID2 = 1001; //huntingID; } UserHelper.ChechDailyRestrain(ContextUser.UserID); if (!CrystalHelper.CheckAllowCrystall(ContextUser)) { ErrorCode = 1000; ErrorInfo = LanguageManager.GetLang().St1305_FateBackpackFull; return(false); } else { if (!CrystalHelper.CheckAllowCrystall(ContextUser)) { ErrorCode = errorNum; ErrorInfo = LanguageManager.GetLang().St1305_FateBackpackFull; return(false); } } ProbabilityInfo probabilityInfo = null; if (ops == 1) { #region opType = 1; UserDailyRestrain userRestrain = new PersonalCacheStruct <UserDailyRestrain>().FindKey(ContextUser.UserID); probabilityInfo = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID); //当前猎命人物的概率 if (probabilityInfo == null) { return(false); } ProbabilityInfo probability1 = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID2); if (userRestrain != null && userRestrain.Funtion2 >= VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.MianFeiLieMing) && DateTime.Now.Date == userRestrain.RefreshDate.Date) { if (probabilityInfo.Price > ContextUser.GameCoin) { ErrorCode = errorNum; ErrorInfo = LanguageManager.GetLang().St_GameCoinNotEnough; return(false); } } //暑期第三弹 if (huntingID2 == 1001 && !NoviceHelper.IsGianCrystalPack(ContextUser)) { ErrorCode = errorNum; ErrorInfo = LanguageManager.GetLang().St1305_BeiBaoBackpackFull; return(false); } var lightCacheSet = new PersonalCacheStruct <UserLight>(); if (huntingID != 1001) { UserLight userLight1 = lightCacheSet.FindKey(ContextUser.UserID, huntingID); if (userLight1.IsLight == 2) { ErrorCode = LanguageManager.GetLang().ErrorCode; return(false); } if (userLight1.IsLight == 1) { userLight1.IsLight = 2; //userLight1.Update(); } } UserLight userLight = new PersonalCacheStruct <UserLight>().FindKey(ContextUser.UserID, huntingID2); if (RandomUtils.IsHit(probability1.Light)) { ErrorCode = ErrorCode; ErrorInfo = probability1.HuntingName; if (userLight != null) { userLight.IsLight = 1; //userLight.Update(); } else { userLight = new UserLight() { UserID = ContextUser.UserID, HuntingID = huntingID2, IsLight = 1 }; lightCacheSet.Add(userLight); } } if (userRestrain != null) { if (userRestrain.Funtion2 >= VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.MianFeiLieMing) && DateTime.Now.Date == userRestrain.RefreshDate.Date) { ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, probabilityInfo.Price, 0); //ContextUser.Update(); } else { userRestrain.Funtion2 = MathUtils.Addition(userRestrain.Funtion2, 1, int.MaxValue); //userRestrain.Update(); } } else { ContextUser.GameCoin = MathUtils.Subtraction(ContextUser.GameCoin, probabilityInfo.Price, 0); //ContextUser.Update(); } lightArray = new PersonalCacheStruct <UserLight>().FindAll(ContextUser.UserID); #endregion } else if (ops == 2) { #region opType = 2; if (ContextUser.VipLv < 5) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_VipNotEnough; return(false); } probabilityInfo = new ShareCacheStruct <ProbabilityInfo>().FindKey(huntingID); //当前猎命人物的概率 if (probabilityInfo == null) { return(false); } if (ContextUser.GoldNum < probabilityInfo.Price) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St_GoldNotEnough; return(false); } UserLight uLightInfo = new PersonalCacheStruct <UserLight>().FindKey(ContextUser.UserID, probabilityInfo.GoldHunting); if (uLightInfo != null && uLightInfo.IsLight == 1) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St1305_HuntingIDLight; return(false); } else if (uLightInfo != null && (uLightInfo.IsLight == 2 || uLightInfo.IsLight == 0)) { uLightInfo.IsLight = 1; } else { uLightInfo = new UserLight() { UserID = ContextUser.UserID, HuntingID = probabilityInfo.GoldHunting, IsLight = 1 }; new PersonalCacheStruct <UserLight>().Add(uLightInfo); } ContextUser.UseGold = MathUtils.Addition(ContextUser.UseGold, probabilityInfo.Price, int.MaxValue); lightArray = new PersonalCacheStruct <UserLight>().FindAll(ContextUser.UserID); #endregion } //每种品质的概率 double[] probabilityArray2 = { (double)probabilityInfo.Gray, (double)probabilityInfo.Green, (double)probabilityInfo.Blue, (double)probabilityInfo.Purple, (double)probabilityInfo.Yellow, (double)probabilityInfo.Red }; int index2 = RandomUtils.GetHitIndex(probabilityArray2); CrystalQualityType qualityType = (CrystalQualityType)Enum.Parse(typeof(CrystalQualityType), (index2 + 1).ToString()); List <CrystalInfo> crystalArray2 = new ShareCacheStruct <CrystalInfo>().FindAll(u => u.CrystalQuality == qualityType && u.DemandLv <= ContextUser.UserLv); if (crystalArray2.Count > 0) { int randomNum = RandomUtils.GetRandom(0, crystalArray2.Count); crystal = new ShareCacheStruct <CrystalInfo>().FindKey(crystalArray2[randomNum].CrystalID); if (crystal != null && crystal.CrystalQuality == CrystalQualityType.Gray) { //wuzf修改 8-15 灰色放在临时背包不存DB CrystalHelper.AppendGrayCrystal(ContextUser, crystal.CrystalID); } else if (crystal != null) { var package = UserCrystalPackage.Get(Uid); UserCrystalInfo userCrystal = new UserCrystalInfo() { UserCrystalID = Guid.NewGuid().ToString(), CrystalID = crystal.CrystalID, CrystalLv = 1, CurrExprience = 0, GeneralID = 0, IsSale = 1, CreateDate = DateTime.Now }; package.SaveCrystal(userCrystal); UserLogHelper.AppenCtystalLog(ContextUser.UserID, opType, crystal.CrystalID, probabilityInfo.Price, probabilityInfo.Price, null, 1, 0); //高品质聊天通知); if (crystal.CrystalQuality >= CrystalQualityType.Yellow) { var cacheChat = new TjxChatService(); string content = string.Format(LanguageManager.GetLang().St1305_HighQualityNotice, ContextUser.NickName, CrystalHelper.GetQualityName(crystal.CrystalQuality), crystal.CrystalName ); cacheChat.SystemSend(ChatType.World, content); } } } //日常任务-猎命 TaskHelper.TriggerDailyTask(Uid, 4009); return(true); }