From d6489ed691579ed43249c9a14321949fce51b5eb Mon Sep 17 00:00:00 2001 From: "DESKTOP-C3M45P4\\dengdan" Date: Sun, 5 Apr 2026 17:25:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=A4=A9=E4=B9=A6=E5=92=8C?= =?UTF-8?q?=E7=A4=BC=E7=89=A9=E6=A0=B9=E6=8D=AE=E9=B8=BF=E8=92=99=E9=98=B5?= =?UTF-8?q?=E7=AD=89=E7=BA=A7=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/dao/CumulationData.java | 2 + .../ljsd/jieling/logic/dao/HeroManager.java | 21 +++++++++ .../ljsd/jieling/logic/equip/EquipLogic.java | 11 +++-- .../ljsd/jieling/logic/hero/HeroLogic.java | 5 +- .../src/main/java/config/SGiftConfig.java | 47 +++++++++++++++---- 5 files changed, 69 insertions(+), 17 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java index 8c36f9c19..aa3c2bf7b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/CumulationData.java @@ -300,6 +300,8 @@ public class CumulationData { */ private int yuxuLv; + + public Result updateData(MissionType missionType, Object...parm) throws Exception { return DataManagerDistributor.updateData(this, missionType,parm); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java index a024855b3..346d2c0df 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/HeroManager.java @@ -678,5 +678,26 @@ public class HeroManager extends MongoBase { this.xiuweiLevel = xiuweiLevel; updateString("xiuweiLevel", xiuweiLevel); } + + public int getHongMengLevel(){ + if(this.getHongmengTablet() > 0){ + return this.getHongmengTablet(); + } + //取守卫中最低等级 + Map heros = this.getHongmengGuards(); + int level = 9999; + for(String heroId : heros.values()){ + Hero hero = this.getHero(heroId); + if(hero != null){ + if(level > hero.getOriginalLevel()){ + level = hero.getOriginalLevel(); + } + } + } + if(level < 9999){ + return level; + } + return 1; + } } 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 325066341..a24034181 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 @@ -514,11 +514,12 @@ public class EquipLogic { String format = MessageFormat.format("礼物穿戴报错, 英雄礼物已穿戴,uid:{0},list:{1}, roleList:{2}", user.getId(), giftIds, heroGifts); throw new ErrorCodeException(format); } -// int boxNum = getHeroGiftBoxNum(user); -// if (heroGifts.size() + set.size() > boxNum){ -// String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量,uid:{0},wear:{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum); -// throw new ErrorCodeException(format); -// } + int hongmengLevel = heroManager.getHongMengLevel(); + int boxNum = SGiftConfig.getOpenBox(hongmengLevel); + if (heroGifts.size() + set.size() > boxNum){ + String format = MessageFormat.format("礼物穿戴报错, 英雄礼物超出格子数量,uid:{0},wear:{1}, allow:{2}", user.getId(), heroGifts.size() + set.size(), boxNum); + throw new ErrorCodeException(format); + } int templateId = hero.getTemplateId(); SCHero scHero = SCHero.getsCHero().get(templateId); if (scHero == null){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java index a7e750ad9..befb107c1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java @@ -6520,10 +6520,11 @@ public class HeroLogic { // 装备神印 if (type == 1) { int[] value = SSpecialConfig.getIntegerArrayValue(SSpecialConfig.GodSignOpenStar); - // 存放已解锁的位置id + // 存放已解锁的位置id,改成根据鸿蒙阵等级解锁 ArrayList indexBox = new ArrayList<>(); + int hongMengLevel = heroManager.getHongMengLevel(); for (int i = 0; i < value.length; i++) { - if (hero.getStar() >= value[i]) { + if (hongMengLevel >= value[i]) { indexBox.add(i + 1); } } diff --git a/tablemanager/src/main/java/config/SGiftConfig.java b/tablemanager/src/main/java/config/SGiftConfig.java index 20714c543..da66b23e8 100644 --- a/tablemanager/src/main/java/config/SGiftConfig.java +++ b/tablemanager/src/main/java/config/SGiftConfig.java @@ -3,37 +3,64 @@ package config; import manager.STableManager; import manager.Table; -import java.util.HashMap; -import java.util.Map; +import java.util.*; @Table(name ="GiftConfig") public class SGiftConfig implements BaseConfig { - private int id; + private int id; - private int gift; + private int gift; - private int box; + private int harmony; + + private int box; public static Map map = new HashMap<>(); - - @Override + //按鸿蒙阵等级存储的列表 + public static Map harmonymap = new HashMap<>(); + //按鸿蒙阵等级排好序的礼物格子列表 + public static List list = new ArrayList(); + + @Override public void init() throws Exception { map = STableManager.getConfig(SGiftConfig.class); + for(SGiftConfig config :map.values()){ + harmonymap.put(config.getHarmony(),config); + } + for(SGiftConfig config :harmonymap.values()){ + list.add(config.getHarmony()); + } + Collections.sort(list); } - public int getId() { + public int getId() { return id; } - public int getGift() { + public int getGift() { return gift; } - public int getBox() { + public int getBox() { return box; } + public int getHarmony() { + return harmony; + } + public static int getOpenBox(int harmonyLevel){ + for(int i = list.size() - 1;i>=0;i--){ + int level = list.get(i); + if(harmonyLevel >= level){ + SGiftConfig config = harmonymap.get(level); + if(config !=null){ + return config.getBox(); + } + } + } + return 0; + } } \ No newline at end of file