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 8fc19f3ca..317d55413 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 @@ -578,11 +578,44 @@ public class EquipLogic { MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GiftEquipWearResponse_VALUE, null, true); } - public static boolean hasDuplicates(Set list1, Set list2) { - for (Integer element : list2) { - if (list1.contains(element)) { + /** + * 是否满足装备条件,id或者类型重复 + * @param playerGift 玩家身上的 + * @param clientGift 想要装备的 + * @return true 不行 false 可以 + */ + public static boolean hasDuplicates(Set playerGift, Set clientGift) { + HashSet set = new HashSet<>(playerGift); + Map configMap = SEquipConfig.equipConfigMap; + // 验证添加的礼物是否重复装备过 + for (Integer id : clientGift) { + if (set.contains(id)){ + LOGGER.error("玩家装备的礼物已装备过了 id:{}",id); return true; } + set.add(id); + } + + for (Integer nextId : set) { + SEquipConfig playerConfig = configMap.get(nextId); + if (playerConfig == null){ + LOGGER.error("玩家身上有不存在配置表中的礼物id:{}",nextId); + continue; + } + for (Integer id : clientGift) { + if (id.equals(nextId)){ + continue; + } + SEquipConfig notConfig = configMap.get(id); + if (notConfig == null){ + LOGGER.error("玩家装备的礼物不存在于配置表 id:{}",id); + return true; + } + if ((notConfig.getSuiteID() != 0 && notConfig.getSuiteID() == playerConfig.getSuiteID())){ + LOGGER.error("玩家装备的礼物类型配置重复 id:{}",id); + return true; + } + } } return false; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java index 3b809844b..e2a285736 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/FightDataUtil.java @@ -1,6 +1,5 @@ package com.ljsd.jieling.util; -import com.alibaba.fastjson.JSONObject; import config.*; import manager.STableManager; import org.luaj.vm2.LuaTable; @@ -503,8 +502,6 @@ public class FightDataUtil { } SSkillLogicVo sSkillLogicVo = SSkillLogicConfig.getsSkillLogicVo(Integer.parseInt(skillId)); if (sSkillLogicVo != null && !sSkillLogicVo.getSkillTargetVoList().isEmpty()) { - Object json = JSONObject.toJSON(sSkillLogicVo); - LOGGER.info("技能信息===========:{}",json.toString()); skill.rawset(1, LuaValue.valueOf(skillId)); int[][] display = sSkillLogicVo.getSkillDisplay(); int skillDisplay = display[0][0];