From 477f22e7c53e1e9a4c102293eee72d83d4e4eecf Mon Sep 17 00:00:00 2001 From: grimm <1769111741@qq.com> Date: Fri, 26 Apr 2024 18:43:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=82=E6=9C=BA=E5=A5=96=E5=8A=B1=E5=9B=9E?= =?UTF-8?q?=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../adventure/TakeAdventureRewardHandler.java | 5 +- .../java/com/ljsd/jieling/logic/dao/Hero.java | 2 +- .../ljsd/jieling/logic/dao/HeroManager.java | 14 +- .../ljsd/jieling/logic/equip/EquipLogic.java | 27 +- .../ljsd/jieling/logic/fight/CombatLogic.java | 266 +++++++++--------- .../ljsd/jieling/logic/hero/HeroLogic.java | 1 - .../com/ljsd/jieling/util/CBean2Proto.java | 8 +- .../java/com/ljsd/jieling/util/ItemUtil.java | 15 +- 8 files changed, 174 insertions(+), 164 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/adventure/TakeAdventureRewardHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/adventure/TakeAdventureRewardHandler.java index e699d24e9..c4b74df41 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/adventure/TakeAdventureRewardHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/adventure/TakeAdventureRewardHandler.java @@ -8,7 +8,6 @@ import rpc.protocols.FightInfoProto; import rpc.protocols.MessageTypeProto; import org.springframework.stereotype.Component; -@Deprecated @Component public class TakeAdventureRewardHandler extends BaseHandler { @Override @@ -18,7 +17,7 @@ public class TakeAdventureRewardHandler extends BaseHandler { @Override public void process(ISession iSession, PacketNetData netData) throws Exception { -// FightInfoProto.TakeAventureRewardRequest takeAventureRewardRequest = FightInfoProto.TakeAventureRewardRequest.parseFrom(netData.parseClientProtoNetData()); -// CombatLogic.getInstance().takeNewAdventureReward(iSession,takeAventureRewardRequest.getType(),takeAventureRewardRequest.getPosition()); + FightInfoProto.TakeAventureRewardRequest takeAventureRewardRequest = FightInfoProto.TakeAventureRewardRequest.parseFrom(netData.parseClientProtoNetData()); + CombatLogic.getInstance().takeNewAdventureReward(iSession,takeAventureRewardRequest.getType(),takeAventureRewardRequest.getPosition()); } } 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 e772a3849..b951da212 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 @@ -603,7 +603,7 @@ public class Hero extends MongoBase implements Comparable,Cloneable { public void setBauBlesId(String bauBles) { this.bauBlesId = bauBles; - updateString("bauBlesId", bauBlesId); + updateString("bauBlesId", bauBles); } public String getBauBlesId() { 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 c65a7caa6..22227060b 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 @@ -296,15 +296,17 @@ public class HeroManager extends MongoBase { updateString("randomPoolByType." + type, map); } - public Map getItemMap() { - return heroMap; - } - - public void setItemMap(Map heroMap) { + public void setHeroMap(Map heroMap) { this.heroMap = heroMap; + updateString("heroMap", heroMap); } - public void addHero(Hero hero) throws Exception { + public void updateHero(Hero hero) { + this.heroMap.put(hero.getId(), hero); + updateString("heroMap", heroMap); + } + + public void addHero(Hero hero) { //绑定关系 hero.init(this.getRootId(),getMongoKey() + ".heroMap." + hero.getId()); updateString("heroMap." + hero.getId(), hero); 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..d026e04e2 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 @@ -630,16 +630,21 @@ public class EquipLogic { if (config == null){ throw new ErrorCodeException(ErrorCode.CFG_NULL); } + int[][] formula = config.getFormula(); + int[][] resource = config.getResource(); + if (formula == null || formula.length == 0){ + throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); + } + // 消耗道具 ArrayList costList = new ArrayList<>(); - costList.add(config.getFormula()); - costList.add(config.getResource()); - boolean cost = ItemUtil.checkCost(user, costList); + costList.add(formula); + costList.add(resource); + boolean cost = ItemUtil.itemCost(user, costList, BIReason.GIFT_UP_STAR_COST, 0);; if (!cost){ throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } - - CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[][]{{giftId, 1}}, BIReason.GIFT_UP_STAR_GET); - ItemUtil.itemCost(user, costList, BIReason.GIFT_UP_STAR_COST, 0); + // 掉落道具 + CommonProto.Drop.Builder drop = ItemUtil.drop(user, new int[]{giftId, 1}, 1, BIReason.GIFT_UP_STAR_GET); HeroInfoProto.GiftEquipUpStarResponse.Builder builder = HeroInfoProto.GiftEquipUpStarResponse.newBuilder().setDrop(drop); MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.GiftEquipUpStarResponse_VALUE, builder.build(), true); } @@ -833,17 +838,17 @@ public class EquipLogic { User user = UserManager.getUser(session.getUid()); EquipManager equipManager = user.getEquipManager(); HeroManager heroManager = user.getHeroManager(); - String baublesId = proto.getBaublesId(); String heroId = proto.getHeroId(); + String baublesId = proto.getBaublesId(); Hero hero = heroManager.getHero(heroId); if (hero == null){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "英雄不存在"); } - String heroBauBlesId = hero.getBauBlesId(); - if (baublesId.isEmpty()){ + + if (StringUtil.isEmpty(baublesId)){ // 卸下 - Baubles baubles = equipManager.getBaubles(heroBauBlesId); + Baubles baubles = equipManager.getBaubles(hero.getBauBlesId()); hero.setBauBlesId(""); baubles.setHeroId(""); } @@ -854,6 +859,7 @@ public class EquipLogic { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE, "法宝不存在或者处于庇佑状态"); } // 检查英雄和法宝是否各有装备 + String heroBauBlesId = hero.getBauBlesId(); if (!StringUtil.isEmpty(heroBauBlesId)){ hero.setBauBlesId(""); Baubles heroBauBles = equipManager.getBaubles(heroBauBlesId); @@ -873,7 +879,6 @@ public class EquipLogic { hero.setBauBlesId(baublesId); baubles.setHeroId(heroId); } - MessageUtil.sendMessage(session, 1, MessageTypeProto.MessageType.BaublesWearResponse_VALUE, null, true); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 50438bc8c..302fe1350 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -213,84 +213,84 @@ public class CombatLogic { public void takeNewAdventureReward(ISession session,int type,int position) throws Exception { User user = UserManager.getUser(session.getUid()); -// Map adventureFastReward; -// if(type == 2){ -// adventureFastReward = getNewAdventureReward(user,false,TimeUtils.nowInt()); -// if(adventureFastReward.get(1).getItemlistCount()==0){ -// throw new ErrorCodeException(ErrorCode.REWARD_COLLECTING); -// } -// user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.TAKE_ADVENTUREREWARD_TIMES,1); -// }else{ -// boolean update = true; -// if(position == 0){ -// if(!PlayerLogic.getInstance().checkAndUpdate(user,VipPrivilegeType.FAST_MAP_LIMIT,1)) { -// update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10008,1); -// } -// }else{ -// update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10015,1); -// } -// if (!update){ -// throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); -// } -// adventureFastReward = getNewAdventureFastReward(user, STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureFastBattle()); -// user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1); -// Poster.getPoster().dispatchEvent(new SecretEvent(user.getId())); -// user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.TAKE_ADVENTURE_REWARD_COUNT, 1); -// Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.EXPLORE.getType(),1)); -// } + Map adventureFastReward; + if(type == 2){ + adventureFastReward = getNewAdventureReward(user,false,TimeUtils.nowInt()); + if(adventureFastReward.get(1).getItemlistCount()==0){ + throw new ErrorCodeException(ErrorCode.REWARD_COLLECTING); + } + user.getUserMissionManager().onGameEvent(user,GameEvent.ONE_MISSION_TYPE_CONSUME,MissionType.TAKE_ADVENTUREREWARD_TIMES,1); + }else{ + boolean update = true; + if(position == 0){ + if(!PlayerLogic.getInstance().checkAndUpdate(user,VipPrivilegeType.FAST_MAP_LIMIT,1)) { + update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10008,1); + } + }else{ + update = StoreLogic.getInstance().checkBuyGoodsAndUpdate(user,7,10015,1); + } + if (!update){ + throw new ErrorCodeException(ErrorCode.SYS_ERROR_CODE); + } + adventureFastReward = getNewAdventureFastReward(user, STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().getAdventureFastBattle()); + user.getUserMissionManager().onGameEvent(user,GameEvent.PlAY_STORY,9999,1); + Poster.getPoster().dispatchEvent(new SecretEvent(user.getId())); + user.getUserMissionManager().onGameEvent(user, GameEvent.ONE_MISSION_TYPE_CONSUME, MissionType.TAKE_ADVENTURE_REWARD_COUNT, 1); + Poster.getPoster().dispatchEvent(new NewWelfareEvent(user, NewWelfareTypeEnum.EXPLORE.getType(),1)); + } FightInfoProto.TakeAventureRewardResponse build = FightInfoProto.TakeAventureRewardResponse.newBuilder() -// .setDrop(adventureFastReward.get(1)) -// .setRandomDrop(adventureFastReward.get(2)) + .setDrop(adventureFastReward.get(1)) + .setRandomDrop(adventureFastReward.get(2)) .build(); -// KtEventUtils.onKtEvent(user,ParamEventBean.UserGameType,KTGameType.TAKE_SECURE_REWARD.getIndex(),type*10); + KtEventUtils.onKtEvent(user,ParamEventBean.UserGameType,KTGameType.TAKE_SECURE_REWARD.getIndex(),type*10); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ADVENTURE_REWARD_RESPONSE_VALUE,build,true); } public Map getNewAdventureReward(User user,boolean sendMail,int time) throws Exception { -// GetNewAdventureData getNewAdventureData = new GetNewAdventureData(user, sendMail,false).invoke(time); -// if (getNewAdventureData.is()) return null; -// CommonProto.Drop.Builder baseBuilder = getNewAdventureData.getBaseBuilder(); -// CommonProto.Drop.Builder randomBuilder = getNewAdventureData.getRandomBuilder(); + GetNewAdventureData getNewAdventureData = new GetNewAdventureData(user, sendMail,false).invoke(time); + if (getNewAdventureData.is()) return null; + CommonProto.Drop.Builder baseBuilder = getNewAdventureData.getBaseBuilder(); + CommonProto.Drop.Builder randomBuilder = getNewAdventureData.getRandomBuilder(); Map result = new HashMap<>(2); -// result.put(1,baseBuilder.build()); -// result.put(2,randomBuilder.build()); + result.put(1,baseBuilder.build()); + result.put(2,randomBuilder.build()); return result; } private Map getNewAdventureFastReward(User user,int timeDuration) throws Exception { -// MainLevelManager mainLevelManager = user.getMainLevelManager(); -// SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting(); -// int adventureRefresh = gameSetting.getAdventureRefresh(); -// int times = timeDuration / adventureRefresh; -// ItemMap itemObj = new ItemMap(); -// ItemMap itemRandomObj = new ItemMap(); -// CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder(); -// CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder(); -// int fightId = mainLevelManager.getFightId(); -// SMainLevelConfig mainLevelConfig = SMainLevelConfig.config.get(fightId); -// if(mainLevelManager.getState()==-1){ -// for( SMainLevelConfig sMainLevelConfig : SMainLevelConfig.config.values() ){ -// if(sMainLevelConfig.getNextLevel() == mainLevelManager.getFightId()){ -// mainLevelConfig = sMainLevelConfig; -// break; -// } -// } -// } -// ItemUtil.combineRewardByMainLine(user,false, mainLevelConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD); -// ItemUtil.combineRewardByMainLine(user,true, mainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD); -// // 小兵关卡 -// SSoldierStageConfig stageConfig = SSoldierStageConfig.idMap.get(mainLevelManager.getSoldierLayerId()); -// ItemUtil.combineRewardByMainLine(user,false, stageConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD); -// -// itemRandomObj.setEquipMap(equipAutoCombine(itemRandomObj.getEquipMap())); -// //清除无用活动道具 -// removeNoUseItem(user,itemRandomObj.getItemMap()); -// ItemUtil.drop(user,baseBuilder,itemObj,BIReason.ADVENTURE_BASE_REWARD); -// ItemUtil.drop(user,randomBuilder,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD); + MainLevelManager mainLevelManager = user.getMainLevelManager(); + SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting(); + int adventureRefresh = gameSetting.getAdventureRefresh(); + int times = timeDuration / adventureRefresh; + ItemMap itemObj = new ItemMap(); + ItemMap itemRandomObj = new ItemMap(); + CommonProto.Drop.Builder baseBuilder = CommonProto.Drop.newBuilder(); + CommonProto.Drop.Builder randomBuilder = CommonProto.Drop.newBuilder(); + int fightId = mainLevelManager.getFightId(); + SMainLevelConfig mainLevelConfig = SMainLevelConfig.config.get(fightId); + if(mainLevelManager.getState()==-1){ + for( SMainLevelConfig sMainLevelConfig : SMainLevelConfig.config.values() ){ + if(sMainLevelConfig.getNextLevel() == mainLevelManager.getFightId()){ + mainLevelConfig = sMainLevelConfig; + break; + } + } + } + ItemUtil.combineRewardByMainLine(user,false, mainLevelConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.combineRewardByMainLine(user,true, mainLevelConfig.getRandomReward(), times,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD); + // 小兵关卡 + SSoldierStageConfig stageConfig = SSoldierStageConfig.idMap.get(mainLevelManager.getSoldierLayerId()); + ItemUtil.combineRewardByMainLine(user,false, stageConfig.getRandomRewardMin(), times,itemObj,BIReason.ADVENTURE_BASE_REWARD); + + itemRandomObj.setEquipMap(equipAutoCombine(itemRandomObj.getEquipMap())); + //清除无用活动道具 + removeNoUseItem(user,itemRandomObj.getItemMap()); + ItemUtil.drop(user,baseBuilder,itemObj,BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.drop(user,randomBuilder,itemRandomObj,BIReason.ADVENTURE_RANDOM_REWARDD); Map result = new HashMap<>(2); -// result.put(1,baseBuilder.build()); -// result.put(2,randomBuilder.build()); + result.put(1,baseBuilder.build()); + result.put(2,randomBuilder.build()); return result; } @@ -929,74 +929,74 @@ public class CombatLogic { } public GetNewAdventureData invoke(int time) throws Exception { -// MainLevelManager mainLevelManager = user.getMainLevelManager(); -// Map fightStateInfo = mainLevelManager.getFightStateInfo(); -// SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting(); -// int adventureRefresh = gameSetting.getAdventureRefresh(); -// int vipTimeAdd = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user, VipPrivilegeType.ADVENTURE_ADD_TIME); -// int adventureOffline = (gameSetting.getAdventureOffline()+vipTimeAdd)*60*60/adventureRefresh; -// baseBuilder = CommonProto.Drop.newBuilder(); -// randomBuilder = CommonProto.Drop.newBuilder(); -// int takeTimes = 0; -// ArrayList baseList = new ArrayList<>(); -// ArrayList randomList = new ArrayList<>(); -// Map mainLevelConfigMap = SMainLevelConfig.config; -// for(Map.Entry fightStateInfoItem : fightStateInfo.entrySet()){ -// Integer fightId = fightStateInfoItem.getKey(); -// Integer times = fightStateInfoItem.getValue(); -// SMainLevelConfig sMainLevelConfig = mainLevelConfigMap.get(fightId); -// baseList.add(new int[][]{sMainLevelConfig.getRandomRewardMin(),new int[]{times}}); -// randomList.add(new int[][]{sMainLevelConfig.getRandomReward(),new int[]{times}}); -// takeTimes+=times; -// } -// int fightId = mainLevelManager.getFightId(); -// SMainLevelConfig mainLevelConfig = mainLevelConfigMap.get(fightId); -// int lastTime = mainLevelManager.getLastTime(); -// int times = (time - lastTime)/gameSetting.getAdventureRefresh(); -// int maxTimes = adventureOffline - takeTimes; -// int lastTimeTakes=0; -// boolean reset = maxTimes0){ -// times = reset?maxTimes:times; -// baseList.add(new int[][]{mainLevelConfig.getRandomRewardMin(),new int[]{times}}); -// randomList.add(new int[][]{mainLevelConfig.getRandomReward(),new int[]{times}}); -// lastTimeTakes=times; -// } -// // 小兵奖励 -// getSoldierBaseReward(baseList); -// ItemMap itemObj = new ItemMap(); -// ItemMap itemRandom = new ItemMap(); -// ItemUtil.combineRewardByMainLineNotCycle(user,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD); -// if (viewBaseReward){ -// myResult = true; -// rewardStr = ItemUtil.getReward(itemObj); -// return this; -// } -// ItemUtil.combineRewardByMainLineNotCycle(user, false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD); -// //装备合成 -// itemRandom.setEquipMap(equipAutoCombine(itemRandom.getEquipMap())); -// removeNoUseItem(user,itemRandom.getItemMap()); -// if(sendMail){ -// if(!itemObj.getItemMap().isEmpty()){ -// int vipLevel = user.getPlayerInfoManager().getVipLevel(); -// String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title"); -// String reward = ItemUtil.getReward(itemObj); -// String randomReward = ItemUtil.getReward(itemRandom); -// String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("adventuren_reward_of_viplevel_content",new Object[]{vipLevel},new int[0],"#"); -// if(!randomReward.isEmpty()){ -// reward = reward + "|" + randomReward; -// MailLogic.getInstance().sendMail(user.getId(),title,content,reward,time, Global.MAIL_EFFECTIVE_TIME); -// mainLevelManager.afterTakeStateReward(true,0,time); -// System.out.printf("================在线奖励升级vip发送邮件:{%s},{%s}\n",mainLevelManager.getStartTime(),mainLevelManager.getLastTime()); -// } -// } -// myResult = true; -// }else { -// mainLevelManager.afterTakeStateReward(reset,lastTimeTakes,time); -// ItemUtil.drop(user,baseBuilder,itemObj, BIReason.ADVENTURE_BASE_REWARD); -// ItemUtil.drop(user,randomBuilder,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD); -// myResult = false; -// } + MainLevelManager mainLevelManager = user.getMainLevelManager(); + Map fightStateInfo = mainLevelManager.getFightStateInfo(); + SGameSetting gameSetting = STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting(); + int adventureRefresh = gameSetting.getAdventureRefresh(); + int vipTimeAdd = PlayerLogic.getInstance().getMaxCountByPrivilegeType(user, VipPrivilegeType.ADVENTURE_ADD_TIME); + int adventureOffline = (gameSetting.getAdventureOffline()+vipTimeAdd)*60*60/adventureRefresh; + baseBuilder = CommonProto.Drop.newBuilder(); + randomBuilder = CommonProto.Drop.newBuilder(); + int takeTimes = 0; + ArrayList baseList = new ArrayList<>(); + ArrayList randomList = new ArrayList<>(); + Map mainLevelConfigMap = SMainLevelConfig.config; + for(Map.Entry fightStateInfoItem : fightStateInfo.entrySet()){ + Integer fightId = fightStateInfoItem.getKey(); + Integer times = fightStateInfoItem.getValue(); + SMainLevelConfig sMainLevelConfig = mainLevelConfigMap.get(fightId); + baseList.add(new int[][]{sMainLevelConfig.getRandomRewardMin(),new int[]{times}}); + randomList.add(new int[][]{sMainLevelConfig.getRandomReward(),new int[]{times}}); + takeTimes+=times; + } + int fightId = mainLevelManager.getFightId(); + SMainLevelConfig mainLevelConfig = mainLevelConfigMap.get(fightId); + int lastTime = mainLevelManager.getLastTime(); + int times = (time - lastTime)/gameSetting.getAdventureRefresh(); + int maxTimes = adventureOffline - takeTimes; + int lastTimeTakes=0; + boolean reset = maxTimes0){ + times = reset?maxTimes:times; + baseList.add(new int[][]{mainLevelConfig.getRandomRewardMin(),new int[]{times}}); + randomList.add(new int[][]{mainLevelConfig.getRandomReward(),new int[]{times}}); + lastTimeTakes=times; + } + // 小兵奖励 + getSoldierBaseReward(baseList); + ItemMap itemObj = new ItemMap(); + ItemMap itemRandom = new ItemMap(); + ItemUtil.combineRewardByMainLineNotCycle(user,true,baseList,itemObj,BIReason.ADVENTURE_BASE_REWARD); + if (viewBaseReward){ + myResult = true; + rewardStr = ItemUtil.getReward(itemObj); + return this; + } + ItemUtil.combineRewardByMainLineNotCycle(user, false, randomList,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD); + //装备合成 + itemRandom.setEquipMap(equipAutoCombine(itemRandom.getEquipMap())); + removeNoUseItem(user,itemRandom.getItemMap()); + if(sendMail){ + if(!itemObj.getItemMap().isEmpty()){ + int vipLevel = user.getPlayerInfoManager().getVipLevel(); + String title = SErrorCodeEerverConfig.getI18NMessage("adventuren_reward_of_viplevel_title"); + String reward = ItemUtil.getReward(itemObj); + String randomReward = ItemUtil.getReward(itemRandom); + String content = SErrorCodeEerverConfig.getI18NMessageNeedConvert("adventuren_reward_of_viplevel_content",new Object[]{vipLevel},new int[0],"#"); + if(!randomReward.isEmpty()){ + reward = reward + "|" + randomReward; + MailLogic.getInstance().sendMail(user.getId(),title,content,reward,time, Global.MAIL_EFFECTIVE_TIME); + mainLevelManager.afterTakeStateReward(true,0,time); + System.out.printf("================在线奖励升级vip发送邮件:{%s},{%s}\n",mainLevelManager.getStartTime(),mainLevelManager.getLastTime()); + } + } + myResult = true; + }else { + mainLevelManager.afterTakeStateReward(reset,lastTimeTakes,time); + ItemUtil.drop(user,baseBuilder,itemObj, BIReason.ADVENTURE_BASE_REWARD); + ItemUtil.drop(user,randomBuilder,itemRandom,BIReason.ADVENTURE_RANDOM_REWARDD); + myResult = false; + } return this; } 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 fe5889e14..8c0cbd639 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 @@ -3437,7 +3437,6 @@ public class HeroLogic { attribute.put(id, attribute.getOrDefault(id, 0L) + num); } } - LOGGER.info("===助阵属性:{}",attribute); combinedAttribute(attribute, heroAllAttribute); return totalAdd; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 27a9dc7cd..ba31a29ea 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -1080,10 +1080,10 @@ public class CBean2Proto { if(update){ mainLevelManager.directUpdateDb(); } -// CombatLogic.GetNewAdventureData getNewAdventureData = new CombatLogic.GetNewAdventureData(user, false,true).invoke(TimeUtils.nowInt()); -// if (!StringUtil.isEmpty(getNewAdventureData.getRewardStr())){ -// builder.setReward(getNewAdventureData.getRewardStr()); -// } + CombatLogic.GetNewAdventureData getNewAdventureData = new CombatLogic.GetNewAdventureData(user, false,true).invoke(TimeUtils.nowInt()); + if (!StringUtil.isEmpty(getNewAdventureData.getRewardStr())){ + builder.setReward(getNewAdventureData.getRewardStr()); + } return builder.build(); } 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 b03074574..64d958843 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -679,6 +679,7 @@ public class ItemUtil { */ public static int addItemByMail(User user, Map itemMap, CommonProto.Drop.Builder dropBuilder, int reason) throws Exception { if (itemMap.isEmpty()) { + LOGGER.info("掉落道具退出,itemMap为空,uid:{}",user.getId()); return 1; } @@ -693,24 +694,25 @@ public class ItemUtil { int itemId = entry.getKey(); long itemNum = entry.getValue(); if (itemNum <= 0) { + LOGGER.info("掉落道具跳过,itemNum数量错误,uid:{},itemid:{},itemnum:{}",user.getId(),itemId,itemNum); continue; } SItem sItem = SItem.getsItemMap().get(itemId); int id = sItem.getId(); long itemNumlimit = sItem.getItemNumlimit(); - itemNum = Math.min(itemNum, itemNumlimit); - + int missingRoomItem = Global.MISSING_ROOM_ITEM;//道具寻龙钰 + int baseReward = BIReason.ADVENTURE_BASE_REWARD;//挂机基础奖励 Item item = itemManager.getItem(itemId); if (item == null) { item = itemManager.newItem(itemId, itemNum); } else { - if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) { + if (id == missingRoomItem && reason == baseReward) { itemNumlimit = SPlayerLevelConfig.getsPlayerLevelConfigMap().get(user.getPlayerInfoManager().getLevel()).getMazeTreasureMax(); } if (item.getItemNum() > itemNumlimit) { - if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) { + if (id == missingRoomItem && reason == baseReward) { continue; } if (reason == BIReason.TAKE_MAIL_REWARD) { @@ -723,7 +725,7 @@ public class ItemUtil { long num = item.getItemNum() + itemNum; if (num > itemNumlimit) { - if (id == Global.MISSING_ROOM_ITEM && reason == BIReason.ADVENTURE_BASE_REWARD) { + if (id == missingRoomItem && reason == baseReward) { item.setItemNum(num); } else { if (reason == BIReason.TAKE_MAIL_REWARD) { @@ -1542,6 +1544,9 @@ public class ItemUtil { } private static void selectCost(int[][] costItems, Map itemMap) { + if (costItems == null){ + return; + } for (int[] costItem : costItems){ int itemId = costItem[0]; int itemNum = costItem[1];