排名奖励修改
parent
886474443e
commit
48e362291c
|
@ -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 邮件自动发奖
|
||||
|
|
Loading…
Reference in New Issue