跨服等级关联表,修改奖励

lvxinran 2021-08-01 01:12:10 +08:00
parent b858575a71
commit b6accfb599
5 changed files with 22 additions and 20 deletions

View File

@ -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);
}

View File

@ -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);

View File

@ -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){

View File

@ -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);

View File

@ -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;
}
}