命石抽奖优化
parent
83634c822e
commit
1b345924de
|
@ -17,6 +17,7 @@ import com.ljsd.jieling.tools.Utils;
|
||||||
import com.ljsd.jieling.util.CBean2Proto;
|
import com.ljsd.jieling.util.CBean2Proto;
|
||||||
import com.ljsd.jieling.util.ItemUtil;
|
import com.ljsd.jieling.util.ItemUtil;
|
||||||
import com.ljsd.jieling.util.MessageUtil;
|
import com.ljsd.jieling.util.MessageUtil;
|
||||||
|
import com.ljsd.jieling.util.ToolsUtil;
|
||||||
import config.*;
|
import config.*;
|
||||||
import org.apache.commons.lang3.RandomUtils;
|
import org.apache.commons.lang3.RandomUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
@ -374,53 +375,32 @@ public class EquipLogic {
|
||||||
int[] dailyNumber = config.getDailyNumber();
|
int[] dailyNumber = config.getDailyNumber();
|
||||||
int indexOfNum = 0;
|
int indexOfNum = 0;
|
||||||
for (int i = 0; i < dailyNumber.length; i++) {
|
for (int i = 0; i < dailyNumber.length; i++) {
|
||||||
if (dailyNumber[i] > count){
|
if (count >= dailyNumber[i]){
|
||||||
indexOfNum = i;
|
indexOfNum = i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LOGGER.info("宝石抽奖,每日抽奖次数判断======================:{}",indexOfNum);
|
// LOGGER.info("宝石抽奖,每日抽奖次数判断======================:{}",indexOfNum);
|
||||||
|
|
||||||
// 品质概率判断
|
// 品质概率判断
|
||||||
int[] quality = config.getQualityProbability()[indexOfNum];
|
int[] quality = config.getQualityProbability()[indexOfNum];
|
||||||
int qualityTotalWeight = Arrays.stream(quality).sum();
|
int indexOfQuality = ToolsUtil.getRandomInt(quality);
|
||||||
int qualityResult = RandomUtils.nextInt(0, qualityTotalWeight);
|
|
||||||
int indexOfQuality = 0;
|
|
||||||
for (int i = 0; i < quality.length; i++) {
|
|
||||||
if (quality[i] != 0 && qualityResult > quality[i]){
|
|
||||||
indexOfQuality = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int level = config.getGemLevel()[indexOfQuality];
|
int level = config.getGemLevel()[indexOfQuality];
|
||||||
|
|
||||||
LOGGER.info("宝石抽奖,品质概率判断======================:{}",level);
|
// LOGGER.info("宝石抽奖,品质概率判断======================:{}",level);
|
||||||
|
|
||||||
// 类型概率判断
|
// 类型概率判断
|
||||||
int[] typeProbability = config.getGemTypeProbability();
|
int[] typeProbability = config.getGemTypeProbability();
|
||||||
int typeTotalWeight = Arrays.stream(typeProbability).sum();
|
int indexOfType = ToolsUtil.getRandomInt(typeProbability);
|
||||||
int typeResult = RandomUtils.nextInt(0, typeTotalWeight);
|
|
||||||
int indexOfType = 0;
|
|
||||||
for (int i = 0; i < typeProbability.length; i++) {
|
|
||||||
if (typeResult > typeProbability[i]){
|
|
||||||
indexOfType = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
int type = config.getGemType()[indexOfType];
|
int type = config.getGemType()[indexOfType];
|
||||||
|
|
||||||
LOGGER.info("宝石抽奖,类型概率判断======================:{}",type);
|
// LOGGER.info("宝石抽奖,类型概率判断======================:{}",type);
|
||||||
|
|
||||||
// 获取到具体宝石
|
// 获取到具体宝石
|
||||||
SGemConfigNew gemConfigNew = SGemConfigNew.typeMap.get(type).get(level);
|
SGemConfigNew gemConfigNew = SGemConfigNew.typeMap.get(type).get(level);
|
||||||
|
|
||||||
// 属性权重区间判断
|
// 属性权重区间判断
|
||||||
int[] proportion = gemConfigNew.getProportion();
|
int[] proportion = gemConfigNew.getProportion();
|
||||||
int proportionTotalWeight = Arrays.stream(proportion).sum();
|
int indexOfProportion = ToolsUtil.getRandomInt(proportion);
|
||||||
int proportionResult = RandomUtils.nextInt(0, proportionTotalWeight);
|
|
||||||
int indexOfProportion = 0;
|
|
||||||
for (int i = 0; i < proportion.length; i++) {
|
|
||||||
if (proportionResult > proportion[i]){
|
|
||||||
indexOfProportion = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取命格属性
|
// 获取命格属性
|
||||||
int[] property = gemConfigNew.getPropertyNumber()[indexOfProportion];
|
int[] property = gemConfigNew.getPropertyNumber()[indexOfProportion];
|
||||||
|
|
|
@ -4,6 +4,9 @@ import com.ljsd.GameApplication;
|
||||||
import com.ljsd.jieling.logic.activity.ActivityType;
|
import com.ljsd.jieling.logic.activity.ActivityType;
|
||||||
import util.TimeUtils;
|
import util.TimeUtils;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
public class ToolsUtil {
|
public class ToolsUtil {
|
||||||
|
|
||||||
public static long getTimeLong(long startTimeLong, long endTimeLong, int time, long createUserTime, int type){
|
public static long getTimeLong(long startTimeLong, long endTimeLong, int time, long createUserTime, int type){
|
||||||
|
@ -42,11 +45,34 @@ public class ToolsUtil {
|
||||||
}
|
}
|
||||||
return startTime;
|
return startTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long getEndTimeLong(long startTimeLong , long endTimeLong,int time,long createUserTime,int dayOut){
|
public static long getEndTimeLong(long startTimeLong , long endTimeLong,int time,long createUserTime,int dayOut){
|
||||||
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2);
|
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2);
|
||||||
return timeLong + TimeUtils.DAY * dayOut;
|
return timeLong + TimeUtils.DAY * dayOut;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getRandomInt(int[] array){
|
||||||
|
int sum = Arrays.stream(array).sum();
|
||||||
|
|
||||||
|
Random random = new Random();
|
||||||
|
int randomValue = random.nextInt(sum + 1);
|
||||||
|
|
||||||
|
int startIndex = -1;
|
||||||
|
int runningSum = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < array.length; i++) {
|
||||||
|
runningSum += array[i];
|
||||||
|
if (runningSum >= randomValue) {
|
||||||
|
startIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// System.out.println("Random Value: " + randomValue);
|
||||||
|
// System.out.println("Start Index: " + startIndex);
|
||||||
|
|
||||||
|
return startIndex;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
|
|
Loading…
Reference in New Issue