From 8b402e70aa688c0024a46842f74d6d30dbfa2261 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 3 Aug 2020 21:47:59 +0800 Subject: [PATCH 01/36] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java index 83979696a..4dc443be6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java @@ -80,7 +80,7 @@ public abstract class AbstractMap implements IMap { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } user.getTeamPosManager().setCurTeamPosId(teamId); - if (mapManager.getCurMapId() == 0) { + if (mapManager.getCurMapId() == 0||mapManager.getCurXY()==0) { enterNewMap(user,mapId,teamId,mapEnterResponse); } else if (mapManager.getCurMapId() != mapId) { throw new ErrorCodeException(ErrorCode.newDefineCode("地图错误,应进入" + mapManager.getCurMapId())); From 7cb039e0fbdcc3881dd7fcd657b037bcdf1e3590 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 4 Aug 2020 09:51:01 +0800 Subject: [PATCH 02/36] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=B0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/handler/map/mapType/TowerMap.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java index 086e2b97e..402ec7635 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java @@ -94,7 +94,8 @@ public class TowerMap extends AbstractMap { if(curFloor<10000){ STrialConfig sTrialConfig = STrialConfig.sTrialConfigMap.get(curFloor); if(sTrialConfig.getMapId()!=mapId){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + mapId = sTrialConfig.getMapId(); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } } if(!trialInfo.getMapInfo().isEmpty()&&mapManager.getCurMapId()==0){ From 233c166a8b8c9ff24052fb825a91bcab4dd1e997 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 4 Aug 2020 16:23:13 +0800 Subject: [PATCH 03/36] =?UTF-8?q?=E6=A3=AE=E7=BD=97=E5=B9=BB=E5=A2=83?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/handler/map/mapType/TowerMap.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java index 402ec7635..5bb28f54c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java @@ -172,9 +172,9 @@ public class TowerMap extends AbstractMap { return; } int floor = mapManager.getTrialInfo().getFloor(); - if(floor>=101&&floor<=200){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } +// if(floor>=101&&floor<=200){ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } STrialConfig sTrialConfig; if(floor>10000){ TreeMap sTrialConfigMap = (TreeMap) STrialConfig.sTrialConfigMap; From ebe8ebed4adce777147f32bb01e318fc5ed66079 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 4 Aug 2020 17:12:40 +0800 Subject: [PATCH 04/36] =?UTF-8?q?=E6=9A=82=E6=97=B6=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/map/mapType/AbstractMap.java | 18 ++++++++--------- .../jieling/handler/map/mapType/TowerMap.java | 20 +++++++++---------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java index 4dc443be6..df78099a4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/AbstractMap.java @@ -77,13 +77,13 @@ public abstract class AbstractMap implements IMap { MapManager mapManager = user.getMapManager(); if (teamId == 0) { LOGGER.info("enterMap() uid=>{} teamId =>{} ", uid, teamId); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } user.getTeamPosManager().setCurTeamPosId(teamId); if (mapManager.getCurMapId() == 0||mapManager.getCurXY()==0) { enterNewMap(user,mapId,teamId,mapEnterResponse); } else if (mapManager.getCurMapId() != mapId) { - throw new ErrorCodeException(ErrorCode.newDefineCode("地图错误,应进入" + mapManager.getCurMapId())); +// throw new ErrorCodeException(ErrorCode.newDefineCode("地图错误,应进入" + mapManager.getCurMapId())); }else{ mapEnterResponse.setCurXY(mapManager.getCurXY()); } @@ -173,12 +173,12 @@ public abstract class AbstractMap implements IMap { Map scMap = SCMap.sCMap.get(mapId); if (scMap == null) { LOGGER.info("enterMap() uid=>{} scMap == null =>{} ", user.getId(), mapId); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } SChallengeConfig sChallengeConfig = STableManager.getConfig(SChallengeConfig.class).get(mapId); if (sChallengeConfig == null) { LOGGER.info("enterMap() uid=>{} sChallengeConfig == null =>{} ", user.getId(), mapId); - throw new ErrorCodeException(ErrorCode.newDefineCode("该地图不存在")); +// throw new ErrorCodeException(ErrorCode.newDefineCode("该地图不存在")); } // 可进入地图条件判断 int[][] openRule = sChallengeConfig.getOpenRule(); @@ -232,12 +232,12 @@ public abstract class AbstractMap implements IMap { MapManager mapManager = user.getMapManager(); if (mapManager.getMapInfo() == null) { LOGGER.info("mapManager.getMapInfo() == null"); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } if (mapManager.getCanMoveTime() > 0) { long leftTime = mapManager.getCanMoveTime() - TimeUtils.now(); if (leftTime > 0) { - throw new ErrorCodeException(ErrorCode.HERO_LIVE_AGAIN,Collections.singletonList((leftTime / 1000)+"")); +// throw new ErrorCodeException(ErrorCode.HERO_LIVE_AGAIN,Collections.singletonList((leftTime / 1000)+"")); } } Cell cell = mapManager.getMapInfo().get(mapManager.getTriggerXY()); @@ -245,14 +245,14 @@ public abstract class AbstractMap implements IMap { cell = mapManager.getMapInfo().get(mapManager.getCurXY()); if (cell == null) { LOGGER.info("cell == null xy is wrong =>{} triggerXY=>{}", mapManager.getCurXY(), mapManager.getTriggerXY()); - throw new ErrorCodeException(ErrorCode.newDefineCode("cell == null")); +// throw new ErrorCodeException(ErrorCode.newDefineCode("cell == null")); } } int bigEventId = cell.getEventId(); SEventPointConfig sEventPointConfig = STableManager.getConfig(SEventPointConfig.class).get(bigEventId); if (sEventPointConfig == null) { LOGGER.info("sEventPointConfig == null"); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } String fightReadyKey = RedisKey.getKey(RedisKey.FIGHT_READY, Integer.toString(uid), false); String fightReady = (String) RedisUtil.getInstence().get(fightReadyKey); @@ -269,7 +269,7 @@ public abstract class AbstractMap implements IMap { int[] option = sEventPointConfig.getOption(); if (option == null||option.length<1) { LOGGER.info("option == null sEventPointConfig.getId()=>{}", sEventPointConfig.getId()); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } groupId = monsterGroupChange(option[0]); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java index 5bb28f54c..aad56372d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/TowerMap.java @@ -82,9 +82,9 @@ public class TowerMap extends AbstractMap { @Override public void enterMap(int uid, int mapId, int teamId, MapInfoProto.MapEnterResponse.Builder mapEnterResponse) throws Exception { - if(teamId!= GlobalsDef.TRIAL_TEAM){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } +// if(teamId!= GlobalsDef.TRIAL_TEAM){ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } //进图时检测是否需要重置 MapLogic.getInstance().checkTrialReset(UserManager.getUser(uid)); @@ -342,26 +342,26 @@ public class TowerMap extends AbstractMap { MapManager mapManager = user.getMapManager(); if (mapManager.getMapInfo() == null) { LOGGER.info("fastFight mapManager.getMapInfo() == null"); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } Cell cell = mapManager.getMapInfo().get(mapManager.getTriggerXY()); if (cell == null) { cell = mapManager.getMapInfo().get(mapManager.getCurXY()); if (cell == null) { LOGGER.info("cell == null xy is wrong =>{} triggerXY=>{}", mapManager.getCurXY(), mapManager.getTriggerXY()); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } } int bigEventId = cell.getEventId(); SEventPointConfig sEventPointConfig = STableManager.getConfig(SEventPointConfig.class).get(bigEventId); if (sEventPointConfig == null) { LOGGER.info("sEventPointConfig == null"); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } int[] option = sEventPointConfig.getOption(); if (option == null) { LOGGER.info("option == null sEventPointConfig.getId()=>{}", sEventPointConfig.getId()); - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } int groupId = option[0]; int destoryXY = mapManager.getTriggerXY(); @@ -374,14 +374,14 @@ public class TowerMap extends AbstractMap { //校验结果码 1:胜利 int resultCode = checkResult[0]; if (resultCode == -1) { - throw new ErrorCodeException(ErrorCode.FIGHT_EXCEPTION); +// throw new ErrorCodeException(ErrorCode.FIGHT_EXCEPTION); } mapManager.setLastFightResult(resultCode); //更新血量 TrialInfo trialInfo = mapManager.getTrialInfo(); List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(mapManager.getTeamId()); if(teamPosHeroInfos==null||teamPosHeroInfos.size()!=1){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } TrailHero trailHero = trialInfo.getHeroInfo().get(teamPosHeroInfos.get(0).getHeroId()); @@ -465,7 +465,7 @@ public class TowerMap extends AbstractMap { MapManager mapManager = user.getMapManager(); // LOGGER.info("进入召唤boss"); if(mapManager.getTrialInfo().getEnergy()<100){ - throw new ErrorCodeException(ErrorCode.newDefineCode("精气值不足!!")); +// throw new ErrorCodeException(ErrorCode.newDefineCode("精气值不足!!")); } int currTower = mapManager.getTrialInfo().getFloor(); STrialConfig config = STrialConfig.sTrialConfigMap.get(currTower); From 4a50b29266441684f0da94498161bc4e666cf646 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 4 Aug 2020 20:37:39 +0800 Subject: [PATCH 05/36] =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StartExpeditionBattleRequest.java | 3 + .../handler/equip/ComplexEquipHandler.java | 5 ++ .../ComplexJewelEquipRequestHandler.java | 5 ++ .../ljsd/jieling/handler/map/MapLogic.java | 28 ++++++++- .../ljsd/jieling/ktbeans/ReportEventEnum.java | 26 ++++----- .../ljsd/jieling/logic/family/GuildLogic.java | 4 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 57 ++++++++++++++++++- .../ljsd/jieling/logic/item/ItemLogic.java | 48 +++++++++++++++- .../logic/rank/rankImpl/ForceCurrRank.java | 44 ++++++++------ .../java/com/ljsd/jieling/util/ItemUtil.java | 3 +- 10 files changed, 182 insertions(+), 41 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java index dc406344a..a83ae5600 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/StartExpeditionBattleRequest.java @@ -7,6 +7,8 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; +import com.ljsd.jieling.ktbeans.ReportEventEnum; +import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.expedition.ExpeditionLogic; @@ -124,6 +126,7 @@ public class StartExpeditionBattleRequest extends BaseHandler(consumeMap.keySet()),consumeMap.values()); } else { @@ -184,6 +188,7 @@ public class ComplexEquipHandler extends BaseHandler(countMap.keySet()),"",new ArrayList<>(consumeMap.keySet()),consumeMap.values()); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EQUIP_COMPLEX_RESPONSE_VALUE, response.build(), true); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexJewelEquipRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexJewelEquipRequestHandler.java index 1a26bd6bf..f85d55b6d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexJewelEquipRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexJewelEquipRequestHandler.java @@ -6,6 +6,8 @@ import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.ktbeans.ReportEventEnum; +import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.dao.Jewel; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; @@ -114,6 +116,8 @@ public class ComplexJewelEquipRequestHandler extends BaseHandler(consumeMap.keySet()),consumeMap.values()); + } else { @@ -204,6 +208,7 @@ public class ComplexJewelEquipRequestHandler extends BaseHandler(consumeMap.keySet()),new ArrayList<>(consumeMap.values()),new ArrayList<>(consumeMap.keySet()),consumeMap.values()); ItemUtil.itemCost(user, consumeMap, BIReason.COMPLEX_EQUIP_CONSUME, 0); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 5725fac8d..091c62cbe 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -2147,7 +2147,7 @@ public class MapLogic { // String rankKey = RedisKey.getKey(RedisKey.MAINLEVEL_RANK, "", false); // RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(user.getId()), sMainLevelConfig.getVirtureId()); RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(uid,"",sMainLevelConfig.getVirtureId(),user.getPlayerInfoManager().getMaxForce()); - ReportUtil.onReportEvent(user, ReportEventEnum.PASS_STAGE.getType(),String.valueOf(fightId),"",sMainLevelConfig.getReward()); + ReportUtil.onReportEvent(user, ReportEventEnum.PASS_STAGE.getType(),String.valueOf(fightId),"",sMainLevelConfig.getReward(),new Date()); } @@ -2229,6 +2229,7 @@ public class MapLogic { BehaviorUtil.getLevelDifficultyifficuFightInfo(user,FightType.MonterFight, sFloodConfig.getMonster(), teamId, sFloodConfig.getBattleTime(), fightStartResponse, RedisKey.CHALLENGE_MONSTER_ATTACK); user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_PLAY); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightStartResponse.build(), true); + ReportUtil.onReportEvent(user,ReportEventEnum.START_XINMO.getType(),fightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),""); } @@ -2283,6 +2284,15 @@ public class MapLogic { user.getMapManager().setLastMonsterAttack(checkFightId + 1); user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_LEVEL); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true); + + List itemDrop = drop.getItemlistList(); + List itemIdList = new ArrayList<>(); + List itemNumList = new ArrayList<>(); + itemDrop.forEach(item->{ + itemIdList.add(item.getItemId()); + itemIdList.add(item.getItemNum()); + }); + ReportUtil.onReportEvent(user,ReportEventEnum.START_XINMO.getType(),checkFightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),new Date(),"",itemIdList,itemNumList); } @@ -3013,6 +3023,7 @@ public class MapLogic { // throw new ErrorCodeException(ErrorCode.REFRESH_WHEL_TIME_NOT); // } boolean consumeCount = false; + boolean isFailed = false; Set dailyPass = playerInfoManager.getDailyPass(); if(type==2){ if(!dailyPass.contains(id)){ @@ -3067,17 +3078,30 @@ public class MapLogic { builder.setDrop(drop); playerInfoManager.addDailyPass(id); consumeCount = true; + }else{ + isFailed = true; } }else{ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - + ReportUtil.onReportEvent(user,ReportEventEnum.START_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),"",0); if(consumeCount){ boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sDailyChallengeConfig.getPrivilegeId()[1], 1); if(!consume){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } } + CommonProto.Drop drop = builder.getDrop(); + if(!isFailed){ + List itemDrop = drop.getItemlistList(); + List itemIdList = new ArrayList<>(); + List itemNumList = new ArrayList<>(); + itemDrop.forEach(item->{ + itemIdList.add(item.getItemId()); + itemIdList.add(item.getItemNum()); + }); + ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),new Date(),"",0,itemIdList,itemNumList,type==1?"挑战":"扫荡"); + } user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType()); MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java index a228f99e1..600dfc7aa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java @@ -45,16 +45,13 @@ public enum ReportEventEnum { ALLOW_FRIENDS_ASK(31,"allow_friends_ask", new CommonEventHandler(),new String[]{"target_id","target_name","target_level","entrance"}), SEND_MESSAGE(32,"send_message", new CommonEventHandler(),new String[]{"message_type","message_content"}), OPEN_MAIL(33,"open_mail", new CommonEventHandler(),new String[]{""}), - START_DAILY_DUNGEON(34,"start_daily_dungeon", new CommonEventHandler(),new String[]{""}), - COMPLETE_DAILY_DUNGEON(35,"complete_daily_dungeon", new CommonEventHandler(),new String[]{""}), - START_XINMO(36,"start_xinmo", new CommonEventHandler(),new String[]{""}), + START_DAILY_DUNGEON(34,"start_daily_dungeon", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","enemy_hero_list","left_challenge_nums"}), + COMPLETE_DAILY_DUNGEON(35,"complete_daily_dungeon", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","left_challenge_nums","rewards_id_list","rewards_num_list","pass_type"}), + START_XINMO(36,"start_xinmo", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","enemy_hero_list"}), - COMPLETE_XINMO(37,"complete_xinmo", new CommonEventHandler(),new String[]{""}), + COMPLETE_XINMO(37,"complete_xinmo", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","rewards_id_list","rewards_num_list"}), - - START_CHECHI(38,"start_chechi", new CommonEventHandler(),new String[]{""}), - - COMPLETE_CHECHI(39,"complete_chechi", new CommonEventHandler(),new String[]{""}), + COMPLETE_CHECHI(39,"complete_chechi", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","left_challenge_nums","rewards_id_list","rewards_num_list"}), START_PANOPTIC_MIRROR(40,"start_panoptic_mirror", new CommonEventHandler(),new String[]{""}), @@ -62,21 +59,22 @@ public enum ReportEventEnum { COMPLETE_PANOPTIC_MIRROR(42,"complete_panoptic_mirror", new CommonEventHandler(),new String[]{""}), - EQUIP_SYNTHESIS(43,"equip_synthesis", new CommonEventHandler(),new String[]{""}), + EQUIP_SYNTHESIS(43,"equip_synthesis", new CommonEventHandler(),new String[]{"item_id","item_name","cost_item_id","cost_amount"}), - TREASURE_SYNTHESIS(44,"treasure_synthesis", new CommonEventHandler(),new String[]{""}), + TREASURE_SYNTHESIS(44,"treasure_synthesis", new CommonEventHandler(),new String[]{"item_id","item_name","cost_item_id","cost_amount"}), - FATALITY_SYNTHESIS(45,"fatality_synthesis", new CommonEventHandler(),new String[]{""}), + FATALITY_SYNTHESIS(45,"fatality_synthesis", new CommonEventHandler(),new String[]{"item_id","item_name","cost_item_id"}), NORMAL_SUMMON(46,"Normal_summon", new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}), FRIENDSHIP_SUMMON(47,"friendship_summon", new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}), GODS_SUMMON(48,"gods_summon", new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}), - SUMMON_HERO(49,"summon_hero", new CommonEventHandler(),new String[]{""}),//四元阵 - HERO_COMPOSITION(50,"hero_composition", new CommonEventHandler(),new String[]{""}), + SUMMON_HERO(49,"summon_hero", new CommonEventHandler(),new String[]{"item_id","hero_group","get_amount"}),//四元阵 - SEND_HERO(51,"send_hero", new CommonEventHandler(),new String[]{""}), + HERO_COMPOSITION(50,"hero_composition", new CommonEventHandler(),new String[]{"hero_id","hero_level","hero_quality","reward_list","reward_nums_list"}), + + SEND_HERO(51,"send_hero", new CommonEventHandler(),new String[]{"hero_id","hero_level","hero_quality","reward_list","reward_nums_list"}), TREASURE_DECOMPOSITION(52,"treasure_decomposition", new CommonEventHandler(),new String[]{""}), VIP_LEVEL_UP(100,"", new VipLevelUpEventHandler(),new String[]{""}); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java index 30787e8bf..a3b6c7929 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/GuildLogic.java @@ -211,10 +211,8 @@ public class GuildLogic { if(StringUtil.isEmpty(familyName)){ throw new ErrorCodeException(ErrorCode.NULL_NAME); } - boolean result = true; if(!StringUtil.isEmpty(announce)){ - result = ShieldedWordUtils.checkName(user,announce,false,ChatContentType.FAMILY_NAME); - if (!result) { + if (!ShieldedWordUtils.checkName(user,familyName,false,ChatContentType.FAMILY_NAME)||!ShieldedWordUtils.checkName(user,announce,false,ChatContentType.FAMILY_NAME)) { throw new ErrorCodeException(ErrorCode.FAMILY_IN_SENSITIVE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 333668772..5964bbd82 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -220,6 +220,7 @@ public class HeroLogic{ //检验消耗 boolean allowFree = false; + int[] costAmount = new int[1]; int privilege = sLotterySetting.getFreeTimes(); if(privilege!=0){ allowFree = PlayerLogic.getInstance().checkAndUpdate(user,privilege, perCount); @@ -230,6 +231,7 @@ public class HeroLogic{ int [][] costItems = new int[][]{cost}; enoughCost = ItemUtil.itemCost(user, costItems,BIReason.RANDOM_HERO_CONSUME,type); if(enoughCost){ + costAmount = cost; break; } } @@ -250,6 +252,8 @@ public class HeroLogic{ resultRandom[i] =sLotteryRewardConfig.getReward(); index = i; } + //上报抽卡 + reportRandom(user,sLotterySetting,resultRandom,costAmount); for(int i = 0;i result = new ArrayList<>(resultRandom.length); + for(int[] random:resultRandom){ + SCHero scHero = SCHero.getsCHero().get(random[0]); + if(scHero==null){ + result.add(String.valueOf(random[0])); + }else{ + result.add(random[0]+"-"+scHero.getStar()); + } + } + ReportUtil.onReportEvent(user,eventEnum.getType(),"",String.valueOf(sLotterySetting.getPerCount()),String.valueOf(costItem[0]),String.valueOf(costItem[1]),result); + } catch (Exception e) { + e.printStackTrace(); + } + } + /** * 每次抽取 * @param user @@ -2357,6 +2403,14 @@ public class HeroLogic{ throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT); } CommonProto.Drop.Builder drop = heroBackDrop(user, heroList, returnPercent, BIReason.HERO_BACK_REWARD,false); + List itemList = drop.getItemlistList(); + List itemId = new ArrayList<>(itemList.size()); + List itemNum = new ArrayList<>(itemList.size()); + itemList.forEach(item->{ + itemId.add(item.getItemId()); + itemNum.add(item.getItemNum()); + }); + ReportUtil.onReportEvent(user,ReportEventEnum.HERO_COMPOSITION.getType(),String.valueOf(hero.getTemplateId()),hero.getLevel(),hero.getStar(),itemId,itemNum); hero.setLevel(user,1); hero.setBreakId(0); HeroInfoProto.HeroReturnResponse build = HeroInfoProto.HeroReturnResponse.newBuilder().setDrop(drop).build(); @@ -2420,7 +2474,6 @@ public class HeroLogic{ resultDrop[index] = new int[]{entry.getKey(),entry.getValue()}; index++; } - CommonProto.Drop.Builder drop = ItemUtil.drop(user, resultDrop, reason); return drop; @@ -2579,7 +2632,7 @@ public class HeroLogic{ HeroInfoProto.MergeSoulResponse build = HeroInfoProto.MergeSoulResponse.newBuilder().setDrop(dropBuilder).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.SOUL_MERGE_RESPONSE_VALUE,build,true); - + ReportUtil.onReportEvent(user,ReportEventEnum.FATALITY_SYNTHESIS.getType(),targetId,"",soulIdList); } public static void unloadSoulEquipOpt(ISession iSession, String heroId, List equipIdsList) throws Exception { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index eb1762e55..add2b1c6d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -8,6 +8,8 @@ import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.map.MapManager; +import com.ljsd.jieling.ktbeans.ReportEventEnum; +import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.activity.event.EspecialEquipUpEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.activity.event.UserMainTeamForceEvent; @@ -272,6 +274,9 @@ public class ItemLogic { Map equipMap = user.getEquipManager().getEquipMap(); List items = new ArrayList<>(); StringBuilder reward = new StringBuilder(); + List jewelIdReport = new ArrayList<>(); + List jewelLevelReport = new ArrayList<>(); + List jewelQualityReport = new ArrayList<>(); for (String jewelId : jewelList) { if(!equipMap.containsKey(jewelId)) throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_NO_EQUIP); @@ -317,14 +322,21 @@ public class ItemLogic { } } SItem sItem = SItem.getsItemMap().get(propertyItem.getEquipId()); + jewelIdReport.add(propertyItem.getEquipId()); + jewelLevelReport.add(propertyItem.getLevel()); + jewelQualityReport.add(((Jewel) propertyItem).getBuildLevel()); reward = getStringBuilder(reward, 1, sItem.getResolveReward()); } + + for (String jewelId : jewelList) { user.getEquipManager().remove(jewelId); } int[][] dropItems = items.toArray(new int[items.size()][]); + Map reportMap = ItemUtil.arrayToMap(dropItems); + ReportUtil.onReportEvent(user,ReportEventEnum.TREASURE_DECOMPOSITION.getType(),jewelIdReport,jewelLevelReport,jewelQualityReport,new ArrayList<>(reportMap.keySet()),reportMap.values()); CommonProto.Drop.Builder drop = ItemUtil.drop(user, StringUtil.parseFiledInt(reward.toString()), 1, 0,BIReason.JEWEL_DECOMPOSE); ItemUtil.drop(user,dropItems,drop,BIReason.JEWEL_DECOMPOSE); sendUseAndPriceItemMessage(session,MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE,drop); @@ -378,8 +390,14 @@ public class ItemLogic { //2有过突破的卡 =当前等级返还升级材料+突破表返还材料 Map baseItemMap = new HashMap<>(); int rankUpReturnPercent= SSpecialConfig.getIntegerValue(SSpecialConfig.HERO_SACRIFICE_PERCENT); + List heroIdReport = new ArrayList<>(); + List heroLevelReport = new ArrayList<>(); + List heroStarReport = new ArrayList<>(); for (String heroId : heroIdsList) { Hero hero = heroManager.getHeroMap().get(heroId); + heroIdReport.add(hero.getTemplateId()); + heroLevelReport.add(hero.getLevel()); + heroStarReport.add(hero.getStar()); heroManager.removeHero(uid,heroId); int[][] sumConsume = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel()).getSumConsume(); SHeroSacrifice starSHeroSacrifice = STableManager.getFigureConfig(HeroStaticConfig.class).getsHeroSacrificeMap(1, hero.getStar()); @@ -427,9 +445,37 @@ public class ItemLogic { }else { user.getUserMissionManager().onGameEvent(user,GameEvent.DESPOSE_HERO,heroIdsList.size()); } + if(reson== BIReason.DECOMPOS_HERO_REWARD){ + ReportUtil.onReportEvent(user, ReportEventEnum.SEND_HERO.getType(),heroIdReport,heroLevelReport,heroStarReport,new ArrayList<>(baseItemMap.keySet()),baseItemMap.values()); + } return ItemUtil.drop(user,itemReturnPercent(itemArray,rankUpReturnPercent),reson); } + /** + * 法宝归元所得 + */ + private Map heroEspecialEquipReturnItem(Hero hero){ + int especialEquipLevel = hero.getEspecialEquipLevel(); + if(especialEquipLevel==1||especialEquipLevel==0){ + return null; + } + SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); + int[] equipTalismana = scHero.getEquipTalismana(); + if(equipTalismana==null||equipTalismana.length<2){ + return null; + } + Map baseItemMap = new HashMap<>(); + TreeMap levelMap = (TreeMap) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1])); + Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); + for(Map.Entry entry:returnMap.entrySet()){ + int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); + for(int[] rankUpConsume:rankupBasicMaterial){ + baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); + } + } + return baseItemMap; + } + /** * 返回数量乘比值 * @param sumConsume @@ -582,7 +628,7 @@ public class ItemLogic { * @param equipid * @return */ - public static int getEquipByID(User user, int equipId) throws Exception { + public static int getEquipByID(User user, int equipId){ Item item = user.getItemManager().getItemMap().get(equipId); if(item==null){ return 0; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java index bc470229a..5b9b2ebb1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/ForceCurrRank.java @@ -60,27 +60,35 @@ public class ForceCurrRank extends AbstractRank implements IEventHandler{ if(infoQueue.isEmpty()){ return; } - int size = infoQueue.size(); - List eventList = new ArrayList<>(size); + try{ + int size = infoQueue.size(); + List eventList = new ArrayList<>(size); - //看队列长度和每次最多传输多少比较,找最小 - int transport = Math.min(size,TRANSPORT_SIZE); + //看队列长度和每次最多传输多少比较,找最小 + int transport = Math.min(size,TRANSPORT_SIZE); - for(int i = 0 ; i < transport;i++){ - eventList.add(infoQueue.poll()); - } - - Set changeId = new HashSet<>(); - eventList.forEach(n->changeId.add(n.getUid())); - changeId.forEach(i-> { - try { - User user = UserManager.getUser(i); - int force = HeroLogic.getInstance().calTeamTotalForce(user, 1, false); - addRank(i,"",force); - } catch (Exception e) { - e.printStackTrace(); + for(int i = 0 ; i < transport;i++){ + UserMainTeamForceEvent event = infoQueue.poll(); + if(event!=null){ + eventList.add(event); + } } - }); + + Set changeId = new HashSet<>(); + eventList.forEach(n->changeId.add(n.getUid())); + changeId.forEach(i-> { + try { + User user = UserManager.getUser(i); + int force = HeroLogic.getInstance().calTeamTotalForce(user, 1, false); + addRank(i,"",force); + } catch (Exception e) { + e.printStackTrace(); + } + }); + + }catch (Exception e){ + e.printStackTrace(); + } } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 523c42b61..c55f5ef64 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -598,7 +598,7 @@ public class ItemUtil { // } // KtEventUtils.onKtEvent(user, eventType,reason,GlobalsDef.addReason,entry.getKey(),itemNum,item.getItemNum()); ReportUtil.onReportEvent(user,ReportEventEnum.GET_ITEM.getType(),itemNum,String.valueOf(reason),item.getItemId()); - baseItemReport(user,item.getItemId(),itemNum,2,reason); + baseItemReport(user,item.getItemId(),itemNum,1,reason); if(sItem.getItemType() == GlobalItemType.POKENMON_COMONPENT && sItem.getQuantity()>=SSpecialConfig.getIntegerValue(SSpecialConfig.lamp_lottery_differ_content_parm)){ SDifferDemonsConfig sDifferDemonsConfig = SDifferDemonsConfig.sDifferDemonsConfigMapByComId.get(sItem.getId()); @@ -616,6 +616,7 @@ public class ItemUtil { sendToFront.add(CBean2Proto.getItem(item,-1)); if(sItem.getItemType()==GlobalItemType.EQUIP){ user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),itemNum); + ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),itemNum,reason); } } if (dropBuilder != null) { From d7a98fe7fce05258e8783bf3c9db3267a77656cc Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 5 Aug 2020 16:41:42 +0800 Subject: [PATCH 06/36] =?UTF-8?q?=E6=B3=95=E5=AE=9D=E5=BD=92=E5=85=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 1 + .../ljsd/jieling/logic/hero/HeroLogic.java | 28 +++++++++++++ .../ljsd/jieling/logic/item/ItemLogic.java | 41 +++++++++++-------- 3 files changed, 52 insertions(+), 18 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 507e2476e..bc15371d7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -142,6 +142,7 @@ public interface BIReason { int PROUD_REWARD = 78;//膜拜获得金币奖励 int EQUIP_UNLOAD_REWARD = 79; + int ESPECIAL_BACK = 80;//法宝归元获得 int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 5964bbd82..2edfcc711 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2418,6 +2418,34 @@ public class HeroLogic{ } + /** + * 法宝归元 + * @param session + * @param heroIdList + * @throws Exception + */ + public void especialEquipBack(ISession session,List heroIdList) throws Exception{ + User user = UserManager.getUser(session.getUid()); + Map dropMap = new HashMap<>(); + for(String heroId:heroIdList){ + Hero hero = user.getHeroManager().getHero(heroId); + if(hero==null||hero.getEspecialEquipLevel()<=1){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + Map dropTempMap = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero); + if(dropTempMap==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + dropTempMap.forEach((k,v)->dropMap.put(k,dropMap.getOrDefault(k,0)+v)); + hero.updateEspecial(1); + } + + CommonProto.Drop.Builder drop = ItemUtil.drop(user, ItemUtil.mapToArray(dropMap), BIReason.ESPECIAL_BACK); + HeroInfoProto.EspecialEquipBackResponse response = HeroInfoProto.EspecialEquipBackResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_RESPONSE_VALUE,response,true); + + } + /** * 归元掉落 * @param user diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index add2b1c6d..8b147d8b2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -413,23 +413,28 @@ public class ItemLogic { for(int[] item:breakSHeroSacrifice.getValue()){ baseItemMap.put(item[0],baseItemMap.getOrDefault(item[0],0)+item[1]); } -// 返还法宝修炼材料 - int especialEquipLevel = hero.getEspecialEquipLevel(); - if(especialEquipLevel==1||especialEquipLevel==0){ - continue; - } - SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - int[] equipTalismana = scHero.getEquipTalismana(); - if(equipTalismana==null||equipTalismana.length<2){ - continue; - } - TreeMap levelMap = (TreeMap) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1])); - Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); - for(Map.Entry entry:returnMap.entrySet()){ - int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); - for(int[] rankUpConsume:rankupBasicMaterial){ - baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); - } +//// 返还法宝修炼材料 +// int especialEquipLevel = hero.getEspecialEquipLevel(); +// if(especialEquipLevel==1||especialEquipLevel==0){ +// continue; +// } +// SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); +// int[] equipTalismana = scHero.getEquipTalismana(); +// if(equipTalismana==null||equipTalismana.length<2){ +// continue; +// } +// TreeMap levelMap = (TreeMap) (SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1])); +// Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); +// for(Map.Entry entry:returnMap.entrySet()){ +// int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); +// for(int[] rankUpConsume:rankupBasicMaterial){ +// baseItemMap.put(rankUpConsume[0],baseItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); +// } +// } + //法宝获得 + Map especialReturn = heroEspecialEquipReturnItem(hero); + if(especialReturn!=null){ + especialReturn.forEach((k,v)->baseItemMap.put(k,baseItemMap.getOrDefault(k,0)+v)); } } @@ -454,7 +459,7 @@ public class ItemLogic { /** * 法宝归元所得 */ - private Map heroEspecialEquipReturnItem(Hero hero){ + public Map heroEspecialEquipReturnItem(Hero hero){ int especialEquipLevel = hero.getEspecialEquipLevel(); if(especialEquipLevel==1||especialEquipLevel==0){ return null; From 96625ede21f6010d500490fb69ee25c7440082a7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 7 Aug 2020 15:12:49 +0800 Subject: [PATCH 07/36] =?UTF-8?q?=E6=B3=95=E5=AE=9D=E5=BD=92=E5=85=83?= =?UTF-8?q?=EF=BC=8C=E7=A7=98=E5=A2=83=E6=97=B6=E9=97=B4=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../equip/EspecialEquipBackHandler.java | 26 ++++++ .../ljsd/jieling/logic/SituationLogic.java | 79 +++++++++++++++++++ .../ljsd/jieling/thread/task/MinuteTask.java | 2 + 3 files changed, 107 insertions(+) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/equip/EspecialEquipBackHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/EspecialEquipBackHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/EspecialEquipBackHandler.java new file mode 100644 index 000000000..d573e3e6a --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/EspecialEquipBackHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.equip; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/8/5 + * @discribe + */ +@Component +public class EspecialEquipBackHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.ESPECIAL_EQUIP_BACK_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, HeroInfoProto.EspecialEquipBackRequest proto) throws Exception { + HeroLogic.getInstance().especialEquipBack(iSession,proto.getHeroIdLsitList()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java new file mode 100644 index 000000000..2f709871c --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -0,0 +1,79 @@ +package com.ljsd.jieling.logic; + + +import com.ljsd.jieling.core.FunctionIdEnum; +import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; +import com.ljsd.jieling.network.session.ISession; +import util.TimeUtils; + +import java.util.Map; + +/** + * @author lvxinran + * @date 2020/8/6 + * @discribe + */ +public class SituationLogic { + + public static SituationLogic getInstance() { + return SituationLogic.Instance.instance; + } + + public static class Instance { + public final static SituationLogic instance = new SituationLogic(); + } + + private int[][] openConfig = new int[4][]; + + private int[] status = new int[4]; + + private int[] overTime = new int[4]; + + + public void createCheckstatusTask(){ + Runnable runnable = this::checkStatus; + runnable.run(); + } + private void checkStatus(){ + if(status==null||overTime==null||openConfig==null){ + status = new int[4]; + openConfig = new int[4][]; + overTime = new int[4]; + doCheck(); + }else{ + if(TimeUtils.getHourOfDay()!=5){ + return; + } + doCheck(); + } + } + private void doCheck(){ + long now = TimeUtils.now(); + int hourOfDay = TimeUtils.getHourOfDay(); + int week = TimeUtils.getDayOfWeek(); + if(hourOfDay<5){ + week = week==0?7:week-1; + } + for(int[] config:openConfig){ + boolean isOpen = false; + for(int i = 1;i Date: Fri, 7 Aug 2020 19:29:13 +0800 Subject: [PATCH 08/36] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=A9=E8=BE=95?= =?UTF-8?q?=E5=AE=9D=E9=95=9C=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java | 1 + 1 file changed, 1 insertion(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java index 4f36ddaaa..6ebb21875 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/FunctionIdEnum.java @@ -62,6 +62,7 @@ public enum FunctionIdEnum { Achieve(65,null), DeathPath(72,null), Car_Delay(73,new CarDelayFunction()), + Situation_challenge(74,null), ; private int functionType; From ee0c50242b381bca06733a6043e202e9bed48f1e Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 6 Aug 2020 22:54:25 +0800 Subject: [PATCH 09/36] =?UTF-8?q?=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/SituationLogic.java | 136 +++++++++++++++++- .../ljsd/jieling/logic/dao/PlayerManager.java | 10 ++ .../src/main/java/config/SSpecialConfig.java | 1 + 3 files changed, 143 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index 2f709871c..3db9546e5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -2,11 +2,37 @@ package com.ljsd.jieling.logic; import com.ljsd.jieling.core.FunctionIdEnum; +import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.ktbeans.ReportEventEnum; +import com.ljsd.jieling.ktbeans.ReportUtil; +import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.fight.FightDispatcher; +import com.ljsd.jieling.logic.fight.GameFightType; +import com.ljsd.jieling.logic.fight.PVEFightEvent; +import com.ljsd.jieling.logic.fight.result.FightResult; +import com.ljsd.jieling.logic.mission.GameEvent; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.MonsterUtil; +import config.SDailyChallengeConfig; +import config.SMainLevelConfig; +import config.SRaceTowerConfig; +import config.SSpecialConfig; +import manager.STableManager; import util.TimeUtils; -import java.util.Map; +import java.util.*; /** * @author lvxinran @@ -37,7 +63,7 @@ public class SituationLogic { private void checkStatus(){ if(status==null||overTime==null||openConfig==null){ status = new int[4]; - openConfig = new int[4][]; + openConfig = SSpecialConfig.getTwiceArrayValue(SSpecialConfig.XUANYUAN_OPEN_TIME); overTime = new int[4]; doCheck(); }else{ @@ -68,12 +94,114 @@ public class SituationLogic { } - public void getAllSituationStatus(ISession session){ + public void getAllSituationStatus(ISession session, MessageTypeProto.MessageType messageType){ + MapInfoProto.GetAllSituationInfoResponse.Builder response = MapInfoProto.GetAllSituationInfoResponse.newBuilder(); + for(int i = 0 ; i < status.length;i++){ + if(status[i]==0){ + continue; + } + CommonProto.SituationInfo info = CommonProto.SituationInfo.newBuilder().setId(i+1).setOverTime(overTime[i]).build(); + response.addInfos(info); + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } - public void situationsChallenge(){ + public void situationsChallenge(ISession session, int id, int type , MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + MapInfoProto.SituationChallengeResponse.Builder builder= MapInfoProto.SituationChallengeResponse.newBuilder(); + PlayerManager playerInfoManager = user.getPlayerInfoManager(); +// //次数校验 + SRaceTowerConfig sRaceTowerConfig = STableManager.getConfig(SRaceTowerConfig.class).get(id); + int openRules = sRaceTowerConfig.getOpenRules(); + Set situationPass = playerInfoManager.getSituationPass(); + if(openRules!=0&&!situationPass.contains(openRules)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + +// boolean consumeCount = false; +// boolean isFailed = false; +// Set dailyPass = playerInfoManager.getDailyPass(); +// if(type==2){ +// if(!dailyPass.contains(id)){ +// throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); +// } +// CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 0, 1); +// builder.setDrop(drop); +// consumeCount = true; +// }else if(type==1){ +// if(dailyPass.contains(id)){ +// throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); +// } +// //判断上一关是否已过 +// if(lastChange!=null&&lastChange.getType()==sDailyChallengeConfig.getType()){ +// if(!dailyPass.contains(id - 1)){ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } +// } +// int[][] openRules = sDailyChallengeConfig.getOpenRules(); +// boolean open = true; +// for(int[] rule:openRules){ +// switch (rule[0]){ +// case 1: +// open = playerInfoManager.getLevel()>=rule[1]; +// break; +// case 2: +// open = SMainLevelConfig.biggerThanFight(user.getMainLevelManager().getFightId(),rule[1]); +// break; +// case 3: +// open = playerInfoManager.getMaxForce()>=rule[1]; +// break; +// } +// if(!open){ +// throw new ErrorCodeException(ErrorCode.DAILY_NO_OPEN); +// } +// } +// +// +// +// PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), GlobalsDef.FORMATION_NORMAL, 1000, "", GameFightType.DailyChallenge, sDailyChallengeConfig.getMonsterId(), 3); +// FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); +// CommonProto.FightData fightData = CommonProto.FightData.newBuilder() +// .setFightMaxTime(20) +// .setFightSeed(fightResult.getSeed()) +// .setHeroFightInfos(fightResult.getFightTeamInfo()) +// .addAllMonsterList(fightResult.getMonsterTeamList()) +// .build(); +// int[] checkResult = fightResult.getCheckResult(); +// builder.setFightData(fightData); +// if(checkResult[0]>0){ +// CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 0, 1); +// builder.setDrop(drop); +// playerInfoManager.addDailyPass(id); +// consumeCount = true; +// }else{ +// isFailed = true; +// } +// }else{ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } +// ReportUtil.onReportEvent(user, ReportEventEnum.START_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(), MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),"",0); +// if(consumeCount){ +// boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sDailyChallengeConfig.getPrivilegeId()[1], 1); +// if(!consume){ +// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); +// } +// } +// CommonProto.Drop drop = builder.getDrop(); +// if(!isFailed){ +// List itemDrop = drop.getItemlistList(); +// List itemIdList = new ArrayList<>(); +// List itemNumList = new ArrayList<>(); +// itemDrop.forEach(item->{ +// itemIdList.add(item.getItemId()); +// itemIdList.add(item.getItemNum()); +// }); +// ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),new Date(),"",0,itemIdList,itemNumList,type==1?"挑战":"扫荡"); +// } +// user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType()); +// MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build()); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 892feb14b..548e82051 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -116,6 +116,8 @@ public class PlayerManager extends MongoBase { private String ip; + private Set situationPass = new HashSet<>(); + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); @@ -774,4 +776,12 @@ public class PlayerManager extends MongoBase { updateString("bundle_id",bundle_id); } + + public Set getSituationPass() { + return situationPass; + } + public void updateSituationPass(Set dailyPass){ + this.dailyPass = dailyPass; + updateString("situationPass",situationPass); + } } diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index a6ba918f1..7530a5c7c 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -67,6 +67,7 @@ public class SSpecialConfig implements BaseConfig { public static final String DISCOUNT_LEVEL= "discount_level";//限时折扣推送等级#推送间隔等级 public static final String GUILD_WAR_ISOPEN = "Guild_war_isopen";//老公会战是否开启 public static final String LUCKYTURNDAILYLIMIT = "LuckyTurnDailyLimit";//幸运探宝每日上限 + public static final String XUANYUAN_OPEN_TIME = "xuanyuan_open_time";//轩辕开始时间(星期) @Override public void init() throws Exception { From b5a0c8de0ee16523527faeeaa94a10c4a73c0d8a Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 6 Aug 2020 22:55:38 +0800 Subject: [PATCH 10/36] =?UTF-8?q?=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../GetAllSituationStatusHandler.java | 26 ++++++ .../SituationChallengeHandler.java | 26 ++++++ .../main/java/config/SRaceTowerConfig.java | 79 +++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/GetAllSituationStatusHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/SituationChallengeHandler.java create mode 100644 tablemanager/src/main/java/config/SRaceTowerConfig.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/GetAllSituationStatusHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/GetAllSituationStatusHandler.java new file mode 100644 index 000000000..26f347025 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/GetAllSituationStatusHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.situationHandler; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.SituationLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/8/6 + * @discribe + */ +@Component +public class GetAllSituationStatusHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.SITUATION_INFO_GET_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + SituationLogic.getInstance().getAllSituationStatus(iSession, MessageTypeProto.MessageType.SITUATION_INFO_GET_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/SituationChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/SituationChallengeHandler.java new file mode 100644 index 000000000..e1300fe63 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/situationHandler/SituationChallengeHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.situationHandler; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.SituationLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MapInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/8/6 + * @discribe + */ +@Component +public class SituationChallengeHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.SITUATION_CHALLENGE_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, MapInfoProto.SituationChallengeRequest proto) throws Exception { + SituationLogic.getInstance().situationsChallenge(iSession,proto.getId(),proto.getType(), MessageTypeProto.MessageType.SITUATION_CHALLENGE_RESPONSE); + } +} diff --git a/tablemanager/src/main/java/config/SRaceTowerConfig.java b/tablemanager/src/main/java/config/SRaceTowerConfig.java new file mode 100644 index 000000000..c3653ab19 --- /dev/null +++ b/tablemanager/src/main/java/config/SRaceTowerConfig.java @@ -0,0 +1,79 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="RaceTowerConfig") +public class SRaceTowerConfig implements BaseConfig { + + private int id; + + private int type; + + private int openRules; + + private int[] reward; + + private int[] firstReward; + + private int monsterId; + + private int[][] teamRules; + + private int[][] attribute; + + private int[] privilege; + + private String remarks; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int getType() { + return type; + } + + public int getOpenRules() { + return openRules; + } + + public int[] getReward() { + return reward; + } + + public int[] getFirstReward() { + return firstReward; + } + + public int getMonsterId() { + return monsterId; + } + + public int[][] getTeamRules() { + return teamRules; + } + + public int[][] getAttribute() { + return attribute; + } + + public int[] getPrivilege() { + return privilege; + } + + public String getremarks() { + return remarks; + } + + +} \ No newline at end of file From 424b64e6c91c3c2d7135cd514eef7b60f285e9c5 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 7 Aug 2020 15:26:25 +0800 Subject: [PATCH 11/36] =?UTF-8?q?=E6=8C=91=E6=88=98=20=E6=89=AB=E8=8D=A1?= =?UTF-8?q?=20=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/SituationLogic.java | 127 ++++++------------ 1 file changed, 43 insertions(+), 84 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index 3db9546e5..baefc2917 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -113,95 +113,54 @@ public class SituationLogic { PlayerManager playerInfoManager = user.getPlayerInfoManager(); // //次数校验 SRaceTowerConfig sRaceTowerConfig = STableManager.getConfig(SRaceTowerConfig.class).get(id); - int openRules = sRaceTowerConfig.getOpenRules(); Set situationPass = playerInfoManager.getSituationPass(); - if(openRules!=0&&!situationPass.contains(openRules)){ + + + + boolean consumeCount = false; + if(type==2){ + if(!situationPass.contains(id)){ + throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); + } + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getReward(), 1, 0, 1); + builder.setDrop(drop); + consumeCount = true; + }else if(type==1){ +// //判断上一关是否已过 + int openRules = sRaceTowerConfig.getOpenRules(); + if(openRules!=0&&!situationPass.contains(openRules)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + + PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), GlobalsDef.FORMATION_NORMAL, 1000, "", GameFightType.DailyChallenge, sRaceTowerConfig.getMonsterId(), 3); + FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); + CommonProto.FightData fightData = CommonProto.FightData.newBuilder() + .setFightMaxTime(20) + .setFightSeed(fightResult.getSeed()) + .setHeroFightInfos(fightResult.getFightTeamInfo()) + .addAllMonsterList(fightResult.getMonsterTeamList()) + .build(); + int[] checkResult = fightResult.getCheckResult(); + builder.setFightData(fightData); + if(checkResult[0]>0){ + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, 0, 1); + builder.setDrop(drop); + situationPass.add(id); + playerInfoManager.updateSituationPass(situationPass); + consumeCount = true; + } + }else{ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - - -// boolean consumeCount = false; -// boolean isFailed = false; -// Set dailyPass = playerInfoManager.getDailyPass(); -// if(type==2){ -// if(!dailyPass.contains(id)){ -// throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); -// } -// CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 0, 1); -// builder.setDrop(drop); -// consumeCount = true; -// }else if(type==1){ -// if(dailyPass.contains(id)){ -// throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); -// } -// //判断上一关是否已过 -// if(lastChange!=null&&lastChange.getType()==sDailyChallengeConfig.getType()){ -// if(!dailyPass.contains(id - 1)){ -// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); -// } -// } -// int[][] openRules = sDailyChallengeConfig.getOpenRules(); -// boolean open = true; -// for(int[] rule:openRules){ -// switch (rule[0]){ -// case 1: -// open = playerInfoManager.getLevel()>=rule[1]; -// break; -// case 2: -// open = SMainLevelConfig.biggerThanFight(user.getMainLevelManager().getFightId(),rule[1]); -// break; -// case 3: -// open = playerInfoManager.getMaxForce()>=rule[1]; -// break; -// } -// if(!open){ -// throw new ErrorCodeException(ErrorCode.DAILY_NO_OPEN); -// } -// } -// -// -// -// PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), GlobalsDef.FORMATION_NORMAL, 1000, "", GameFightType.DailyChallenge, sDailyChallengeConfig.getMonsterId(), 3); -// FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); -// CommonProto.FightData fightData = CommonProto.FightData.newBuilder() -// .setFightMaxTime(20) -// .setFightSeed(fightResult.getSeed()) -// .setHeroFightInfos(fightResult.getFightTeamInfo()) -// .addAllMonsterList(fightResult.getMonsterTeamList()) -// .build(); -// int[] checkResult = fightResult.getCheckResult(); -// builder.setFightData(fightData); -// if(checkResult[0]>0){ -// CommonProto.Drop.Builder drop = ItemUtil.drop(user, sDailyChallengeConfig.getReward(), 1, 0, 1); -// builder.setDrop(drop); -// playerInfoManager.addDailyPass(id); -// consumeCount = true; -// }else{ -// isFailed = true; -// } -// }else{ -// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); -// } // ReportUtil.onReportEvent(user, ReportEventEnum.START_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(), MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),"",0); -// if(consumeCount){ -// boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sDailyChallengeConfig.getPrivilegeId()[1], 1); -// if(!consume){ -// throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); -// } -// } -// CommonProto.Drop drop = builder.getDrop(); -// if(!isFailed){ -// List itemDrop = drop.getItemlistList(); -// List itemIdList = new ArrayList<>(); -// List itemNumList = new ArrayList<>(); -// itemDrop.forEach(item->{ -// itemIdList.add(item.getItemId()); -// itemIdList.add(item.getItemNum()); -// }); -// ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),new Date(),"",0,itemIdList,itemNumList,type==1?"挑战":"扫荡"); -// } + if(consumeCount){ + boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sRaceTowerConfig.getPrivilege()[1], 1); + if(!consume){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } // user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType()); -// MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build()); + MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build()); } } From efc21ecbf30f55a1b4b9daa674770e5f6831fc85 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 10 Aug 2020 15:26:19 +0800 Subject: [PATCH 12/36] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E7=BD=AE=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 2 + .../hero/CancelHeroChangeRequestHandler.java | 36 ++++++ .../hero/DoHeroChangeRequestHandler.java | 67 ++++++++++ .../hero/SaveHeroChangeRequestHandler.java | 114 ++++++++++++++++++ .../java/com/ljsd/jieling/logic/dao/Hero.java | 8 +- .../ljsd/jieling/logic/hero/HeroLogic.java | 39 ++++-- .../ljsd/jieling/logic/item/ItemLogic.java | 3 +- .../com/ljsd/jieling/util/CBean2Proto.java | 1 + .../src/main/java/config/SLotterySetting.java | 95 +++++++++------ .../src/main/java/config/SSpecialConfig.java | 3 + 10 files changed, 320 insertions(+), 48 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hero/CancelHeroChangeRequestHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hero/SaveHeroChangeRequestHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index baf51435f..1faf9ef61 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -145,6 +145,8 @@ public interface BIReason { int EQUIP_UNLOAD_REWARD = 79;//卸下装备 int ESPECIAL_BACK = 80;//法宝归元获得 + int HERO_CHANGE= 81;//抽卡 + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/CancelHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/CancelHeroChangeRequestHandler.java new file mode 100644 index 000000000..2ef185a21 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/CancelHeroChangeRequestHandler.java @@ -0,0 +1,36 @@ +package com.ljsd.jieling.handler.hero; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; + +/** + * Description: 清除英雄 + * Author: zsx + * CreateDate: 2020/8/10 10:51 + */ +public class CancelHeroChangeRequestHandler extends BaseHandler { + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, HeroInfoProto.CancelHeroChangeRequest proto) throws Exception { + + User user = UserManager.getUser(uid); + Hero hero = user.getHeroManager().getHero(proto.getHeroId()); + if (hero == null){ + throw new ErrorCodeException( ErrorCode.ITEM_DECOMPOSE_NO_HERO); + } + hero.setChangeId(0); + return HeroInfoProto.CancelHeroChangeResponse.newBuilder().build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java new file mode 100644 index 000000000..820cc7002 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java @@ -0,0 +1,67 @@ +package com.ljsd.jieling.handler.hero; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.ItemUtil; +import config.SCHero; +import config.SSpecialConfig; + +/** + * Description: des + * Author: zsx + * CreateDate: 2020/8/10 10:51 + */ +public class DoHeroChangeRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, HeroInfoProto.DoHeroChangeRequest proto) throws Exception { + + User user = UserManager.getUser(uid); + Hero hero = user.getHeroManager().getHero(proto.getHeroId()); + if (hero == null){ + throw new ErrorCodeException( ErrorCode.ITEM_DECOMPOSE_NO_HERO); + } + if(hero.getChangeId()==0){ + throw new ErrorCodeException("未置换"); + } + //check lock + if(hero.getIsLock() == 1){ + throw new ErrorCodeException( ErrorCode.ITEM_DECOMPOSE_HERO_LOCK); + } + //check cfg + SCHero hero1 = SCHero.getsCHero().get(hero.getTemplateId()); + if(null == hero1){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + int[][] ints = new int[1][2]; + ints[0][0]=hero.getChangeId(); + ints[0][1]= 1; + + //check in team + int[] teamId = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HERO_RESOLVE_LICENCE); + boolean battleArray = HeroLogic.getInstance().isBattleArray(user, proto.getHeroId(),teamId); + if (!battleArray){ + throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_HERO_TEAM); + } + + + CommonProto.Drop.Builder drop = ItemUtil.dropPer(user, ints, BIReason.HERO_CHANGE); + + return HeroInfoProto.DoHeroChangeResponse.newBuilder().setDrop(drop).build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/SaveHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/SaveHeroChangeRequestHandler.java new file mode 100644 index 000000000..f9d164ed5 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/SaveHeroChangeRequestHandler.java @@ -0,0 +1,114 @@ +package com.ljsd.jieling.handler.hero; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.Hero; +import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.logic.player.PlayerLogic; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.ItemUtil; +import config.SCHero; +import config.SLotteryRewardConfig; +import config.SLotterySetting; +import config.SSpecialConfig; +import manager.STableManager; + +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.stream.Collectors; + +/** + * Description: des + * Author: zsx + * CreateDate: 2020/8/10 10:51 + */ +public class SaveHeroChangeRequestHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, HeroInfoProto.SaveHeroChangeRequest proto) throws Exception { + + User user = UserManager.getUser(uid); + Hero hero = user.getHeroManager().getHero(proto.getHeroId()); + if (hero == null){ + throw new ErrorCodeException( ErrorCode.ITEM_DECOMPOSE_NO_HERO); + } + //check lock + if(hero.getIsLock() == 1){ + throw new ErrorCodeException( ErrorCode.ITEM_DECOMPOSE_HERO_LOCK); + } + //check cfg + SCHero hero1 = SCHero.getsCHero().get(hero.getTemplateId()); + if(null == hero1){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + + //check in team + int[] teamId = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HERO_RESOLVE_LICENCE); + AtomicBoolean inTeams = HeroLogic.getInstance().isInTeams(user, proto.getHeroId(), teamId); + if(!inTeams.get()){ + throw new ErrorCodeException(ErrorCode.ITEM_DECOMPOSE_HERO_TEAM); + } + + int propertyName = hero1.getPropertyName(); + int heroStar = hero.getStar(); + Map integerIntegerMap = SLotterySetting.getChangeIds().get(heroStar); + if(null == integerIntegerMap|| integerIntegerMap.size() ==0){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + int type =integerIntegerMap.get(propertyName); + + SLotterySetting sLotterySetting = STableManager.getConfig(SLotterySetting.class).get(type); + int perCount = sLotterySetting.getPerCount(); + + //check item + boolean enoughCost = false; + for (int[] cost:sLotterySetting.getCostItem()){ + int [][] costItems = new int[][]{cost}; + enoughCost = ItemUtil.itemCost(user, costItems,BIReason.RANDOM_HERO_CONSUME,type); + if(enoughCost){ + break; + } + } + if(!enoughCost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + + //random Hero + + //所有获得物品 + int[][] resultRandom = new int[perCount][]; + //进行抽取 + for(int i = 0 ;i jewelInfo = new HashSet<>(); public Hero(){ @@ -283,5 +283,11 @@ public class Hero extends MongoBase { } + public void setChangeId(int changeId) { + this.changeId = changeId; + } + public int getChangeId() { + return changeId; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 333668772..89f9f7c92 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -253,6 +253,8 @@ public class HeroLogic{ for(int i = 0;i specialConfigs = SLotterySpecialConfig.getLotterySpecialConfigListByType(mergePool); @@ -401,7 +405,7 @@ public class HeroLogic{ return poolId; } - private int getPooId(SLotterySetting sLotterySetting) throws Exception { + private static int getPooId(SLotterySetting sLotterySetting) throws Exception { int[][] diamondBoxContain = sLotterySetting.getDiamondBoxContain(); int totalWeight = 0; for(int i=0;i sLotteryRewardConfigs = new ArrayList<>(); List sLotteryRewardConfigListByPoolId = SLotteryRewardConfig.getSLotteryRewardConfigListByPoolId(poolId); int totalCountByPoolId =0; @@ -2189,19 +2193,16 @@ public class HeroLogic{ //妖灵师是否在阵容中 - public boolean isBattleArray (User user,String heroId){ + public boolean isBattleArray (User user,String heroId,int[] teamId){ Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); //判断是否不可下阵中有该英雄 - AtomicBoolean result = new AtomicBoolean(true); - int[] teamId = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HERO_RESOLVE_LICENCE); + + List list = new ArrayList<>(); Arrays.stream(teamId).forEach(i->list.add(i)); - list.stream().filter(tId->teamPosForHero.containsKey(tId)).forEach(tId->teamPosForHero.get(tId).forEach(hero->{ - if(hero.getHeroId().equals(heroId)){ - result.set(false); - } - })); + AtomicBoolean result = isInTeams(user, heroId, teamId); + //直接删除英雄 if(result.get()){ teamPosForHero.entrySet().stream().filter(entry-> @@ -2227,6 +2228,22 @@ public class HeroLogic{ return result.get(); } + public AtomicBoolean isInTeams(User user,String heroId,int[] teamId){ + Map> teamPosForHero = user.getTeamPosManager().getTeamPosForHero(); + //判断是否不可下阵中有该英雄 + AtomicBoolean result = new AtomicBoolean(true); + + List list = new ArrayList<>(); + Arrays.stream(teamId).forEach(i->list.add(i)); + + list.stream().filter(tId->teamPosForHero.containsKey(tId)).forEach(tId->teamPosForHero.get(tId).forEach(hero->{ + if(hero.getHeroId().equals(heroId)){ + result.set(false); + } + })); + return result; + } + public int calPokenmonForce(Pokemon pokemon){ Map pokemonAttributeMap = new HashMap<>(); combinePokemonAttribute(pokemonAttributeMap, pokemon,false); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index fb07a6371..35fff7c63 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -464,7 +464,8 @@ public class ItemLogic { if(hero.getIsLock() == 1){ return ErrorCode.ITEM_DECOMPOSE_HERO_LOCK; } - boolean battleArray = HeroLogic.getInstance().isBattleArray(user, heroId); + int[] teamId = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HERO_RESOLVE_LICENCE); + boolean battleArray = HeroLogic.getInstance().isBattleArray(user, heroId,teamId); if (!battleArray){ return ErrorCode.ITEM_DECOMPOSE_HERO_TEAM; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 30ad00ce7..dbff9d087 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -105,6 +105,7 @@ public class CBean2Proto { .setLockState(hero.getIsLock()) .addAllJewels(hero.getJewelInfo()) .setCreatetype(hero.getCreateType()) + .setChangeId(hero.getChangeId()) .build(); } diff --git a/tablemanager/src/main/java/config/SLotterySetting.java b/tablemanager/src/main/java/config/SLotterySetting.java index 12738a742..652e008a9 100644 --- a/tablemanager/src/main/java/config/SLotterySetting.java +++ b/tablemanager/src/main/java/config/SLotterySetting.java @@ -1,38 +1,56 @@ package config; +import manager.STableManager; import manager.Table; +import java.util.HashMap; +import java.util.Map; + @Table(name ="LotterySetting") public class SLotterySetting implements BaseConfig { private int id; - private int diamondBoxInterval; - - private int[][] cost; - - - private int[][] diamondBoxContain; - - private int[][] tenTimesMustGetItem; - - private int[][] costItem; - - private int perCount; - private int lotteryType; - private int mergePool; + private int propertyType; - private int activityId; + private int diamondBoxInterval; + + private int[][] costItem; private int freeTimes; private int maxTimes; + private int[][] diamondBoxContain; - @Override + private int[][] tenTimesMustGetItem; + + private int perCount; + + private int mergePool; + + private int activityId; + + public static Map> changeIds = new HashMap<>(); + + @Override public void init() throws Exception { + Map> integerMapMap = new HashMap<>(); + Map config = STableManager.getConfig(SLotterySetting.class); + for (Map.Entry entry:config.entrySet()) { + if(entry.getValue().getLotteryType()==7){ + Map orDefault = integerMapMap.getOrDefault(4, new HashMap<>()); + orDefault.put(entry.getValue().getPropertyType(),entry.getKey()); + integerMapMap.put(4,orDefault); + }else if (entry.getValue().getLotteryType()==8){ + Map orDefault = integerMapMap.getOrDefault(5, new HashMap<>()); + orDefault.put(entry.getValue().getPropertyType(),entry.getKey()); + integerMapMap.put(4,orDefault); + } + } + changeIds = integerMapMap; } @@ -41,49 +59,56 @@ public class SLotterySetting implements BaseConfig { return id; } + public int getLotteryType() { + return lotteryType; + } + + public int getPropertyType() { + return propertyType; + } + public int getDiamondBoxInterval() { return diamondBoxInterval; } - public int[][] getCost() { - return cost; + public int[][] getCostItem() { + return costItem; } + public int getFreeTimes() { + return freeTimes; + } + + public int getMaxTimes() { + return maxTimes; + } public int[][] getDiamondBoxContain() { return diamondBoxContain; } - public int[][] getTenTimesMustGetItem() { + public int[][] getTenTimesMustGetItem() { return tenTimesMustGetItem; } - public int getPerCount() { + public int getPerCount() { return perCount; } - public int[][] getCostItem() { - return costItem; - } - - public int getLotteryType() { - return lotteryType; - } - - public int getMergePool() { + public int getMergePool() { return mergePool; } - - public int getActivityId() { + public int getActivityId() { return activityId; } - public int getFreeTimes() { - return freeTimes; + + public static Map> getChangeIds() { + return changeIds; } - public int getMaxTimes() { - return maxTimes; + public static void setChangeIds(Map> changeIds) { + SLotterySetting.changeIds = changeIds; } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index a6ba918f1..75d596e96 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -67,6 +67,9 @@ public class SSpecialConfig implements BaseConfig { public static final String DISCOUNT_LEVEL= "discount_level";//限时折扣推送等级#推送间隔等级 public static final String GUILD_WAR_ISOPEN = "Guild_war_isopen";//老公会战是否开启 public static final String LUCKYTURNDAILYLIMIT = "LuckyTurnDailyLimit";//幸运探宝每日上限 + + public static final String REPLACE_ITEM_ID = "replace_item_id";//置换玉道具ID + public static final String REPLACE_COST = "replace_cost";//置换玉消耗 @Override public void init() throws Exception { From 4e0dd14dce3116a37adfa339966befc50307f699 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Wed, 12 Aug 2020 14:16:08 +0800 Subject: [PATCH 13/36] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E7=BD=AE=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/common/mogodb/MongoBase.java | 18 +++++++++--- .../hero/DoHeroChangeRequestHandler.java | 16 +++++++---- .../hero/SaveHeroChangeRequestHandler.java | 28 +++++++++++-------- .../java/com/ljsd/jieling/logic/dao/Hero.java | 8 +++++- .../ljsd/jieling/logic/hero/HeroLogic.java | 2 +- .../src/main/java/config/SLotterySetting.java | 2 +- 6 files changed, 51 insertions(+), 23 deletions(-) diff --git a/common/src/main/java/com/ljsd/common/mogodb/MongoBase.java b/common/src/main/java/com/ljsd/common/mogodb/MongoBase.java index fbdc57fbb..7bd432323 100644 --- a/common/src/main/java/com/ljsd/common/mogodb/MongoBase.java +++ b/common/src/main/java/com/ljsd/common/mogodb/MongoBase.java @@ -24,12 +24,22 @@ public abstract class MongoBase implements Serializable { } public void updateString(String fieldName, Object value) { - if("".equals(mongoKey)){ - MongoUpdateCacheThreadLocal.addUpdateRequest(this, fieldName, value); - }else{ - MongoUpdateCacheThreadLocal.addUpdateRequest(this, mongoKey + "." + fieldName, value); + if(null == value){ + if("".equals(mongoKey)){ + MongoUpdateCacheThreadLocal.removeRequest(this, fieldName); + }else{ + MongoUpdateCacheThreadLocal.removeRequest(this, mongoKey + "." + fieldName); + } + + }else { + if("".equals(mongoKey)){ + MongoUpdateCacheThreadLocal.addUpdateRequest(this, fieldName, value); + }else{ + MongoUpdateCacheThreadLocal.addUpdateRequest(this, mongoKey + "." + fieldName, value); + } } + } public void removeSubString(String key) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java index 820cc7002..8f73a59a7 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java @@ -8,10 +8,12 @@ import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.expedition.ExpeditionLogic; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.HeroInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.CBean2Proto; import com.ljsd.jieling.util.ItemUtil; import config.SCHero; import config.SSpecialConfig; @@ -48,9 +50,9 @@ public class DoHeroChangeRequestHandler extends BaseHandler returnItems = new HashMap<>(); equipIdsList.forEach(e->{ - soulEquipByPositionMap.remove(e.getPosition()); + hero.removeSoulEquip(e.getPosition()); returnItems.put(e.getEquipId(),1); }); ItemUtil.dropMap(user,returnItems,BIReason.UNLOAD_SOUL_REWARD); diff --git a/tablemanager/src/main/java/config/SLotterySetting.java b/tablemanager/src/main/java/config/SLotterySetting.java index 652e008a9..f17b974d9 100644 --- a/tablemanager/src/main/java/config/SLotterySetting.java +++ b/tablemanager/src/main/java/config/SLotterySetting.java @@ -47,7 +47,7 @@ public class SLotterySetting implements BaseConfig { }else if (entry.getValue().getLotteryType()==8){ Map orDefault = integerMapMap.getOrDefault(5, new HashMap<>()); orDefault.put(entry.getValue().getPropertyType(),entry.getKey()); - integerMapMap.put(4,orDefault); + integerMapMap.put(5,orDefault); } } changeIds = integerMapMap; From 5c23253d5e2e4c75dc1586a12f2aa43adc8a5cc6 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 13 Aug 2020 09:37:01 +0800 Subject: [PATCH 14/36] =?UTF-8?q?=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/SituationLogic.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index baefc2917..1ec7273df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -49,11 +49,11 @@ public class SituationLogic { public final static SituationLogic instance = new SituationLogic(); } - private int[][] openConfig = new int[4][]; + private int[][] openConfig ; - private int[] status = new int[4]; + private int[] status ; - private int[] overTime = new int[4]; + private int[] overTime; public void createCheckstatusTask(){ From fffe477523cd54c5363f7539f1f78fbfb7ade5ae Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 13 Aug 2020 09:41:07 +0800 Subject: [PATCH 15/36] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E8=A3=85=E5=A4=87?= =?UTF-8?q?=E6=8E=89=E8=90=BD=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/globals/BIReason.java | 5 ++++- .../main/java/com/ljsd/jieling/logic/item/ItemLogic.java | 9 +++++++++ .../src/main/java/com/ljsd/jieling/util/ItemUtil.java | 5 ++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 507e2476e..baf51435f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -141,7 +141,10 @@ public interface BIReason { int EXCEPTION_TREASURE_REWARD = 77;//天空密境积分奖励 int PROUD_REWARD = 78;//膜拜获得金币奖励 - int EQUIP_UNLOAD_REWARD = 79; + + int EQUIP_UNLOAD_REWARD = 79;//卸下装备 + int ESPECIAL_BACK = 80;//法宝归元获得 + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index eb1762e55..fb07a6371 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -380,6 +380,15 @@ public class ItemLogic { int rankUpReturnPercent= SSpecialConfig.getIntegerValue(SSpecialConfig.HERO_SACRIFICE_PERCENT); for (String heroId : heroIdsList) { Hero hero = heroManager.getHeroMap().get(heroId); + Map equipByPositionMap = hero.getEquipByPositionMap(); + Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); + if(equipByPositionMap!=null&&equipByPositionMap.size()>0){ + equipByPositionMap.forEach((k,v)->baseItemMap.put(v,baseItemMap.getOrDefault(v,0)+1)); + } + if(soulEquipByPositionMap!=null&&soulEquipByPositionMap.size()>0){ + soulEquipByPositionMap.forEach((k,v)->baseItemMap.put(v,baseItemMap.getOrDefault(v,0)+1)); + } + heroManager.removeHero(uid,heroId); int[][] sumConsume = SHeroLevlConfig.getsHeroLevlConfigMap().get(hero.getLevel()).getSumConsume(); SHeroSacrifice starSHeroSacrifice = STableManager.getFigureConfig(HeroStaticConfig.class).getsHeroSacrificeMap(1, hero.getStar()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 523c42b61..c53439293 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -615,7 +615,10 @@ public class ItemUtil { extraDropAop(user,dropBuilder,sItem); sendToFront.add(CBean2Proto.getItem(item,-1)); if(sItem.getItemType()==GlobalItemType.EQUIP){ - user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),itemNum); + if(reason!=BIReason.EQUIP_UNLOAD_REWARD&&reason!=BIReason.DECOMPOS_HERO_REWARD){ + user.getUserMissionManager().onGameEvent(user,GameEvent.GET_EQUIP,sItem.getId(),itemNum); + ReportUtil.onReportEvent(user,ReportEventEnum.GET_EQUIP.getType(),sItem.getId(),itemNum,reason); + } } } if (dropBuilder != null) { From 00198786e997260252bfc97e9f5fdd40d220108a Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 13:42:36 +0800 Subject: [PATCH 16/36] =?UTF-8?q?=20=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/db/redis/RedisKey.java | 2 + .../com/ljsd/jieling/globals/BIReason.java | 2 + .../jieling/logic/GlobalDataManaager.java | 4 +- .../ljsd/jieling/logic/SituationLogic.java | 130 +++++++++++++++--- .../ljsd/jieling/logic/dao/PlayerManager.java | 10 +- .../ljsd/jieling/logic/fight/FightUtil.java | 36 +++++ .../com/ljsd/jieling/logic/rank/RankEnum.java | 5 +- .../logic/rank/rankImpl/SituationRank.java | 25 ++++ .../ljsd/jieling/thread/task/MinuteTask.java | 5 +- .../main/java/config/SRaceTowerConfig.java | 8 +- 10 files changed, 191 insertions(+), 36 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/SituationRank.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 81684f1e8..cd9d04282 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -261,6 +261,8 @@ public class RedisKey { public static final String DEATH_PATH_TOTAL_GUILD_RANK = "DEATH_PATH_TOTAL_GUILD_RANK"; + public static final String SITUATION_RANK = "SITUATION_RANK"; + public static final String DEATH_PAHT_TOTAL_CHALLENGE_COUNT = "DEATH_PAHT_TOTAL_CHALLENGE_COUNT"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index bc15371d7..65fad884e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -144,6 +144,8 @@ public interface BIReason { int EQUIP_UNLOAD_REWARD = 79; int ESPECIAL_BACK = 80;//法宝归元获得 + int SITUATION_CHALLENGE_REWARD = 81;//轩辕宝镜获得 + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 int DECOMPOSE_ITEM_CONSUME = 1002;//分解道具消耗 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 3cda67beb..a6a71fef1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -332,7 +332,9 @@ public class GlobalDataManaager implements IManager { FriendLogic.getInstance().refreshState(session); PlayerLogic.getInstance().sendTimingMail(user); user.getGuildMyInfo().setLastHurt(0); - + if(TimeUtils.isSpanTime(user.getPlayerInfoManager().getLoginTime(),TimeUtils.now(),1,5)){ + user.getPlayerInfoManager().updateSituationPass(new HashMap<>()); + } if(fBuilder!=null){ fBuilder.setSignInInfo(CommonProto.SignInInfo.newBuilder().setDays(user.getPlayerInfoManager().getSign()+1).setState(user.getPlayerInfoManager().getSignTotay()).build()); user.getPlayerInfoManager().setLoginTime(TimeUtils.now()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index 1ec7273df..91501af08 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -1,39 +1,44 @@ package com.ljsd.jieling.logic; +import com.ljsd.fight.CheckFight; import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.dao.PlayerManager; +import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; import com.ljsd.jieling.logic.dao.TimeControllerOfFunction; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.fight.FightDispatcher; -import com.ljsd.jieling.logic.fight.GameFightType; -import com.ljsd.jieling.logic.fight.PVEFightEvent; +import com.ljsd.jieling.logic.fight.*; import com.ljsd.jieling.logic.fight.result.FightResult; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; +import com.ljsd.jieling.logic.rank.RankContext; +import com.ljsd.jieling.logic.rank.RankEnum; +import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.MapInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.FightDataUtil; import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MonsterUtil; -import config.SDailyChallengeConfig; -import config.SMainLevelConfig; -import config.SRaceTowerConfig; -import config.SSpecialConfig; +import config.*; import manager.STableManager; +import org.luaj.vm2.LuaValue; import util.TimeUtils; import java.util.*; +import static com.ljsd.jieling.logic.fight.FightUtil.makePersonFightData; + /** * @author lvxinran * @date 2020/8/6 @@ -56,7 +61,7 @@ public class SituationLogic { private int[] overTime; - public void createCheckstatusTask(){ + public void createCheckStatusTask(){ Runnable runnable = this::checkStatus; runnable.run(); } @@ -80,6 +85,7 @@ public class SituationLogic { if(hourOfDay<5){ week = week==0?7:week-1; } + boolean isIndication = false; for(int[] config:openConfig){ boolean isOpen = false; for(int i = 1;i sessionMap = OnlineUserManager.sessionMap; + for(Map.Entry entry:sessionMap.entrySet()){ + //发推送 + PlayerManager playerInfoManager= UserManager.getUser(entry.getKey()).getPlayerInfoManager(); + if (remove){ + playerInfoManager.updateSituationPass(new HashMap<>()); + } + MapInfoProto.GetAllSituationInfoResponse.Builder indication = MapInfoProto.GetAllSituationInfoResponse.newBuilder(); + for(int i = 0 ; i < status.length;i++){ + if(status[i]==0){ + continue; + } + CommonProto.SituationInfo info = CommonProto.SituationInfo.newBuilder().setId(i+1) + .setOverTime(overTime[i]) + .setPassId(playerInfoManager.getSituationPass().getOrDefault(i+1,0)).build(); + indication.addInfos(info); + } + MessageUtil.sendIndicationMessage(entry.getValue(),1,MessageTypeProto.MessageType.SITUATION_INFO_INDICATION_VALUE,indication.build(),true); + } + } catch (Exception e) { + e.printStackTrace(); + } + } } - public void getAllSituationStatus(ISession session, MessageTypeProto.MessageType messageType){ - + public void getAllSituationStatus(ISession session, MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); MapInfoProto.GetAllSituationInfoResponse.Builder response = MapInfoProto.GetAllSituationInfoResponse.newBuilder(); + Map situationPass = user.getPlayerInfoManager().getSituationPass(); for(int i = 0 ; i < status.length;i++){ if(status[i]==0){ continue; } - CommonProto.SituationInfo info = CommonProto.SituationInfo.newBuilder().setId(i+1).setOverTime(overTime[i]).build(); + CommonProto.SituationInfo info = CommonProto.SituationInfo.newBuilder().setId(i+1) + .setOverTime(overTime[i]) + .setPassId(situationPass.getOrDefault(i+1,0)).build(); response.addInfos(info); } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } @@ -113,27 +156,49 @@ public class SituationLogic { PlayerManager playerInfoManager = user.getPlayerInfoManager(); // //次数校验 SRaceTowerConfig sRaceTowerConfig = STableManager.getConfig(SRaceTowerConfig.class).get(id); - Set situationPass = playerInfoManager.getSituationPass(); + Map situationPass = playerInfoManager.getSituationPass(); boolean consumeCount = false; if(type==2){ - if(!situationPass.contains(id)){ + if(!situationPass.containsKey(sRaceTowerConfig.getType())||situationPass.get(sRaceTowerConfig.getType()) teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(formation); + if(teamPosHeroInfos==null||teamPosHeroInfos.isEmpty()){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + int[] heroType = new int[5]; + teamPosHeroInfos.forEach(hero->{ + int tempId = user.getHeroManager().getHero(hero.getHeroId()).getTemplateId(); + int profession = SCHero.getsCHero().get(tempId).getPropertyName(); + heroType[profession] = heroType[profession]+1; + }); + for(int[] rule:sRaceTowerConfig.getTeamRules()){ + if(heroType[rule[0]]> buffMap = new HashMap<>(); + for(int[] buffid:sRaceTowerConfig.getAttribute()){ + buffMap.computeIfAbsent(buffid[0],n->new ArrayList<>()).add(buffid[1]); + } + //组装战斗数据 + PVEFightEvent pveFightEvent = new PVEFightEvent(user.getId(), formation, 20, "", GameFightType.DailyChallenge, sRaceTowerConfig.getMonsterId(), 3); +// FightResult fightResult = FightDispatcher.dispatcher(pveFightEvent); + FightResult fightResult = getFightForSituation(pveFightEvent, buffMap); CommonProto.FightData fightData = CommonProto.FightData.newBuilder() .setFightMaxTime(20) .setFightSeed(fightResult.getSeed()) @@ -142,11 +207,15 @@ public class SituationLogic { .build(); int[] checkResult = fightResult.getCheckResult(); builder.setFightData(fightData); + //挑战成功 if(checkResult[0]>0){ - CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, 0, 1); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, sRaceTowerConfig.getFirstReward(), 1, 0, BIReason.SITUATION_CHALLENGE_REWARD); builder.setDrop(drop); - situationPass.add(id); + situationPass.put(sRaceTowerConfig.getType(),id); playerInfoManager.updateSituationPass(situationPass); + AbstractRank rankEnum = RankContext.getRankEnum(RankEnum.SITUATION_RANK.getType()); + int score = Double.valueOf(rankEnum.getScoreById(user.getId(), "")).intValue(); + rankEnum.addRank(user.getId(),"",score==-1?1:score+1); consumeCount = true; } }else{ @@ -154,7 +223,7 @@ public class SituationLogic { } // ReportUtil.onReportEvent(user, ReportEventEnum.START_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(), MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),"",0); if(consumeCount){ - boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sRaceTowerConfig.getPrivilege()[1], 1); + boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sRaceTowerConfig.getPrivilege()[0], 1); if(!consume){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } @@ -162,5 +231,24 @@ public class SituationLogic { // user.getUserMissionManager().onGameEvent(user, GameEvent.DAILY_CHALLENGE,sDailyChallengeConfig.getType()); MessageUtil.sendMessage(session,1,messageType.getNumber(),builder.build()); } + public static FightResult getFightForSituation(FightEvent fightEvent,Map> buffInfo){ + PVEFightEvent pveFightEvent = (PVEFightEvent)fightEvent; + User userInMem = UserManager.getUserInMem(pveFightEvent.getAttackUid()); + CommonProto.FightTeamInfo fightTeamInfo = FightUtil.getFightTeamInfoWithSomeBuff(userInMem, pveFightEvent.getTeamId(),pveFightEvent.getAttackBloodMap(),buffInfo); + int fightSeed = FightUtil.getFightSeed(); + List monsterfightTeamInfos = FightUtil.makeMonsterFightData(pveFightEvent.getMonsterGroupId(), pveFightEvent.getNums()); + LuaValue getFightData = FightDataUtil.getFinalFightData(fightTeamInfo, monsterfightTeamInfos); + LuaValue getOptionData = FightDataUtil.getOptionData(pveFightEvent.getAttackUid()+""); + int[] fightResult = CheckFight.getInstance().checkFight(fightSeed, fightEvent.getMostTime(), getFightData, getOptionData, fightEvent.getFightType().getFightType()); + + FightResult.Builder builder = FightResult.newBuilder(); + builder.setCheckResult(fightResult); + builder.setSeed(fightSeed); + builder.setFightTeamInfo(fightTeamInfo); + builder.setMonsterTeamList(monsterfightTeamInfos); + CommonProto.FightData fightData = CommonProto.FightData.newBuilder().setFightType(fightEvent.getFightType().getFightType().getType()).setHeroFightInfos(fightTeamInfo).addAllMonsterList(monsterfightTeamInfos).setFightSeed(fightSeed).setFightMaxTime(fightEvent.getMostTime()).build(); + builder.setFightData(fightData); + return builder.build(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 548e82051..74674defb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -116,7 +116,7 @@ public class PlayerManager extends MongoBase { private String ip; - private Set situationPass = new HashSet<>(); + private Map situationPass = new HashMap<>(); public PlayerManager(){ @@ -777,11 +777,13 @@ public class PlayerManager extends MongoBase { } - public Set getSituationPass() { + + public Map getSituationPass() { return situationPass; } - public void updateSituationPass(Set dailyPass){ - this.dailyPass = dailyPass; + + public void updateSituationPass(Map situationPass){ + this.situationPass = situationPass; updateString("situationPass",situationPass); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index b95e1ffd0..1a8d035e4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -287,6 +287,42 @@ public class FightUtil { .setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId,user)) .build(); } + // + public static CommonProto.FightTeamInfo getFightTeamInfoWithSomeBuff(User user, int teamId, Map attackBloodMap,Map> buffInfo) { + user.getTeamPosManager().setCurTeamPosId(teamId); + List heroFightInfos = new ArrayList<>(); + List teamPosHeroInfos = user.getTeamPosManager().getTeamPosForHero().get(teamId); + for (TeamPosHeroInfo teamPosHeroInfo : teamPosHeroInfos) { + Hero hero = user.getHeroManager().getHero(teamPosHeroInfo.getHeroId()); + if (hero == null) { + continue; + } + Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero, false, teamId); + SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); + if(buffInfo.containsKey(scHero.getPropertyName())){ + CombatLogic.getInstance().bufferOneHeroAttrAfterEat(heroAttributeMap,buffInfo.get(scHero.getPropertyName())); + } + StringBuilder skillSb = new StringBuilder(); + StringBuilder propertySb = new StringBuilder(); + String heroSkill = HeroLogic.getInstance().getHeroSkills(user,hero,skillSb).toString(); + String property = HeroLogic.getInstance().getHeroPropertyBuilder(propertySb, hero.getTemplateId(),hero.getLevel(), heroAttributeMap).toString(); + CommonProto.FightUnitInfo heroFightInfo = CommonProto.FightUnitInfo + .newBuilder() + .setUnitId(Integer.toString(hero.getTemplateId())) + .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) + .setProperty(property.substring(0, property.length()-1)) + .setStar(hero.getStar()) + .build(); + heroFightInfos.add(heroFightInfo); + } + return CommonProto.FightTeamInfo. + newBuilder() + .addAllFightUnitList(heroFightInfos) + .setTeamSkillList(HeroLogic.getInstance().getPokenmonSkills(user,teamId)) + .setTeamPassiveList(HeroLogic.getInstance().getPokenmonPassiveSkills(user,teamId)) + .setSpecialPassive(SpecialForTeamBuildEnum.toParm(teamId,user)) + .build(); + } /** diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java index 9914fd3a2..517eb41fb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/RankEnum.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.logic.rank; import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.logic.rank.rankImpl.*; import java.util.Arrays; @@ -30,8 +31,10 @@ public enum RankEnum { DEATH_PATH_TOTAL_GUILD_RANK(18,RedisKey.DEATH_PATH_TOTAL_GUILD_RANK,DeathPathTotalGuildRank::new),//param1:工会总伤害 param2:无 param3:无 GUILD_FORCE_RANK(20,RedisKey.GUILD_FORCE_RANK,GuildForceRank::new),//param1:公会总战力 param2:无 param3:无 EXPERT_RANK(21,RedisKey.EXPERT_RANK,GoldRank::new),//param1:活动进度 param2:无 param3:无 - FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new);//param1:人物战力 param2:无 param3:无 + FORCE_CURR_RANK(22,RedisKey.FORCE_CURR_RANK,ForceCurrRank::new),//param1:人物战力 param2:无 param3:无 + SITUATION_RANK(24,RedisKey.SITUATION_RANK,SituationRank::new),//param1:通关次数 param2:无 param3:无 + ; private int type; private String redisKey; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/SituationRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/SituationRank.java new file mode 100644 index 000000000..b3860bd53 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/SituationRank.java @@ -0,0 +1,25 @@ +package com.ljsd.jieling.logic.rank.rankImpl; + +import util.TimeUtils; + +/** + * @author lvxinran + * @date 2020/8/14 + * @discribe + */ +public class SituationRank extends AbstractRank { + + public SituationRank(int type, String redisKey) { + super(type, redisKey); + } + + @Override + public long[] getDataByScore(Double score) { + return new long[]{score.longValue()}; + } + + @Override + public double getScore(double... data) { + return data[0]+ TimeUtils.getDoubleTime(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index c8bafbaf1..dc4d807c4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -70,7 +70,7 @@ public class MinuteTask extends Thread { ActivityLogic.getInstance().checkSecretBoxSeason(); StoreLogic.checkGlobalStore(false); MapLogic.getInstance().minuteCheckAndRemoveMapRank(); - + SituationLogic.getInstance().createCheckStatusTask(); everyZeroTask(); everyFiveTask(); everyMondyFiveClockTask(); @@ -87,7 +87,6 @@ public class MinuteTask extends Thread { BuyGoodsLogic.minuteCheckReharge(); RedisUtil.getInstence().set(RedisKey.ONLINE_NUM+RedisKey.Delimiter_colon+GameApplication.serverId, String.valueOf(OnlineUserManager.sessionMap.entrySet().size())); DeathPathLogic.getInstance().statusCheck(); - SituationLogic.getInstance().createCheckstatusTask(); GuildFightLogic.minuteCheckForCarFight(); reportUserOnline(); OnlineUserManager.checkOnline(); @@ -134,8 +133,6 @@ public class MinuteTask extends Thread { LOGGER.info("everyHourTask end ..."); } } - - //每日凌晨执行 public void everyZeroTask() throws Exception { Calendar calendar = Calendar.getInstance(); int hour = calendar.get(Calendar.HOUR_OF_DAY); diff --git a/tablemanager/src/main/java/config/SRaceTowerConfig.java b/tablemanager/src/main/java/config/SRaceTowerConfig.java index c3653ab19..35b916133 100644 --- a/tablemanager/src/main/java/config/SRaceTowerConfig.java +++ b/tablemanager/src/main/java/config/SRaceTowerConfig.java @@ -26,7 +26,7 @@ public class SRaceTowerConfig implements BaseConfig { private int[] privilege; - private String remarks; + private int formation; @Override @@ -71,9 +71,7 @@ public class SRaceTowerConfig implements BaseConfig { return privilege; } - public String getremarks() { - return remarks; + public int getFormation() { + return formation; } - - } \ No newline at end of file From c3aa6aaec97a5e690786992be8fd470acc5d992c Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 16:25:45 +0800 Subject: [PATCH 17/36] =?UTF-8?q?=E6=8A=A5=E7=A9=BA=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 2cd1f889c..d84a2615c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -96,7 +96,7 @@ public class CombatLogic { } } for(Map.Entry entry:effectValueMap.entrySet()){ - int finalValue = value.get(entry.getKey()) + entry.getValue(); + int finalValue = value.getOrDefault(entry.getKey(),0) + entry.getValue(); if(finalValue < 0){ finalValue = 0; } From d46749052d75318a95ed3adacae641c00582beec Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 17:08:45 +0800 Subject: [PATCH 18/36] =?UTF-8?q?=E6=88=98=E6=96=97=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java | 1 + 1 file changed, 1 insertion(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java index 1a8d035e4..c7f26821b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/FightUtil.java @@ -311,6 +311,7 @@ public class FightUtil { .setUnitId(Integer.toString(hero.getTemplateId())) .setUnitSkillIds(heroSkill.substring(0,heroSkill.length()-1)) .setProperty(property.substring(0, property.length()-1)) + .setPosition(teamPosHeroInfo.getPosition()) .setStar(hero.getStar()) .build(); heroFightInfos.add(heroFightInfo); From ef2184ac9941b4c3a003f92201e450edbf710c28 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 18:18:32 +0800 Subject: [PATCH 19/36] =?UTF-8?q?=E4=BA=8C=E6=9C=9F=E6=89=93=E7=82=B9?= =?UTF-8?q?=E9=9C=80=E6=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/handler/FastChallengeHandler.java | 7 ++++++- .../main/java/com/ljsd/jieling/handler/map/MapLogic.java | 3 +-- .../java/com/ljsd/jieling/ktbeans/ReportEventEnum.java | 3 +-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java index 21c0291f0..28b4dc310 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java @@ -5,6 +5,8 @@ import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.ktbeans.ReportEventEnum; +import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.dao.GuilidManager; import com.ljsd.jieling.logic.dao.PlayerManager; import com.ljsd.jieling.logic.dao.TeamPosHeroInfo; @@ -25,12 +27,15 @@ import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.FightInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.MonsterUtil; import config.SErrorCodeEerverConfig; import config.SWorldBossConfig; import config.SWorldBossSetting; import manager.STableManager; import util.TimeUtils; +import java.util.ArrayList; +import java.util.Date; import java.util.List; public class FastChallengeHandler extends BaseHandler{ @@ -94,7 +99,7 @@ public class FastChallengeHandler extends BaseHandler(),0,"",""); }break; case 2:{ PVPFightEvent pvpFightEvent = new PVPFightEvent(uid,GlobalsDef.CAR_DELAY_TEAM, battleRound,"", GameFightType.CarPersonChallenge,challeageId,GlobalsDef.CAR_DELAY_TEAM); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 091c62cbe..944d90a57 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -2292,7 +2292,7 @@ public class MapLogic { itemIdList.add(item.getItemId()); itemIdList.add(item.getItemNum()); }); - ReportUtil.onReportEvent(user,ReportEventEnum.START_XINMO.getType(),checkFightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),new Date(),"",itemIdList,itemNumList); + ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_XINMO.getType(),checkFightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),new Date(),"",itemIdList,itemNumList); } @@ -3084,7 +3084,6 @@ public class MapLogic { }else{ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } - ReportUtil.onReportEvent(user,ReportEventEnum.START_DAILY_DUNGEON.getType(),id,sDailyChallengeConfig.getMonsterId(),MonsterUtil.getMonsterForce(new int[]{sDailyChallengeConfig.getMonsterId()}),"",0); if(consumeCount){ boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sDailyChallengeConfig.getPrivilegeId()[1], 1); if(!consume){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java index 600dfc7aa..67fd46b2e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportEventEnum.java @@ -45,9 +45,8 @@ public enum ReportEventEnum { ALLOW_FRIENDS_ASK(31,"allow_friends_ask", new CommonEventHandler(),new String[]{"target_id","target_name","target_level","entrance"}), SEND_MESSAGE(32,"send_message", new CommonEventHandler(),new String[]{"message_type","message_content"}), OPEN_MAIL(33,"open_mail", new CommonEventHandler(),new String[]{""}), - START_DAILY_DUNGEON(34,"start_daily_dungeon", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","enemy_hero_list","left_challenge_nums"}), + //-------新一期 COMPLETE_DAILY_DUNGEON(35,"complete_daily_dungeon", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","left_challenge_nums","rewards_id_list","rewards_num_list","pass_type"}), - START_XINMO(36,"start_xinmo", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","enemy_hero_list"}), COMPLETE_XINMO(37,"complete_xinmo", new CommonEventHandler(),new String[]{"stage_id","enemy_id","enemy_capacity","start_time","enemy_hero_list","rewards_id_list","rewards_num_list"}), From 2d92899d8f307424e38e21364622d512af142676 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 19:17:46 +0800 Subject: [PATCH 20/36] =?UTF-8?q?=E6=89=93=E7=82=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java | 2 +- .../src/main/java/com/ljsd/jieling/handler/map/MapLogic.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 5aec4ed3a..4316b8140 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -88,7 +88,7 @@ public class GetPlayerInfoHandler extends BaseHandler{ for(Map.Entry vipInfoItem : vipInfo.entrySet()){ privilegeList.add(CommonProto.Privilege.newBuilder() .setId(vipInfoItem.getKey()) - . setUsedTimes(vipInfoItem.getValue().getCount()) + .setUsedTimes(vipInfoItem.getValue().getCount()) .setEffectTime(vipInfoItem.getValue().getEffectTime()) .build()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 944d90a57..102f52150 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -2229,7 +2229,7 @@ public class MapLogic { BehaviorUtil.getLevelDifficultyifficuFightInfo(user,FightType.MonterFight, sFloodConfig.getMonster(), teamId, sFloodConfig.getBattleTime(), fightStartResponse, RedisKey.CHALLENGE_MONSTER_ATTACK); user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_PLAY); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightStartResponse.build(), true); - ReportUtil.onReportEvent(user,ReportEventEnum.START_XINMO.getType(),fightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),""); + ReportUtil.onReportEvent(user,ReportEventEnum.COMPLETE_XINMO.getType(),fightId,sFloodConfig.getMonster(),MonsterUtil.getMonsterForce(new int[]{sFloodConfig.getMonster()}),""); } From 1af2208ab8463b46fa6454ae4c8ff8a47ef811a7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 20:01:33 +0800 Subject: [PATCH 21/36] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/SituationLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index 91501af08..713805cba 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -171,7 +171,7 @@ public class SituationLogic { }else if(type==1){ // //判断上一关是否已过 int openRules = sRaceTowerConfig.getOpenRules(); - if(openRules!=0&&situationPass.get(sRaceTowerConfig.getType())!=openRules){ + if(openRules!=0&&situationPass.get(sRaceTowerConfig.getType())>=openRules){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //编队规则校验 From 5dfcc37f29681c13b4b2d2fdef1b290ac6a5d05b Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 15 Aug 2020 20:24:41 +0800 Subject: [PATCH 22/36] =?UTF-8?q?=E5=88=A4=E6=96=AD=E5=AE=9D=E9=95=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/SituationLogic.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index 713805cba..b0a8e79dd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -163,15 +163,19 @@ public class SituationLogic { boolean consumeCount = false; if(type==2){ if(!situationPass.containsKey(sRaceTowerConfig.getType())||situationPass.get(sRaceTowerConfig.getType())=id){ + throw new ErrorCodeException(ErrorCode.DAILY_ALREADY_PASS); + } // //判断上一关是否已过 int openRules = sRaceTowerConfig.getOpenRules(); - if(openRules!=0&&situationPass.get(sRaceTowerConfig.getType())>=openRules){ + if(openRules!=0&&situationPass.get(sRaceTowerConfig.getType())!=openRules){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } //编队规则校验 From a5d9a17b295d48946783f2411204b68330029b8c Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sun, 16 Aug 2020 11:27:35 +0800 Subject: [PATCH 23/36] =?UTF-8?q?=E6=80=AA=E7=89=A9=E8=A2=AB=E5=8A=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/util/FightDataUtil.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java index ac4c53b28..0c302af2e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -103,7 +103,7 @@ public class FightDataUtil { }else { unitData.set("skill", getSkill(unitSkill[0])); unitData.set("superSkill", getSkill(unitSkill[1])); - unitData.set("passivity", getPassivity(unitSkill)); + unitData.set("passivity", getPassivity(unitSkill,true)); } unitData.set("ai", getMonsterAi(sMonster.getMonsterAi())); @@ -128,7 +128,7 @@ public class FightDataUtil { return property; } - private static LuaValue getPassivity(String[] unitSkill) { + private static LuaValue getPassivity(String[] unitSkill,boolean isMonster) { LuaValue passivityData = new LuaTable(); int length = unitSkill.length; if(length<3){ @@ -139,7 +139,7 @@ public class FightDataUtil { LuaValue detail = new LuaTable(); int passivityId = Integer.parseInt(unitSkill[i]); SPassiveSkillLogicConfig sPassiveSkillLogicConfig = SPassiveSkillLogicConfig.getConfig(passivityId); - if(sPassiveSkillLogicConfig.getEffectiveRange()!=1){ + if(!isMonster&&sPassiveSkillLogicConfig.getEffectiveRange()!=1){ continue; } detail.rawset(1, LuaValue.valueOf(sPassiveSkillLogicConfig.getType())); @@ -276,7 +276,7 @@ public class FightDataUtil { }else { unitData.set("superSkill", getSkill(skillIds[1])); } - unitData.set("passivity", getPassivity(skillIds)); + unitData.set("passivity", getPassivity(skillIds,false)); unitData.set("property", getProperty(property)); return unitData; } From a05812d3e69c84d04400cb716c2b4f801b2dfc4a Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sun, 16 Aug 2020 12:38:09 +0800 Subject: [PATCH 24/36] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=88=98=E6=96=97?= =?UTF-8?q?=E8=A2=AB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/util/FightDataUtil.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java index 0c302af2e..085c8181d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -103,7 +103,7 @@ public class FightDataUtil { }else { unitData.set("skill", getSkill(unitSkill[0])); unitData.set("superSkill", getSkill(unitSkill[1])); - unitData.set("passivity", getPassivity(unitSkill,true)); + unitData.set("passivity", getPassivity(unitSkill)); } unitData.set("ai", getMonsterAi(sMonster.getMonsterAi())); @@ -128,18 +128,18 @@ public class FightDataUtil { return property; } - private static LuaValue getPassivity(String[] unitSkill,boolean isMonster) { + private static LuaValue getPassivity(String[] unitSkill) { LuaValue passivityData = new LuaTable(); int length = unitSkill.length; if(length<3){ return passivityData; } - + int passivityIndex = 1; for(int i=2;i Date: Sun, 16 Aug 2020 14:21:35 +0800 Subject: [PATCH 25/36] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=A3=85=E5=A4=87?= =?UTF-8?q?=E8=BF=94=E8=BF=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/hero/HeroLogic.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 333668772..04204c909 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -864,9 +864,9 @@ public class HeroLogic{ } //删除hero - CommonProto.Drop.Builder baseBuilder = ItemLogic.getInstance().decomposeHero(session,new LinkedList<>(removeHeroIds),Collections.singleton(26),MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE); +// CommonProto.Drop.Builder baseBuilder = ItemLogic.getInstance().decomposeHero(session,new LinkedList<>(removeHeroIds),Collections.singleton(26),MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE); //改成归元获得 -// CommonProto.Drop.Builder baseBuilder = heroBackDrop(user,new ArrayList<>(removeHeroIds),10000,BIReason.UPHERO_DECOMPOS_HERO_REWARD,true); + CommonProto.Drop.Builder baseBuilder = heroBackDrop(user,new ArrayList<>(removeHeroIds),10000,BIReason.UPHERO_DECOMPOS_HERO_REWARD,true); // recyleHeroBySystem(user,removeHeroIds); @@ -2376,6 +2376,17 @@ public class HeroLogic{ Map returnItemMap = new HashMap<>(); for(String heroId:heroIds){ Hero hero = user.getHeroManager().getHero(heroId); + //如果是进阶把装备返还 + if(reason==BIReason.UPHERO_DECOMPOS_HERO_REWARD){ + Map equipByPositionMap = hero.getEquipByPositionMap(); + Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); + if(equipByPositionMap!=null&&equipByPositionMap.size()>0){ + equipByPositionMap.forEach((k,v)->returnItemMap.put(v,returnItemMap.getOrDefault(v,0)+1)); + } + if(soulEquipByPositionMap!=null&&soulEquipByPositionMap.size()>0){ + soulEquipByPositionMap.forEach((k,v)->returnItemMap.put(v,returnItemMap.getOrDefault(v,0)+1)); + } + } int breakId = hero.getBreakId(); int templateId = hero.getTemplateId(); Map sHeroReturnMap = SHeroReturn.sheroReturnMap.get(templateId); From 64e4e2911b577241cffdd09295364e960d7e89d7 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 13 Aug 2020 12:07:16 +0800 Subject: [PATCH 26/36] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E7=BD=AE=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java | 2 +- .../ljsd/jieling/handler/hero/SaveHeroChangeRequestHandler.java | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java index 8f73a59a7..63b471132 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java @@ -65,7 +65,7 @@ public class DoHeroChangeRequestHandler extends BaseHandler jewelInfo) { + this.jewelInfo = jewelInfo; + updateString("jewelInfo",this.jewelInfo); + } + public int getCreateType() { return createType; } From 2ba3f2d76f80d421b830ae55e0b219a155bff1a6 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 26 Aug 2020 05:43:23 +0800 Subject: [PATCH 29/36] =?UTF-8?q?=E5=9F=8B=E7=82=B9=E6=8A=A5=E9=94=99?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/activity/AbstractActivity.java | 2 +- .../src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java index 39030004e..06dcb14af 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/AbstractActivity.java @@ -164,7 +164,7 @@ public abstract class AbstractActivity implements IActivity, IEventHandler { } } // KtEventUtils.onKtEvent(user, ParamEventBean.UserActivityEvent, id, missionId); - ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_ACTIVITY.getType(),String.valueOf(id),String.valueOf(missionId),reward); + ReportUtil.onReportEvent(user, ReportEventEnum.COMPLETE_ACTIVITY.getType(),String.valueOf(id),String.valueOf(missionId),reward[0]); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); return true; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index 7e4fb8f98..b5f78f106 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -303,6 +303,9 @@ public class HeroLogic{ } List result = new ArrayList<>(resultRandom.length); for(int[] random:resultRandom){ + if(random==null){ + continue; + } SCHero scHero = SCHero.getsCHero().get(random[0]); if(scHero==null){ result.add(String.valueOf(random[0])); From e371b00b386a0e6fbd7e9ec98d956a953733dc84 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 26 Aug 2020 05:58:13 +0800 Subject: [PATCH 30/36] =?UTF-8?q?=E6=8E=A8=E9=80=81=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/SituationLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index b0a8e79dd..f5b795b21 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -94,7 +94,7 @@ public class SituationLogic { } isOpen = true; } - if((isOpen&&status[config[0]-1]==1)||(!isOpen&&status[config[0]-1]==0)){ + if((isOpen&&status[config[0]-1]==0)||(!isOpen&&status[config[0]-1]==1)){ isIndication = true; } status[config[0]-1] = isOpen?1:0; From cf3704b456424364dbcd2eec48d97ec99192b813 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 7 Sep 2020 14:45:25 +0800 Subject: [PATCH 31/36] =?UTF-8?q?=E7=A5=9E=E5=B0=86=E5=90=88=E6=88=90?= =?UTF-8?q?=E8=BF=9B=E9=98=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/hero/HeroLogic.java | 44 +++++++++++-------- 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index b5f78f106..e72577350 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -918,11 +918,14 @@ public class HeroLogic{ //删除hero // CommonProto.Drop.Builder baseBuilder = ItemLogic.getInstance().decomposeHero(session,new LinkedList<>(removeHeroIds),Collections.singleton(26),MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE); - //改成归元获得 + //改成归元获得,同时返还法宝获得 CommonProto.Drop.Builder baseBuilder = heroBackDrop(user,new ArrayList<>(removeHeroIds),10000,BIReason.UPHERO_DECOMPOS_HERO_REWARD,true); + for(String rmHeroId:removeHeroIds){ + heroManager.removeHero(uid,rmHeroId); + } - // recyleHeroBySystem(user,removeHeroIds); +// recyleHeroBySystem(user,removeHeroIds); rankUpHeroExecute(targetHero); Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),targetHero.getTemplateId(),targetHero.getStar())); if(targetHero.getStar()>=5&&targetHero.getStar()!=15){ @@ -2422,6 +2425,7 @@ public class HeroLogic{ if(!b){ throw new ErrorCodeException(ErrorCode.HERO_ITEM_NOT); } + //单纯归元神将,不归元法宝 CommonProto.Drop.Builder drop = heroBackDrop(user, heroList, returnPercent, BIReason.HERO_BACK_REWARD,false); List itemList = drop.getItemlistList(); List itemId = new ArrayList<>(itemList.size()); @@ -2509,23 +2513,27 @@ public class HeroLogic{ continue; } //返还法宝修炼材料 - int especialEquipLevel = hero.getEspecialEquipLevel(); - if(especialEquipLevel!=1&&especialEquipLevel!=0){ - continue; - } - SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); - int[] equipTalismana = scHero.getEquipTalismana(); - if(equipTalismana!=null&&equipTalismana.length>1){ - continue; - } - TreeMap levelMap = (TreeMap) SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]); - Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); - for(Map.Entry entry:returnMap.entrySet()){ - int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); - for(int[] rankUpConsume:rankupBasicMaterial){ - returnItemMap.put(rankUpConsume[0],returnItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); - } + Map especialEquipReturnItem = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero); + for(Map.Entry entry:especialEquipReturnItem.entrySet()){ + returnItemMap.put(entry.getKey(),returnItemMap.getOrDefault(entry.getKey(),0)+entry.getValue()); } +// int especialEquipLevel = hero.getEspecialEquipLevel(); +// if(especialEquipLevel==1||especialEquipLevel==0){ +// continue; +// } +// SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); +// int[] equipTalismana = scHero.getEquipTalismana(); +// if(equipTalismana!=null&&equipTalismana.length>1){ +// continue; +// } +// TreeMap levelMap = (TreeMap) SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]); +// Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); +// for(Map.Entry entry:returnMap.entrySet()){ +// int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); +// for(int[] rankUpConsume:rankupBasicMaterial){ +// returnItemMap.put(rankUpConsume[0],returnItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); +// } +// } } int[][] resultDrop = new int[returnItemMap.size()][]; int index = 0; From 6dfd305c73accbb293d1bbdde5fcebf8e013eac7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 17 Aug 2020 05:08:35 +0800 Subject: [PATCH 32/36] =?UTF-8?q?=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C?= =?UTF-8?q?=E6=8E=92=E8=A1=8C=E5=8F=91=E5=A5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clazzStaticCfg/RewardStaticConfig.java | 44 +++++++++++++++++ .../ljsd/jieling/logic/SituationLogic.java | 49 ++++++++++++++++++- .../java/config/SRaceTowerRewardConfig.java | 37 ++++++++++++++ 3 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java create mode 100644 tablemanager/src/main/java/config/SRaceTowerRewardConfig.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java new file mode 100644 index 000000000..c2117d4ef --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/RewardStaticConfig.java @@ -0,0 +1,44 @@ +package com.ljsd.jieling.config.clazzStaticCfg; + +import config.SExpeditionFloorConfig; +import config.SRaceTowerRewardConfig; +import manager.AbstractClassStaticConfig; +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +/** + * @author lvxinran + * @date 2020/9/7 + * @discribe + */ +public class RewardStaticConfig extends AbstractClassStaticConfig { + + private static Map raceRewardConfigMap; + + @Override + public void registConfigs(Set registConfigs) { + registConfigs.add(SRaceTowerRewardConfig.class.getAnnotation(Table.class).name()); + + } + + @Override + public void figureConfigs() { + Map raceRewardConfigMapTemp = new HashMap<>(); + for(SRaceTowerRewardConfig value:STableManager.getConfig(SRaceTowerRewardConfig.class).values()){ + int[] section = value.getSection(); + for(int i = section[0];i<=section[1];i++){ + raceRewardConfigMapTemp.put(i,value); + } + } + raceRewardConfigMap = raceRewardConfigMapTemp; + + } + + public static Map getRaceRewardConfigMap() { + return raceRewardConfigMap; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java index f5b795b21..e94af7301 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/SituationLogic.java @@ -2,11 +2,15 @@ package com.ljsd.jieling.logic; import com.ljsd.fight.CheckFight; +import com.ljsd.jieling.config.clazzStaticCfg.RewardStaticConfig; import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.dao.PlayerManager; @@ -16,6 +20,7 @@ import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.fight.*; import com.ljsd.jieling.logic.fight.result.FightResult; +import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.RankContext; @@ -33,6 +38,7 @@ import com.ljsd.jieling.util.MonsterUtil; import config.*; import manager.STableManager; import org.luaj.vm2.LuaValue; +import org.springframework.data.redis.core.ZSetOperations; import util.TimeUtils; import java.util.*; @@ -103,9 +109,14 @@ public class SituationLogic { if(isIndication){ //周一刷新 boolean remove = false; - if(TimeUtils.getDayOfWeek()==1){ + if(TimeUtils.getDayOfWeek()==1&&TimeUtils.getHourOfDay()==5&&TimeUtils.getMiunte()==0){ remove = true; } + if(remove){ + //发排行奖励,删除排行信息 + Runnable runnable = this::rankReward; + runnable.run(); + } try { Map sessionMap = OnlineUserManager.sessionMap; for(Map.Entry entry:sessionMap.entrySet()){ @@ -132,11 +143,42 @@ public class SituationLogic { } } + public void rankReward() { + AbstractRank rank = RankContext.getRankEnum(RankEnum.SITUATION_RANK.getType()); + Map rewardConfigMap = RewardStaticConfig.getRaceRewardConfigMap(); + Set> rankInfos = rank.getRankByKey("", 0, rewardConfigMap.size()); + if(rankInfos.size()<1){ + return; + } + try{ + int index = 1; + for(ZSetOperations.TypedTuple rankInfo:rankInfos){ + System.out.println("fasong11111111111"); + String title = SErrorCodeEerverConfig.getI18NMessage("xuanyuan_Ranking_reward_title"); + String content = SErrorCodeEerverConfig.getI18NMessage("xuanyuan_Ranking_reward_txt", new Object[]{index}); + SRaceTowerRewardConfig sRaceTowerRewardConfig = rewardConfigMap.get(index); + if(sRaceTowerRewardConfig==null){ + continue; + } + String mailReward = ItemUtil.getMailReward(sRaceTowerRewardConfig.getReward()); + MailLogic.getInstance().sendMail(Integer.parseInt(rankInfo.getValue()), title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + index++; + } + RedisUtil.getInstence().del(RedisKey.getKey(rank.getRedisKey(),"",false)); + }catch (Exception e){ + e.printStackTrace(); + } + + } + public void getAllSituationStatus(ISession session, MessageTypeProto.MessageType messageType) throws Exception { User user = UserManager.getUser(session.getUid()); MapInfoProto.GetAllSituationInfoResponse.Builder response = MapInfoProto.GetAllSituationInfoResponse.newBuilder(); Map situationPass = user.getPlayerInfoManager().getSituationPass(); + if(status==null){ + checkStatus(); + } for(int i = 0 ; i < status.length;i++){ if(status[i]==0){ continue; @@ -158,7 +200,10 @@ public class SituationLogic { SRaceTowerConfig sRaceTowerConfig = STableManager.getConfig(SRaceTowerConfig.class).get(id); Map situationPass = playerInfoManager.getSituationPass(); - + boolean check = PlayerLogic.getInstance().check(user, sRaceTowerConfig.getPrivilege()[0], 1); + if(!check){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } boolean consumeCount = false; if(type==2){ diff --git a/tablemanager/src/main/java/config/SRaceTowerRewardConfig.java b/tablemanager/src/main/java/config/SRaceTowerRewardConfig.java new file mode 100644 index 000000000..c19df3d6d --- /dev/null +++ b/tablemanager/src/main/java/config/SRaceTowerRewardConfig.java @@ -0,0 +1,37 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="RaceTowerRewardConfig") +public class SRaceTowerRewardConfig implements BaseConfig { + + private int id; + + private int[] section; + + private int[][] reward; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int[] getSection() { + return section; + } + + public int[][] getReward() { + return reward; + } + + +} \ No newline at end of file From 502aa7ca459e912145b1eb1e4bce37eec85e5c23 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 17 Aug 2020 05:29:48 +0800 Subject: [PATCH 33/36] =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamecommon/src/main/java/util/TimeUtils.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index c18bcc483..21c664a99 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -1120,6 +1120,17 @@ public class TimeUtils { int hour = calendar.get(Calendar.HOUR_OF_DAY); return hour; } + /** + * 获得当前时间是今天的几点(整点) + * + * @return + */ + public static int getMiunte() { + Calendar calendar = Calendar.getInstance(); + calendar.setTimeInMillis(System.currentTimeMillis()); + int minute = calendar.get(Calendar.MINUTE); + return minute; + } // /** // * 获取的一个月的最大的天数 From 19ee0348b98037d5c038c2148614b2d9d765ee3f Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 17 Aug 2020 05:36:19 +0800 Subject: [PATCH 34/36] =?UTF-8?q?=E5=90=88=E6=88=90=E8=8B=B1=E9=9B=84?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index e72577350..dc3ad6954 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -2514,8 +2514,10 @@ public class HeroLogic{ } //返还法宝修炼材料 Map especialEquipReturnItem = ItemLogic.getInstance().heroEspecialEquipReturnItem(hero); - for(Map.Entry entry:especialEquipReturnItem.entrySet()){ - returnItemMap.put(entry.getKey(),returnItemMap.getOrDefault(entry.getKey(),0)+entry.getValue()); + if(especialEquipReturnItem!=null&&especialEquipReturnItem.size()>0){ + for(Map.Entry entry:especialEquipReturnItem.entrySet()){ + returnItemMap.put(entry.getKey(),returnItemMap.getOrDefault(entry.getKey(),0)+entry.getValue()); + } } // int especialEquipLevel = hero.getEspecialEquipLevel(); // if(especialEquipLevel==1||especialEquipLevel==0){ From 315ef311456395ef999f5f1c2417cce68b2d9896 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Mon, 17 Aug 2020 06:21:31 +0800 Subject: [PATCH 35/36] =?UTF-8?q?=E8=BD=A6=E8=BF=9F=E6=96=97=E6=B3=95?= =?UTF-8?q?=E6=89=93=E7=82=B9=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/handler/FastChallengeHandler.java | 2 +- .../ljsd/jieling/ktbeans/ReportEventEnum.java | 2 +- .../com/ljsd/jieling/logic/hero/HeroLogic.java | 17 ----------------- 3 files changed, 2 insertions(+), 19 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java index 28b4dc310..2f2824a14 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/FastChallengeHandler.java @@ -99,7 +99,6 @@ public class FastChallengeHandler extends BaseHandler(),0,"",""); }break; case 2:{ PVPFightEvent pvpFightEvent = new PVPFightEvent(uid,GlobalsDef.CAR_DELAY_TEAM, battleRound,"", GameFightType.CarPersonChallenge,challeageId,GlobalsDef.CAR_DELAY_TEAM); @@ -146,5 +145,6 @@ public class FastChallengeHandler extends BaseHandler1){ -// continue; -// } -// TreeMap levelMap = (TreeMap) SEquipTalismana.equipTalismanaStarMap.get(equipTalismana[1]); -// Map returnMap = levelMap.subMap(1, hero.getEspecialEquipLevel()); -// for(Map.Entry entry:returnMap.entrySet()){ -// int[][] rankupBasicMaterial = entry.getValue().getRankupBasicMaterial(); -// for(int[] rankUpConsume:rankupBasicMaterial){ -// returnItemMap.put(rankUpConsume[0],returnItemMap.getOrDefault(rankUpConsume[0],0)+rankUpConsume[1]); -// } -// } } int[][] resultDrop = new int[returnItemMap.size()][]; int index = 0; From c36c3abddee60a1461589452fb73e1375becdbb5 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 13 Aug 2020 16:53:56 +0800 Subject: [PATCH 36/36] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E7=BD=AE=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java | 1 + 1 file changed, 1 insertion(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java index 51c709e81..300cc949f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hero/DoHeroChangeRequestHandler.java @@ -66,6 +66,7 @@ public class DoHeroChangeRequestHandler extends BaseHandler