From 8df67625487f744d52f472ab493e2d358c7261fa Mon Sep 17 00:00:00 2001 From: jiahuiwen Date: Tue, 13 Oct 2020 14:58:25 +0800 Subject: [PATCH 1/7] =?UTF-8?q?25=E9=97=AF=E5=85=B3=E7=A4=BC=E5=8C=85?= =?UTF-8?q?=E3=80=8126=E3=80=81=E5=BF=83=E9=AD=94=E8=AF=95=E7=82=BC?= =?UTF-8?q?=E7=A4=BC=E5=8C=85=20=E8=A7=A6=E5=8F=91=E5=92=8C=E6=8E=A8?= =?UTF-8?q?=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/handler/map/MapLogic.java | 66 +++++++++++++++++++ .../jieling/logic/store/BuyGoodsLogic.java | 43 ++++++++++-- .../com/ljsd/jieling/util/MessageUtil.java | 10 +-- .../main/java/config/SMainLevelConfig.java | 6 ++ .../java/config/SRechargeCommodityConfig.java | 17 ++++- .../src/main/java/config/SSpecialConfig.java | 4 ++ 6 files changed, 134 insertions(+), 12 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java index 108e8e75a..189b203e3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/MapLogic.java @@ -40,6 +40,7 @@ import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; +import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.logic.store.StoreType; @@ -2160,6 +2161,12 @@ public class MapLogic { FightInfoProto.MainLevelFightUpdateIndication build = FightInfoProto.MainLevelFightUpdateIndication.newBuilder().setState(mainLevelManager.getState()).setFightId(mainLevelManager.getFightId()).build(); MessageUtil.sendIndicationMessage(session,1, MessageTypeProto.MessageType.MAIN_LEVEL_FIGHT_UPDATE_INDICATION_VALUE,build,true); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true); + + int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.DISCOUNT_MAIN); + if (sMainLevelConfig.getSortId() % integerValue == 0) { + openRechargeBagIds(session, user, 25); + } + // String rankKey = RedisKey.getKey(RedisKey.MAINLEVEL_RANK, "", false); // RedisUtil.getInstence().zsetAddOne(rankKey, String.valueOf(user.getId()), sMainLevelConfig.getVirtureId()); RankContext.getRankEnum(RankEnum.MAIN_LEVEL_RANK.getType()).addRank(uid,"",sMainLevelConfig.getVirtureId(),user.getPlayerInfoManager().getMaxForce()); @@ -2167,6 +2174,46 @@ public class MapLogic { } + /** + * 开启礼包 + * @param session + * @param user + * @param type + * @throws Exception + */ + public void openRechargeBagIds(ISession session, User user, int type) throws Exception { + Map integerSRechargeCommodityConfigMap = SRechargeCommodityConfig.rechargeIndetions.get(type); + if (integerSRechargeCommodityConfigMap == null || integerSRechargeCommodityConfigMap.isEmpty()) { + return; + } + RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); + double saveAmt = rechargeInfo.getSaveAmt(); + int sendRechargeId = 0; + long lastTime = 0; + for (SRechargeCommodityConfig sRechargeCommodityConfig : integerSRechargeCommodityConfigMap.values()) { + if (saveAmt >= sRechargeCommodityConfig.getDiscountType()[1] && saveAmt <= sRechargeCommodityConfig.getDiscountType()[2]) { + sendRechargeId = sRechargeCommodityConfig.getId(); + lastTime = sRechargeCommodityConfig.getDiscountType()[3] * 3600 * 1000L; + break; + } + } + if (sendRechargeId == 0) { + LOGGER.info("sendRechargeId indetion id==0 uid=>{} saveAmt=>{}", user.getId(), saveAmt); + } else { + if (!rechargeInfo.getBuyGoodsTimes().containsKey(sendRechargeId)) { + rechargeInfo.updateBuyGoodsTimes(sendRechargeId, 0); + rechargeInfo.putDyGoodsCanBuyTimes(sendRechargeId, 1); + } else { + rechargeInfo.putDyGoodsCanBuyTimes(sendRechargeId, rechargeInfo.getDyGoodsCanBuyTimes().get(sendRechargeId) + 1); + } + rechargeInfo.updateRefreshMapByKey(sendRechargeId, TimeUtils.now() + lastTime); + List goodsBagInfo = new ArrayList<>(SRechargeCommodityConfig.rechargeCommodityConfigMap.size()); + BuyGoodsLogic.getGoodsBagInfo(user.getId(), goodsBagInfo, false); + PlayerInfoProto.AllGiftGoodsIndication goodsBuild = PlayerInfoProto.AllGiftGoodsIndication.newBuilder().addAllGiftGoodsInfo(goodsBagInfo).build(); + MessageUtil.sendIndicationMessage(session, 1, MessageTypeProto.MessageType.ALL_GIFTGOODS_INDICATION_VALUE, goodsBuild, true); + } + } + public void openNextMainLevel(User user,int fightId) throws Exception { int level = user.getPlayerInfoManager().getLevel(); @@ -2302,6 +2349,25 @@ public class MapLogic { user.getUserMissionManager().onGameEvent(user,GameEvent.MONSTER_ATTACK_LEVEL); MessageUtil.sendMessage(session, 1, messageType.getNumber(), fightEndResponse.build(), true); + String stringValue = SSpecialConfig.getStringValue(SSpecialConfig.DISCOUNT_MONSTER_LEVEL); + if (stringValue != null && !stringValue.isEmpty()) { + String[] split1 = stringValue.split("\\|"); + String[] split2 = split1[0].split("#"); + boolean ifTreer = false; + if (checkFightId > Integer.parseInt(split2[split2.length - 1])) { + if (checkFightId % Integer.parseInt(split1[1]) == 0) { + ifTreer = true; + } + } else { + List strings = Arrays.asList(split2); + if (strings.contains(Integer.toString(checkFightId))) { + ifTreer = true; + } + } + if (ifTreer) { + openRechargeBagIds(session, user, 26); + } + } List itemDrop = drop.getItemlistList(); List itemIdList = new ArrayList<>(); List itemNumList = new ArrayList<>(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 0f05d2cc0..3b3261e6c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -164,12 +164,33 @@ public class BuyGoodsLogic { int type = sRechargeCommodityConfig.getType(); if(limit!=0){ if(buyCount>limit){ - LOGGER.error("the uid={},the goodId={}, is over limit={}",uid,goodsId,buyCount); + LOGGER.error("sendGoods the uid={},the goodId={}, is over limit={}",uid,goodsId,buyCount); resultRes.setResultCode(0); resultRes.setResultMsg("over limit"); return resultRes; } }else { + // 25闯关礼包、26、心魔试炼礼包 + if (sRechargeCommodityConfig.getTime() == 6) { + if (!rechargeInfo.getBuyGoodsTimes().containsKey(goodsId)) { + LOGGER.error("sendGoods the uid={},the goodId={}, is not open={}",uid,goodsId,buyCount); + resultRes.setResultCode(0); + resultRes.setResultMsg("not open"); + return resultRes; + } + if (!rechargeInfo.getDyGoodsCanBuyTimes().containsKey(goodsId)) { + LOGGER.error("sendGoods the uid={},the goodId={}, is not open={}",uid,goodsId,buyCount); + resultRes.setResultCode(0); + resultRes.setResultMsg("not open"); + return resultRes; + } + if (rechargeInfo.getDyGoodsCanBuyTimes().get(goodsId) <= 0) { + LOGGER.error("sendGoods the uid={},the goodId={}, buyCount=>{}, is over limit={}",uid, goodsId, buyCount, rechargeInfo.getDyGoodsCanBuyTimes().get(goodsId)); + resultRes.setResultCode(0); + resultRes.setResultMsg("over limit"); + return resultRes; + } + } if(sRechargeCommodityConfig.getTime()==4&&(sRechargeCommodityConfig.getDiscountType().length==3||sRechargeCommodityConfig.getDiscountType().length==4)){ int[] discountType = sRechargeCommodityConfig.getDiscountType(); int temptype = discountType[0]; @@ -181,7 +202,6 @@ public class BuyGoodsLogic { resultRes.setResultMsg("over limit"); return resultRes; } - } } @@ -355,7 +375,8 @@ public class BuyGoodsLogic { ISession session = OnlineUserManager.getSessionByUid(uid); //特殊礼包次数 - if(sRechargeCommodityConfig.getTime()==4&&(sRechargeCommodityConfig.getDiscountType().length==3||sRechargeCommodityConfig.getDiscountType().length==4)){ + if((sRechargeCommodityConfig.getTime()==4 || sRechargeCommodityConfig.getTime()==6) + &&(sRechargeCommodityConfig.getDiscountType().length==3||sRechargeCommodityConfig.getDiscountType().length==4)){ int[] discountType = sRechargeCommodityConfig.getDiscountType(); int temptype = discountType[0]; int tempvalue = discountType[1]; @@ -560,6 +581,11 @@ public class BuyGoodsLogic { } for(SRechargeCommodityConfig sRechargeCommodityConfig :SRechargeCommodityConfig.rechargeCommodityConfigMap.values()){ + // 25闯关礼包、26、心魔试炼礼包 特殊处理 + if ((sRechargeCommodityConfig.getShowType() == 25 || sRechargeCommodityConfig.getShowType() == 26) + && !rechargeInfo.getBuyGoodsTimes().containsKey(sRechargeCommodityConfig.getId())) { + continue; + } int limit = sRechargeCommodityConfig.getLimit(); int goodsId = sRechargeCommodityConfig.getId(); Integer buyTimes = buyGoodsTimes.get(goodsId); @@ -761,8 +787,15 @@ public class BuyGoodsLogic { rechargeInfo.getCacheSendedTypes().put(goodsId, startTime); } } - - }else{ + } else if (time == 6) { + if (rechargeInfo.getDyGoodsCanBuyTimes().containsKey(sRechargeCommodityConfig.getId())) { + endTime = rechargeInfo.getRefreshBagMap().get(sRechargeCommodityConfig.getId()); + if (now > endTime || rechargeInfo.getDyGoodsCanBuyTimes().get(sRechargeCommodityConfig.getId()) <= 0) { + return new RechargeResult(); + } + startTime = endTime - sRechargeCommodityConfig.getDiscountType()[3] * 3600000; + } + } else { if(sRechargeCommodityConfig.getDailyUpdate()>=1){ if(!refreshBagMap.containsKey(sRechargeCommodityConfig.getId())){ Gson gson = new Gson(); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java index a76cca1e2..d42e712bb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MessageUtil.java @@ -38,8 +38,8 @@ public class MessageUtil { backMessage = new byte[0]; } else { backMessage = generatedMessage.toByteArray(); - if (backMessage.length != 0) - LOGGER.info("wrappedBuffer uid=>{}, generatedMessage=>{}", uid, JsonFormat.printToString(generatedMessage)); +// if (backMessage.length != 0) +// LOGGER.info("wrappedBuffer uid=>{}, generatedMessage=>{}", uid, JsonFormat.printToString(generatedMessage)); } int length = PackageConstant.UID_FIELD_LEN + PackageConstant.TOKEN_LEN @@ -63,9 +63,9 @@ public class MessageUtil { } int[] secretKey = Tea.KEY; byte[] bytes1 = Tea.encrypt2(bytes, secretKey); - if (backMessage.length != 0) { - LOGGER.info("wrappedBuffer uid=>{} sendbyte=>{}", uid, bytes1.length); - } +// if (backMessage.length != 0) { +// LOGGER.info("wrappedBuffer uid=>{} sendbyte=>{}", uid, bytes1.length); +// } return bytes1; } diff --git a/tablemanager/src/main/java/config/SMainLevelConfig.java b/tablemanager/src/main/java/config/SMainLevelConfig.java index 990083184..b341726f2 100644 --- a/tablemanager/src/main/java/config/SMainLevelConfig.java +++ b/tablemanager/src/main/java/config/SMainLevelConfig.java @@ -41,6 +41,8 @@ public class SMainLevelConfig implements BaseConfig { private int virtureId; //虚拟id,关卡是自增的。 + private int sortId; + public static Map config; public static Map sMainLevelConfigByVirtureIdMap; public static Map fightPreMap; @@ -131,4 +133,8 @@ public class SMainLevelConfig implements BaseConfig { public void setVirtureId(int virtureId) { this.virtureId = virtureId; } + + public int getSortId() { + return sortId; + } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SRechargeCommodityConfig.java b/tablemanager/src/main/java/config/SRechargeCommodityConfig.java index 6109972dd..3549586b2 100644 --- a/tablemanager/src/main/java/config/SRechargeCommodityConfig.java +++ b/tablemanager/src/main/java/config/SRechargeCommodityConfig.java @@ -61,7 +61,7 @@ public class SRechargeCommodityConfig implements BaseConfig { private int[] passiveSkill; - + private int showType; public static Map rechargeCommodityConfigMap; public static Map sdkRechargeCommodityConfigMap; @@ -70,6 +70,8 @@ public class SRechargeCommodityConfig implements BaseConfig { public static TreeMap rechargePlayerLevelMap; public static Set refreshItemInfo; + public static Map> rechargeIndetions; + @Override public void init() throws Exception { Map config = STableManager.getConfig(SRechargeCommodityConfig.class); @@ -81,6 +83,7 @@ public class SRechargeCommodityConfig implements BaseConfig { TreeMap rechargePlayerLevelTemp = new TreeMap<>(); Set refreshItemInfoTmp = new HashSet<>(); + Map> rechargeIndetionsTemp = new HashMap<>(); for(SRechargeCommodityConfig sRechargeCommodityConfig : config.values()){ sdkRechargeCommodityConfigMap.put(sRechargeCommodityConfig.getRechargeId(),sRechargeCommodityConfig); sdkRechargeCommodityConfigMap.put(sRechargeCommodityConfig.getRechargeId2(),sRechargeCommodityConfig); @@ -121,13 +124,19 @@ public class SRechargeCommodityConfig implements BaseConfig { if(!StringUtil.isEmpty(endtime)){ sRechargeCommodityConfig.setEndTimeLong(Long.parseLong(endtime)); } + if (sRechargeCommodityConfig.getShowType() == 25 || sRechargeCommodityConfig.getShowType() == 26) { + if (!rechargeIndetionsTemp.containsKey(sRechargeCommodityConfig.getShowType())) { + rechargeIndetionsTemp.put(sRechargeCommodityConfig.getShowType(), new HashMap<>()); + } + rechargeIndetionsTemp.get(sRechargeCommodityConfig.getShowType()).put(sRechargeCommodityConfig.getId(), sRechargeCommodityConfig); + } } rechargeCommodityConfigMap = config; rechargeLevelMap = rechargeLevelMapTmp; recharegeHeroTime = recharegeHeroTimeTmp; refreshItemInfo = refreshItemInfoTmp; rechargePlayerLevelMap = rechargePlayerLevelTemp; - + rechargeIndetions = rechargeIndetionsTemp; } @@ -254,4 +263,8 @@ public class SRechargeCommodityConfig implements BaseConfig { public String getRechargeId3() { return rechargeId3; } + + public int getShowType() { + return showType; + } } \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 1cac98eb8..fc594438b 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -77,6 +77,10 @@ public class SSpecialConfig implements BaseConfig { public static final String SKY_TREASURE_SCORE_INGIFT = "sky_treasure_score_ingift";//天宫密保购买默认获得积分 + public static final String DISCOUNT_MONSTER_LEVEL = "discount_monster_level";// 心魔试炼折扣礼包触发条件 + + public static final String DISCOUNT_MAIN = "discount_main";//关卡礼包 + @Override public void init() throws Exception { From 171d86addff9bb73d54ff33f14c129839206dabe Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Sat, 17 Oct 2020 22:10:01 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E9=9D=92=E9=BE=99=E7=A7=98=E5=AE=9D?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../jieling/logic/dao/CumulationData.java | 11 +++++++++++ .../jieling/logic/mission/MissionLoigc.java | 2 +- .../logic/mission/data/DailyTaskManager.java | 19 +++++++++++++------ .../mission/data/ExpeditionPassManger.java | 2 +- 4 files changed, 26 insertions(+), 8 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 deb2dd4b8..708f3ca89 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 @@ -165,6 +165,9 @@ public class CumulationData { //森罗幻境中参与小游戏次数 private int playMiniGameTimes; + //日常任务活跃度达到num + private int daily_task_remove_item; + public Result updateData(MissionType missionType, Object...parm) throws Exception { return DataManagerDistributor.updateData(this, missionType,parm); } @@ -367,4 +370,12 @@ public class CumulationData { public void setPlayMiniGameTimes(int playMiniGameTimes) { this.playMiniGameTimes = playMiniGameTimes; } + + public int getDaily_task_remove_item() { + return daily_task_remove_item; + } + + public void setDaily_task_remove_item(int daily_task_remove_item) { + this.daily_task_remove_item = daily_task_remove_item; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index f3000d759..b33473b5a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -488,7 +488,7 @@ public class MissionLoigc { if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD); - user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,missionId); + user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,missionId,user); ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type); PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java index 79c232124..3451797cc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java @@ -17,6 +17,9 @@ public class DailyTaskManager extends AbstractDataManager{ @Override public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { + ItemManager itemManager = ((User)parm[1]).getItemManager(); + Item item = itemManager.getItem(Global.DAILY_TASK_REMOVE_ITEM); + data.setDaily_task_remove_item(Math.max(data.getDaily_task_remove_item(),item.getItemNum())); return new CumulationData.Result(missionType); } @@ -27,16 +30,20 @@ public class DailyTaskManager extends AbstractDataManager{ @Override public boolean isFinish(User user,CumulationData data, int[][] cfgValue, Object... parm) { - ItemManager itemManager = user.getItemManager(); - Item item = itemManager.getItem(Global.DAILY_TASK_REMOVE_ITEM); - return item!=null&&item.getItemNum()>=cfgValue[1][0]; +// ItemManager itemManager = user.getItemManager(); +// Item item = itemManager.getItem(Global.DAILY_TASK_REMOVE_ITEM); +// return item!=null&&item.getItemNum()>=cfgValue[1][0]; + + + return data.getDaily_task_remove_item()>=cfgValue[1][0]; } @Override public int getProcess(User user, CumulationData data, int[] missionSubType) { - ItemManager itemManager = user.getItemManager(); - Item item = itemManager.getItem(Global.DAILY_TASK_REMOVE_ITEM); - return item==null?0:item.getItemNum(); +// ItemManager itemManager = user.getItemManager(); +// Item item = itemManager.getItem(Global.DAILY_TASK_REMOVE_ITEM); +// return item==null?0:item.getItemNum(); + return data.getDaily_task_remove_item(); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java index 6fd8bc697..ef8185539 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/ExpeditionPassManger.java @@ -14,7 +14,7 @@ public class ExpeditionPassManger extends AbstractDataManager{ @Override public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { int type = (int) parm[0]; - if(type==-1){ + if(type==-1||type>2){ type=3; } data.expedition_floor_times.put(type,data.expedition_floor_times.getOrDefault(type, 0)+1); From ab8815cfcdc1997787e28b83011703158d60cdac Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 19 Oct 2020 00:33:42 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E9=AD=82=E5=8D=B0=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=8F=8A=E6=97=A5=E5=B8=B8=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/globals/Global.java | 2 +- .../java/com/ljsd/jieling/logic/dao/Hero.java | 3 +- .../logic/expedition/ExpeditionLogic.java | 76 ++++++++++++++----- .../jieling/logic/mission/MissionLoigc.java | 2 +- .../logic/mission/data/DailyTaskManager.java | 2 +- .../java/com/ljsd/jieling/util/ItemUtil.java | 3 + 6 files changed, 66 insertions(+), 22 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index bb729790d..3274462fb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -15,8 +15,8 @@ public interface Global { int CHANGENAME = 64; // 改名卡 int EXP = 17;//经验 int TREASURE_SCORE = 68;//孙龙宝藏积分 - int DAILY_TASK_REMOVE_ITEM = 30;//日常任务道具 + int DAILY_TASK_REMOVE_ITEM = 30;//日常任务道具 int MISSING_ROOM_ITEM = 79; int SEND_CARD_COUNT = 20; // 每页发送卡牌个数 int SEND_ITEM_COUNT = 200; // 每页发送道具个数 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 f5a618c91..4288a2fe1 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 @@ -80,7 +80,8 @@ public class Hero extends MongoBase { } this.equipByPositionMap = new HashMap<>(); - this.soulEquipByPositionMap = hero.soulEquipByPositionMap; + // this.soulEquipByPositionMap = hero.soulEquipByPositionMap; + this.soulEquipByPositionMap = new HashMap<>(); this.breakId = hero.breakId; this.createTime = (int)(System.currentTimeMillis()/1000); this.speed = hero.speed; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java index 03a13363b..d1f5f4e0d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/expedition/ExpeditionLogic.java @@ -8,6 +8,7 @@ import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; import com.ljsd.jieling.logic.GlobalDataManaager; @@ -26,6 +27,7 @@ import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.Expedition; +import com.ljsd.jieling.protocols.HeroInfoProto; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.util.*; import config.*; @@ -146,7 +148,7 @@ public class ExpeditionLogic { continue; } if(user.getExpeditionManager().getLay()<=entry.getKey()){//条件未达成 - continue; + continue; } itemArrs.add(entry.getValue()); } @@ -235,7 +237,7 @@ public class ExpeditionLogic { //移除已经删除的hero Set removeId = heroHP.keySet().stream().filter(k -> { if(heroMap.keySet().contains(k)) - return heroMap.get(k).getLevel()<20; + return heroMap.get(k).getLevel()<20; if(heroMapTemp.keySet().contains(k)) return heroMapTemp.get(k).getLevel()<20; return !heroMap.keySet().contains(k) && !heroMapTemp.keySet().contains(k); @@ -325,21 +327,21 @@ public class ExpeditionLogic { } Set> typedTuples = RedisUtil.getInstence().rangeByScoreWithScores(RedisKey.AREDEF_TEAM_FORCE_RANK, "", 0, randomForce); - // if (typedTuples.size() == 0) { - //战力没有获取到 从机器人中选 + // if (typedTuples.size() == 0) { + //战力没有获取到 从机器人中选 // Set set = ArenaLogic.randomRobot(SArenaSetting.getSArenaSetting().getScore(), 1); //// if (set.size() == 0) { //// throw new ErrorCodeException(ErrorCode.CFG_NULL); //// } // int robotId = set.iterator().next(); - //提前战力排序 支持战力查找机器人 - int robotId= SArenaRobotStaticConfig.getFloorForce2robotId((int)randomForce); - SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(robotId); - snapOneFightInfo(nodeInfo, sArenaRobotConfig); - // } else { - // String serarchIdFromRank = typedTuples.iterator().next().getValue(); - // snapOneFightInfo(user, nodeInfo, Integer.valueOf(serarchIdFromRank)); - // } + //提前战力排序 支持战力查找机器人 + int robotId= SArenaRobotStaticConfig.getFloorForce2robotId((int)randomForce); + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(robotId); + snapOneFightInfo(nodeInfo, sArenaRobotConfig); + // } else { + // String serarchIdFromRank = typedTuples.iterator().next().getValue(); + // snapOneFightInfo(user, nodeInfo, Integer.valueOf(serarchIdFromRank)); + // } } if(nodeInfo.getType()==ExpeditionLogic.NODETYPE_GREED||nodeInfo.getType() ==ExpeditionLogic.NODETYPE_TRY){ @@ -836,14 +838,17 @@ public class ExpeditionLogic { finalstar=50; } SCHero hero1 = SCHero.getsCHero().get(tempid); - if (null != hero1) { - SCHeroRankUpConfig scHeroRankUpConfig = STableManager.getConfig(SCHeroRankUpConfig.class).get(hero1.getStar()); - if(null !=scHeroRankUpConfig&&finalstar>scHeroRankUpConfig.getOpenLevel()){ - finalstar=scHeroRankUpConfig.getOpenLevel(); - } - + if (hero1 == null) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); } + SCHeroRankUpConfig scHeroRankUpConfig = STableManager.getConfig(SCHeroRankUpConfig.class).get(hero1.getStar()); + if (null != scHeroRankUpConfig && finalstar > scHeroRankUpConfig.getOpenLevel()) { + finalstar = scHeroRankUpConfig.getOpenLevel(); + } + + + //random tempid Hero newHero = new Hero(uid,tempid,finalstar,hero); @@ -867,6 +872,14 @@ public class ExpeditionLogic { PropertyItem propertyItem = user.getEquipManager().getEquipMap().get(jewel); if (propertyItem == null) continue; + + SJewelConfig config = STableManager.getConfig(SJewelConfig.class).get(propertyItem.getEquipId()); + if(config==null){ + continue; + } + if(hero1.getPropertyName()!=config.getRace()){ + continue; + } Jewel j = (Jewel) propertyItem; Jewel newequip = new Jewel(user.getId(), j.getEquipId()); @@ -877,6 +890,33 @@ public class ExpeditionLogic { // } newHero.addJewel(newequip.getId()); } + + + Map soulEquipByPositionMap = hero.getSoulEquipByPositionMap(); + for (Map.Entry entry:soulEquipByPositionMap.entrySet()) { + SEquipConfig sEquipConfig = STableManager.getConfig(SEquipConfig.class).get(entry.getValue()); + if (sEquipConfig == null) { + continue; + } + + Set cacheIds = new HashSet<>(); + int equipId = entry.getValue(); + if (sEquipConfig.getRangeHeroTids() != null && !sEquipConfig.getRangeHeroTids().contains(tempid)) { + continue; + } + if (sEquipConfig.getLimit() == 1) { + user.getHeroManager().getHeroMap().values().forEach(itemHero -> { + cacheIds.addAll(itemHero.getSoulEquipByPositionMap().values()); + }); + if (cacheIds.contains(equipId)) { + cacheIds.add(equipId); + continue; + } + } + newHero.updateSoulEquipPositionMap(entry.getKey(),entry.getValue()); + } + + if(isTemp){ user.getExpeditionManager().addHeroToTemp(newHero,nodeId); }else { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java index b33473b5a..7815e8a58 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/MissionLoigc.java @@ -488,7 +488,7 @@ public class MissionLoigc { if(missionStateChangeInfos!=null && !missionStateChangeInfos.isEmpty()){ CommonProto.Drop.Builder drop = ItemUtil.drop(user, missionStateChangeInfos.get(0).getRewwardGroups(), BIReason.TAKE_MISSION_REWARD); - user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,missionId,user); + // user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,missionId,user); ReportUtil.onReportEvent(user, ReportEventEnum.MISSION_COMPLETE.getType(),String.valueOf(missionId),type); PlayerInfoProto.TakeMissionRewardResponse build = PlayerInfoProto.TakeMissionRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.TAKE_MISSION_REWARD_RESPONSE_VALUE,build,true); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java index 3451797cc..8e868fc20 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/mission/data/DailyTaskManager.java @@ -19,7 +19,7 @@ public class DailyTaskManager extends AbstractDataManager{ public CumulationData.Result updateData(CumulationData data, MissionType missionType, Object... parm) { ItemManager itemManager = ((User)parm[1]).getItemManager(); Item item = itemManager.getItem(Global.DAILY_TASK_REMOVE_ITEM); - data.setDaily_task_remove_item(Math.max(data.getDaily_task_remove_item(),item.getItemNum())); + data.setDaily_task_remove_item(data.getDaily_task_remove_item()+(int)parm[0]); return new CumulationData.Result(missionType); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index 3c171585b..aa55d378a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -624,6 +624,9 @@ public class ItemUtil { } else if (sItem.getItemType() == GlobalItemType.SOUL_MARK) { user.getUserMissionManager().onGameEvent(user, GameEvent.GOT_SOUL_MARK, sItem.getId(), itemNum); } + if(sItem.getId()==Global.DAILY_TASK_REMOVE_ITEM){ + user.getUserMissionManager().onGameEvent(user,GameEvent.DAILY_TASK_TYPE,itemNum,user); + } //日志记录 ItemLogic.getInstance().addItemLog(new ItemLog(user.getId(),0,user.getPlayerInfoManager().getLevel(),String.valueOf(TimeUtils.now()),reason,sItem.getId(),itemNum,item.getItemNum())); } From 4c6069183922da7636ae797294436fafb13a6382 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 19 Oct 2020 01:13:31 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AE=9D=E5=99=A8?= =?UTF-8?q?=E8=BF=9B=E9=94=99=E8=83=8C=E5=8C=85=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/hero/HeroLogic.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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 43a6b9294..6615472ea 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 @@ -12,6 +12,7 @@ import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.BIReason; import com.ljsd.jieling.globals.Global; +import com.ljsd.jieling.globals.GlobalItemType; import com.ljsd.jieling.ktbeans.ReportEventEnum; import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.logic.activity.event.*; @@ -137,6 +138,33 @@ public class HeroLogic{ // equipList.add(CBean2Proto.getEquipProto(equipInfo)); // } // } + //fix user item + + ItemManager itemManager = user.getItemManager(); + EquipManager equipManager = user.getEquipManager(); + Set set = new HashSet<>(itemManager.getItemMap().keySet()); + for (Integer integer : set) { + try { + SItem sItem = SItem.getsItemMap().get(integer); + if (sItem != null) { + int itemType = sItem.getItemType(); + if (itemType == GlobalItemType.JEWEL) { + LOGGER.error("Excepeion 背包入库错误" + integer); + for (int i = 0; i < itemManager.getItemMap().get(integer).getItemNum(); i++) { + Jewel equip = new Jewel(user.getId(), integer); + equipManager.addEquip(user, equip); + } + itemManager.removeItem(integer); + + } + } else { + LOGGER.error("Exception SItem配置不存在 id:" + integer); + } + } catch (Exception e) { + LOGGER.error("Exception :" + e.toString()); + } + } + ; //宝器 if(type==4){ Map equipMap = user.getEquipManager().getEquipMap(); From f2cb92c4c221ae0266afdb3be177ca2823912048 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sat, 31 Oct 2020 17:26:22 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=AE=9D=E7=89=A9=E7=B2=BE=E7=82=BC?= =?UTF-8?q?=E4=B8=8D=E6=B6=88=E8=80=97bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/item/ItemLogic.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 6a8bdb178..14ada64d5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java @@ -795,8 +795,10 @@ public class ItemLogic { } - for(String item:items){ - user.getEquipManager().getEquipMap().remove(item); + if(items!=null&&items.size()>0){ + for(String item:items){ + user.getEquipManager().remove(item); + } } boolean itemCost = ItemUtil.itemCost(user, sJewelRankupConfig.getUpExpend(), BIReason.JEWEL_BUILD_OR_UP_CONSUME, 1); if(!itemCost){ From 82673bcee70e5c0bd7d29f21e7476a0e6364de06 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 16 Oct 2020 14:46:13 +0800 Subject: [PATCH 6/7] user lru --- .../ljsd/jieling/logic/dao/UserManager.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java index 88936cc2d..972c6ce9d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/UserManager.java @@ -53,20 +53,20 @@ public class UserManager { //离线清除逻辑 public static void checkOffline(){ try { -// Set collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet()); -// long l = System.currentTimeMillis(); -// collect.forEach(integerUserEntry -> { -// long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime(); -// if(offLineTime12*60*60*1000&& userMapPutTime.getOrDefault(integerUserEntry.getId(),0L)>12*60*60*1000){ -// userMap.remove(integerUserEntry.getId()); -// userMapPutTime.remove(integerUserEntry.getId()); -// } -// }); + Set collect = userMap.entrySet().stream().filter(integerUserEntry -> !OnlineUserManager.checkUidOnline(integerUserEntry.getKey())).map(Map.Entry::getValue).collect(Collectors.toSet()); + long l = System.currentTimeMillis(); + collect.forEach(integerUserEntry -> { + long offLineTime = integerUserEntry.getPlayerInfoManager().getOffLineTime(); + if(offLineTime12*60*60*1000&& userMapPutTime.getOrDefault(integerUserEntry.getId(),0L)>12*60*60*1000){ + userMap.remove(integerUserEntry.getId()); + userMapPutTime.remove(integerUserEntry.getId()); + } + }); }catch (Exception e){ - LOGGER.error(e.toString()); + LOGGER.error("Exception离线清除逻辑err={}",e.toString()); } } From b27077e6f20416cb662e6ca2ac933e50fdd4412c Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 16 Oct 2020 15:22:12 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=85=85=E5=80=BC=E9=87=91=E9=A2=9D?= =?UTF-8?q?=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java index 3b3261e6c..6815792f1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java @@ -146,9 +146,9 @@ public class BuyGoodsLogic { double price = priceTemp==0?0:SExchangeRate.doubleIntegerHashMap.get(cfgType).get((int)priceTemp); if(amount!=-999&&MathUtils.doubleEquals(amount,price)){ LOGGER.error("金额不对the uid={},the goodId={}, amount={},real={}", uid, goodsId, amount,price); -// resultRes.setResultCode(0); -// resultRes.setResultMsg("前后端金额不对"+amount+"realMoney = " + realMoney); -// return resultRes; + resultRes.setResultCode(0); + resultRes.setResultMsg("前后端金额不对"+amount+"realMoney = " + String.valueOf(price)); + return resultRes; } RechargeInfo rechargeInfo = user.getPlayerInfoManager().getRechargeInfo(); Map buyGoodsTimes = rechargeInfo.getBuyGoodsTimes();