From 82a4969341b332933f98d804fd18068686b70890 Mon Sep 17 00:00:00 2001 From: duhui Date: Tue, 18 Apr 2023 18:14:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=AE=9D=E5=99=A8=E6=88=98=E5=8A=9B?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/player/PlayerLogic.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 981c143b2..b143de3bf 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -1270,8 +1270,20 @@ public class PlayerLogic { } EquipManager equipManager = userInMem.getEquipManager(); Map equipMap = equipManager.getEquipMap(); - for(String equipId : hero.getJewelInfo()){ - CommonProto.Equip.Builder toBuilder = CBean2Proto.getEquipProto(equipMap.get(equipId),userInMem).toBuilder(); + // 宝器 + for(String equipId : hero.getJewelInfo()){ + PropertyItem propertyItem = equipMap.get(equipId); + Jewel jewel = null; + if (propertyItem instanceof Jewel){ + jewel = (Jewel) propertyItem; + }else { + jewel = equipManager.getJewelMap().get(equipId); + if (jewel == null){ + LOGGER.error("查看英雄信息,法宝找不到:{}",equipId); + continue; + } + } + CommonProto.Equip.Builder toBuilder = CBean2Proto.getEquipProto(jewel,userInMem).toBuilder(); builder.addEquip(toBuilder); } for(int equipId : hero.getEquipByHongmengPositionMap(userInMem.getHeroManager()).values()){ From e0d887806b99489c114329a187e9e92c1470b7e1 Mon Sep 17 00:00:00 2001 From: duhui Date: Wed, 19 Apr 2023 14:52:28 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=B3=95=E7=9B=B8bug=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/dao/Hero.java | 5 +++++ .../java/com/ljsd/jieling/logic/equip/EquipLogic.java | 4 ++-- .../main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 9 ++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 09f3441b2..8034be473 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -201,6 +201,11 @@ public class Hero extends MongoBase implements Comparable,Cloneable { updateString("faxiangList",faxiangList); } + public void setFaxiang(Set list) { + faxiangList = list; + updateString("faxiangList",faxiangList); + } + public void uninstallFaxiang(String key) { this.faxiangList.remove(key); updateString("faxiangList",faxiangList); 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 78623e5a3..4a90360e3 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 @@ -74,13 +74,13 @@ public class EquipLogic { for (String faxiangId : heroFaxiangList) { Faxiang heroFaxiang = equipManager.getFaxiang(faxiangId); if (heroFaxiang == null){ - hero.uninstallFaxiang(faxiangId); + removeList.add(faxiangId); LOGGER.error("法相不存在装备库中,已卸载,uid:{}, hero:{}, faxiang:{}",user.getId(),heroID,faxiangId); continue; } SFaxiangConfig heroFaxiangConfig = SFaxiangConfig.faxiangMap.get(heroFaxiang.getItemId()); if (heroFaxiangConfig == null){ - hero.uninstallFaxiang(faxiangId); + removeList.add(faxiangId); LOGGER.error("法相不存在配置表中,已卸载,uid:{}, hero:{}, faxiang:{}",user.getId(),heroID,faxiangId); continue; } 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 7a2302a11..90f01746d 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 @@ -4440,10 +4440,13 @@ public class HeroLogic { // 法相 Set faxiangList = hero.getFaxiangList(); if (faxiangList != null && !faxiangList.isEmpty()){ - for (String key : faxiangList) { - hero.uninstallFaxiang(key); - user.getEquipManager().unloadFaxiang(key); + Iterator iterator = faxiangList.iterator(); + while (iterator.hasNext()){ + String next = iterator.next(); + user.getEquipManager().unloadFaxiang(next); + iterator.remove(); } + hero.setFaxiang(faxiangList); } } int breakId = hero.getBreakId();