跨服等级关联表,修改奖励
parent
b858575a71
commit
b6accfb599
|
@ -30,7 +30,7 @@ public class WorldArenaFunction implements FunctionManager {
|
|||
//获取竞技场排行榜
|
||||
int curSeason = ArenaLogic.getInstance().getCurSeason();
|
||||
Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = new HashSet<>(setting.getJoinRank());
|
||||
Set<ZSetOperations.TypedTuple<String>> arenaRankInfoOne = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, setting.getJoinRank());
|
||||
Set<ZSetOperations.TypedTuple<String>> arenaRankInfoOne = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.ARENA_RANK, Integer.toString(curSeason), 0, setting.getJoinRank()-1);
|
||||
if (arenaRankInfoOne != null && !arenaRankInfoOne.isEmpty()) {
|
||||
arenaRankInfo.addAll(arenaRankInfoOne);
|
||||
}
|
||||
|
|
|
@ -106,7 +106,7 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
|
|||
if (proto.getSkipFight() == 1) {
|
||||
builder1.setFightResult(1);
|
||||
int[][] reward = new int[1][];
|
||||
reward[0]=setting.getRespectReward();
|
||||
reward[0]=setting.getBattleWinReward();
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(UserManager.getUser(iSession.getUid()), reward, BIReason.WORLD_PRO_DROP);
|
||||
builder1.setDrop(drop);
|
||||
PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.WORLD_ARENA_CHALLENGE_TIMES, 1);
|
||||
|
@ -200,9 +200,6 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
|
|||
builder.setBlueEnemy(arenaEnemys);
|
||||
|
||||
int[][] reward = new int[1][];
|
||||
reward[0]=setting.getRespectReward();
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(UserManager.getUser(iSession.getUid()), reward, BIReason.WORLD_PRO_DROP);
|
||||
builder1.setDrop(drop);
|
||||
//打赢
|
||||
if (fightResult.getCheckResult()[0] > 0) {
|
||||
// if (proto.getChallengeUid() < 1000) {
|
||||
|
@ -236,9 +233,13 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
|
|||
newArenaBuilder.addAllArenaEnemys(arenaEnemyList);
|
||||
newArenaBuilder.setScore(newRank);
|
||||
builder1.setArenaInfo(newArenaBuilder.build());
|
||||
reward[0] = setting.getBattleWinReward();
|
||||
}else{
|
||||
newRank = myRank;
|
||||
reward[0] = setting.getBattleLoseReward();
|
||||
}
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(UserManager.getUser(iSession.getUid()), reward, BIReason.WORLD_CHANGE_DROP);
|
||||
builder1.setDrop(drop);
|
||||
MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GetWorldArenaChallengeResponse.getNumber(), builder1.build(), true);
|
||||
|
||||
builder.setRank(newRank==-1?9999:newRank);
|
||||
|
|
|
@ -57,7 +57,7 @@ public class GetWorldArenaProudRequestHandler extends BaseHandler<WorldProto.Get
|
|||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
|
||||
}
|
||||
int[][] reward = new int[1][];
|
||||
reward[0] = setting.getBattleWinReward();
|
||||
reward[0] = setting.getRespectReward();
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(UserManager.getUser(iSession.getUid()), reward, BIReason.WORLD_CHANGE_DROP);
|
||||
WorldProto.GetWorldArenaProudResponse.Builder builder = WorldProto.GetWorldArenaProudResponse.newBuilder();
|
||||
if(proto.getChallengeUid()<1000){
|
||||
|
|
|
@ -142,12 +142,13 @@ public class GlobleSystemLogic implements IEventHandler {
|
|||
if(!GameApplication.serverProperties.isArenaCross()){
|
||||
return;
|
||||
}
|
||||
//need cfg
|
||||
int rankEndLine = 50;
|
||||
|
||||
SMServerArenaSetting setting = STableManager.getConfig(SMServerArenaSetting.class).get(1);
|
||||
int rankEndLine = setting.getWorldLevLimit();
|
||||
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"));
|
||||
query.fields().include("playerManager.level");
|
||||
|
@ -158,7 +159,8 @@ public class GlobleSystemLogic implements IEventHandler {
|
|||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if(users.size()>=50) {
|
||||
//如果达不到这些人,世界等级就为1
|
||||
if(users.size()>=rankEndLine) {
|
||||
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());
|
||||
|
@ -169,22 +171,15 @@ public class GlobleSystemLogic implements IEventHandler {
|
|||
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));
|
||||
}
|
||||
|
||||
setGlobalWorldLevelCache(level);
|
||||
LOGGER.info("计算了一次世界等级->{}",level);
|
||||
// if (rankInfo.size() > rankEndLine + 100) {
|
||||
// //删除多余数据 预留一些 长度maxSize
|
||||
// String key = RedisKey.getKey(RedisKey.WORLD_CALCUL_LEVE_RAND, "", false);
|
||||
// RedisUtil.getInstence().removeZSetRangeByRank(key, 0, 500);
|
||||
// }
|
||||
LOGGER.info("总人数:{},计算了一次世界等级->{}",users.size(),level);
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -42,6 +42,8 @@ public class SMServerArenaSetting implements BaseConfig {
|
|||
|
||||
private int openWeek;
|
||||
|
||||
private int worldLevLimit;
|
||||
|
||||
|
||||
@Override
|
||||
public void init() throws Exception {
|
||||
|
@ -116,4 +118,8 @@ public class SMServerArenaSetting implements BaseConfig {
|
|||
public int getOpenWeek() {
|
||||
return openWeek;
|
||||
}
|
||||
|
||||
public int getWorldLevLimit() {
|
||||
return worldLevLimit;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue