From ea6899e50b180c384a68f65e18a699aad5ea9c74 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Wed, 20 Apr 2022 16:24:42 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E6=8C=91=E6=88=98=E5=89=AF=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/arena/ChallengeLogic.java | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java index be6cf881f..9fa81d576 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java @@ -16,6 +16,8 @@ import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import config.SChallengeStage; +import config.SMonsterConfig; +import config.SMonsterGroup; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -49,7 +51,7 @@ public class ChallengeLogic { return true; } - public static Map dropMap(SChallengeStage sChallengeConfig, int model, int type, int win, long[] result) { + public static Map dropMap(SChallengeStage sChallengeConfig, int model, int type, int win, long[] result,PlayerInfoProto.ChallengeResponse.Builder builder) { /* model //1为挑战 2为扫荡 win // 1赢 0输 @@ -78,6 +80,7 @@ public class ChallengeLogic { } } LOGGER.info("zong reward"); + builder.setPercentReward(10000); } if (model == 1 && win == 1) { //打过 @@ -89,19 +92,36 @@ public class ChallengeLogic { } } LOGGER.info("tongguan reward"); + builder.setPercentReward(10000); } else if (model == 1 && win == 0) { //没打过 int[][] reward1 = sChallengeConfig.getReward1(); int ratio = 0; if (type == 1) {//无尽副本 血量 - long leaveHp = result[2] + result[3] + result[4] + SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(sChallengeConfig.getMonsterGroup()); + // 获取怪物组 + int[][] content = sMonsterGroup.getContents(); + double bossBlood = 0.0; //怪物初始化血量 + for (int i = 0; i < content.length; i++) { + int[] ints = content[i]; + for (int j = 0; j < ints.length; j++) { + if (ints[j] == 0){ + continue; + } + SMonsterConfig monsterConfig = STableManager.getConfig(SMonsterConfig.class).get(ints[j]); + bossBlood+=monsterConfig.getHp(); + } + } + double leaveHp = result[2] + result[3] + result[4] + result[5] + result[6]; + double lossBlood = bossBlood - leaveHp; for (int[] percent : reward1) { - if (percent[0] > leaveHp) { + if (percent[0] > lossBlood) { break; } ratio = percent[1]; } + builder.setLossBlood((long)lossBlood); } else if (type == 2) {//回合数 long times = result[1];//回合数 for (int[] percent : reward1) { @@ -120,6 +140,7 @@ public class ChallengeLogic { } } LOGGER.info("no pass reward percent"); + builder.setPercentReward(ratio); } return comDropMap; @@ -199,7 +220,7 @@ public class ChallengeLogic { break; } //扫荡 = 保底 +总奖励 - comDropMap = dropMap(sChallengeConfig, model, type, 1, null); + comDropMap = dropMap(sChallengeConfig, model, type, 1, null,builder); CommonProto.Drop.Builder drop = ItemUtil.drop(user, comDropMap.entrySet().stream().map(n -> new int[]{n.getKey(), n.getValue()}).toArray(int[][]::new), BIReason.EXPLORE_MAP_COST_RETURN); builder.setDrop(drop); @@ -230,23 +251,23 @@ public class ChallengeLogic { } else if (type == 2) { user.getPlayerInfoManager().setTreasureReplica(id); } - comDropMap = dropMap(sChallengeConfig, model, type, 1, fightResult.getCheckResult()); + comDropMap = dropMap(sChallengeConfig, model, type, 1, fightResult.getCheckResult(),builder); builder.setResult(1); } else { if (type == 1){ if((int) fightResult.getCheckResult()[1]>=20){ //无尽副本回合数超过20 赢 user.getPlayerInfoManager().setEndlessNewReplica(id); - comDropMap = dropMap(sChallengeConfig, model, type, 1, fightResult.getCheckResult()); + comDropMap = dropMap(sChallengeConfig, model, type, 1, fightResult.getCheckResult(),builder); builder.setResult(1); }else{ //没打过 //输了 保底+总奖励*奖励百分比 - comDropMap = dropMap(sChallengeConfig, model, type, 0, fightResult.getCheckResult()); + comDropMap = dropMap(sChallengeConfig, model, type, 0, fightResult.getCheckResult(),builder); builder.setResult(0); } }else if(type == 2){ //没打过 //输了 保底+总奖励*奖励百分比 - comDropMap = dropMap(sChallengeConfig, model, type, 0, fightResult.getCheckResult()); + comDropMap = dropMap(sChallengeConfig, model, type, 0, fightResult.getCheckResult(),builder); builder.setResult(0); } } @@ -262,6 +283,7 @@ public class ChallengeLogic { CommonProto.Drop.Builder drop = ItemUtil.drop(user, comDropMap.entrySet().stream().map(n -> new int[]{n.getKey(), n.getValue()}).toArray(int[][]::new), BIReason.EXPLORE_MAP_COST_RETURN); builder.setDrop(drop); + builder.setType(type); } MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); } From a4c7a3b74befa7a945c7b70366e29b8a7e9d4301 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 21 Apr 2022 11:30:09 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E5=B1=8F=E8=94=BD=E7=82=B9=E5=B0=86?= =?UTF-8?q?=E5=8F=B0=E5=BF=83=E6=84=BF=E6=8B=9B=E5=8B=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/activity/ActivityLogic.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index 746c94d5a..b0ecc87c8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1840,7 +1840,8 @@ public class ActivityLogic implements IEventHandler{ int[] result = new int[]{incs[0],incs[1]}; // 抽奖次数达到必出up次数 - if (count >= incs[3]){ + // 2022-4-21 策划需求【屏蔽点将台心愿招募】 + if (count >= incs[3] && false){ // 次数归0 count = 0; // 添加奖励 @@ -1855,7 +1856,7 @@ public class ActivityLogic implements IEventHandler{ // 根据id获取奖池信息 SWishActivityPool pool = poolMap.get(entry.getKey()); // null意味着是up奖励 - if (pool == null){ + if (pool == null && false){ count = 0; reward[i++] = result; } From b64879f4b2bc11ec2564b7f92907a245e18a2936 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Thu, 21 Apr 2022 17:54:48 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E6=8C=91=E6=88=98=E5=89=AF=E6=9C=AC=20?= =?UTF-8?q?=E5=B9=BB=E5=A2=83=E8=BE=BE=E4=BA=BA=20=E8=AE=A1=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/ExpectRankActivity.java | 83 ++++++++++++++----- .../jieling/logic/arena/ChallengeLogic.java | 9 +- 2 files changed, 66 insertions(+), 26 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java index da01083bd..8e9807578 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -6,6 +6,8 @@ import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.TrialInfo; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; @@ -35,31 +37,67 @@ class ExpectRankActivity extends AbstractActivity { super(id); } + + @Override + public void onActivityStart() throws Exception { + + + } + + @Override + public void initActivity(User user) throws Exception { + //PlayerManager player = user.getPlayerInfoManager(); + if (SGlobalActivity.getsGlobalActivityMap().get(id).getType() != 70){ + return; + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if (null == activityMission) { + return; + } + Map activityProgressInfoMap = activityMission.getActivityMissionMap(); + + MapManager mapManager = user.getMapManager(); + TrialInfo trialInfo = mapManager.getTrialInfo(); + SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).stream().forEach(n -> + { + if (trialInfo.getFloor() >= n.getValues()[1][0]) { + ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(n.getId(), null); + if (null == activityProgressInfo) + return; + activityProgressInfo.setState(1); + } + } + ); + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(sessionByUid, activityMission, null); + } + @Override void updateProgressWithUser(User user, ActivityMission activityMission, int count) { - if(SGlobalActivity.getsGlobalActivityMap().get(id).getType() == 70){ + if (SGlobalActivity.getsGlobalActivityMap().get(id).getType() == 70) { //森罗幻境特殊处理 - if(SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking()==1){ + if (SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking() == 1) { MapManager mapManager = user.getMapManager(); TrialInfo trialInfo = mapManager.getTrialInfo(); //排除神秘关卡 - if(trialInfo.getFloor()<10000 && trialInfo.getFloor() > activityMission.getV()){ + if (trialInfo.getFloor() < 10000 && trialInfo.getFloor() > activityMission.getV()) { activityMission.setV(trialInfo.getFloor()); - }else if(trialInfo.getFloor()>10000){ - activityMission.setV(trialInfo.getFloor()-10000); + } else if (trialInfo.getFloor() > 10000) { + activityMission.setV(trialInfo.getFloor() - 10000); } - RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(),String.valueOf(id),activityMission.getV()); - }else{ + RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(), String.valueOf(id), activityMission.getV()); + } else { activityMission.setV(count + activityMission.getV()); } - }else { + } else { activityMission.setV(count + activityMission.getV()); - if(SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking()==1){ + if (SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking() == 1) { // String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false); // RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), activityMission.getV()); - RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(),String.valueOf(id),activityMission.getV()); + RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(), String.valueOf(id), activityMission.getV()); } } } @@ -100,7 +138,7 @@ class ExpectRankActivity extends AbstractActivity { User user = UserManager.getUser(session.getUid()); int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getV(); if (value < values[1][0]) { - // MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + // MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); return false; } return true; @@ -112,28 +150,27 @@ class ExpectRankActivity extends AbstractActivity { ThreadManager.getScheduledExecutor().execute(this::sendReward); } - protected void sendReward(){ - Thread.currentThread().setName("sendReward-Activity-"+id); + protected void sendReward() { + Thread.currentThread().setName("sendReward-Activity-" + id); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); - if(sGlobalActivity.getOpenRanking()==0){ + if (sGlobalActivity.getOpenRanking() == 0) { return; } List sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); - if(null==sActivityRankingReward) { + if (null == sActivityRankingReward) { return; } int maxRank = 0; int maxRewardId = 0; Map rank2miss = new HashMap<>(); for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) { - if(sActivityRankingReward1.getMaxRank()==-1){ - maxRank =-1; + if (sActivityRankingReward1.getMaxRank() == -1) { + maxRank = -1; maxRewardId = sActivityRankingReward1.getId(); continue; } - if(maxRank!=-1) - { + if (maxRank != -1) { maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank()); } @@ -184,15 +221,15 @@ class ExpectRankActivity extends AbstractActivity { //checkAndUpdate value SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId); //sendmail - String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#"); - String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(),ranking},new int[]{1,0},"#"); + String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()}, new int[]{1}, "#"); + String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(), ranking}, new int[]{1, 0}, "#"); String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward()); MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); }); ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker); rank++; - }catch (Exception e) { - LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功 e={}",uid,id,e); + } catch (Exception e) { + LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功 e={}", uid, id, e); e.printStackTrace(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java index 9fa81d576..17f33504d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java @@ -121,7 +121,8 @@ public class ChallengeLogic { } ratio = percent[1]; } - builder.setLossBlood((long)lossBlood); + LOGGER.info("输了 lossBlood:"+lossBlood); + builder.setLossBloodOrTimes((long)lossBlood); } else if (type == 2) {//回合数 long times = result[1];//回合数 for (int[] percent : reward1) { @@ -130,6 +131,8 @@ public class ChallengeLogic { } ratio = percent[1]; } + builder.setLossBloodOrTimes(times); + LOGGER.info("输了 回合数 times :"+times); } LOGGER.info("challengeHandler ====>id:{},ratio:{}", sChallengeConfig.getId(), ratio); for (int[] fix : sChallengeConfig.getPassReward()) { @@ -198,10 +201,10 @@ public class ChallengeLogic { int endlessNewReplicaLexel = user.getPlayerInfoManager().getEndlessNewReplica(); int treasureReplicaLexel = user.getPlayerInfoManager().getTreasureReplica(); //限制 - boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1); + /* boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1); if (!consume) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } + }*/ Map comDropMap = new HashMap<>(); if (model == 2) { //扫荡 From 401889401ca17df505ac1b4e280eb497b466c947 Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Thu, 21 Apr 2022 18:34:29 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E6=A3=AE=E7=BD=97=E5=B9=BB=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../logic/activity/ExpectRankActivity.java | 45 +++---------------- .../jieling/logic/arena/ChallengeLogic.java | 4 +- 2 files changed, 7 insertions(+), 42 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java index 8e9807578..72ce07969 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -37,42 +37,6 @@ class ExpectRankActivity extends AbstractActivity { super(id); } - - @Override - public void onActivityStart() throws Exception { - - - } - - @Override - public void initActivity(User user) throws Exception { - //PlayerManager player = user.getPlayerInfoManager(); - if (SGlobalActivity.getsGlobalActivityMap().get(id).getType() != 70){ - return; - } - ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); - if (null == activityMission) { - return; - } - Map activityProgressInfoMap = activityMission.getActivityMissionMap(); - - MapManager mapManager = user.getMapManager(); - TrialInfo trialInfo = mapManager.getTrialInfo(); - SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).stream().forEach(n -> - { - if (trialInfo.getFloor() >= n.getValues()[1][0]) { - ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(n.getId(), null); - if (null == activityProgressInfo) - return; - activityProgressInfo.setState(1); - } - } - ); - //更新进度 - ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); - sendActivityProgress(sessionByUid, activityMission, null); - } - @Override void updateProgressWithUser(User user, ActivityMission activityMission, int count) { @@ -82,13 +46,14 @@ class ExpectRankActivity extends AbstractActivity { MapManager mapManager = user.getMapManager(); TrialInfo trialInfo = mapManager.getTrialInfo(); //排除神秘关卡 + int floor = 0 ; if (trialInfo.getFloor() < 10000 && trialInfo.getFloor() > activityMission.getV()) { - activityMission.setV(trialInfo.getFloor()); + floor = trialInfo.getFloor(); } else if (trialInfo.getFloor() > 10000) { - activityMission.setV(trialInfo.getFloor() - 10000); - + floor = trialInfo.getFloor() - 10000; } - RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(), String.valueOf(id), activityMission.getV()); + activityMission.setV(count + activityMission.getV()); + RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(), String.valueOf(id), floor); } else { activityMission.setV(count + activityMission.getV()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java index 17f33504d..4f69abeb6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java @@ -201,10 +201,10 @@ public class ChallengeLogic { int endlessNewReplicaLexel = user.getPlayerInfoManager().getEndlessNewReplica(); int treasureReplicaLexel = user.getPlayerInfoManager().getTreasureReplica(); //限制 - /* boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1); + boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1); if (!consume) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - }*/ + } Map comDropMap = new HashMap<>(); if (model == 2) { //扫荡 From 9b38690f93f6ef28ce2286b52adbe8b2a656ef2d Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Sat, 23 Apr 2022 10:34:51 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E6=97=A0=E5=B0=BD=E5=89=AF=E6=9C=AC?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/arena/ChallengeLogic.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java index 4f69abeb6..7c18fb699 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ChallengeLogic.java @@ -93,11 +93,13 @@ public class ChallengeLogic { } LOGGER.info("tongguan reward"); builder.setPercentReward(10000); + builder.setLossBloodOrTimes(result[1]); + LOGGER.info("win times 回合数:"+result[1]); } else if (model == 1 && win == 0) { //没打过 int[][] reward1 = sChallengeConfig.getReward1(); int ratio = 0; - if (type == 1) {//无尽副本 血量 + if (type == 2) {//无尽副本 血量 SMonsterGroup sMonsterGroup = SMonsterGroup.getsMonsterGroupMap().get(sChallengeConfig.getMonsterGroup()); // 获取怪物组 int[][] content = sMonsterGroup.getContents(); @@ -123,7 +125,7 @@ public class ChallengeLogic { } LOGGER.info("输了 lossBlood:"+lossBlood); builder.setLossBloodOrTimes((long)lossBlood); - } else if (type == 2) {//回合数 + } else if (type == 1) {//回合数 long times = result[1];//回合数 for (int[] percent : reward1) { if (percent[0] > times) { @@ -191,7 +193,7 @@ public class ChallengeLogic { return; } PlayerInfoProto.ChallengeResponse.Builder builder = PlayerInfoProto.ChallengeResponse.newBuilder(); - int type = proto.getType(); //1无尽 2宝物 + int type = proto.getType(); //1无尽 2宝物 int model = proto.getModel(); //1为挑战 2为扫荡 int id = proto.getId(); SChallengeStage sChallengeConfig = STableManager.getConfig(SChallengeStage.class).get(id); @@ -209,13 +211,13 @@ public class ChallengeLogic { if (model == 2) { //扫荡 switch (type) { - case 1: + case 1: // 回合 if (!limit(endlessNewReplicaLexel, id)) { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); return; } break; - case 2: + case 2:// 血量 if (!limit(treasureReplicaLexel, id)) { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); return; @@ -287,6 +289,7 @@ public class ChallengeLogic { new int[]{n.getKey(), n.getValue()}).toArray(int[][]::new), BIReason.EXPLORE_MAP_COST_RETURN); builder.setDrop(drop); builder.setType(type); + LOGGER.info("type :"+type); } MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.CHALLENGE_RESPONSE.getNumber(), builder.build(), true); } From 665b993e21b0405caf63256491da7aa6687267b7 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 21 Apr 2022 11:35:05 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E5=BC=80=E6=9C=8D=E5=B0=B1=E8=B7=A8?= =?UTF-8?q?=E6=9C=8D=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/GlobleSystemLogic.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java index 175da68e8..60faf3b00 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java @@ -310,7 +310,15 @@ public class GlobleSystemLogic implements IEventHandler { return -1; } Integer group = RedisUtil.getInstence().getMapValue(RedisKey.SERVER_SPLIT_INFO, "", String.valueOf(GameApplication.serverId), Integer.class); - if (group == null || group <= 0){ + // 当本地无跨服id时,读取gm的跨服分组,开服用 + if (group == null){ + Integer entry = RedisUtil.getInstence().getMapEntry(RedisKey.CROSS_SERVER_GROUP, "", String.valueOf(GameApplication.serverId), Integer.class); + if (entry != null){ + RedisUtil.getInstence().putMapEntry(RedisKey.SERVER_SPLIT_INFO, "", String.valueOf(GameApplication.serverId),entry); + group = entry; + } + } + if (group <= 0){ return -1; } crossGroup = group; From 232fc4efeb23905f4a9677331e3f2f5ffd0a38d6 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 21 Apr 2022 13:18:12 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E5=BC=80=E6=9C=8D=E5=B0=B1=E8=B7=A8?= =?UTF-8?q?=E6=9C=8D=E5=88=86=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java index 60faf3b00..ce1dcc870 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobleSystemLogic.java @@ -316,6 +316,8 @@ public class GlobleSystemLogic implements IEventHandler { if (entry != null){ RedisUtil.getInstence().putMapEntry(RedisKey.SERVER_SPLIT_INFO, "", String.valueOf(GameApplication.serverId),entry); group = entry; + }else { + group = -1; } } if (group <= 0){ From f86f4e56768f6cd1113b910aca70fb481ecf7e10 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 21 Apr 2022 14:06:25 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=9B=9B=E7=81=B5=E8=AF=95=E7=82=BC?= =?UTF-8?q?=E5=BC=80=E5=90=AF=E5=A4=A9=E6=95=B0=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamecommon/src/main/java/util/TimeUtils.java | 63 +++++++++++++++-- .../jieling/logic/GlobalDataManaager.java | 4 +- .../fourChallenge/FourChallengeLogic.java | 69 ++++++++++++------- 3 files changed, 104 insertions(+), 32 deletions(-) diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index e56f59c68..db44dd716 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -11,10 +11,7 @@ import java.sql.Timestamp; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.Locale; -import java.util.TimeZone; +import java.util.*; import java.util.concurrent.TimeUnit; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -801,7 +798,6 @@ public class TimeUtils { * 是否为同一周 *星期1是一周的开始 * @param src - * @param target * @return */ public static boolean isSameWeek7(long src) { @@ -1224,6 +1220,63 @@ public class TimeUtils { return hour; } + /** + * 获取某段时间内的周一(二等等)的日期 + * @param dataBegin 开始日期 + * @param dataEnd 结束日期 + * @param weekDays 获取周几,1-6代表周一到周六。0代表周日 + * @return 返回日期List + */ + public static int getDayOfWeekWithinDateInterval(String dataBegin, String dataEnd, int weekDays) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + List dateResult = new ArrayList<>(); + Calendar cal = Calendar.getInstance(); + String[] dateInterval = {dataBegin, dataEnd}; + Date[] dates = new Date[dateInterval.length]; + for (int i = 0; i < dateInterval.length; i++) { + String[] ymd = dateInterval[i].split("[^\\d]+"); + cal.set(Integer.parseInt(ymd[0]), Integer.parseInt(ymd[1]) - 1, Integer.parseInt(ymd[2])); + dates[i] = cal.getTime(); + } + for (Date date = dates[0]; date.compareTo(dates[1]) <= 0; ) { + cal.setTime(date); + if (cal.get(Calendar.DAY_OF_WEEK) - 1 == weekDays) { + String format = sdf.format(date); + dateResult.add(format); + } + cal.add(Calendar.DATE, 1); + date = cal.getTime(); + } + return dateResult.size(); + } + + /** + * date2比date1多的天数 + * + * @param time1 + * @param time2 + * @param weekday + * @return + */ + public static int differentDaysToWeekday(long time1, long time2, int weekday) { + // 格式 + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Calendar c = Calendar.getInstance(); + // 第二天 + c.setTimeInMillis(time1); + c.add(Calendar.DATE, 1); + // 转换格式 + Date date1 = new Date(time1); + Date date2 = new Date(time2); + String format1 = sdf.format(date1); + String format2 = sdf.format(date2); + // 周几 + if (weekday == 7){ + weekday = 0; + } + return getDayOfWeekWithinDateInterval(format1,format2,weekday); + } + /** * date2比date1多的天数 * diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 02211daa0..54136fabc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -453,10 +453,8 @@ public class GlobalDataManaager implements IManager { PlayerLogic.getInstance().sendTimingMail(user); user.getGuildMyInfo().setLastHurt(0); - // 距离上次登陆相隔几天 - int num = TimeUtils.differentDays(user.getPlayerInfoManager().getLoginTime(), TimeUtils.now()); // 四灵试炼,计算每天次数 - FourChallengeLogic.getInstance().addFourChallengeNum(user,num); + FourChallengeLogic.getInstance().addFourChallengeNum(user,user.getPlayerInfoManager().getLoginTime()); // 助战清理 HelpHeroLogic.getInstance().clearHelpInfo(user); // 七界推送 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java index 2183facd2..414dbe082 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java @@ -380,42 +380,63 @@ public class FourChallengeLogic { * @param user */ public void firstGetTimes(User user) throws Exception { - if (ifOpenFourChallenge(user) && !user.getPlayerInfoManager().isOpenFourChallenge()){ - // 检测一次 - if (status == null){ check(); } - // 获取每天增加的天数 - int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay(); - for (int i = 0; i < status.length; i++) { - // 类型未开启 - if (status[i] == 0){ continue; } - user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay); - } - LOGGER.info("四灵试炼层数刷新,首次开启,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes())); - user.getPlayerInfoManager().setOpenFourChallenge(true); - // 推送四灵试炼信息 - ISession session = OnlineUserManager.getSessionByUid(user.getId()); - if (session != null){ - fourChallengeGetInfo(session,false); - } + // 功能开启了,并且是首次登陆 + if (!ifOpenFourChallenge(user) || user.getPlayerInfoManager().isOpenFourChallenge()){ + return; + } + // 检测一次 + if (status == null){ + check(); + } + // 获取每天增加的天数 + int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay(); + for (int i = 0; i < status.length; i++) { + // 类型未开启 + if (status[i] == 0){ continue; } + user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay); + } + LOGGER.info("四灵试炼层数刷新,首次开启,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes())); + user.getPlayerInfoManager().setOpenFourChallenge(true); + // 推送四灵试炼信息 + ISession session = OnlineUserManager.getSessionByUid(user.getId()); + if (session != null){ + fourChallengeGetInfo(session,false); } } /** * 增加玩家登陆次数 * @param user - * @param num + * @param time */ - public void addFourChallengeNum(User user,int num) throws Exception { + public void addFourChallengeNum(User user,long time) throws Exception { // 四灵试炼活动未开启 - if (!ifOpenFourChallenge(user)){ return; } + boolean b = ifOpenFourChallenge(user); + if (!b){ + return; + } // 检测一次 - if (status == null){ check(); } + if (status == null){ + check(); + } // 获取每天增加的天数 - int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay(); + SCampTowerSetting towerSetting = STableManager.getConfig(SCampTowerSetting.class).get(1); + int campOpenDay = towerSetting.getTimesAddPerDay(); + for (int i = 0; i < status.length; i++) { // 类型未开启 - if (status[i] == 0){ continue; } - user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay*num); + if (status[i] == 0){ + continue; + } + // 记录天数 + int count = 0; + // 开启的星期数,第一位是开启阵营,要调过,从1开始 + int[] openDay = towerSetting.getCampOpenDay()[i]; + for (int i1 = 1; i1 < openDay.length; i1++) { + // 中间经过了几次开启时间 + count += TimeUtils.differentDaysToWeekday(time,TimeUtils.now(),openDay[i]); + } + user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay*count); } LOGGER.info("四灵试炼层数刷新,每日登录,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes())); user.getPlayerInfoManager().setOpenFourChallenge(true); From 695de90a50bb2e83d694d9980c6478eac3c1d9d2 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 21 Apr 2022 15:44:54 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E5=9B=9B=E7=81=B5=E8=AF=95=E7=82=BC?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fourChallenge/FourChallengeLogic.java | 27 +++++++------------ 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java index 414dbe082..067f29996 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java @@ -67,17 +67,12 @@ public class FourChallengeLogic { * 例子 0,1,1,1 */ public int[] status; - /** - * 策划表配置,开启时间 - */ - public final int[][] config; public static class Instance { - public final static FourChallengeLogic instance = new FourChallengeLogic(STableManager.getConfig(SCampTowerSetting.class).get(1).getCampOpenDay()); + public final static FourChallengeLogic instance = new FourChallengeLogic(); } - private FourChallengeLogic(int[][] config) { - this.config = config; + private FourChallengeLogic() { } /** @@ -98,16 +93,18 @@ public class FourChallengeLogic { * 检测试炼开启状态 */ public void check() { + int[][] config = STableManager.getConfig(SCampTowerSetting.class).get(1).getCampOpenDay(); // 空,初始化长度为4 - status = new int[4]; + int[] state = new int[4]; for (int[] statusConfig : config) { for (int i = 1; i < statusConfig.length; i++) { // 判断当前周几 if (TimeUtils.getDayOfWeek() == statusConfig[i]) { - status[statusConfig[0] - 1] = 1; + state[statusConfig[0] - 1] = 1; } } } + status = state; } @@ -385,9 +382,7 @@ public class FourChallengeLogic { return; } // 检测一次 - if (status == null){ - check(); - } + check(); // 获取每天增加的天数 int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay(); for (int i = 0; i < status.length; i++) { @@ -416,9 +411,7 @@ public class FourChallengeLogic { return; } // 检测一次 - if (status == null){ - check(); - } + check(); // 获取每天增加的天数 SCampTowerSetting towerSetting = STableManager.getConfig(SCampTowerSetting.class).get(1); int campOpenDay = towerSetting.getTimesAddPerDay(); @@ -432,9 +425,9 @@ public class FourChallengeLogic { int count = 0; // 开启的星期数,第一位是开启阵营,要调过,从1开始 int[] openDay = towerSetting.getCampOpenDay()[i]; - for (int i1 = 1; i1 < openDay.length; i1++) { + for (int j = 1; j < openDay.length; j++) { // 中间经过了几次开启时间 - count += TimeUtils.differentDaysToWeekday(time,TimeUtils.now(),openDay[i]); + count += TimeUtils.differentDaysToWeekday(time,TimeUtils.now(),openDay[j]); } user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay*count); } From 2ceaa10726268a590476144f19dcebd7fffb8612 Mon Sep 17 00:00:00 2001 From: "DESKTOP-98AVA47\\Administrator" Date: Mon, 30 May 2022 01:03:23 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E5=9B=9B=E7=81=B5=E8=AF=95=E7=82=BC?= =?UTF-8?q?=E6=AC=A1=E6=95=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamecommon/src/main/java/util/TimeUtils.java | 2 +- .../logic/activity/fourChallenge/FourChallengeLogic.java | 8 +++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index db44dd716..61b3e384b 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -1266,7 +1266,7 @@ public class TimeUtils { c.setTimeInMillis(time1); c.add(Calendar.DATE, 1); // 转换格式 - Date date1 = new Date(time1); + Date date1 = c.getTime(); Date date2 = new Date(time2); String format1 = sdf.format(date1); String format2 = sdf.format(date2); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java index 067f29996..1eb7ac4cb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/fourChallenge/FourChallengeLogic.java @@ -387,7 +387,9 @@ public class FourChallengeLogic { int campOpenDay = STableManager.getConfig(SCampTowerSetting.class).get(1).getTimesAddPerDay(); for (int i = 0; i < status.length; i++) { // 类型未开启 - if (status[i] == 0){ continue; } + if (status[i] == 0){ + continue; + } user.getPlayerInfoManager().addFourChallengeRemainTimes(i, campOpenDay); } LOGGER.info("四灵试炼层数刷新,首次开启,玩家:{},层数:{}", user.getId(), Arrays.toString(user.getPlayerInfoManager().getFourChallengeRemainTimes())); @@ -417,10 +419,6 @@ public class FourChallengeLogic { int campOpenDay = towerSetting.getTimesAddPerDay(); for (int i = 0; i < status.length; i++) { - // 类型未开启 - if (status[i] == 0){ - continue; - } // 记录天数 int count = 0; // 开启的星期数,第一位是开启阵营,要调过,从1开始