挑战副本 幻境达人 计数

back_recharge
xuexinpeng 2022-04-21 17:54:48 +08:00
parent ea6899e50b
commit b64879f4b2
2 changed files with 66 additions and 26 deletions

View File

@ -6,6 +6,8 @@ import com.ljsd.jieling.handler.map.MapManager;
import com.ljsd.jieling.handler.map.TrialInfo;
import com.ljsd.jieling.jbean.ActivityMission;
import com.ljsd.jieling.jbean.ActivityProgressInfo;
import com.ljsd.jieling.logic.OnlineUserManager;
import com.ljsd.jieling.logic.dao.PlayerManager;
import com.ljsd.jieling.logic.dao.UserManager;
import com.ljsd.jieling.logic.dao.root.User;
import com.ljsd.jieling.logic.mail.MailLogic;
@ -35,31 +37,67 @@ class ExpectRankActivity extends AbstractActivity {
super(id);
}
@Override
public void onActivityStart() throws Exception {
}
@Override
public void initActivity(User user) throws Exception {
//PlayerManager player = user.getPlayerInfoManager();
if (SGlobalActivity.getsGlobalActivityMap().get(id).getType() != 70){
return;
}
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
if (null == activityMission) {
return;
}
Map<Integer, ActivityProgressInfo> activityProgressInfoMap = activityMission.getActivityMissionMap();
MapManager mapManager = user.getMapManager();
TrialInfo trialInfo = mapManager.getTrialInfo();
SActivityRewardConfig.getsActivityRewardConfigByActivityId(id).stream().forEach(n ->
{
if (trialInfo.getFloor() >= n.getValues()[1][0]) {
ActivityProgressInfo activityProgressInfo = activityProgressInfoMap.getOrDefault(n.getId(), null);
if (null == activityProgressInfo)
return;
activityProgressInfo.setState(1);
}
}
);
//更新进度
ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId());
sendActivityProgress(sessionByUid, activityMission, null);
}
@Override
void updateProgressWithUser(User user, ActivityMission activityMission, int count) {
if(SGlobalActivity.getsGlobalActivityMap().get(id).getType() == 70){
if (SGlobalActivity.getsGlobalActivityMap().get(id).getType() == 70) {
//森罗幻境特殊处理
if(SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking()==1){
if (SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking() == 1) {
MapManager mapManager = user.getMapManager();
TrialInfo trialInfo = mapManager.getTrialInfo();
//排除神秘关卡
if(trialInfo.getFloor()<10000 && trialInfo.getFloor() > activityMission.getV()){
if (trialInfo.getFloor() < 10000 && trialInfo.getFloor() > activityMission.getV()) {
activityMission.setV(trialInfo.getFloor());
}else if(trialInfo.getFloor()>10000){
activityMission.setV(trialInfo.getFloor()-10000);
} else if (trialInfo.getFloor() > 10000) {
activityMission.setV(trialInfo.getFloor() - 10000);
}
RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(),String.valueOf(id),activityMission.getV());
}else{
RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(), String.valueOf(id), activityMission.getV());
} else {
activityMission.setV(count + activityMission.getV());
}
}else {
} else {
activityMission.setV(count + activityMission.getV());
if(SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking()==1){
if (SGlobalActivity.getsGlobalActivityMap().get(id).getOpenRanking() == 1) {
// String key = RedisKey.getKey(RedisKey.EXPERT_RANK, String.valueOf(id), false);
// RedisUtil.getInstence().zsetAddOne(key, String.valueOf(user.getId()), activityMission.getV());
RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(),String.valueOf(id),activityMission.getV());
RankContext.getRankEnum(RankEnum.EXPERT_RANK.getType()).addRank(user.getId(), String.valueOf(id), activityMission.getV());
}
}
}
@ -100,7 +138,7 @@ class ExpectRankActivity extends AbstractActivity {
User user = UserManager.getUser(session.getUid());
int value = user.getActivityManager().getActivityMissionMap().get(sActivityRewardConfig.getActivityId()).getV();
if (value < values[1][0]) {
// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not");
// MessageUtil.sendErrorResponse(session, 0, rewardResponseValue, "time not");
return false;
}
return true;
@ -112,28 +150,27 @@ class ExpectRankActivity extends AbstractActivity {
ThreadManager.getScheduledExecutor().execute(this::sendReward);
}
protected void sendReward(){
Thread.currentThread().setName("sendReward-Activity-"+id);
protected void sendReward() {
Thread.currentThread().setName("sendReward-Activity-" + id);
SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id);
if(sGlobalActivity.getOpenRanking()==0){
if (sGlobalActivity.getOpenRanking() == 0) {
return;
}
List<SActivityRankingReward> sActivityRankingReward = SActivityRankingReward.getsActivityRankingRewardMapByActivityId(id);
if(null==sActivityRankingReward) {
if (null == sActivityRankingReward) {
return;
}
int maxRank = 0;
int maxRewardId = 0;
Map<Integer, Integer> rank2miss = new HashMap<>();
for (SActivityRankingReward sActivityRankingReward1 : sActivityRankingReward) {
if(sActivityRankingReward1.getMaxRank()==-1){
maxRank =-1;
if (sActivityRankingReward1.getMaxRank() == -1) {
maxRank = -1;
maxRewardId = sActivityRankingReward1.getId();
continue;
}
if(maxRank!=-1)
{
if (maxRank != -1) {
maxRank = Math.max(maxRank, sActivityRankingReward1.getMaxRank());
}
@ -184,15 +221,15 @@ class ExpectRankActivity extends AbstractActivity {
//checkAndUpdate value
SActivityRankingReward sActivityRankingReward1 = SActivityRankingReward.getsActivityRankingRewardMap().get(missionId);
//sendmail
String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()},new int[]{1},"#");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(),ranking},new int[]{1,0},"#");
String title = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_title", new Object[]{sGlobalActivity.getSesc()}, new int[]{1}, "#");
String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("expertrank_activity_txt", new Object[]{sGlobalActivity.getSesc(), ranking}, new int[]{1, 0}, "#");
String mailReward = ItemUtil.getMailReward(sActivityRankingReward1.getRankingReward());
MailLogic.getInstance().sendMail(uid, title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME);
});
ProtocolsManager.getInstance().updateAyncWorker(ayyncWorker);
rank++;
}catch (Exception e) {
LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功 e={}",uid,id,e);
} catch (Exception e) {
LOGGER.error("id为{}的玩家,{}活动排行奖励没有发成功 e={}", uid, id, e);
e.printStackTrace();
}
}

View File

@ -121,7 +121,8 @@ public class ChallengeLogic {
}
ratio = percent[1];
}
builder.setLossBlood((long)lossBlood);
LOGGER.info("输了 lossBlood:"+lossBlood);
builder.setLossBloodOrTimes((long)lossBlood);
} else if (type == 2) {//回合数
long times = result[1];//回合数
for (int[] percent : reward1) {
@ -130,6 +131,8 @@ public class ChallengeLogic {
}
ratio = percent[1];
}
builder.setLossBloodOrTimes(times);
LOGGER.info("输了 回合数 times :"+times);
}
LOGGER.info("challengeHandler ====>id:{},ratio:{}", sChallengeConfig.getId(), ratio);
for (int[] fix : sChallengeConfig.getPassReward()) {
@ -198,10 +201,10 @@ public class ChallengeLogic {
int endlessNewReplicaLexel = user.getPlayerInfoManager().getEndlessNewReplica();
int treasureReplicaLexel = user.getPlayerInfoManager().getTreasureReplica();
//限制
boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1);
/* boolean consume = PlayerLogic.getInstance().checkAndUpdate(user, sChallengeConfig.getPivilegeID()[1], 1);
if (!consume) {
throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE);
}
}*/
Map<Integer, Integer> comDropMap = new HashMap<>();
if (model == 2) {
//扫荡