diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java index 29b1d4ac3..b90ab7289 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/family/DeathPathLogic.java @@ -364,21 +364,7 @@ public class DeathPathLogic { public void getDeathPathReward(ISession session,int position, MessageTypeProto.MessageType messageType) throws Exception { int uid = session.getUid(); User user = UserManager.getUser(uid); - TreeMap treeReward = (TreeMap)SGuildWarRewardConfig.treeReward; - - Map.Entry entry = treeReward.floorEntry(5); - - SGuildWarRewardConfig value = entry.getValue(); - int[][] rewardArray = value.getReward(); - double[] randomArray = new double[rewardArray.length]; - for(int i = 0;i< randomArray.length;i++){ - if(rewardArray[i].length<3){ - return; - } - randomArray[i] = rewardArray[i][2]; - } - int[] reward= rewardArray[nextDiscrete(randomArray)]; - int[] realReward = new int[]{reward[0],reward[1]}; + int guildId = user.getPlayerInfoManager().getGuildId(); DeathChallengeCount countInfo = RedisUtil.getInstence().get(RedisKey.DEATH_PAHT_TOTAL_CHALLENGE_COUNT, String.valueOf(guildId), DeathChallengeCount.class); if (countInfo==null||!countInfo.getUserReward().containsKey(uid)){ @@ -389,17 +375,41 @@ public class DeathPathLogic { //您已领取过奖励 throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } +// 根据排名进行随机奖励 + Long rank = RedisUtil.getInstence().getZSetreverseRank(RedisKey.DEATH_PATH_TOTAL_GUILD_RANK, "", String.valueOf(user.getPlayerInfoManager().getGuildId())); + if(rank==-1){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + int[] reward = getRewardByRank(rank.intValue()); countInfo = new DeathChallengeCount(); - countInfo.putUserReward(uid,new DeathReward(realReward[0],realReward[1],position,user.getPlayerInfoManager().getNickName())); + countInfo.putUserReward(uid,new DeathReward(reward[0],reward[1],position,user.getPlayerInfoManager().getNickName())); RedisUtil.getInstence().set(RedisKey.DEATH_PAHT_TOTAL_CHALLENGE_COUNT, String.valueOf(guildId),countInfo); - ItemUtil.drop(user,new int[][]{realReward},BIReason.DEATH_PAHT_RANDOM_REWARD); - Family.RewardInfo info = Family.RewardInfo.newBuilder().setUid(uid).setItemCount(realReward[1]).setItemId(realReward[0]).setPosition(position).build(); + ItemUtil.drop(user,new int[][]{reward},BIReason.DEATH_PAHT_RANDOM_REWARD); + Family.RewardInfo info = Family.RewardInfo.newBuilder().setUid(uid).setItemCount(reward[1]).setItemId(reward[0]).setPosition(position).build(); GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId), MessageTypeProto.MessageType.DEATH_PATH_DO_REWARD_INDICATION,info); MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); } + + private int[] getRewardByRank(int rank){ + TreeMap treeReward = (TreeMap)SGuildWarRewardConfig.treeReward; + + Map.Entry entry = treeReward.floorEntry(rank); + + SGuildWarRewardConfig value = entry.getValue(); + int[][] rewardArray = value.getReward(); + double[] randomArray = new double[rewardArray.length]; + for(int i = 0;i< randomArray.length;i++){ + if(rewardArray[i].length<3){ + continue; + } + randomArray[i] = rewardArray[i][2]; + } + int[] reward= rewardArray[nextDiscrete(randomArray)]; + return new int[]{reward[0],reward[1]}; + } //清除排行信息 private void deleteDeathPathInfo() throws Exception { //todo 邮件自动发奖