back_recharge
wangyuan 2019-04-23 18:22:02 +08:00
parent ae0e068b35
commit 4289588f92
8 changed files with 179 additions and 23 deletions

View File

@ -38,15 +38,15 @@ public class SGlobalActivity implements BaseConfig {
int time = sGlobalActivity.getTime(); int time = sGlobalActivity.getTime();
String startTime = sGlobalActivity.getStartTime(); String startTime = sGlobalActivity.getStartTime();
String endtime = sGlobalActivity.getEndtime(); String endtime = sGlobalActivity.getEndtime();
if(time == 1 ){ if(time == ActivityType.OPEN_TYPE_TIME ){
if("0".equals(endtime)){ if("0".equals(endtime)){
continue; continue;
} }
setStartTimeLong(TimeUtils.parseTimeToMiles(startTime,"YYYYMMdd hh:mm:ss")); sGlobalActivity.setStartTimeLong(TimeUtils.parseTimeToMiles(startTime,"YYYYMMdd hh:mm:ss"));
continue; continue;
} }
setStartTimeLong(Long.parseLong(startTime)); sGlobalActivity.setStartTimeLong(Long.parseLong(startTime));
setStartTimeLong(Long.parseLong(endtime)); sGlobalActivity.setEndTimeLong(Long.parseLong(endtime));
} }
sGlobalActivityMap = config; sGlobalActivityMap = config;
} }

View File

@ -1,6 +1,8 @@
package com.ljsd.jieling.handler; package com.ljsd.jieling.handler;
import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.handler.map.MapLogic;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.netty.cocdex.PacketNetData;
@ -45,10 +47,11 @@ public class GetPlayerInfoHandler extends BaseHandler{
User user = UserManager.getUser(userId); User user = UserManager.getUser(userId);
// 需要隔天刷新的字段统一在这里处理 // 需要隔天刷新的字段统一在这里处理
if (TimeUtils.isOverTime(5, user.getPlayerInfoManager().getLoginTime())) { if (TimeUtils.isOverTime(5, user.getPlayerInfoManager().getLoginTime())) {
user.getPlayerInfoManager().setLoginTime(TimeUtils.now());
MapLogic.getInstance().resetDayInfo(user); MapLogic.getInstance().resetDayInfo(user);
//活动刷新
ActivityLogic.getInstance().flushEveryDay(user);
} }
user.getPlayerInfoManager().setLoginTime(TimeUtils.now());
MapLogic.getInstance().checkIsInMap(user); MapLogic.getInstance().checkIsInMap(user);
Map<Integer, Integer> guidePoints = user.getPlayerInfoManager().getGuidePoints(); Map<Integer, Integer> guidePoints = user.getPlayerInfoManager().getGuidePoints();
List<CommonProto.NewPlayerGuidePoint> list = new ArrayList<>(); List<CommonProto.NewPlayerGuidePoint> list = new ArrayList<>();

View File

@ -4,6 +4,7 @@ import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.config.SGlobalActivity; import com.ljsd.jieling.config.SGlobalActivity;
import com.ljsd.jieling.logic.dao.ActivityManager; import com.ljsd.jieling.logic.dao.ActivityManager;
import com.ljsd.jieling.logic.dao.ActivityMission; import com.ljsd.jieling.logic.dao.ActivityMission;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.network.session.ISession;
@ -12,6 +13,7 @@ import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.protocols.PlayerInfoProto; import com.ljsd.jieling.protocols.PlayerInfoProto;
import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.TimeUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -24,6 +26,12 @@ public class ActivityLogic {
private Set<Integer> openActivityIds =new HashSet<>(); private Set<Integer> openActivityIds =new HashSet<>();
public void flushEveryDay(User user) {
updateActivityMissionProgress(user, ActivityType.SevenLogin,1);
checkActivityIsFinish(user);
checkActivityOfUser(user);
}
public static class Instance { public static class Instance {
public final static ActivityLogic instance = new ActivityLogic(); public final static ActivityLogic instance = new ActivityLogic();
@ -34,7 +42,7 @@ public class ActivityLogic {
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){ for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){
int time = sGlobalActivity.getTime(); int time = sGlobalActivity.getTime();
if(time ==3 ){ if(time ==2 ){
continue; continue;
} }
long startTime = sGlobalActivity.getTimeLong(0,1); long startTime = sGlobalActivity.getTimeLong(0,1);
@ -48,11 +56,14 @@ public class ActivityLogic {
} }
openActivityIds.add(sGlobalActivity.getId()); openActivityIds.add(sGlobalActivity.getId());
} }
}
public void newPlayerOpenActivityMission(User user){
checkActivityOfUser(user);
} }
public void checkActivityOfUser(User user){ public void checkActivityOfUser(User user){
long now = System.currentTimeMillis(); long now = TimeUtils.now();
ActivityManager activityManager = user.getActivityManager(); ActivityManager activityManager = user.getActivityManager();
Map<Integer, Integer> activityState = activityManager.getActivityState(); Map<Integer, Integer> activityState = activityManager.getActivityState();
Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap(); Map<Integer, SGlobalActivity> sGlobalActivityMap = SGlobalActivity.getsGlobalActivityMap();
@ -63,16 +74,20 @@ public class ActivityLogic {
long userCreateTime = user.getPlayerInfoManager().getCreateTime(); long userCreateTime = user.getPlayerInfoManager().getCreateTime();
for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){ for(SGlobalActivity sGlobalActivity:sGlobalActivityMap.values()){
int activityId = sGlobalActivity.getId(); int activityId = sGlobalActivity.getId();
if(!openActivityIds.contains(activityId)){ if(openActivityIds.contains(activityId)){
continue; continue;
} }
int time = sGlobalActivity.getTime(); int time = sGlobalActivity.getTime();
if(time ==3 ){ if(time ==ActivityType.OPEN_TYPE_ROLE ){
long startTime = sGlobalActivity.getTimeLong(userCreateTime,1); long startTime = sGlobalActivity.getTimeLong(userCreateTime,1);
long endTime = sGlobalActivity.getTimeLong(userCreateTime,2); long endTime = sGlobalActivity.getTimeLong(userCreateTime,2);
if(now<startTime){ if(now<startTime){
continue; continue;
} }
if(endTime!=0 && now>endTime){
activityState.put(activityId,ActivityType.CLOSE_STATE);
continue;
}
activityManager.initAllActivityMission(activityId); activityManager.initAllActivityMission(activityId);
}else{ }else{
activityState.put(activityId,ActivityType.CLOSE_STATE); activityState.put(activityId,ActivityType.CLOSE_STATE);
@ -99,20 +114,43 @@ public class ActivityLogic {
ActivityManager activityManager = user.getActivityManager(); ActivityManager activityManager = user.getActivityManager();
ActivityMission activityMission = activityManager.getActivityMissionMap().get(activityId); ActivityMission activityMission = activityManager.getActivityMissionMap().get(activityId);
Integer missionState = activityMission.getAllMissionStatus().get(missionId); Integer missionState = activityMission.getAllMissionStatus().get(missionId);
Integer missionProgress = activityMission.getAllMissionProgress().get(missionId);
if( null == missionState || missionState == ActivityType.HAD_TAKED){ if( null == missionState || missionState == ActivityType.HAD_TAKED){
MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"had taked"); MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"had taked");
return; return;
} }
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId); SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
int[][] values = sActivityRewardConfig.getValues(); int[][] values = sActivityRewardConfig.getValues();
if(sGlobalActivity.getType() == ActivityType.ChapterReward){ switch (sGlobalActivity.getType()){
case ActivityType.ChapterReward:{
/* LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(values[0][0]); /* LevelDifficulty levelDifficulty = user.getLevelDifficultyManager().getLevelDifficultyInfosMap().get(values[0][0]);
if(levelDifficulty == null || levelDifficulty.getState()!= Global.FIGHT_CLEARANCE){ if(levelDifficulty == null || levelDifficulty.getState()!= Global.FIGHT_CLEARANCE){
MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"not pass"); MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"not pass");
return; return;
}*/ }*/
} }
break;
case ActivityType.OnlineReward:{
long now = TimeUtils.now();
PlayerManager playerInfoManager = user.getPlayerInfoManager();
long loginTime = playerInfoManager.getLoginTime();
int limitTime = values[0][0];
long remainTime = now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND;
if(now - loginTime - limitTime * TimeUtils.ONE_MINUTE + missionProgress * TimeUtils.ONE_SECOND<0){
LOGGER.error("the uid={} remain time is={}ms,the require time is={}ms",uid,remainTime,limitTime * TimeUtils.ONE_MINUTE);
MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"time not");
return;
}
}
break;
default:
if(missionProgress<values[0][0]){
LOGGER.error("the uid={} the misionId={},the missionProgress={},the require is={} ",uid,missionId,missionProgress,values[0][0]);
MessageUtil.sendErrorResponse(session,0,rewardResponseValue,"time not");
return;
}
break;
}
int[][] reward = sActivityRewardConfig.getReward(); int[][] reward = sActivityRewardConfig.getReward();
CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward); CommonProto.Drop.Builder drop = ItemUtil.drop(user, reward);
activityMission.updateMissionStatus(missionId,ActivityType.HAD_TAKED); activityMission.updateMissionStatus(missionId,ActivityType.HAD_TAKED);
@ -155,4 +193,78 @@ public class ActivityLogic {
MessageUtil.sendMessage(session,1,rewardResponseValue,build,true); MessageUtil.sendMessage(session,1,rewardResponseValue,build,true);
} }
public void updateActivityMissionProgress(User user,int activityType,int count){
ActivityManager activityManager = user.getActivityManager();
Map<Integer, Integer> activityState = activityManager.getActivityState();
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
for(Map.Entry<Integer,Integer> item : activityState.entrySet()){
Integer activityStatus = item.getValue();
if(activityStatus != ActivityType.OPEN_STATE){
continue;
}
Integer activityId= item.getKey();
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(activityId);
int targetActivityType = sGlobalActivity.getType();
if(targetActivityType != activityType){
continue;
}
updateProgress(activityType,activityMissionMap.get(activityId),count);
return;
}
}
private void updateProgress(int activityType,ActivityMission activityMission,int count){
Map<Integer, Integer> allMissionProgress = activityMission.getAllMissionProgress();
int progress;
switch (activityType){
default:
for (Map.Entry<Integer, Integer> item : allMissionProgress.entrySet()) {
progress = item.getValue() + count;
activityMission.updateMissionProgress(item.getKey(), progress);
}
break;
}
}
public void checkActivityIsFinish(User user){
ActivityManager activityManager = user.getActivityManager();
Map<Integer, Integer> activityState = activityManager.getActivityState();
Map<Integer, ActivityMission> activityMissionMap = activityManager.getActivityMissionMap();
for(Map.Entry<Integer,Integer> item : activityState.entrySet()){
Integer activityStatus = item.getValue();
if(activityStatus != ActivityType.OPEN_STATE){
continue;
}
Integer activityId= item.getKey();
checkActivityMissionFinishAndTaked(activityManager,activityId,activityMissionMap.get(activityId));
return;
}
}
private void checkActivityMissionFinishAndTaked(ActivityManager activityManager,int activityId,ActivityMission activityMission){
Map<Integer, Integer> allMissionStatus = activityMission.getAllMissionStatus();
boolean isAllTaked = true;
for(Map.Entry<Integer,Integer> item : allMissionStatus.entrySet()){
Integer missionStatus = item.getValue();
if(missionStatus == ActivityType.WILL_TAKE){
isAllTaked = false;
}
}
if(isAllTaked){
activityManager.updateActivityState(activityId,ActivityType.FINISH_STATE);
}
}
public int getInitActivityMissionProgress(int activityId){
int defalutProgress = 0;
switch (activityId){
case ActivityType.SevenLogin:
defalutProgress =1;
break;
default:
break;
}
return defalutProgress;
}
} }

View File

@ -7,8 +7,9 @@ public interface ActivityType {
int FINISH_STATE =2; int FINISH_STATE =2;
int OPEN_TYPE_TIME = 1; // 活动开启类型:绝对时间 int OPEN_TYPE_TIME = 1; // 活动开启类型:绝对时间
int OPEN_TYPE_SERVER = 2; // 活动开启类型:开服时间 int OPEN_TYPE_ROLE = 2; // 活动开启类型:创角时间
int OPEN_TYPE_ROLE = 3; // 活动开启类型:创角时间 int OPEN_TYPE_SERVER = 3; // 活动开启类型:开服时间
int WILL_TAKE = 0; //未领取 int WILL_TAKE = 0; //未领取

View File

@ -2,6 +2,7 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.common.mogodb.MongoBase; import com.ljsd.common.mogodb.MongoBase;
import com.ljsd.jieling.config.SActivityRewardConfig; import com.ljsd.jieling.config.SActivityRewardConfig;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -17,11 +18,16 @@ public class ActivityMission extends MongoBase {
allMissionStatus.put(missionId,status); allMissionStatus.put(missionId,status);
} }
public void updateMissionProgress(int missionId,int progress){
updateString("allMissionProgress."+missionId,progress);
allMissionProgress.put(missionId,progress);
}
public void initMissionInfo(int activityId){ public void initMissionInfo(int activityId){
List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId); List<SActivityRewardConfig> sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId);
for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){
allMissionStatus.put(sActivityRewardConfig.getId(), 0); allMissionStatus.put(sActivityRewardConfig.getId(), 0);
allMissionProgress.put(sActivityRewardConfig.getId(), 0); allMissionProgress.put(sActivityRewardConfig.getId(), ActivityLogic.getInstance().getInitActivityMissionProgress(activityId));
} }
} }

View File

@ -4,6 +4,7 @@ package com.ljsd.jieling.logic.dao;
import com.ljsd.jieling.config.SGameSetting; import com.ljsd.jieling.config.SGameSetting;
import com.ljsd.jieling.config.SPlayerLevelConfig; import com.ljsd.jieling.config.SPlayerLevelConfig;
import com.ljsd.jieling.db.mongo.MongoUtil; import com.ljsd.jieling.db.mongo.MongoUtil;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.util.ItemUtil; import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.TimeUtils; import com.ljsd.jieling.util.TimeUtils;
@ -83,6 +84,7 @@ public class UserManager {
Map<String, Hero> heroMap = heroManager.getHeroMap(); Map<String, Hero> heroMap = heroManager.getHeroMap();
TeamPosManager teamPosManager = user.getTeamPosManager(); TeamPosManager teamPosManager = user.getTeamPosManager();
teamPosManager.addTeamOfInitPlayer(heroMap.values()); teamPosManager.addTeamOfInitPlayer(heroMap.values());
ActivityLogic.getInstance().newPlayerOpenActivityMission(user);
} }

View File

@ -37,13 +37,18 @@ public class CombatLogic {
int uid = session.getUid(); int uid = session.getUid();
User user = UserManager.getUser(uid); User user = UserManager.getUser(uid);
PlayerManager playerInfoManager = user.getPlayerInfoManager(); PlayerManager playerInfoManager = user.getPlayerInfoManager();
int offLineTime = (int)((System.currentTimeMillis() -playerInfoManager.getOffLineTime())/1000); int offLineTime = 0;
AdventureManager adventureManager = user.getAdventureManager(); AdventureManager adventureManager = user.getAdventureManager();
Map<Integer, AdventureStateInfo> adventureStateInfoMap = adventureManager.getAdventureStateInfoMap(); Map<Integer, AdventureStateInfo> adventureStateInfoMap = adventureManager.getAdventureStateInfoMap();
List<CommonProto.AdventureStateInfo> result = new ArrayList<>(); List<CommonProto.AdventureStateInfo> result = new ArrayList<>();
CommonProto.Drop.Builder dropBuilder = calAdvenrureReward(user, false,0); CommonProto.Drop.Builder dropBuilder = calAdvenrureReward(user, false,0);
boolean hasAdventure = false;
for(AdventureStateInfo item : adventureStateInfoMap.values()){ for(AdventureStateInfo item : adventureStateInfoMap.values()){
result.add(CBean2Proto.getAdventureStateInfo(item,item.getPosition())); result.add(CBean2Proto.getAdventureStateInfo(item,item.getPosition()));
hasAdventure =true;
}
if(hasAdventure){
offLineTime = (int)((System.currentTimeMillis() -playerInfoManager.getOffLineTime())/1000);
} }
FightInfoProto.GetAdventureStateInfoResponse response = FightInfoProto.GetAdventureStateInfoResponse.newBuilder().addAllAdventureStateInfoList(result).setDrop(dropBuilder.build()).setOutTime(offLineTime). FightInfoProto.GetAdventureStateInfoResponse response = FightInfoProto.GetAdventureStateInfoResponse.newBuilder().addAllAdventureStateInfoList(result).setDrop(dropBuilder.build()).setOutTime(offLineTime).
build(); build();
@ -131,10 +136,12 @@ public class CombatLogic {
//消耗道具全部加一遍基础奖励。 //消耗道具全部加一遍基础奖励。
public CommonProto.Drop.Builder calAdvenrureReward(User user, boolean isOnLine,int position) throws Exception { public CommonProto.Drop.Builder calAdvenrureReward(User user, boolean isOnLine,int position) throws Exception {
Map<int[], Float> tempDropRation = new HashMap<>(); Map<int[], Float> tempDropRation = new HashMap<>();
Map<int[], Float> onlineReward = new HashMap<>();
AdventureManager adventureManager = user.getAdventureManager(); AdventureManager adventureManager = user.getAdventureManager();
Map<Integer, AdventureStateInfo> adventureStateInfoMap = adventureManager.getAdventureStateInfoMap(); Map<Integer, AdventureStateInfo> adventureStateInfoMap = adventureManager.getAdventureStateInfoMap();
int now = (int)(System.currentTimeMillis()/1000); int now = (int)(System.currentTimeMillis()/1000);
int adventureRefresh = SGameSetting.getGameSetting().getAdventureRefresh(); int adventureRefresh = SGameSetting.getGameSetting().getAdventureRefresh();
int offLineTime = (int)(user.getPlayerInfoManager().getOffLineTime());
for(AdventureStateInfo adventureStateInfoTmp:adventureStateInfoMap.values()){ for(AdventureStateInfo adventureStateInfoTmp:adventureStateInfoMap.values()){
int positionTmp = adventureStateInfoTmp.getPosition(); int positionTmp = adventureStateInfoTmp.getPosition();
if(position!=0 && positionTmp!=position){ if(position!=0 && positionTmp!=position){
@ -143,19 +150,33 @@ public class CombatLogic {
int startTime = adventureStateInfoTmp.getStartTime(); int startTime = adventureStateInfoTmp.getStartTime();
int times = (now - startTime)/adventureRefresh; int times = (now - startTime)/adventureRefresh;
int size = adventureStateInfoTmp.getHeroIds().size(); int size = adventureStateInfoTmp.getHeroIds().size();
int onlineTimesOfOffline=0;
if(!isOnLine){
onlineTimesOfOffline = (offLineTime - startTime)/adventureRefresh;
}
if(times>0){ if(times>0){
adventureStateInfoTmp.setStartTime(startTime+times*adventureRefresh); adventureStateInfoTmp.setStartTime(startTime+times*adventureRefresh);
SAdventureConfig sAdventureConfig = SAdventureConfig.getSAdventureConfigByPosition(positionTmp); SAdventureConfig sAdventureConfig = SAdventureConfig.getSAdventureConfigByPosition(positionTmp);
int leaveBonus = sAdventureConfig.getLeaveBonus(); int leaveBonus = sAdventureConfig.getLeaveBonus();
int maxTimes = leaveBonus * 3600 / adventureRefresh; int maxTimes = leaveBonus * 3600 / adventureRefresh;
if(!isOnLine){
times = times>maxTimes?maxTimes:times;
}
int baseRewardGroup[] = sAdventureConfig.getBaseRewardGroup(); int baseRewardGroup[] = sAdventureConfig.getBaseRewardGroup();
float rewardRation = calRation(size,sAdventureConfig.getNumIncome()); float rewardRation = calRation(size,sAdventureConfig.getNumIncome());
tempDropRation.put(baseRewardGroup,rewardRation * times); if(!isOnLine){
int reallyOfflineTims = times - onlineTimesOfOffline;
if(reallyOfflineTims>0){
reallyOfflineTims = reallyOfflineTims>maxTimes?reallyOfflineTims:times;
tempDropRation.put(baseRewardGroup,rewardRation * reallyOfflineTims);
adventureManager.updateTemp(sAdventureConfig.getRandomRewardGroup(),rewardRation*reallyOfflineTims);
}
if(onlineTimesOfOffline!=0){
onlineReward.put(baseRewardGroup,rewardRation * onlineTimesOfOffline);
}
}else{
onlineReward.put(baseRewardGroup,rewardRation * times);
adventureManager.updateTemp(sAdventureConfig.getRandomRewardGroup(),rewardRation*times); adventureManager.updateTemp(sAdventureConfig.getRandomRewardGroup(),rewardRation*times);
} }
}
} }
if(!isOnLine){ if(!isOnLine){
List<TempDropInfo> tempDropRatioList = adventureManager.getTempDropRatio(); List<TempDropInfo> tempDropRatioList = adventureManager.getTempDropRatio();
@ -164,6 +185,9 @@ public class CombatLogic {
} }
adventureManager.clearTemp(); adventureManager.clearTemp();
} }
if(!onlineReward.isEmpty()){
ItemUtil.drop(user, onlineReward);
}
return ItemUtil.drop(user, tempDropRation); return ItemUtil.drop(user, tempDropRation);
} }

View File

@ -10,6 +10,9 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCode;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.activity.ActivityLogic;
import com.ljsd.jieling.logic.activity.ActivityType;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.netty.cocdex.PacketNetData;
@ -20,6 +23,7 @@ import com.ljsd.jieling.protocols.MessageTypeProto;
import com.ljsd.jieling.session.GameSession; import com.ljsd.jieling.session.GameSession;
import com.ljsd.jieling.util.MathUtils; import com.ljsd.jieling.util.MathUtils;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.TimeUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -229,7 +233,11 @@ public class ProtocolsManager implements ProtocolsAbstract {
try { try {
OnlineUserManager.userOffline(session.getUid()); OnlineUserManager.userOffline(session.getUid());
User user = UserManager.getUser(session.getUid()); User user = UserManager.getUser(session.getUid());
user.getPlayerInfoManager().setOffLineTime(System.currentTimeMillis()); PlayerManager playerInfoManager = user.getPlayerInfoManager();
playerInfoManager.setOffLineTime(TimeUtils.now());
long onlineTime = playerInfoManager.getOffLineTime() - playerInfoManager.getLoginTime();
//更新在线时长
ActivityLogic.getInstance().updateActivityMissionProgress(user, ActivityType.OnlineReward,(int)(onlineTime/TimeUtils.ONE_SECOND));
MongoUtil.getInstence().lastUpdate(); MongoUtil.getInstence().lastUpdate();
// 下线处理的逻辑需要添加在这里 // 下线处理的逻辑需要添加在这里
} catch (Exception e) { } catch (Exception e) {