跨服等级关联表,修改奖励
parent
b858575a71
commit
b6accfb599
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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){
|
||||||
|
|
|
||||||
|
|
@ -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);
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue