From d6fcda16a05abfae8400232b050f09ea78c8f296 Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 29 Oct 2021 11:00:03 +0800 Subject: [PATCH 1/3] =?UTF-8?q?gm=E8=BD=A9=E8=BE=95=E5=AE=9D=E9=95=9C?= =?UTF-8?q?=E8=B7=B3=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/kefu/Cmd_xuanyuan.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_xuanyuan.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_xuanyuan.java index 2c5672857..2621bc3c9 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_xuanyuan.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_xuanyuan.java @@ -19,7 +19,7 @@ public class Cmd_xuanyuan extends GmRoleAbstract { } User user = getUser(); Map pass = user.getPlayerInfoManager().getSituationPass(); - pass.put(Integer.parseInt(args[0]),Integer.parseInt(args[1])); + pass.put(Integer.parseInt(split[0]),Integer.parseInt(split[1])); user.getPlayerInfoManager().updateSituationPass(pass); return true; } From cdd3b6b7dd0377e05306add530324fdd52d1e0e3 Mon Sep 17 00:00:00 2001 From: duhui Date: Fri, 29 Oct 2021 17:19:44 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=8E=B2=E7=8F=91=E5=AE=9D=E9=98=81?= =?UTF-8?q?=EF=BC=8C=E5=A5=96=E6=B1=A0=E5=88=86=E6=B4=BB=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/activity/ActivityLogic.java | 16 +++++++++++----- .../src/main/java/config/SLingLongPool.java | 16 ++++++++++++---- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index d10adee29..e66eb3b52 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1769,10 +1769,10 @@ public class ActivityLogic implements IEventHandler{ List list = new ArrayList<>(); for (int i = 0; i < num; i++) { // 小圈抽奖,根据返回判断是否需要抽外圈 - boolean result = qiMenRandom(user,2, list, hits); + boolean result = qiMenRandom(user,2, list, hits, activityId); if (result){ // 大圈/外圈抽奖 - qiMenRandom(user, 1, list, hits); + qiMenRandom(user, 1, list, hits, activityId); } } // 处理奖励 @@ -1811,11 +1811,17 @@ public class ActivityLogic implements IEventHandler{ * @param hits 抽中的索引id * @return true:需要进行外圈抽奖 false:不需要外圈抽奖 */ - private boolean qiMenRandom(User user, int type, List list, List hits){ + private boolean qiMenRandom(User user, int type, List list, List hits, int activityId){ boolean result = false; // 根据类型获取卡池 - List smallPool = new ArrayList<>(SLingLongPool.map.get(type)); + List smallPool = Optional.ofNullable(SLingLongPool.map) + .map(v -> v.get(activityId)) + .map(v -> v.get(type)) + .orElse(new ArrayList<>()); + if(smallPool.isEmpty()){ + return false; + } // 玩家身上记录已抽中的索引id Map> doubleRewardPoolInfo = user.getActivityManager().getDoubleRewardPoolInfo(); List rewardPool = doubleRewardPoolInfo.getOrDefault(type,new ArrayList<>()); @@ -1846,7 +1852,7 @@ public class ActivityLogic implements IEventHandler{ } // 外圈抽奖用,抽中全部 - if (rewardPool.size() >= SLingLongPool.map.get(type).size()){ + if (rewardPool.size() >= smallPool.size()){ rewardPool.clear(); } diff --git a/tablemanager/src/main/java/config/SLingLongPool.java b/tablemanager/src/main/java/config/SLingLongPool.java index 27e3ef927..673cb6140 100644 --- a/tablemanager/src/main/java/config/SLingLongPool.java +++ b/tablemanager/src/main/java/config/SLingLongPool.java @@ -22,17 +22,25 @@ public class SLingLongPool implements BaseConfig { private int position; /** - * key: 内圈外圈id value: 对象list + * key : 活动id + * value: + * key: 内圈外圈id + * value: 对象list */ - public static Map> map = new HashMap<>(); + public static Map>> map = new HashMap<>(); @Override public void init() throws Exception { Map config = STableManager.getConfig(SLingLongPool.class); config.values().forEach(v->{ - List longPools = map.getOrDefault(v.getPosition(), new ArrayList<>()); + // 根据活动获取本期的奖池 + Map> activityMap = map.getOrDefault(v.getActivityId(), new HashMap<>()); + // 根据大小圈获取具体的奖励列表 + List longPools = activityMap.getOrDefault(v.getPosition(), new ArrayList<>()); longPools.add(v); - map.put(v.getPosition(),longPools); + // 赋值 + activityMap.put(v.getPosition(),longPools); + map.put(v.getActivityId(),activityMap); }); } From 0692f312fae7c375860aad55fbc992bf5c236c07 Mon Sep 17 00:00:00 2001 From: duhui Date: Thu, 4 Nov 2021 18:04:59 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=8E=B2=E7=8F=91=E5=AE=9D=E9=98=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/activity/ActivityLogic.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index e66eb3b52..1b72cf6b6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1815,13 +1815,15 @@ public class ActivityLogic implements IEventHandler{ boolean result = false; // 根据类型获取卡池 - List smallPool = Optional.ofNullable(SLingLongPool.map) + List lingLongPools = Optional.ofNullable(SLingLongPool.map) .map(v -> v.get(activityId)) .map(v -> v.get(type)) .orElse(new ArrayList<>()); - if(smallPool.isEmpty()){ + if(lingLongPools.isEmpty()){ return false; } + // 有删除操作,所以需要一个新得对象,不能直接在原对象上操作 + List smallPool = new ArrayList<>(lingLongPools); // 玩家身上记录已抽中的索引id Map> doubleRewardPoolInfo = user.getActivityManager().getDoubleRewardPoolInfo(); List rewardPool = doubleRewardPoolInfo.getOrDefault(type,new ArrayList<>()); @@ -1852,7 +1854,7 @@ public class ActivityLogic implements IEventHandler{ } // 外圈抽奖用,抽中全部 - if (rewardPool.size() >= smallPool.size()){ + if (rewardPool.size() >= lingLongPools.size()){ rewardPool.clear(); }