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