public override bool TakeAction() { UserFunction userFunction = new GameDataCacheSet <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Xiulian); if (userFunction != null) { UserHelper.XiuLianGianExperience(ContextUser.UserID); //修炼完成后更改修炼状态 int inerDate = (int)(DateTime.Now - ContextUser.OnlineDate).TotalSeconds; if (inerDate > 300 && ContextUser.UserStatus != UserStatus.XiuLian) { int totalTime = 0; GeneralPracticeInfo generalpractice = new ConfigCacheSet <GeneralPracticeInfo>().FindKey(ContextUser.UserLv); if (VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.XiuLianYanChangErShiSiXiaoShi)) { totalTime = ConfigEnvSet.GetInt("User.XiuLianDate"); } else { if (generalpractice != null) { totalTime = (generalpractice.MaxHour * 60 * 60); } } if (inerDate > 300 && ContextUser.UserStatus != UserStatus.XiuLian && ContextUser.UserStatus != UserStatus.FightCombat) { ContextUser.UserStatus = UserStatus.XiuLian; //ContextUser.Update(); List <UserQueue> userQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian); if (userQueueArray.Count > 0) { UserQueue userQueue = userQueueArray[0]; userQueue.TotalColdTime = totalTime; userQueue.ColdTime = totalTime; userQueue.Timing = DateTime.Now; userQueue.IsSuspend = false; userQueue.StrengNum = 0; //userQueue.Update(); } _statusList.Add(MessageState.XiuLian); } } } UserDailyRestrain dailyRestrain = new GameDataCacheSet <UserDailyRestrain>().FindKey(ContextUser.UserID); if (new TjxChatService(ContextUser).HasMessage(ContextUser.ChatVesion)) { _statusList.Add(MessageState.Chat); } if (NoviceHelper.CheckOnlinePrize(Uid)) { _statusList.Add(MessageState.TakeOnline); } if (NoviceHelper.CheckLoginPrize(Uid)) { _statusList.Add(MessageState.TakeLogin); } if (new TjxBroadcastService(ContextUser).HasMessage()) { _statusList.Add(MessageState.Broadcast); } if (NoviceHelper.CheckDailyExpPrize(Uid)) { _statusList.Add(MessageState.TakeDailyExp); } if (RankingHelper.IsGainSportsReward(ContextUser.UserID)) { _statusList.Add(MessageState.JingJiChangReward); } UserFunction countryFunction = new GameDataCacheSet <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Country); if (countryFunction != null && dailyRestrain != null && dailyRestrain.Funtion8 < VipHelper.GetVipUseNum(ContextUser.VipLv, RestrainType.LingQuFengLu)) { _statusList.Add(MessageState.LingQuFengLv); } if (NoviceHelper.DailyEnergy(ContextUser.UserID)) { _statusList.Add(MessageState.SurplusEnergy); } if (new GameActiveCenter(Uid).HasActive()) { _statusList.Add(MessageState.Huodong); } if (NoviceHelper.IsAugustSecondWeekEnergy(ContextUser)) { _statusList.Add(MessageState.FestivalEnergy); } if (NoviceHelper.IsWingFestivalInfo(ContextUser.UserID)) { _statusList.Add(MessageState.Wing); } if (GuildFightBroadcast(ContextUser.UserID, stakecount, ContextUser.MercenariesID)) { _statusList.Add(MessageState.GuildFight); } else { stakecount = 0; } var userPrizeList = new ShareCacheStruct <UserTakePrize>().FindAll(m => !m.IsTasked && m.UserID == Uid.ToInt()); if (userPrizeList.Count > 0) { _statusList.Add(MessageState.TaskPrize); } return(true); }
public override bool TakeAction() { List <PlotNPCInfo> plotNPCInfoList = new ShareCacheStruct <PlotNPCInfo>().FindAll(m => m.PlotID == plotID); npcCount = (short)plotNPCInfoList.Count; var cacheSet = new PersonalCacheStruct <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 ShareCacheStruct <PlotInfo>().FindKey(plotID); if (plotInfo == null) { return(false); } foreach (PlotNPCInfo npcInfo in plotNPCInfoList) { if (npcInfo == null) { continue; } List <PlotEmbattleInfo> embattleInfoList = new ShareCacheStruct <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 ShareCacheStruct <MonsterInfo>().FindKey(embattleInfo.MonsterID); if (monsterInfo != null) { monsterDict.Add(embattleInfo.MonsterID, monsterInfo); monsterNumDict.Add(embattleInfo.MonsterID, 1); } } } } return(true); }
public override bool TakeAction() { var cacheSet = new GameDataCacheSet <UserPlant>(); UserPlant plant = cacheSet.FindKey(ContextUser.UserID); var landCacheSet = new GameDataCacheSet <UserLand>(); List <UserLand> landArray = landCacheSet.FindAll(ContextUser.UserID); if (plant == null) { UserPlant uPlant = new UserPlant() { UserID = ContextUser.UserID, LandNum = 1, DewNum = ConfigEnvSet.GetInt("UserQueue.ShengShuiMaxNum"), PayDewTime = 0, }; cacheSet.Add(uPlant); } if (landArray.Count == 0) { UserLand userLand = new UserLand() { UserID = ContextUser.UserID, PlantType = PlantType.Experience, LandPositon = 1, IsRedLand = 2, IsBlackLand = 2, IsGain = 2 }; landCacheSet.Add(userLand); } if (new GameDataCacheSet <UserFunction>().FindKey(ContextUser.UserID, FunctionEnum.Zhongzhijingqianshu) == null) { isShow = 2; } else { isShow = 1; } userPlant = new GameDataCacheSet <UserPlant>().FindKey(ContextUser.UserID); userLandArray = new GameDataCacheSet <UserLand>().FindAll(ContextUser.UserID); //圣水恢复 var queueCacheSet = new GameDataCacheSet <UserQueue>(); List <UserQueue> ShengShuiQueueArray = queueCacheSet.FindAll(ContextUser.UserID, m => m.QueueType == QueueType.ShengShuiHuiFu); if (ShengShuiQueueArray.Count > 0) { UserQueue shengShuiQueue = ShengShuiQueueArray[0]; if (userPlant != null) { int shengshuiMaxNum = ConfigEnvSet.GetInt("UserQueue.ShengShuiMaxNum"); int restorationDate = ConfigEnvSet.GetInt("UserQueue.ShengShuiRestorationDate"); //三小时 int restorationNum = ConfigEnvSet.GetInt("UserQueue.ShengShuiRestorationNum"); //恢复1点 int timeCount = (int)(DateTime.Now - shengShuiQueue.Timing).TotalSeconds / restorationDate; if (userPlant.DewNum < shengshuiMaxNum && timeCount > 0) { userPlant.DewNum = MathUtils.Addition(userPlant.DewNum, (timeCount * restorationNum), shengshuiMaxNum); //userPlant.Update(); shengShuiQueue.Timing = DateTime.Now; //shengShuiQueue.Update(); } } } else { UserQueue queue = new UserQueue() { QueueID = Guid.NewGuid().ToString(), UserID = ContextUser.UserID, QueueType = QueueType.ShengShuiHuiFu, QueueName = QueueType.ShengShuiHuiFu.ToString(), Timing = DateTime.Now, ColdTime = 0, TotalColdTime = 0, IsSuspend = false, StrengNum = 0 }; queueCacheSet.Add(queue); } return(true); }
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 GameDataCacheSet <UserQueue>(); queueCacheSet.Delete(userQueue); ContextUser.ResetSweepPool(0); //ContextUser.Update(); } else { //清除扫荡池 var sweepCacheSet = new GameDataCacheSet <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() { short currMaxLv = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort(); //玩家最大等级 if (ContextUser.UserStatus == UserStatus.SaoDang) { ErrorCode = LanguageManager.GetLang().ErrorCode; ErrorInfo = LanguageManager.GetLang().St4007_Saodanging; return(false); } if (ops == 0 && ContextUser.UserStatus == UserStatus.XiuLian) { return(false); } int totalTime = 0; int genlv = 0; if (ContextUser.UserLv > currMaxLv) { genlv = currMaxLv.ToInt(); } else { genlv = ContextUser.UserLv; } GeneralPracticeInfo generalpractice = new ShareCacheStruct <GeneralPracticeInfo>().FindKey(genlv); if (generalpractice == null || generalpractice.IntervalTime == 0) { return(false); } if (VipHelper.GetVipOpenFun(ContextUser.VipLv, ExpandType.XiuLianYanChangErShiSiXiaoShi)) { totalTime = ConfigEnvSet.GetInt("User.XiuLianDate"); } else { totalTime = (generalpractice.MaxHour * 60 * 60); } List <UserQueue> userQueueArray = new PersonalCacheStruct <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian); if (ops == 0) { this.ErrorCode = 0; UserQueue userQueue = null; if (userQueueArray.Count > 0) { userQueue = userQueueArray[0]; } if (ContextUser.UserStatus != UserStatus.XiuLian) { ContextUser.UserStatus = UserStatus.XiuLian; //ContextUser.Update(); if (userQueue == null) { userQueue = new UserQueue() { UserID = ContextUser.UserID, QueueID = Guid.NewGuid().ToString(), QueueType = QueueType.XiuLian, QueueName = QueueType.XiuLian.ToString(), TotalColdTime = totalTime, Timing = DateTime.Now, ColdTime = totalTime, IsSuspend = false, StrengNum = 0 }; new PersonalCacheStruct <UserQueue>().Add(userQueue); } else { userQueue.TotalColdTime = totalTime; userQueue.ColdTime = totalTime; userQueue.Timing = DateTime.Now; userQueue.StrengNum = 0; userQueue.DoStart(); } } } else if (ops == 1) { ErrorCode = 1; if (ContextUser.UserStatus != UserStatus.Normal && ContextUser.UserStatus != UserStatus.FightCombat) { ContextUser.UserStatus = UserStatus.Normal; //ContextUser.Update(); if (userQueueArray.Count > 0) { UserQueue userQueue = userQueueArray[0]; userQueue.IsSuspend = true; //userQueue.Update(); } List <UserMagic> userMagicArray = new PersonalCacheStruct <UserMagic>().FindAll(ContextUser.UserID, u => u.IsEnabled && u.MagicType == MagicType.MoFaZhen); if (userMagicArray.Count > 0) { List <UserEmbattle> userEmbattleArray = new PersonalCacheStruct <UserEmbattle>().FindAll(ContextUser.UserID, m => m.MagicID == userMagicArray[0].MagicID); int practiceTime = 0; //修炼时间 if (userQueueArray.Count > 0) { UserQueue queueInfo = userQueueArray[0]; TimeSpan ts = DateTime.Now - queueInfo.Timing; practiceTime = (int)ts.TotalSeconds; if (practiceTime <= totalTime && queueInfo.Timing <= DateTime.Now) { experience = ((practiceTime / generalpractice.IntervalTime) * generalpractice.Exprience); } foreach (UserEmbattle embattle in userEmbattleArray) { UserGeneral general = new PersonalCacheStruct <UserGeneral>().FindKey(ContextUser.UserID, embattle.GeneralID); if (general != null) { general.Experience1 = MathUtils.Addition(general.Experience1, experience, int.MaxValue); if (general.GeneralLv >= UserHelper._currMaxLv) { continue; } if (general.GeneralID == LanguageManager.GetLang().GameUserGeneralID) { general.CurrExperience = MathUtils.Addition(general.CurrExperience, MathUtils.Subtraction(experience, queueInfo.StrengNum, 0), int.MaxValue); } else { general.CurrExperience = MathUtils.Addition(general.CurrExperience, experience, int.MaxValue); } //general.Update(); } } } } } } 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); }
public void Init() { instance = new UserQueue(); }
public override bool TakeAction() { int exp = 0; short currMaxLv = ConfigEnvSet.GetInt("User.CurrMaxLv").ToShort(); //玩家最大等级 UserGeneral userGeneral = UserGeneral.GetMainGeneral(ContextUser.UserID); int genLv = 0; if (ContextUser.UserLv > currMaxLv) { genLv = currMaxLv.ToInt(); } else { genLv = ContextUser.UserLv; } GeneralPracticeInfo generalpractice = new ConfigCacheSet <GeneralPracticeInfo>().FindKey(genLv); var ranking = RankingFactory.Get <UserRank>(CombatNumRanking.RankingKey); UserRank rankInfo = ranking.Find(m => m.UserID == ContextUser.UserID); if (rankInfo != null && rankInfo.TotalCombatNum > 0) { fightingNum = rankInfo.TotalCombatNum; } else { //fightingNum = UserHelper.GetGameUserCombat(ContextUser.UserID); } int totalTime = 0; if (generalpractice == null) { return(false); } totalTime = (generalpractice.MaxHour * 60 * 60); List <UserQueue> userQueueArray = new GameDataCacheSet <UserQueue>().FindAll(ContextUser.UserID, m => m.QueueType == QueueType.XiuLian); if (userQueueArray.Count > 0 && !userQueueArray[0].IsSuspend) { UserQueue queueInfo = userQueueArray[0]; TimeSpan ts = DateTime.Now - queueInfo.Timing; //practiceTime = (int)ts.TotalSeconds; int preExpTime = 0; practiceTime = queueInfo.DoRefresh(); if (practiceTime > 0) { if (userQueueArray[0].Timing <= DateTime.Now) { preExpTime = ((int)((DateTime.Now - userQueueArray[0].Timing).TotalSeconds) / generalpractice.IntervalTime); experience = generalpractice.Exprience * preExpTime; if (experience > 0) { exp = generalpractice.Exprience; } } } currExperience = MathUtils.Addition(userGeneral.CurrExperience, exp, int.MaxValue); queueInfo.StrengNum = MathUtils.Addition(queueInfo.StrengNum, exp, int.MaxValue); //queueInfo.Update(); userGeneral.CurrExperience = currExperience; //userGeneral.Update(); } return(true); }
public async Task EditUser(UserQueue userQueue) { User user = await this.db.GetUserById(userQueue.TenantId, userQueue.Id.Value).FirstOrDefaultAsync(); user.FirstName = userQueue.FirstName; user.LastName = userQueue.LastName; user.Email = userQueue.Email; user.NormalizedEmail = userQueue.Email.ToUpper().Trim(); user.UserName = userQueue.Email; user.NormalizedUserName = userQueue.Email.ToUpper().Trim(); user.Status = userQueue.Status; user.Owed = userQueue.Owed; user.Claimed = userQueue.Claimed; var userRoles = await this.db.UserRoles.Where(x => x.UserId == user.Id).ToListAsync(); var applicationRoles = await this.db.Roles.ToListAsync(); foreach (var role in applicationRoles) { if (role.NormalizedName == "ADMINISTRATOR") { if (userQueue.IsAdmin) { if (userRoles.FirstOrDefault(x => x.RoleId == role.Id) == null) { var ur = new IdentityUserRole <Guid> { RoleId = role.Id, UserId = user.Id }; this.db.UserRoles.Add(ur); } } else { var userRole = userRoles.FirstOrDefault(x => x.RoleId == role.Id); if (userRole != null) { this.db.UserRoles.Remove(userRole); } } } if (role.NormalizedName == "COACH") { if (userQueue.IsCoach) { if (userRoles.FirstOrDefault(x => x.RoleId == role.Id) == null) { var ur = new IdentityUserRole <Guid> { RoleId = role.Id, UserId = user.Id }; this.db.UserRoles.Add(ur); } } else { var userRole = userRoles.FirstOrDefault(x => x.RoleId == role.Id); if (userRole != null) { this.db.UserRoles.Remove(userRole); } } } if (role.NormalizedName == "GLOBAL_ADMIN") { if (userQueue.IsGlobalAdmin) { if (userRoles.FirstOrDefault(x => x.RoleId == role.Id) == null) { var ur = new IdentityUserRole <Guid> { RoleId = role.Id, UserId = user.Id }; this.db.UserRoles.Add(ur); } } else { var userRole = userRoles.FirstOrDefault(x => x.RoleId == role.Id); if (userRole != null) { this.db.UserRoles.Remove(userRole); } } } } await this.db.SaveChangesAsync(); this.logger.LogCustomInformation($"User '{user.FirstName} {user.LastName}' - '{user.Email}' with id '{user.Id}' has successfully created", userQueue.TenantId.ToString(), userQueue.UserPerformingAction.ToString()); }