跨服修改

lvxinran 2021-08-01 02:28:08 +08:00
parent 4639b612ea
commit b858575a71
4 changed files with 35 additions and 16 deletions

View File

@ -26,6 +26,7 @@ import com.ljsd.jieling.logic.dao.gm.ArenaOfUser;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.fight.FightUtil;
import com.ljsd.jieling.logic.fight.result.FightResult;
import com.ljsd.jieling.logic.hero.HeroLogic;
import com.ljsd.jieling.logic.player.PlayerLogic;
import com.ljsd.jieling.logic.rank.RankContext;
import com.ljsd.jieling.logic.rank.RankEnum;
@ -156,11 +157,12 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
}
int defendForce = 0;
if (proto.getChallengeUid()>1000) {
ArenaOfUser arenaOfUser = CrossServiceLogic.getInstance().query(proto.getChallengeUid());
teamInfo = FightUtil.makeCrossPersonData(arenaOfUser);
arenaEnemys =ArenaLogic.getInstance().getUserCrossArenaEnemy(crossGroup,arenaOfUser,proto.getChallengeRank(),false).build();
defendForce = arenaOfUser.getHeroManager().getTotalForce();
} else {
//机器人
@ -169,13 +171,15 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
teamInfo = FightUtil.makeRobotFightData(info.getEnemyId());
// force = SArenaRobotConfig.getsArenaRobotConfigById(info.getEnemyId()).getTotalForce();
arenaEnemys =ArenaLogic.getInstance().getRobotCrossArenaEnemy(crossGroup,proto.getChallengeRank(),proto.getChallengeUid()).build();
defendForce = info.getTotalForce();
}
arenaAttack = CommonProto.ArenaEnemy.newBuilder().setPersonInfo(CommonProto.ArenaPersonInfo.newBuilder().setUid(iSession.getUid()).setName(user.getPlayerInfoManager().getNickName()).setTotalForce(user.getPlayerInfoManager().getMaxForce()).setServername(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId))).build();
arenaAttack = CommonProto.ArenaEnemy.newBuilder().setPersonInfo(CommonProto.ArenaPersonInfo.newBuilder().setUid(iSession.getUid()).setName(user.getPlayerInfoManager().getNickName()).setTotalForce(user.getPlayerInfoManager().getMaxForce()).setServername(CrossServiceLogic.getInstance().findServerName(GameApplication.serverId)).setPracticeLevel(user.getHeroManager().getPracticeLevel())).build();
int myForce = HeroLogic.getInstance().calTeamTotalForce(user, proto.getTeamId(), true);
// boolean isRevert = proto.getTotalForce() < force;
int teamId = proto.getTeamId();
CommonProto.FightTeamInfo fightTeamInfo = FightUtil.makePersonFightData(UserManager.getUser(iSession.getUid()), teamId, null, null);
FightResult fightResult = getFightForPVP(iSession.getUid(), proto.getChallengeUid(), fightTeamInfo, teamInfo, FightUtil.getFightSeed(), false);
FightResult fightResult = getFightForPVP(iSession.getUid(), proto.getChallengeUid(), fightTeamInfo, teamInfo, FightUtil.getFightSeed(),myForce<defendForce);
builder1.setFightResult((int)fightResult.getCheckResult()[0]);
int seed = fightResult.getSeed();
CommonProto.FightData build = CommonProto.FightData.newBuilder()

View File

@ -146,6 +146,7 @@ public class GlobleSystemLogic implements IEventHandler {
int rankEndLine = 50;
RedisUtil.getInstence().del(GameApplication.serverId+":"+RedisKey.WORLD_CALCUL_LEVE_RAND+":");
double sum=0;
int level = 1;
//缓存为null 从库里查
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC,"playerManager.level"));
@ -157,24 +158,26 @@ public class GlobleSystemLogic implements IEventHandler {
} catch (Exception e) {
e.printStackTrace();
}
for (int j = 0; j <users.size() ; j++) {
String rankKey = RedisKey.getKey(RedisKey.WORLD_CALCUL_LEVE_RAND,"", false);
RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(users.get(j).getId()), users.get(j).getPlayerInfoManager().getLevel());
}
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.WORLD_CALCUL_LEVE_RAND, "", 0, rankEndLine - 1);
if(users.size()>=50) {
for (int j = 0; j <users.size() ; j++) {
String rankKey = RedisKey.getKey(RedisKey.WORLD_CALCUL_LEVE_RAND,"", false);
RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(users.get(j).getId()), users.get(j).getPlayerInfoManager().getLevel());
}
Set<ZSetOperations.TypedTuple<String>> rankInfo = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.WORLD_CALCUL_LEVE_RAND, "", 0, rankEndLine - 1);
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
double score = item.getScore();
sum+=score;
for (ZSetOperations.TypedTuple<String> item : rankInfo) {
double score = item.getScore();
sum+=score;
// if(i==rankEndLine){
// //更新line名分数缓存
// setGloableWorldLeveCacheLine((int)score);
// }
}
level = (int) Math.ceil(sum / (double) Math.min(rankInfo.size(), rankEndLine));
}
int level = (int) Math.ceil(sum / (double) Math.min(rankInfo.size(), rankEndLine));
setGlobalWorldLevelCache(level);
LOGGER.info("计算了一次世界等级->{}",level);
// if (rankInfo.size() > rankEndLine + 100) {

View File

@ -47,6 +47,7 @@ import rpc.protocols.ArenaInfoProto;
import rpc.protocols.CommonProto;
import rpc.protocols.FightInfoProto;
import rpc.protocols.MessageTypeProto;
import rpc.world.WorldProto;
import util.MathUtils;
import util.StringUtil;
import util.TimeUtils;
@ -68,7 +69,7 @@ public class ArenaLogic {
public static ArenaLogic getInstance() {
return ArenaLogic.Instance.instance;
}
private int curSeason;
private int viewSeason;
@ -607,7 +608,7 @@ public class ArenaLogic {
}
return "";
}
public void updateArenaSeason(int curSeason){
this.curSeason = curSeason;
//初始化竞技场新周期数据
@ -700,6 +701,10 @@ public class ArenaLogic {
private void b2r(){
if(state != RELAX_STATE){
if(state==BATTLE_STATE){
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(Map.Entry<Integer,ISession> entry:sessionMap.entrySet()){
MessageUtil.sendIndicationMessage(entry.getValue(),1,MessageTypeProto.MessageType.GetWorldArenaInfoIndication_VALUE,null,true);
}
LOGGER.info("罗浮争锋,发奖");
int crossGroup = GlobleSystemLogic.getInstence().getCrossGroup();
if(crossGroup==-1){
@ -734,13 +739,14 @@ public class ArenaLogic {
}
try {
MongoUtil.getInstence().lastUpdate();
MongoUtil.getLjsdMongoTemplate().lastUpdate();
} catch (Exception e) {
e.printStackTrace();
}
}
LOGGER.info("罗浮争霸:转到休息状态,nowstate:{} to RELAX_STATE",state);
setState(RELAX_STATE);
}
}
@ -760,6 +766,10 @@ public class ArenaLogic {
return;
}
initRank();
Map<Integer, ISession> sessionMap = OnlineUserManager.sessionMap;
for(Map.Entry<Integer,ISession> entry:sessionMap.entrySet()){
MessageUtil.sendIndicationMessage(entry.getValue(),1,MessageTypeProto.MessageType.GetWorldArenaInfoIndication_VALUE,null,true);
}
}
}

View File

@ -65,6 +65,7 @@ public class CrossArenaRank extends AbstractRank {
.setLevel(100)
.setUserSkin(80012)
.setRankInfo(everyRankInfo)
.setServerName(CrossServiceLogic.getInstance().findServerName(mapEntry.getServerID()))
.setSex(0);
builder.addRanks(everyRank);
}else{
@ -84,6 +85,7 @@ public class CrossArenaRank extends AbstractRank {
.setRankInfo(everyRankInfo)
.setForce(query.getHeroManager().getTotalForce())
.setPracticeLevel(query.getPlayerManager().getPracticeLevel())
.setServerName(query.getPlayerManager().getServerName())
.setSex(0);
builder.addRanks(everyRank);
}