挖矿问题修改
parent
bb6795b755
commit
556a03e3ed
|
@ -1,5 +1,7 @@
|
|||
package com.ljsd.jieling.kefu;
|
||||
|
||||
import com.ljsd.jieling.logic.activity.ActivityLogic;
|
||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||
import com.ljsd.jieling.logic.dao.root.User;
|
||||
/**
|
||||
* @Author hj
|
||||
|
@ -13,6 +15,7 @@ public class Cmd_sublay extends GmRoleAbstract{
|
|||
int anInt = Integer.parseInt(args[0]);
|
||||
User user = getUser();
|
||||
user.getActivityManager().getSubRewardPoolInfo().setLay(anInt);
|
||||
ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -52,7 +52,6 @@ public class SubActivity extends AbstractActivity {
|
|||
|
||||
@Override
|
||||
public void onResume(User user) throws Exception {
|
||||
// super.onResume(user);
|
||||
//重置奖励
|
||||
randomReward(user, false);
|
||||
}
|
||||
|
@ -100,9 +99,10 @@ public class SubActivity extends AbstractActivity {
|
|||
costItemNum--;
|
||||
break;
|
||||
}
|
||||
long count = activityMission.getActivityMissionMap().values().stream().filter(info -> info.getState() == ActivityType.HAD_TAKED).count();
|
||||
// get reward
|
||||
long count = treeMap.entrySet().stream().filter(v -> v.getKey() < 36 && v.getValue().getState() == ActivityType.HAD_TAKED).count();
|
||||
// 后5个概率提前结束抽奖
|
||||
if (count != (size - 1) && count >= (size - 5) && ((Math.random() * 5) < 1)&& subRewardPool.get(subRewardPool.size() - 1)== activityMission.getV()) {
|
||||
if (count >= (size - 5) && Math.random() < 0.2 && subRewardPool.get(subRewardPool.size() - 1) == activityMission.getV()) {
|
||||
subRewardPool.add((int) count, activityMission.getV());
|
||||
subRewardPool.remove(subRewardPool.size() - 1);
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ public class SubActivity extends AbstractActivity {
|
|||
costItemNum++;
|
||||
}
|
||||
|
||||
if (costItemNum <= 0 || rewardList.size() == 0){
|
||||
if (costItemNum <= 0 || rewardList.isEmpty()){
|
||||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
// 消耗道具
|
||||
|
@ -167,7 +167,8 @@ public class SubActivity extends AbstractActivity {
|
|||
return takeAllReward(session, missionId);
|
||||
}
|
||||
|
||||
ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId);
|
||||
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
|
||||
ActivityProgressInfo activityProgressInfo = progressInfoMap.get(missionId);
|
||||
if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) {
|
||||
throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取"));
|
||||
}
|
||||
|
@ -182,7 +183,8 @@ public class SubActivity extends AbstractActivity {
|
|||
throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH);
|
||||
}
|
||||
|
||||
int size = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size();
|
||||
List<Integer> subRewardPool = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool();
|
||||
int size = subRewardPool.size();
|
||||
if (size == 0) {
|
||||
throw new ErrorCodeException(ErrorCode.SERVER_DEFINE);
|
||||
}
|
||||
|
@ -190,20 +192,18 @@ public class SubActivity extends AbstractActivity {
|
|||
// 易经宝库翻牌子
|
||||
user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.SUB_ACTIVITY, 1);
|
||||
// get reward
|
||||
long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count();
|
||||
long count = progressInfoMap.entrySet().stream().filter(v -> v.getKey() < 36 && v.getValue().getState() == ActivityType.HAD_TAKED).count();
|
||||
// 后5个概率提前结束抽奖
|
||||
if (count != (size - 1) && count >= (size - 5) && ((Math.random() * 5) < 1)&&user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size() - 1)== activityMission.getV()) {
|
||||
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add((int) count, activityMission.getV());
|
||||
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size() - 1);
|
||||
if (count >= (size - 5) && Math.random() < 0.2 && subRewardPool.get(subRewardPool.size() - 1) == activityMission.getV()) {
|
||||
subRewardPool.add((int) count, activityMission.getV());
|
||||
subRewardPool.remove(subRewardPool.size() - 1);
|
||||
}
|
||||
Integer rewardId = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get((int) count);
|
||||
Integer rewardId = subRewardPool.get((int) count);
|
||||
|
||||
SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(rewardId);
|
||||
|
||||
int[] reward = sBlessingRewardPoolNew.getReward();
|
||||
int[][] rewards = new int[1][];
|
||||
rewards[0] = reward;
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards, BIReason.TAKE_ACTIVITY_REWARD);
|
||||
CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{reward}, BIReason.TAKE_ACTIVITY_REWARD);
|
||||
// up miss
|
||||
activityProgressInfo.setProgrss(rewardId);
|
||||
activityProgressInfo.setState(ActivityType.HAD_TAKED);
|
||||
|
@ -214,7 +214,7 @@ public class SubActivity extends AbstractActivity {
|
|||
} else {
|
||||
sendActivityProgress(session, Collections.singleton(missionId));
|
||||
}
|
||||
reportTakeActivityReward(user, rewards, missionId);
|
||||
reportTakeActivityReward(user, new int[][]{reward}, missionId);
|
||||
PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build();
|
||||
MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true);
|
||||
|
||||
|
@ -233,44 +233,49 @@ public class SubActivity extends AbstractActivity {
|
|||
private void randomReward(User user, boolean start) throws Exception {
|
||||
|
||||
//init lay
|
||||
SubRewardPoolInfo subRewardPoolInfo = user.getActivityManager().getSubRewardPoolInfo();
|
||||
if (subRewardPoolInfo == null) {
|
||||
subRewardPoolInfo = new SubRewardPoolInfo();
|
||||
user.getActivityManager().setSubRewardPoolInfo(subRewardPoolInfo);
|
||||
SubRewardPoolInfo poolInfo = user.getActivityManager().getSubRewardPoolInfo();
|
||||
if (poolInfo == null) {
|
||||
poolInfo = new SubRewardPoolInfo();
|
||||
user.getActivityManager().setSubRewardPoolInfo(poolInfo);
|
||||
}
|
||||
|
||||
SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id);
|
||||
if (null == sBlessingConfigNew) {
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
||||
}
|
||||
|
||||
int lay = user.getActivityManager().getSubRewardPoolInfo().getLay();
|
||||
int lay = poolInfo.getLay();
|
||||
int curLay = lay + 1;
|
||||
if (curLay > sBlessingConfigNew.getFloorCount()){
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL,"已达到最高等级");
|
||||
}
|
||||
user.getActivityManager().getSubRewardPoolInfo().setLay(curLay);
|
||||
HashMap<Integer, HashSet<SBlessingRewardPoolNew>> integerHashSetHashMap = SBlessingRewardPoolNew.getsBlessingRewardPoolNewHashMap();
|
||||
//init Activity
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||
activityProgressInfo.setProgrss(curLay);
|
||||
activityProgressInfo.setState(0);
|
||||
activityMission.getActivityMissionMap().put(LAY_INDEX, activityProgressInfo);
|
||||
activityMission.setOpenType(1);
|
||||
activityMission.setActivityState(ActivityType.OPEN_STATE);
|
||||
activityMission.setV(0);
|
||||
|
||||
|
||||
//init reward
|
||||
int[] basicPoolId = sBlessingConfigNew.getBasicPoolId();
|
||||
if (basicPoolId.length < curLay) {
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
||||
}
|
||||
|
||||
HashMap<Integer, HashSet<SBlessingRewardPoolNew>> rewardPool = SBlessingRewardPoolNew.getsBlessingRewardPoolNewHashMap();
|
||||
int poolID = basicPoolId[curLay - 1];
|
||||
HashSet<SBlessingRewardPoolNew> sBlessingRewardPoolNews = integerHashSetHashMap.get(poolID);
|
||||
HashSet<SBlessingRewardPoolNew> sBlessingRewardPoolNews = rewardPool.get(poolID);
|
||||
if (null == sBlessingRewardPoolNews) {
|
||||
throw new ErrorCodeException(ErrorCode.CFG_NULL);
|
||||
}
|
||||
|
||||
poolInfo.setLay(curLay);
|
||||
|
||||
//init Activity
|
||||
ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id);
|
||||
Map<Integer, ActivityProgressInfo> progressInfoMap = activityMission.getActivityMissionMap();
|
||||
ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo();
|
||||
activityProgressInfo.setProgrss(curLay);
|
||||
activityProgressInfo.setState(0);
|
||||
progressInfoMap.put(LAY_INDEX, activityProgressInfo);
|
||||
activityMission.setOpenType(1);
|
||||
activityMission.setActivityState(ActivityType.OPEN_STATE);
|
||||
activityMission.setV(0);
|
||||
|
||||
List<int[]> ints = new LinkedList<>();
|
||||
for (SBlessingRewardPoolNew sBlessingRewardPoolNew : sBlessingRewardPoolNews) {
|
||||
for (int i = 0; i < sBlessingRewardPoolNew.getInitializeNum(); i++) {
|
||||
|
@ -279,32 +284,31 @@ public class SubActivity extends AbstractActivity {
|
|||
reward[1] = sBlessingRewardPoolNew.getInitializeNum();
|
||||
ints.add(reward);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int[][] ints1 = ints.toArray(new int[0][0]);
|
||||
int[] fixResult = MathUtils.randomFromWeightWithTaking(ints1, ints1.length);
|
||||
|
||||
List<Integer> list2 = Arrays.stream(fixResult).boxed().collect(Collectors.toList());
|
||||
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().clear();
|
||||
user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().addAll(list2);
|
||||
poolInfo.getSubRewardPool().clear();
|
||||
poolInfo.getSubRewardPool().addAll(list2);
|
||||
|
||||
for (int i = 0; i <= list2.size(); i++) {
|
||||
ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo();
|
||||
activityProgressInfo1.setProgrss(0);
|
||||
activityProgressInfo1.setState(0);
|
||||
activityMission.getActivityMissionMap().put(i + 1, activityProgressInfo1);
|
||||
progressInfoMap.put(i + 1, activityProgressInfo1);
|
||||
}
|
||||
|
||||
//init finalRewards
|
||||
if (start) {
|
||||
int finalPoolId = sBlessingConfigNew.getFinalPoolId();
|
||||
HashSet<SBlessingRewardPoolNew> sBlessingRewardPoolNews1 = integerHashSetHashMap.get(finalPoolId);
|
||||
for (SBlessingRewardPoolNew sBlessingRewardPoolNew : sBlessingRewardPoolNews1) {
|
||||
ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo();
|
||||
activityProgressInfo1.setProgrss(0);
|
||||
activityProgressInfo1.setState(0);
|
||||
activityMission.getActivityMissionMap().put(POOL_INDEX + sBlessingRewardPoolNew.getId(), activityProgressInfo1);
|
||||
HashSet<SBlessingRewardPoolNew> rewardPoolNews = rewardPool.get(finalPoolId);
|
||||
for (SBlessingRewardPoolNew poolNew : rewardPoolNews) {
|
||||
ActivityProgressInfo info = new ActivityProgressInfo();
|
||||
info.setProgrss(0);
|
||||
info.setState(0);
|
||||
progressInfoMap.put(POOL_INDEX + poolNew.getId(), info);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue