diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java index 1018c983a..26974f325 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/SActivityRankingReward.java @@ -44,7 +44,7 @@ public class SActivityRankingReward implements BaseConfig { } public static List getsActivityRankingRewardMapByActivityId(int Id) { - return sActivityRankingRewardMapByActivityId.get(Id); + return sActivityRankingRewardMapByActivityId.getOrDefault(Id,null); } public int getId() { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java index 7fc007c34..5adf3a112 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/GlobalsDef.java @@ -3,6 +3,7 @@ package com.ljsd.jieling.core; public interface GlobalsDef { String DEFAULT_NAME = "无名妖灵师"; int MAP_MISSION_RETURN = -9999; + int MAP_MISSION_FAILURE = -10000; int CHAIRMAN = 1; int ADMINISTRATORS =2; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java index a378292be..ec9971d06 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/core/HandlerLogicThread.java @@ -76,9 +76,7 @@ public class HandlerLogicThread extends Thread{ //日后删除 whiteMsg.add(MessageTypeProto.MessageType.GET_CHAT_MESSAGE_REQUEST_VALUE); - - - + whiteMsg.add(MessageTypeProto.MessageType.SERVER_FIVE_REQEUST_VALUE); } 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 998f87527..6822055a8 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 @@ -565,8 +565,11 @@ public class MapLogic { cost[0]= new int[]{costId,costNum}; boolean costResult = ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1); if(!costResult){ - MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"行动力不足!"); - return; + costNum = user.getItemManager().getItem(costId).getItemNum(); + cost[0][1]= costNum; + ItemUtil.itemCost(user,cost,BIReason.ENDLESS_CONSUME_EXECUTION,1); +// MessageUtil.sendErrorResponse(session,0,messageType.getNumber(),"行动力不足!"); +// return; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java index f65884d9b..3bc50c641 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapMissionManager.java @@ -126,7 +126,7 @@ public class MapMissionManager { continue; } int[][] values = sAccomplishmentConfig.getValues(); - int targetEventValue = values[1][0]; + int targetEventValue = values[values.length-1][0]; allMissionProgress.put(missionId,updateValue); needUpdate = true; MissionState misisionState = MissionState.DOING; @@ -134,12 +134,15 @@ public class MapMissionManager { int score = sAccomplishmentConfig.getScore(); addScore+=score; misisionState= MissionState.FINISH; +// missionValue = updateValue; } if(updateValue == -1){ - missionValue=1; + updateValue=1; + }else if(updateValue < -1){ + updateValue=0; } if(copyMissionUpdate){ - MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(missionId,misisionState,missionValue); + MissionStateChangeInfo missionStateChangeInfo = new MissionStateChangeInfo(missionId,misisionState,updateValue); readySendCopyMission(missionStateChangeInfo); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java index 5f63b9484..132292c25 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/FinishOptionsDifficultMapProcessor.java @@ -12,9 +12,12 @@ public class FinishOptionsDifficultMapProcessor implements BaseMissionProcesor{ public int checkAndUpdateMissionProcessor(User user, SAccomplishmentConfig sAccomplishmentConfig, int eventId, int time, MapMissionType mapMissionType,int missionValue) { MapManager mapManager = user.getMapManager(); SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()); - if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[1][0]){ + if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[sAccomplishmentConfig.getValues().length-1][0]){ return GlobalsDef.MAP_MISSION_RETURN; } + if(missionValue==-1){ + return GlobalsDef.MAP_MISSION_RETURN; + } int[][] value = sAccomplishmentConfig.getValues(); missionValue = 0-missionValue; for(int i = 0 ; i >(value.length+1)==1){ - return 1; + if((missionValue+2>>value.length)==1){ + missionValue = -1; }else{ missionValue = 0-missionValue; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillBossInTimeDifficultProcessor.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillBossInTimeDifficultProcessor.java index f606bfe7e..90fad71af 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillBossInTimeDifficultProcessor.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/missionProcessor/KillBossInTimeDifficultProcessor.java @@ -10,6 +10,9 @@ import com.ljsd.jieling.logic.dao.root.User; public class KillBossInTimeDifficultProcessor implements BaseMissionProcesor { @Override public int checkAndUpdateMissionProcessor(User user, SAccomplishmentConfig sAccomplishmentConfig, int eventId, int time, MapMissionType mapMissionType,int missionValue) { + if(missionValue==-1){ + return GlobalsDef.MAP_MISSION_RETURN; + } MapManager mapManager = user.getMapManager(); SChallengeConfig sChallengeConfig = SChallengeConfig.sChallengeConfigs.get(mapManager.getCurMapId()); if(sChallengeConfig.getDifficultType()!=sAccomplishmentConfig.getValues()[0][0]){ @@ -19,7 +22,7 @@ public class KillBossInTimeDifficultProcessor implements BaseMissionProcesor { return GlobalsDef.MAP_MISSION_RETURN; } if(time sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); for (Integer openActivityId : openActivityIds) { - if (activityManager.initAllActivityMission(openActivityId)) { - continue; - } - if(activityManager.getActivityMissionMap().containsKey(openActivityId)){ - continue; + SGlobalActivity sGlobalActivity = sGlobalActivityMap.get(openActivityId); + if(!initOtherActivity(user, sGlobalActivity)){ + activityManager.initAllActivityMission(openActivityId); } AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(openActivityId); if (abstractActivity == null) { - break; + continue; } abstractActivity.initActivity(user); } @@ -164,8 +163,9 @@ public class ActivityLogic { if (activityMission != null) { continue; } - activityManager.initAllActivityMission(activityId); - initOtherActivity(user, sGlobalActivity); + if(!initOtherActivity(user, sGlobalActivity)){ + activityManager.initAllActivityMission(activityId); + } openNewActivityIds.add(activityId); } else { ActivityMission activityMission = activityMissionMap.get(activityId); @@ -183,22 +183,24 @@ public class ActivityLogic { } - public void initOtherActivity(User user, SGlobalActivity sGlobalActivity) throws Exception { + public boolean initOtherActivity(User user, SGlobalActivity sGlobalActivity) throws Exception { int type = sGlobalActivity.getType(); switch (type) { case ActivityType.BLESSACTIVITY: blessInfoInit(user.getActivityManager(), sGlobalActivity.getId()); - break; + return true; case ActivityType.TREASURE: case ActivityType.LUCKYCAT: case ActivityType.SERVERHAPPY: AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(sGlobalActivity.getId()); if (abstractActivity == null) { - break; + return false; } abstractActivity.initActivity(user); + return true; + default: + return false; } - } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java index 9d6e1ee94..b9278cc51 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/CopyExpectRankActivity.java @@ -10,7 +10,8 @@ class CopyExpectRankActivity extends ExpectRankActivity { public CopyExpectRankActivity(int id) { super(id); - Poster.getPoster().listenEvent(this, StoryEvent.class); + //策划说 这个排行榜不开 以后可能会有 + // Poster.getPoster().listenEvent(this, StoryEvent.class); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java index 61b6d3970..c4a73c351 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ExpectRankActivity.java @@ -59,6 +59,8 @@ class ExpectRankActivity extends AbstractActivity { public void onActivityEnd() throws Exception { List sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id); + if(null==sActivityRankingReward) + return; int maxRank = 0; Map rank2miss = new HashMap<>(); for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java index ab68315d4..158a2612c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/HeroUpExpectRankActivity.java @@ -2,16 +2,18 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.config.SActivityRewardConfig; -import com.ljsd.jieling.db.redis.RedisKey; -import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.activity.event.HeroUpStarEvent; import com.ljsd.jieling.logic.activity.event.IEvent; import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.ActivityMission; -import com.ljsd.jieling.logic.dao.Hero; -import com.ljsd.jieling.logic.dao.HeroManager; +import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; + +import java.util.Map; class HeroUpExpectRankActivity extends ExpectRankActivity { @@ -22,28 +24,44 @@ class HeroUpExpectRankActivity extends ExpectRankActivity { @Override public void onEvent(IEvent event) throws Exception { - if (!(event instanceof HeroUpExpectRankActivity)) + if (!(event instanceof HeroUpStarEvent)) return; + User user = UserManager.getUser(((HeroUpStarEvent) event).getUid()); - HeroManager heroManager = user.getHeroManager(); - SActivityRewardConfig sActivityRewardConfig = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).get(0); - if(sActivityRewardConfig==null) - return; - int count = 0; - for (Hero targetHero:heroManager.getHeroMap().values()) { - if(targetHero.getStar()>=sActivityRewardConfig.getValues()[0][0]){ - count++; + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + Map activityProgressInfoMap = activityMission.getActivityProgressInfoMap(); + + for (SActivityRewardConfig sActivityRewardConfig : SActivityRewardConfig.getsActivityRewardConfigByActivityId(id)) { + if (((HeroUpStarEvent) event).getStar() == sActivityRewardConfig.getValues()[0][0]) { + ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(sActivityRewardConfig.getId(), null); + if (null == activityProgressInfo) + continue; + activityProgressInfo.setProgrss(activityProgressInfo.getProgrss() + 1); + activityMission.updateProgressInfo(sActivityRewardConfig.getId(), activityProgressInfo); } } - update(UserManager.getUser(((HeroUpStarEvent) event).getUid()), count); + //更新进度 + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + sendActivityProgress(sessionByUid, activityMission, null); } @Override - void updateProgress(User user, ActivityMission activityMission, int count) { - activityMission.setValue(count+activityMission.getValue()); - String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false); - RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), count); + public void update(User user, int count) { + + } + + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + int[][] values = sActivityRewardConfig.getValues(); + int missionProgress = activityProgressInfo.getProgrss(); + if (missionProgress < values[1][0]) { + LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ", session.getUid(), sActivityRewardConfig.getId(), missionProgress, values[0][0]); + MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not"); + return false; + } + return true; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java index cbc39cf50..9fd17f8ac 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/StaminaExpectRankActivity.java @@ -11,7 +11,8 @@ class StaminaExpectRankActivity extends ExpectRankActivity { public StaminaExpectRankActivity(int id) { super(id); - Poster.getPoster().listenEvent(this, UseItemEvent.class); + //策划说 这个排行榜不开 以后可能会有 + //Poster.getPoster().listenEvent(this, UseItemEvent.class); } @Override diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java index 287a602d5..ef5a4bf05 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/HeroUpStarEvent.java @@ -6,9 +6,15 @@ package com.ljsd.jieling.logic.activity.event; public class HeroUpStarEvent implements IEvent { private int uid; + private int star; - public HeroUpStarEvent(int uid) { + public HeroUpStarEvent(int uid, int star) { this.uid = uid; + this.star = star; + } + + public int getStar() { + return star; } public int getUid() { 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 3703f759b..ac0ca0063 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 @@ -627,10 +627,11 @@ public class HeroLogic { MessageUtil.sendErrorResponse(session,0,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,""); return; } - Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId())); + //删除hero recyleHeroBySystem(user,removeHeroIds); targetHero.upStar( 1 ); + Poster.getPoster().dispatchEvent(new HeroUpStarEvent(user.getId(),targetHero.getStar())); targetHero.setStarBreakId(scHeroRankUpConfig.getId()); user.getUserMissionManager().onGameEvent(user,GameEvent.HERO_UP,2,targetHero.getTemplateId()); MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.UP_HERO_STAR_RESPONSE_VALUE,null,true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index 90a0012da..5be318cd9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -282,7 +282,7 @@ public class StoreLogic { if(SStoreTypeConfig.getsStoreTypeConfigMap().get(storeId).getStoreType() != StoreType.GIFT_STORE.getType()){ user.getUserMissionManager().onGameEvent(user, GameEvent.BUY_MATERIAL,sStoreConfig.getGoods()[0][0],itemNum); } - if(itemId==10015){ + if(itemId==10005){ Poster.getPoster().dispatchEvent(new GoldEvent(user.getId())); } 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 0fcba4f51..95a861875 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 @@ -34,6 +34,7 @@ public class MinuteTask extends Thread { public void run() { try { LOGGER.info("MinuteTask start..."); + LOGGER.info("online use num::"+ OnlineUserManager.sessionMap.entrySet().size()); HotfixUtil.getInstance().doWork("../conf/hotfix.json"); ActivityLogic.getInstance().checkActiviyStatus(); STableManager.updateTablesWithTableNames(true);