排名奖励修改

lvxinran 2020-05-22 16:20:22 +08:00
parent 886474443e
commit 48e362291c
1 changed files with 28 additions and 18 deletions

View File

@ -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<Integer,SGuildWarRewardConfig> treeReward = (TreeMap<Integer,SGuildWarRewardConfig>)SGuildWarRewardConfig.treeReward;
Map.Entry<Integer, SGuildWarRewardConfig> 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<Integer,SGuildWarRewardConfig> treeReward = (TreeMap<Integer,SGuildWarRewardConfig>)SGuildWarRewardConfig.treeReward;
Map.Entry<Integer, SGuildWarRewardConfig> 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 邮件自动发奖