跨服灵脉秘境

xuexinpeng 2021-11-18 21:08:32 +08:00
parent 1acf753951
commit d4daed3d65
6 changed files with 184 additions and 109 deletions

View File

@ -1624,6 +1624,21 @@ public class TimeUtils {
calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTimeInMillis(); return calendar.getTimeInMillis();
} }
//周几的零点
public static long getWeekZero(int weekDay){
if(weekDay ==7){
weekDay =1;
}else {
weekDay +=1;
}
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MILLISECOND, 0);
calendar.set( Calendar.DAY_OF_WEEK,weekDay);
return calendar.getTimeInMillis();
}
/** /**
* 56bug * 56bug

View File

@ -63,13 +63,20 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true);
return; return;
} }
//功能开关
int[] func = new int[2];
CrossLingmaiLogic.getInstance().functionIsOpen(func);
if(func[0]!=1){
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true);
return;
}
int id = request.getId();//灵脉id int id = request.getId();//灵脉id
ArenaManager arenaManager = user.getArenaManager(); ArenaManager arenaManager = user.getArenaManager();
int group = SMServerLodeSetting.getGroupByLevel(arenaManager.getCrossLingmaiFirstLevel()); int group = SMServerLodeSetting.getGroupByLevel(arenaManager.getCrossLingmaiFirstLevel());
//CROSS_LINGMAISECRET_INFO:跨服分组:分组 //CROSS_LINGMAISECRET_INFO:跨服分组:分组
Map<String, LingMaiSecretArea> lingMaiMap = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.class, LingMaiSecretArea.class); Map<String, LingMaiSecretArea> lingMaiMap = RedisUtil.getInstence().getMapValues(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.class, LingMaiSecretArea.class);
int myLingmaiId = CrossLingmaiLogic.getInstance().getLingmaiIdOccupy(uid, lingMaiMap); int myLingmaiId = CrossLingmaiLogic.getInstance().getLingmaiIdOccupy(uid, lingMaiMap);
if(myLingmaiId >= id){ if (myLingmaiId != 0 && myLingmaiId < id) {
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true);
return; return;
} }
@ -81,9 +88,16 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
LOGGER.info("跨服灵脉,跨服分组 ={},灵脉分组 ={},未获取到锁", crossGroup, group); LOGGER.info("跨服灵脉,跨服分组 ={},灵脉分组 ={},未获取到锁", crossGroup, group);
return; return;
} }
//检测特权次数
boolean countBol = PlayerLogic.getInstance().check(user, request.getPrivilageTypeId(), 1);
if (request.getPrivilageTypeId() == 0 || !countBol) {
LOGGER.error("跨服灵脉秘境挑战失败,挑战id{},挑战结果:{}", request.getPrivilageTypeId(), countBol);
throw new ErrorCodeException(ErrorCode.REFRESH_WHEL_TIME_NOT, "挑战次数不足");
}
SLodeConfig config = SLodeConfig.lodeConfig.get(id);
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType());
if (!lingMaiMap.containsKey(String.valueOf(id))) { if (!lingMaiMap.containsKey(String.valueOf(id))) {
//没人占领 攻击机器人 pve //没人占领 攻击机器人 pve
SLodeConfig config = SLodeConfig.lodeConfig.get(id);
if (config == null) { if (config == null) {
return; return;
} }
@ -102,9 +116,25 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
throw new ErrorCodeException(ErrorCode.FIGHT_EXCEPTION); throw new ErrorCodeException(ErrorCode.FIGHT_EXCEPTION);
} else if (fightResult.getResult() == 1) { } else if (fightResult.getResult() == 1) {
//赢了 //赢了
LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id,uid,user);; //结算已有的灵脉
if (myLingmaiId != 0){
LingMaiSecretArea myLingmai = lingMaiMap.get(String.valueOf(myLingmaiId));
config = SLodeConfig.lodeConfig.get(myLingmaiId);
int second = ((TimeUtils.nowInt() - myLingmai.getOccupyTime()) / 60) > 10 ? 10 : ((TimeUtils.nowInt() - myLingmai.getOccupyTime()) / 60);
myLingmai.setScore1(myLingmai.getScore1()+second*config.getRewardList()[0][1]);
int score = myLingmai.getScore1() + config.getRewardList()[0][1] * myLingmai.getOccupyTime();
rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType());
rank.addRank(user.getId(), String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score);
//清除已有灵脉数据
lingMaiMap.remove(String.valueOf(myLingmaiId));
RedisUtil.getInstence().removeMapEntrys(RedisKey.CROSS_LINGMAISECRET_INFO,
crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(myLingmaiId));
}
LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id, uid, user);
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea); RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea);
} }
res.setResult(fightResult.getResult());
} else { } else {
//PVP //PVP
// 组装真人数据 // 组装真人数据
@ -118,7 +148,6 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
CrossArenaManager crossArenaManager = null; CrossArenaManager crossArenaManager = null;
int myforce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), false); int myforce = HeroLogic.getInstance().calTeamTotalForce(user, TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), false);
int defforce = 0; int defforce = 0;
if (GameApplication.serverId != csPlayer.getServerId()) { if (GameApplication.serverId != csPlayer.getServerId()) {
crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer); crossArenaManager = PlayerLogic.getInstance().getCrossArenaManagerData(csPlayer);
defforce = crossArenaManager.getTotalForceByTeam().getOrDefault(TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), 0); defforce = crossArenaManager.getTotalForceByTeam().getOrDefault(TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), 0);
@ -126,7 +155,6 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(user, TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), null, null); CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(user, TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), null, null);
//对手 //对手
CommonProto.FightTeamInfo defteamInfo = FightUtil.makeCrossPersonData(csPlayer, TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), null, crossArenaManager); CommonProto.FightTeamInfo defteamInfo = FightUtil.makeCrossPersonData(csPlayer, TeamEnum.CROSS_LING_MAI_SECRET_AREA.getTeamId(), null, crossArenaManager);
FightResult fightResult = GetWorldArenaChallengeRequestHandler.getFightForPVP(uid, defUid, FightResult fightResult = GetWorldArenaChallengeRequestHandler.getFightForPVP(uid, defUid,
fightTeamInfo, defteamInfo, FightUtil.getFightSeed(), myforce < defforce); fightTeamInfo, defteamInfo, FightUtil.getFightSeed(), myforce < defforce);
int seed = fightResult.getSeed(); int seed = fightResult.getSeed();
@ -140,32 +168,35 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
.build(); .build();
int result = (int) fightResult.getCheckResult()[0]; int result = (int) fightResult.getCheckResult()[0];
res.setFightData(build); res.setFightData(build);
res.setResult(result);
if (result == 1) { if (result == 1) {
//赢了 我有灵脉 我没灵脉 //赢了 我有灵脉 我没灵脉
//积分收益结算 //别人积分收益结算
LingMaiSecretArea oldOwner = lingMaiMap.get(String.valueOf(id));//上一个占领者 LingMaiSecretArea oldOwner = lingMaiMap.get(String.valueOf(id));//上一个占领者
int second =(TimeUtils.nowInt()-oldOwner.getOccupyTime())/60>10?10:(TimeUtils.nowInt()-oldOwner.getOccupyTime()); int second = ((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) / 60) > 10 ? 10 : ((TimeUtils.nowInt() - (int)oldOwner.getGetAwardTimeOrOccupyTime()) / 60);
int score =oldOwner.getScore1()+1* second; oldOwner.setScore1(oldOwner.getScore1()+second*config.getRewardList()[0][1]);
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); int score = oldOwner.getScore1() + config.getRewardList()[0][1]*oldOwner.getOccupyTime();
rank.addRank(user.getId(), String.valueOf(crossGroup)+RedisKey.Delimiter_colon + group, score); rank.addRank(defUid, String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score);
if (myLingmaiId != 0) { if (myLingmaiId != 0) {
//本人已有灵脉结算 //本人已有灵脉结算
LingMaiSecretArea myLingmai = lingMaiMap.get(String.valueOf(myLingmaiId));//上一个占领者 LingMaiSecretArea myLingmai = lingMaiMap.get(String.valueOf(myLingmaiId));//上一个占领者
second =(TimeUtils.nowInt()-myLingmai.getOccupyTime())/60>10?10:(TimeUtils.nowInt()-myLingmai.getOccupyTime()); config = SLodeConfig.lodeConfig.get(myLingmaiId);
score =myLingmai.getScore1()+1* second; second = ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60) > 10 ? 10 : ((TimeUtils.nowInt() - (int)myLingmai.getGetAwardTimeOrOccupyTime()) / 60);
myLingmai.setScore1(myLingmai.getScore1()+second*config.getRewardList()[0][1]);
myLingmai.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
score = myLingmai.getScore1() + config.getRewardList()[0][1] * myLingmai.getOccupyTime();
rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType());
rank.addRank(user.getId(), String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score); rank.addRank(user.getId(), String.valueOf(crossGroup) + RedisKey.Delimiter_colon + group, score);
//两边都计算分 置换 //两边都计算分 置换
oldOwner.setScore1(score); //oldOwner.setScore1(score);
oldOwner.setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
oldOwner.setId(myLingmaiId);
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(myLingmaiId), oldOwner); RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(myLingmaiId), oldOwner);
} }
//易主 //易主
LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id, uid, user); LingMaiSecretArea lingMaiSecretArea = CrossLingmaiLogic.getLingaMaiData(id, uid, user);
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea); RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, crossGroup + RedisKey.Delimiter_colon + group, String.valueOf(id), lingMaiSecretArea);
//挑战记录
//挑战者记录 //挑战者记录
String key1 = RedisKey.getKey(RedisKey.CROSS_LINGMAISECRET_RECORD, String.valueOf(user.getId()), false); String key1 = RedisKey.getKey(RedisKey.CROSS_LINGMAISECRET_RECORD, String.valueOf(user.getId()), false);
long defLenth = redisUtil.lGetListSize(key1); long defLenth = redisUtil.lGetListSize(key1);
if (defLenth > 20) { if (defLenth > 20) {
@ -191,7 +222,6 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
arenaRecordDef.setUserName(user.getPlayerInfoManager().getNickName()); arenaRecordDef.setUserName(user.getPlayerInfoManager().getNickName());
arenaRecordDef.setId(String.valueOf(id)); arenaRecordDef.setId(String.valueOf(id));
arenaRecordDef.setPracticeLevel(user.getHeroManager().getPracticeLevel()); arenaRecordDef.setPracticeLevel(user.getHeroManager().getPracticeLevel());
//arenaRecord.setPracticeLevel(user.getHeroManager().getPracticeLevel());//修行等级 TODO
arenaRecordDef.setCreateTime(TimeUtils.nowInt()); arenaRecordDef.setCreateTime(TimeUtils.nowInt());
String defarenaRecordJsonDef = new Gson().toJson(arenaRecordDef); String defarenaRecordJsonDef = new Gson().toJson(arenaRecordDef);
redisUtil.lSet(key2, defarenaRecordJsonDef); redisUtil.lSet(key2, defarenaRecordJsonDef);
@ -201,13 +231,11 @@ public class CrossLingmaiSecretAreaBattleHandler extends BaseHandler<ArenaInfoPr
ArenaInfoProto.CrossLingmaiIndicationResponse indication = ArenaInfoProto.CrossLingmaiIndicationResponse.newBuilder().build(); ArenaInfoProto.CrossLingmaiIndicationResponse indication = ArenaInfoProto.CrossLingmaiIndicationResponse.newBuilder().build();
MessageUtil.sendIndicationMessage(sess, 1, MessageTypeProto.MessageType.CrossLingmaiIndicationResponse_VALUE, indication, true); MessageUtil.sendIndicationMessage(sess, 1, MessageTypeProto.MessageType.CrossLingmaiIndicationResponse_VALUE, indication, true);
} }
}else{
//输记录
} }
//释放分布式锁 //释放分布式锁
redisUtil.del("SERVER_LINGMAI_LOCK" + RedisKey.Delimiter_colon + crossGroup + RedisKey.Delimiter_colon + group); redisUtil.del("SERVER_LINGMAI_LOCK" + RedisKey.Delimiter_colon + crossGroup + RedisKey.Delimiter_colon + group);
} }
PlayerLogic.getInstance().checkAndUpdate(user, request.getPrivilageTypeId(), 1);
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaResponse.getNumber(), res.build(), true);
} }
} }

View File

@ -6,16 +6,15 @@ import com.ljsd.jieling.db.redis.RedisUtil;
import com.ljsd.jieling.handler.BaseHandler; import com.ljsd.jieling.handler.BaseHandler;
import com.ljsd.jieling.logic.GlobleSystemLogic; import com.ljsd.jieling.logic.GlobleSystemLogic;
import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic; import com.ljsd.jieling.logic.activity.crossService.CrossServiceLogic;
import com.ljsd.jieling.logic.arena.CrossYuxulundaoLogic; import com.ljsd.jieling.logic.arena.CrossLingmaiLogic;
import com.ljsd.jieling.logic.championship.ChampionshipLogic;
import com.ljsd.jieling.logic.dao.ArenaManager; import com.ljsd.jieling.logic.dao.ArenaManager;
import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.cross.CSPlayer; import com.ljsd.jieling.logic.dao.cross.CSPlayer;
import com.ljsd.jieling.logic.dao.root.GuildCache;
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;
import com.ljsd.jieling.util.MessageUtil; import com.ljsd.jieling.util.MessageUtil;
import config.SLodeConfig; import config.SLodeConfig;
import config.SMServerLodeSetting;
import rpc.protocols.ArenaInfoProto; import rpc.protocols.ArenaInfoProto;
import rpc.protocols.CommonProto; import rpc.protocols.CommonProto;
import rpc.protocols.MessageTypeProto; import rpc.protocols.MessageTypeProto;
@ -23,9 +22,7 @@ import util.TimeUtils;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collector;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import config.SMServerLodeSetting;
public class CrossLingmaiSecretAreaInfoHandler extends BaseHandler<ArenaInfoProto.CrossLingmaiSecretAreaInfoRequest> { public class CrossLingmaiSecretAreaInfoHandler extends BaseHandler<ArenaInfoProto.CrossLingmaiSecretAreaInfoRequest> {
@ -48,9 +45,17 @@ public class CrossLingmaiSecretAreaInfoHandler extends BaseHandler<ArenaInfoProt
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaInfoResponse.getNumber(), res.build(), true); MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaInfoResponse.getNumber(), res.build(), true);
return; return;
} }
//功能开关
int[] func = new int[2];
CrossLingmaiLogic.getInstance().functionIsOpen(func);
res.setState(func[0]);
res.setTimePoint(func[1]);
if(func[0]==0){
MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.CrossLingmaiSecretAreaInfoResponse.getNumber(), res.build(), true);
return;
}
ArenaManager arenaManager = user.getArenaManager(); ArenaManager arenaManager = user.getArenaManager();
long lingmaiFirst = arenaManager.getCrossLingmaiFirst(); long lingmaiFirst = arenaManager.getCrossLingmaiFirst();
if (!TimeUtils.isSameDay(lingmaiFirst, TimeUtils.now())) { if (!TimeUtils.isSameDay(lingmaiFirst, TimeUtils.now())) {
arenaManager.setCrossLingmaiFirst(TimeUtils.now()); arenaManager.setCrossLingmaiFirst(TimeUtils.now());
arenaManager.setCrossLingmaiFirstLevel(user.getPlayerInfoManager().getLevel()); arenaManager.setCrossLingmaiFirstLevel(user.getPlayerInfoManager().getLevel());
@ -108,7 +113,6 @@ public class CrossLingmaiSecretAreaInfoHandler extends BaseHandler<ArenaInfoProt
.build(); .build();
res.addLingmaiData(lingMaiSecret); res.addLingmaiData(lingMaiSecret);
} else { } else {
//没人占领 给机器人数据 //没人占领 给机器人数据
CommonProto.ArenaPersonInfo lingMaiSecret = CommonProto.ArenaPersonInfo.newBuilder().setLingmaiId(config.getId()).build(); CommonProto.ArenaPersonInfo lingMaiSecret = CommonProto.ArenaPersonInfo.newBuilder().setLingmaiId(config.getId()).build();

View File

@ -41,7 +41,7 @@ public class CrossLingmaiSecretAreaRecordHandler extends BaseHandler<ArenaInfoPr
CommonProto.LingMaiSecretRecord record = CommonProto.LingMaiSecretRecord.newBuilder().setType(arenaRecord.getType()) CommonProto.LingMaiSecretRecord record = CommonProto.LingMaiSecretRecord.newBuilder().setType(arenaRecord.getType())
.setUserName(user.getPlayerInfoManager().getNickName()) .setUserName(user.getPlayerInfoManager().getNickName())
.setDefName(arenaRecord.getUserName()).setLingMaiId(Integer.parseInt(arenaRecord.getId())) .setDefName(arenaRecord.getUserName()).setLingMaiId(Integer.parseInt(arenaRecord.getId()))
.setTime(arenaRecord.getOccurTime()).setPracticeLevel(arenaRecord.getPracticeLevel()).build(); .setTime(arenaRecord.getCreateTime()).setPracticeLevel(arenaRecord.getPracticeLevel()).build();
builder.addRecordData(record); builder.addRecordData(record);
} }
} }

View File

@ -18,6 +18,8 @@ import com.ljsd.jieling.util.ItemUtil;
import config.SErrorCodeEerverConfig; import config.SErrorCodeEerverConfig;
import config.SLodeConfig; import config.SLodeConfig;
import config.SLodeRankReward; import config.SLodeRankReward;
import config.SMServerLodeSetting;
import manager.STableManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import util.StringUtil; import util.StringUtil;
@ -46,6 +48,32 @@ public class CrossLingmaiLogic {
} }
//功能是否开启 关闭、休战 、战斗
public void functionIsOpen(int [] result){
SMServerLodeSetting setting = SMServerLodeSetting.lodeConfig.get(1);
int[][]restTime = setting.getRestTime();
int[][]battleTime = setting.getBattleTime();
long mondayZeroTime = TimeUtils.getWeekZero(1);
//休战期
for(int [] everyTime:restTime){
if(TimeUtils.now()>=mondayZeroTime+everyTime[0]*1000 && TimeUtils.now()<=mondayZeroTime+everyTime[1]*1000){
result[0]=2;
result[1]=(int)(mondayZeroTime/1000)+everyTime[1];
return;
}
}
//抢夺期
for(int [] everyTime:battleTime){
if(TimeUtils.now()>mondayZeroTime+everyTime[0]*1000 && TimeUtils.now()<mondayZeroTime+everyTime[1]*1000){
result[0]=1;
result[1]=(int)(mondayZeroTime/1000)+everyTime[1];
return;
}
}
result[0]=0;
result[1]=0;
}
public int getLingmaiIdOccupy(int uid, Map<String, LingMaiSecretArea> lingMaiMap){ public int getLingmaiIdOccupy(int uid, Map<String, LingMaiSecretArea> lingMaiMap){
for (Map.Entry<String, LingMaiSecretArea> data :lingMaiMap.entrySet()){ for (Map.Entry<String, LingMaiSecretArea> data :lingMaiMap.entrySet()){
if(data.getValue().getUid()==uid){ if(data.getValue().getUid()==uid){
@ -76,16 +104,14 @@ public class CrossLingmaiLogic {
if(config!=null){ if(config!=null){
int occupyTime = (int) map.getValue().getGetAwardTimeOrOccupyTime(); int occupyTime = (int) map.getValue().getGetAwardTimeOrOccupyTime();
int difVal = (nowTime-occupyTime)/60>=10?10:(nowTime-occupyTime)/60; int difVal = (nowTime-occupyTime)/60>=10?10:(nowTime-occupyTime)/60;
difVal =1 ; //difVal =1 ;
map.getValue().setOccupyTime(map.getValue().getOccupyTime()+difVal); map.getValue().setOccupyTime(map.getValue().getOccupyTime()+difVal);
map.getValue().setGetAwardTimeOrOccupyTime(TimeUtils.nowInt()); map.getValue().setGetAwardTimeOrOccupyTime(TimeUtils.nowInt());
LOGGER.error("玩家"+map.getValue().getUid()+"获得"+difVal); LOGGER.error("玩家"+map.getValue().getUid()+"获得"+difVal);
RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO, RedisUtil.getInstence().putMapEntry(RedisKey.CROSS_LINGMAISECRET_INFO,
crossGroup + RedisKey.Delimiter_colon + group, map.getKey(),map.getValue()); crossGroup + RedisKey.Delimiter_colon + group, map.getKey(),map.getValue());
AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType()); AbstractRank rank = RankContext.getRankEnum(RankEnum.CROSS_LINGMAI_RANK_PERSON.getType());
int score =map.getValue().getOccupyTime()*1+map.getValue().getScore1();//TODO 乘以每分钟收益 int score =map.getValue().getOccupyTime()*config.getRewardList()[0][1]+map.getValue().getScore1();
double test =rank.getScoreById(user.getId(),crossGroup + RedisKey.Delimiter_colon + group); double test =rank.getScoreById(user.getId(),crossGroup + RedisKey.Delimiter_colon + group);
LOGGER.error("之前是:"+test +"之后是:"+score); LOGGER.error("之前是:"+test +"之后是:"+score);
rank.addRank(user.getId(), String.valueOf(crossGroup)+RedisKey.Delimiter_colon + group, score); rank.addRank(user.getId(), String.valueOf(crossGroup)+RedisKey.Delimiter_colon + group, score);
@ -119,16 +145,18 @@ public class CrossLingmaiLogic {
if (crossGroup == -1){ if (crossGroup == -1){
return; return;
} }
String rkey1 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, Integer.toString(crossGroup)+"1"); String rkey1 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, Integer.toString(crossGroup)+ RedisKey.Delimiter_colon +"1");
String rkey2 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, Integer.toString(crossGroup)+"2"); String rkey2 = RedisUtil.getInstence().getKey(RedisKey.CROSS_LINGMAI_RANK_PERSON, Integer.toString(crossGroup)+ RedisKey.Delimiter_colon +"2");
Set<String> arenaRank1 = RedisUtil.getInstence().getReverseZset(rkey1, 0, -1); Set<String> arenaRank1 = RedisUtil.getInstence().getReverseZset(rkey1, 0, -1);
Set<String> arenaRank2= RedisUtil.getInstence().getReverseZset(rkey2, 0, -1); Set<String> arenaRank2= RedisUtil.getInstence().getReverseZset(rkey2, 0, -1);
sendMailReward(arenaRank1); sendMailReward(arenaRank1);
sendMailReward(arenaRank2); sendMailReward(arenaRank2);
RedisUtil.getInstence().del(rkey1);
RedisUtil.getInstence().del(rkey2);
} }
public void sendMailReward(Set<String> arenaRank){ public void sendMailReward(Set<String> arenaRank){
List<Integer> arenaRankfilt = arenaRank.stream().mapToInt(n -> Integer.parseInt(n)).filter(n -> n > 1000).boxed().collect(Collectors.toList()); List<Integer> arenaRankfilt = arenaRank.stream().mapToInt(n -> Integer.parseInt(n)).boxed().collect(Collectors.toList());
String title = SErrorCodeEerverConfig.getI18NMessage("LingmaiReward_mail_title"); String title = SErrorCodeEerverConfig.getI18NMessage("LingmaiReward_mail_title");
for(int i=0;i<arenaRankfilt.size();i++){ for(int i=0;i<arenaRankfilt.size();i++){
SLodeRankReward config = SLodeRankReward.getIdByScore(i+1); SLodeRankReward config = SLodeRankReward.getIdByScore(i+1);

View File

@ -318,7 +318,7 @@ public class MinuteTask extends Thread {
if(w==0 || w ==2|| w==4 || w == 6){ if(w==0 || w ==2|| w==4 || w == 6){
//占领奖励 //占领奖励
if(hour>9&&hour<21){ if(hour>9&&hour<21){
int mod = minute%2; int mod = minute%10;
if(mod ==0 ){ if(mod ==0 ){
CrossLingmaiLogic.getInstance().sendOccypyReward(); CrossLingmaiLogic.getInstance().sendOccypyReward();
} }
@ -326,7 +326,7 @@ public class MinuteTask extends Thread {
//结算每日排行奖励 //结算每日排行奖励
if(hour ==21 && minute==0){ if(hour ==21 && minute==0){
//删除数据 TODO //删除数据 TODO
CrossLingmaiLogic.getInstance().sendOccypyReward(); CrossLingmaiLogic.getInstance().sendMailReward();
} }
} }