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

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(); int curSeason = ArenaLogic.getInstance().getCurSeason();
Set<ZSetOperations.TypedTuple<String>> arenaRankInfo = new HashSet<>(setting.getJoinRank()); 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()) { if (arenaRankInfoOne != null && !arenaRankInfoOne.isEmpty()) {
arenaRankInfo.addAll(arenaRankInfoOne); arenaRankInfo.addAll(arenaRankInfoOne);
} }

View File

@ -106,7 +106,7 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
if (proto.getSkipFight() == 1) { if (proto.getSkipFight() == 1) {
builder1.setFightResult(1); builder1.setFightResult(1);
int[][] reward = new int[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); CommonProto.Drop.Builder drop = ItemUtil.drop(UserManager.getUser(iSession.getUid()), reward, BIReason.WORLD_PRO_DROP);
builder1.setDrop(drop); builder1.setDrop(drop);
PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.WORLD_ARENA_CHALLENGE_TIMES, 1); PlayerLogic.getInstance().checkAndUpdate(user, VipPrivilegeType.WORLD_ARENA_CHALLENGE_TIMES, 1);
@ -200,9 +200,6 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
builder.setBlueEnemy(arenaEnemys); builder.setBlueEnemy(arenaEnemys);
int[][] reward = new int[1][]; 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 (fightResult.getCheckResult()[0] > 0) {
// if (proto.getChallengeUid() < 1000) { // if (proto.getChallengeUid() < 1000) {
@ -236,9 +233,13 @@ public class GetWorldArenaChallengeRequestHandler extends BaseHandler<WorldProto
newArenaBuilder.addAllArenaEnemys(arenaEnemyList); newArenaBuilder.addAllArenaEnemys(arenaEnemyList);
newArenaBuilder.setScore(newRank); newArenaBuilder.setScore(newRank);
builder1.setArenaInfo(newArenaBuilder.build()); builder1.setArenaInfo(newArenaBuilder.build());
reward[0] = setting.getBattleWinReward();
}else{ }else{
newRank = myRank; 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); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GetWorldArenaChallengeResponse.getNumber(), builder1.build(), true);
builder.setRank(newRank==-1?9999:newRank); 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); throw new ErrorCodeException(ErrorCode.SERVER_DEFINE_SELF);
} }
int[][] reward = new int[1][]; 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); CommonProto.Drop.Builder drop = ItemUtil.drop(UserManager.getUser(iSession.getUid()), reward, BIReason.WORLD_CHANGE_DROP);
WorldProto.GetWorldArenaProudResponse.Builder builder = WorldProto.GetWorldArenaProudResponse.newBuilder(); WorldProto.GetWorldArenaProudResponse.Builder builder = WorldProto.GetWorldArenaProudResponse.newBuilder();
if(proto.getChallengeUid()<1000){ if(proto.getChallengeUid()<1000){

View File

@ -142,12 +142,13 @@ public class GlobleSystemLogic implements IEventHandler {
if(!GameApplication.serverProperties.isArenaCross()){ if(!GameApplication.serverProperties.isArenaCross()){
return; 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+":"); RedisUtil.getInstence().del(GameApplication.serverId+":"+RedisKey.WORLD_CALCUL_LEVE_RAND+":");
double sum=0; double sum=0;
int level = 1; int level = 1;
//缓存为null 从库里查 //直接从库里查
Query query = new Query(); Query query = new Query();
query.with(new Sort(Sort.Direction.DESC,"playerManager.level")); query.with(new Sort(Sort.Direction.DESC,"playerManager.level"));
query.fields().include("playerManager.level"); query.fields().include("playerManager.level");
@ -158,7 +159,8 @@ public class GlobleSystemLogic implements IEventHandler {
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
} }
if(users.size()>=50) { //如果达不到这些人世界等级就为1
if(users.size()>=rankEndLine) {
for (int j = 0; j <users.size() ; j++) { for (int j = 0; j <users.size() ; j++) {
String rankKey = RedisKey.getKey(RedisKey.WORLD_CALCUL_LEVE_RAND,"", false); 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()); 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) { for (ZSetOperations.TypedTuple<String> item : rankInfo) {
double score = item.getScore(); double score = item.getScore();
sum+=score; sum+=score;
// if(i==rankEndLine){
// //更新line名分数缓存
// setGloableWorldLeveCacheLine((int)score);
// }
} }
level = (int) Math.ceil(sum / (double) Math.min(rankInfo.size(), rankEndLine)); level = (int) Math.ceil(sum / (double) Math.min(rankInfo.size(), rankEndLine));
} }
setGlobalWorldLevelCache(level); setGlobalWorldLevelCache(level);
LOGGER.info("计算了一次世界等级->{}",level); LOGGER.info("总人数:{},计算了一次世界等级->{}",users.size(),level);
// if (rankInfo.size() > rankEndLine + 100) {
// //删除多余数据 预留一些 长度maxSize
// String key = RedisKey.getKey(RedisKey.WORLD_CALCUL_LEVE_RAND, "", false);
// RedisUtil.getInstence().removeZSetRangeByRank(key, 0, 500);
// }

View File

@ -42,6 +42,8 @@ public class SMServerArenaSetting implements BaseConfig {
private int openWeek; private int openWeek;
private int worldLevLimit;
@Override @Override
public void init() throws Exception { public void init() throws Exception {
@ -116,4 +118,8 @@ public class SMServerArenaSetting implements BaseConfig {
public int getOpenWeek() { public int getOpenWeek() {
return openWeek; return openWeek;
} }
public int getWorldLevLimit() {
return worldLevLimit;
}
} }