From 1b345924de71a9010a76e2869fa1a2c9ba78d01e Mon Sep 17 00:00:00 2001 From: "PC-202302260912\\Administrator" <1769111741@qq.com> Date: Fri, 1 Sep 2023 11:42:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=91=BD=E7=9F=B3=E6=8A=BD=E5=A5=96=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/equip/EquipLogic.java | 36 +++++-------------- .../java/com/ljsd/jieling/util/ToolsUtil.java | 26 ++++++++++++++ 2 files changed, 34 insertions(+), 28 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java index 57144376f..af0dd98af 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/equip/EquipLogic.java @@ -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]; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java index 4ccd64fc3..d5f31cd28 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ToolsUtil.java @@ -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; + } // // /**