diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java index 3c0c4ddfb..8b846b834 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GameGM/GMRequestHandler.java @@ -12,6 +12,7 @@ import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.handler.map.MapManager; import com.ljsd.jieling.handler.map.MapMission; +import com.ljsd.jieling.handler.mission.Mission; import com.ljsd.jieling.logic.dao.Hero; import com.ljsd.jieling.logic.dao.Mail; import com.ljsd.jieling.logic.dao.root.User; @@ -90,19 +91,30 @@ public class GMRequestHandler extends BaseHandler{ SCMapConfig scMapConfig = SCMapConfig.getsCMapSize().get(100 + prarm1); Set missionIds = new HashSet<>(); MapManager mapManager = cUser.getMapManager(); - Map allMissionProgress = mapManager.getAllMissionProgress(); - int curMapId = mapManager.getCurMapId(); if (scMapConfig != null) { for (int i = 1; i <= prarm1; i++) { int mapId = 100 + i; SCMapConfig crossMap = SCMapConfig.getsCMapSize().get(mapId); - cUser.getPlayerInfoManager().setMapId(mapId); if (crossMap.getOpenRule() != null && crossMap.getOpenRule().length > 0) { missionIds.add(crossMap.getOpenRule()[0]); } initFininshMapMission(mapManager,mapId); } } + cUser.getPlayerInfoManager().setMapId(scMapConfig.getId()); + SCMapConfig crossMap = SCMapConfig.getsCMapSize().get(scMapConfig.getId() + 1); + if (crossMap == null || crossMap.getOpenRule().length == 0) { + return; + } + Map doingMissions = cUser.getMissionManager().getDoingMissions(); + for (Integer key : doingMissions.keySet()) { + cUser.getMissionManager().removeDoingMissions(key); + } + Mission mission = new Mission(); + mission.setMissionId(crossMap.getOpenRule()[0]); + mission.setMissionStep(0); + mission.setOpen(false); + cUser.getMissionManager().updateOneDoingMissions(crossMap.getOpenRule()[0], mission); cUser.getMissionManager().updateFinishMissions(missionIds); break; default: 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 8245004ba..0b8f5be05 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 @@ -95,7 +95,7 @@ public class MapLogic { return; } SCMapConfig scMapConfig = SCMapConfig.getsCMapSize().get(mapId); - if (scMapConfig == null || scMapConfig.getOpenRule() == null) { + if (scMapConfig == null || scMapConfig.getOpenRule() == null || scMapConfig.getOpenRule().length == 0) { LOGGER.info("enterMap() uid=>{} mapId=>{}, scMapConfig.getOpenRule()=>{}", uid, mapId, scMapConfig == null ? "" : scMapConfig.getOpenRule()); MessageUtil.sendErrorResponse(iSession, 0, messageType.getNumber(), ""); return;