命石抽奖优化

master_ob2
PC-202302260912\Administrator 2023-09-01 11:42:49 +08:00
parent 83634c822e
commit 1b345924de
2 changed files with 34 additions and 28 deletions

View File

@ -17,6 +17,7 @@ import com.ljsd.jieling.tools.Utils;
import com.ljsd.jieling.util.CBean2Proto;
import com.ljsd.jieling.util.ItemUtil;
import com.ljsd.jieling.util.MessageUtil;
import com.ljsd.jieling.util.ToolsUtil;
import config.*;
import org.apache.commons.lang3.RandomUtils;
import org.slf4j.Logger;
@ -374,53 +375,32 @@ public class EquipLogic {
int[] dailyNumber = config.getDailyNumber();
int indexOfNum = 0;
for (int i = 0; i < dailyNumber.length; i++) {
if (dailyNumber[i] > count){
if (count >= dailyNumber[i]){
indexOfNum = i;
}
}
LOGGER.info("宝石抽奖,每日抽奖次数判断======================{}",indexOfNum);
// LOGGER.info("宝石抽奖,每日抽奖次数判断======================{}",indexOfNum);
// 品质概率判断
int[] quality = config.getQualityProbability()[indexOfNum];
int qualityTotalWeight = Arrays.stream(quality).sum();
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 indexOfQuality = ToolsUtil.getRandomInt(quality);
int level = config.getGemLevel()[indexOfQuality];
LOGGER.info("宝石抽奖,品质概率判断======================{}",level);
// LOGGER.info("宝石抽奖,品质概率判断======================{}",level);
// 类型概率判断
int[] typeProbability = config.getGemTypeProbability();
int typeTotalWeight = Arrays.stream(typeProbability).sum();
int typeResult = RandomUtils.nextInt(0, typeTotalWeight);
int indexOfType = 0;
for (int i = 0; i < typeProbability.length; i++) {
if (typeResult > typeProbability[i]){
indexOfType = i;
}
}
int indexOfType = ToolsUtil.getRandomInt(typeProbability);
int type = config.getGemType()[indexOfType];
LOGGER.info("宝石抽奖,类型概率判断======================{}",type);
// LOGGER.info("宝石抽奖,类型概率判断======================{}",type);
// 获取到具体宝石
SGemConfigNew gemConfigNew = SGemConfigNew.typeMap.get(type).get(level);
// 属性权重区间判断
int[] proportion = gemConfigNew.getProportion();
int proportionTotalWeight = Arrays.stream(proportion).sum();
int proportionResult = RandomUtils.nextInt(0, proportionTotalWeight);
int indexOfProportion = 0;
for (int i = 0; i < proportion.length; i++) {
if (proportionResult > proportion[i]){
indexOfProportion = i;
}
}
int indexOfProportion = ToolsUtil.getRandomInt(proportion);
// 获取命格属性
int[] property = gemConfigNew.getPropertyNumber()[indexOfProportion];

View File

@ -4,6 +4,9 @@ import com.ljsd.GameApplication;
import com.ljsd.jieling.logic.activity.ActivityType;
import util.TimeUtils;
import java.util.Arrays;
import java.util.Random;
public class ToolsUtil {
public static long getTimeLong(long startTimeLong, long endTimeLong, int time, long createUserTime, int type){
@ -42,11 +45,34 @@ public class ToolsUtil {
}
return startTime;
}
public static long getEndTimeLong(long startTimeLong , long endTimeLong,int time,long createUserTime,int dayOut){
long timeLong = getTimeLong(startTimeLong, endTimeLong, time, createUserTime, 2);
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;
}
//
// /**