From 1c56fa04872432cd14491ac9125327d535d50dd6 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Wed, 4 Nov 2020 17:51:50 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E7=BD=91=E9=A1=B5=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=A4=BC=E5=8C=85=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 8 ++++++++ 1 file changed, 8 insertions(+) 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 517a65dc2..103583ccc 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 @@ -965,6 +965,14 @@ public class BuyGoodsLogic { } } + if (sRechargeCommodityConfig.getTime() == 6) { + if (rechargeInfo.getDyGoodsCanBuyTimes().containsKey(sRechargeCommodityConfig.getId())&&rechargeInfo.getRefreshBagMap().containsKey(sRechargeCommodityConfig.getId())) { + long endTime = rechargeInfo.getRefreshBagMap().get(sRechargeCommodityConfig.getId()); + if (now > endTime || rechargeInfo.getDyGoodsCanBuyTimes().get(sRechargeCommodityConfig.getId()) <= 0) { + continue; + } + } + } } From 9e9fc2e3c665ab17a90fa3ad0c4e9c36ceee648f Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Wed, 4 Nov 2020 18:10:18 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E7=BD=91=E9=A1=B5=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E7=A4=BC=E5=8C=85=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/store/BuyGoodsLogic.java | 9 +++------ 1 file changed, 3 insertions(+), 6 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 103583ccc..4fc5798a2 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 @@ -966,14 +966,11 @@ public class BuyGoodsLogic { } } if (sRechargeCommodityConfig.getTime() == 6) { - if (rechargeInfo.getDyGoodsCanBuyTimes().containsKey(sRechargeCommodityConfig.getId())&&rechargeInfo.getRefreshBagMap().containsKey(sRechargeCommodityConfig.getId())) { - long endTime = rechargeInfo.getRefreshBagMap().get(sRechargeCommodityConfig.getId()); - if (now > endTime || rechargeInfo.getDyGoodsCanBuyTimes().get(sRechargeCommodityConfig.getId()) <= 0) { - continue; - } + int dytime = rechargeInfo.getDyGoodsCanBuyTimes().getOrDefault(goodsId,0)-1; + if(dytime <0){ + continue; } } - } long startTime=0; From 76d2fea45933777d163dc3e824c854646570274c Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 12 Nov 2020 14:47:15 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E6=89=93=E7=82=B9=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E8=BD=A6=E8=BF=9F=E6=96=97=E6=B3=95=E6=97=A0=E6=8A=A2?= =?UTF-8?q?=E5=A4=BA=E7=9B=AE=E6=A0=87=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../family/GetCarChallengeListHandler.java | 19 +++++++++++++------ .../com/ljsd/jieling/ktbeans/ReportUtil.java | 1 + .../ljsd/jieling/logic/hero/HeroLogic.java | 17 +++++++++++------ 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GetCarChallengeListHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GetCarChallengeListHandler.java index 5630089fe..92b597446 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GetCarChallengeListHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/GetCarChallengeListHandler.java @@ -50,18 +50,25 @@ public class GetCarChallengeListHandler extends BaseHandler { int zsetSize = RedisUtil.getInstence().getZsetSize(key); List beforeList = new ArrayList<>(5); List afterList = new ArrayList<>(5); + int maxWhile = 30;//最大匹配循环次数 if(myRank == -1){ - int start = zsetSize - matchNums; - if(start<0){ - start=0; + int end = 0; + while(end> beforeScore = RedisUtil.getInstence().getZsetreverseRangeWithScores(RedisKey.CAR_DEALY_RANK, "", zsetSize-end , zsetSize-end ); + if(!beforeScore.isEmpty()){ + ZSetOperations.TypedTuple beforeNext = beforeScore.iterator().next(); + if(!members.contains(Integer.parseInt(beforeNext.getValue()))){ + beforeList.add(new ZsetTypedTupleWithRank(beforeNext,zsetSize-end+1)); + } + } + end++; } - int end=-1; - process(start,end,members,matchNums,infos); +// process(start,end,members,matchNums,infos); }else{ int i = myRank-1; int j = myRank+1; - int maxWhile = 30;//最大匹配循环次数 while(i>0||j<=zsetSize){ if(i>0){ diff --git a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java index 3bb56d991..1578b3212 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/ktbeans/ReportUtil.java @@ -120,6 +120,7 @@ public class ReportUtil { } catch (Exception e) { //异常处理 e.printStackTrace(); + System.out.println(reportUserEvent.getBaseInfo().toString()); System.out.println("except:"+e); } } 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 0b1a4af72..a82bd63c0 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 @@ -365,6 +365,7 @@ public class HeroLogic{ case 3: SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(sLotterySetting.getActivityId()); if(activity.getType()== ActivityType.LIMIT_RANDOM_CARD){ +// TIME_SUMMON(56,"Time_summon",new CommonEventHandler(),new String[]{"hero_id","summon_type","cost_item_id","cost_amount","hero_id_quality_list"}), eventEnum = ReportEventEnum.TIME_SUMMON; }else if (activity.getType()==ActivityType.BEAUTY_BAG){ eventEnum = ReportEventEnum.FATALITY_SUMMON; @@ -390,11 +391,14 @@ public class HeroLogic{ if (random == null) { continue; } - SCHero scHero = SCHero.getsCHero().get(random[0]); - if (scHero == null) { - result.add(String.valueOf(random[0])); - } else { - result.add(random[0] + "-" + scHero.getStar()); + SItem item = SItem.getsItemMap().get(random[0]); +// SCHero scHero = SCHero.getsCHero().get(random[0]); + if (item == null) { + result.add(random[0] +"-id错误"+random[1]); + } else if(item.getItemType()==GlobalItemType.CARD) { + result.add(random[0] + "-" + item.getQuantity()); + }else{ + result.add(random[0] + "#" + random[1]); } } if (costItem.length == 1) { @@ -951,7 +955,7 @@ public class HeroLogic{ if(reportConsumeHero.length()>0){ reportConsumeHero.append("|"); } - reportConsumeHero.append(hero.getTemplateId()).append("#lv.").append(hero.getLevel()).append("#star.").append(hero.getStar()); + reportConsumeHero.append(hero.getTemplateId()).append("-").append(hero.getStar()).append("-").append(hero.getLevel()); if( 1 == isSame) { @@ -1031,6 +1035,7 @@ public class HeroLogic{ ChatLogic.getInstance().sendSysChatMessage(message,Global.DILIGENT,targetHero.getTemplateId(),0,0,0,0,0); } String consume = StringUtil.parseArrayToString(consumeMaterial); +// HERO_STRENGTHEN(13,"hero_strengthen", new CommonEventHandler(),new String[]{"hero_id","old_quality","new_quality","strengthen_type","cost_item_list","cost_hero_list"}), ReportUtil.onReportEvent(user, ReportEventEnum.HERO_STRENGTHEN.getType(),String.valueOf(targetHero.getTemplateId()),String.valueOf(oldStar),String.valueOf(targetHero.getStar()),consume,reportConsumeHero.toString()); } private void rankUpHeroExecute(Hero hero)throws Exception { From 7a42112a9cca7ecd2021d87942dcc286fafd2df6 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 6 Nov 2020 14:38:34 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E6=9F=A5=E7=9C=8B=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/kefu/Cmd_review_gm.java | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java new file mode 100644 index 000000000..8683d4d26 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java @@ -0,0 +1,150 @@ +package com.ljsd.jieling.kefu; + + +import com.ljsd.fight.CheckFight; +import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; +import com.ljsd.jieling.core.GlobalsDef; +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.logic.championship.ChampionshipLogic; +import com.ljsd.jieling.logic.dao.ArenaRecord; +import com.ljsd.jieling.logic.dao.FamilyFightInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.fight.*; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.util.FightDataUtil; +import config.SArenaRobotConfig; +import manager.STableManager; +import org.luaj.vm2.LuaValue; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * Description: 查看巅峰赛 战斗 + * Author: zsx + * CreateDate: 2019/9/26 11:48 + */ +public class Cmd_review_gm extends GmAbstract { + @Override + public boolean exec(String[] args) throws Exception { + +// for (int i = 0; i <150 ; i++) { +// String key = RedisKey.getKey(RedisKey.FORCE_RANK, "", false); +// RedisUtil.getInstence().zsetAddOne(key, String.valueOf(10000+i), 10000+i); +// } + if (args.length != 1) { + return false; + } + String fightID = args[0]; + ArenaRecord arenaRecord = RedisUtil.getInstence().getMapEntry(RedisKey.CHAMPION_ARENA_RECORD,"", fightID, ArenaRecord.class); + + if(arenaRecord == null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("arena_rrecord null")); + } + byte[] fightData = arenaRecord.getFightData(); + CommonProto.FightData fightDataProto = CommonProto.FightData.parseFrom(fightData); + LuaValue getFightData; + int snapTeamId = GlobalsDef.CHAMPION_ATTACK_TEAM; + RedisUtil.getInstence().del(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_FIGHT, "")); + int warTime = STableManager.getFigureConfig(CommonStaticConfig.class).getsChampionshipSetting().getWarTime(); + Map memberInfoMap = RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_JOIN, "", Integer.class, ChampionshipLogic.MemberInfo.class); + int attackId = arenaRecord.getAttackId(); + int defUid = arenaRecord.getDefUid(); + ChampionshipLogic.snapOneFightInfo(attackId, memberInfoMap); + ChampionshipLogic.snapOneFightInfo(defUid, memberInfoMap); + + long id = FightDispatcher.getFIghtId(); + EndFightProcessor endFightProcessor = new AreFightPro(); + ((AreFightPro) endFightProcessor).setArenaRecord(arenaRecord); + FightDispatcher.getMap().put(id, endFightProcessor); + Map gameFightTypeMap = new HashMap<>(); + + gameFightTypeMap.put(0, GameFightType.TOPArenaPersonFight); + gameFightTypeMap.put(1, GameFightType.TOPArenaRobotFight); + gameFightTypeMap.put(2, GameFightType.TOPArena2RobotFight); + PVPFightEvent pvpFightEvent = new PVPFightEvent(attackId, snapTeamId, warTime, "", gameFightTypeMap.get(arenaRecord.getType()), defUid, snapTeamId); + + ChampionshipLogic.MemberInfo attackMemberInfo = memberInfoMap.get(attackId); + ChampionshipLogic.MemberInfo defMemberInfo = memberInfoMap.get(defUid); + int minForce = 0; + int defForce = 0; + + if (defMemberInfo.getType() == 0) { + FamilyFightInfo fightInfo = defMemberInfo.getFightInfo(); + pvpFightEvent.setDefFightSnapData(new DefFightSnapData(fightInfo.getHeroAttribute(), fightInfo.getHeroSkills(), fightInfo.getPokenmonSkills(), fightInfo.getPassiveSkills(), defUid)); + defForce = fightInfo.getForce(); + } else { + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(defUid); + if (sArenaRobotConfig != null) { + defForce = sArenaRobotConfig.getTotalForce(); + } + } + if (attackMemberInfo.getType() == 0) { + FamilyFightInfo fightInfo = attackMemberInfo.getFightInfo(); + pvpFightEvent.setAttackFightSnapData(new DefFightSnapData(fightInfo.getHeroAttribute(), fightInfo.getHeroSkills(), fightInfo.getPokenmonSkills(), fightInfo.getPassiveSkills(), attackId)); + minForce = fightInfo.getForce(); + } else { + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(attackId); + if (sArenaRobotConfig != null) { + minForce = sArenaRobotConfig.getTotalForce(); + } + } + if (minForce > defForce) { + if (arenaRecord.getTurn() == 2) { + pvpFightEvent.setRever(true); + } + } else { + if (arenaRecord.getTurn() == 1 || arenaRecord.getTurn() == 3) { + pvpFightEvent.setRever(true); + } + } + + CommonProto.FightTeamInfo fightTeamInfo = null; + CommonProto.FightTeamInfo deffightTeamInfo = null; + if(pvpFightEvent.getAttackFightSnapData()!=null){ + fightTeamInfo = FightUtil.makeFightWithSnapData(pvpFightEvent.getAttackFightSnapData()); + } + if(pvpFightEvent.getDefFightSnapData()!=null){ + deffightTeamInfo = FightUtil.makeFightWithSnapData(pvpFightEvent.getDefFightSnapData()); + } else{ + if(pvpFightEvent.getFightType() == GameFightType.ArenaPersonFight ||pvpFightEvent.getFightType() == GameFightType.CarPersonChallenge ){ + User defInMem = UserManager.getUserInMem(pvpFightEvent.getDefUid()); + deffightTeamInfo = FightUtil.makePersonFightData(defInMem, pvpFightEvent.getDefTeamId(),null,null); + }else{ + deffightTeamInfo =FightUtil. makeRobotFightData(pvpFightEvent.getDefUid()); + } + + } + if(fightTeamInfo==null){ + if( pvpFightEvent.getFightType()!=GameFightType.TOPArena2RobotFight){ + if( SArenaRobotConfig.getsArenaRobotConfigById(pvpFightEvent.getAttackUid()) !=null){ + fightTeamInfo =FightUtil. makeRobotFightData(pvpFightEvent.getAttackUid()); + }else{ + User userInMem = UserManager.getUserInMem(pvpFightEvent.getAttackUid()); + fightTeamInfo = FightUtil.makePersonFightData(userInMem, pvpFightEvent.getTeamId(),pvpFightEvent.getAttackBloodMap(),null); + } + }else{ + fightTeamInfo = FightUtil.makeRobotFightData(pvpFightEvent.getAttackUid()); + } + } + + if (pvpFightEvent.isRever()) { + deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build(); + getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo, true);//对方先手 + } else { + getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo); + } + LuaValue getOptionData = FightDataUtil.getOptionData(pvpFightEvent.getAttackUid() + ""); + int[] fightResult = CheckFight.getInstance().checkFight(fightDataProto.getFightSeed(), pvpFightEvent.getMostTime(), getFightData, getOptionData, pvpFightEvent.getFightType().getFightType()); + String string = Arrays.toString(fightResult); + LOGGER.error("__________________________"+fightResult[0]+":::"+string); + System.out.println("string = " + string); + + return true; + } +} From 8e3704bf6773a521cc1cae65ac3b1d786bdcada9 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 6 Nov 2020 16:22:53 +0800 Subject: [PATCH 05/12] =?UTF-8?q?=E6=98=93=E7=BB=8F=E5=AE=9D=E5=BA=93?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/mogodb/dblog/LogLinkedList.java | 2 +- jieling-dbgen/Ldb.xml | 11 +- .../src/main/java/com/dbgen/ClassDeclare.java | 2 + .../com/ljsd/jieling/globals/BIReason.java | 2 + .../SeletSubRewardPoolRequestHandler.java | 92 ++++++++ .../ljsd/jieling/jbean/ActivityManager.java | 13 ++ .../ljsd/jieling/jbean/SubRewardPoolInfo.java | 55 +++++ .../com/ljsd/jieling/kefu/Cmd_kickuser.java | 24 +++ .../com/ljsd/jieling/kefu/Cmd_review_gm.java | 150 +++++++++++++ .../jieling/logic/activity/ActivityType.java | 2 + .../logic/activity/ActivityTypeEnum.java | 1 + .../jieling/logic/activity/SubActivity.java | 204 ++++++++++++++++++ .../logic/expedition/ExpeditionLogic.java | 1 + .../jieling/logic/store/BuyGoodsLogic.java | 11 +- .../main/java/config/SBlessingConfigNew.java | 64 ++++++ .../java/config/SBlessingRewardPoolNew.java | 79 +++++++ 16 files changed, 709 insertions(+), 4 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java create mode 100644 tablemanager/src/main/java/config/SBlessingConfigNew.java create mode 100644 tablemanager/src/main/java/config/SBlessingRewardPoolNew.java diff --git a/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java b/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java index d4fb54b11..58e6fce4d 100644 --- a/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java +++ b/common/src/main/java/com/ljsd/common/mogodb/dblog/LogLinkedList.java @@ -35,7 +35,7 @@ public class LogLinkedList extends WrapList { } private void upString(E value){ - mongoBase.updateString(name,value); + mongoBase.updateString(name,getWrapped()); } } diff --git a/jieling-dbgen/Ldb.xml b/jieling-dbgen/Ldb.xml index 3f86350a2..f65e4ef41 100644 --- a/jieling-dbgen/Ldb.xml +++ b/jieling-dbgen/Ldb.xml @@ -18,15 +18,22 @@ - + - + + + 挖矿奖池 + 挖矿奖池层 + + 七日狂欢开始时间 幸运探宝奖池 高级幸运探宝奖池 + 挖矿奖池 + diff --git a/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java b/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java index 719023fc4..f95594b0c 100644 --- a/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java +++ b/jieling-dbgen/src/main/java/com/dbgen/ClassDeclare.java @@ -119,6 +119,8 @@ public class ClassDeclare implements Visitor { public void visitWrop(com.dbgen.Type type, PrintStream ps, String prefix) { + ps.print(prefix+ "@Transient"); + ps.println(); ps.print(prefix+ "private " + "Log"+TypeName.getName(type) + " "+ getVarname()+ "Log ;"); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 2d7568979..43dc86a92 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -290,4 +290,6 @@ public interface BIReason { int SPECIAL_FREE_PIECE_CONSUME = 1072;//灵兽放生碎片消耗 + int SUB_ACTIVITY_CONSUME = 1073;//易经宝库 + } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java new file mode 100644 index 000000000..a67f77d63 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java @@ -0,0 +1,92 @@ +package com.ljsd.jieling.handler.activity; + +import com.google.protobuf.GeneratedMessage; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.logic.activity.AbstractActivity; +import com.ljsd.jieling.logic.activity.ActivityTypeEnum; +import com.ljsd.jieling.logic.activity.SubActivity; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.ActivityProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import config.SBlessingConfigNew; +import config.SBlessingRewardPoolNew; +import manager.STableManager; + +import java.util.HashSet; + +/** + * Description: des + * Author: zsx + * CreateDate: 2020/11/7 9:47 + */ +public class SeletSubRewardPoolRequestHandler extends BaseHandler{ + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return null; + } + + @Override + public GeneratedMessage processWithProto(int uid, ActivityProto.SeletSubRewardPoolRequest proto) throws Exception { + int selectId = proto.getSelectId(); + int activityId = proto.getActivityId(); + + //check activity + User user = UserManager.getUser(uid); + AbstractActivity abstractActivity = ActivityTypeEnum.getActicityType(proto.getActivityId()); + if (null == abstractActivity) { + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(proto.getActivityId()); + if(activityMission==null){ + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + + + //check conf + SBlessingConfigNew sBlessingConfigNew =SBlessingConfigNew.getsBlessingConfigNewHashMap().get(activityId); + int finalPoolId = sBlessingConfigNew.getFinalPoolId(); + + SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(selectId); + if(sBlessingRewardPoolNew.getPoolId()!=finalPoolId){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + + //check leve + + if(sBlessingRewardPoolNew.getLevelLimit()>user.getPlayerInfoManager().getLevel()){ + throw new ErrorCodeException(ErrorCode.PLAYER_LEVE_NOT); + } + //check floor + ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(SubActivity.LAY_INDEX); + if(activityProgressInfo!=null&&sBlessingRewardPoolNew.getFloorLimit()>activityProgressInfo.getProgrss()){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + +// //check had select + if(activityMission.getV()!=0){ + ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + activityMission.getV()); + if(activityProgressInfo1!=null&&activityProgressInfo1.getProgrss()!=0){ + activityProgressInfo1.setProgrss(activityProgressInfo1.getProgrss()-1); + } + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size()-1); + } + activityMission.setV(selectId); + ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + selectId); + if(activityProgressInfo1!=null){ + activityProgressInfo1.setProgrss(activityProgressInfo1.getProgrss()+1); + } + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add(selectId); + ISession sessionByUid = OnlineUserManager.getSessionByUid(user.getId()); + abstractActivity.sendActivityProgress(sessionByUid, activityMission, null); + return ActivityProto.SeletSubRewardPoolResponse.newBuilder().build(); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java index 2cb662b93..03bd79868 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/ActivityManager.java @@ -17,6 +17,7 @@ public final class ActivityManager extends MongoBase { private long senvenStartTime; // 七日狂欢开始时间 private com.ljsd.jieling.jbean.LuckWheelMission luckWheel; // 幸运探宝奖池 private com.ljsd.jieling.jbean.LuckWheelMission luckWheelAdvance; // 高级幸运探宝奖池 + private com.ljsd.jieling.jbean.SubRewardPoolInfo subRewardPoolInfo; // 挖矿奖池 public ActivityManager() { } @@ -28,6 +29,7 @@ public final class ActivityManager extends MongoBase { this.senvenStartTime = _o_.senvenStartTime; this.luckWheel = new LuckWheelMission(_o_.luckWheel); this.luckWheelAdvance = new LuckWheelMission(_o_.luckWheelAdvance); + this.subRewardPoolInfo = new SubRewardPoolInfo(_o_.subRewardPoolInfo); } public Map getActivityMissionMap() { @@ -48,6 +50,10 @@ public final class ActivityManager extends MongoBase { return this.luckWheelAdvance; } + public com.ljsd.jieling.jbean.SubRewardPoolInfo getSubRewardPoolInfo() { // 挖矿奖池 + return this.subRewardPoolInfo; + } + public void setSenvenStartTime(long senvenstarttime) { // 七日狂欢开始时间 updateString("senvenStartTime",senvenstarttime); this.senvenStartTime = senvenstarttime; @@ -65,6 +71,12 @@ public final class ActivityManager extends MongoBase { this.luckWheelAdvance = luckwheeladvance; } + public void setSubRewardPoolInfo(SubRewardPoolInfo subrewardpoolinfo) { // 挖矿奖池 + updateString("subRewardPoolInfo",subrewardpoolinfo); + subrewardpoolinfo.init(getRootId(),getMongoKey()+ ".subRewardPoolInfo"); + this.subRewardPoolInfo = subrewardpoolinfo; + } + @Override public String toString() { @@ -74,6 +86,7 @@ public final class ActivityManager extends MongoBase { _sb_.append(this.senvenStartTime).append(","); _sb_.append(this.luckWheel).append(","); _sb_.append(this.luckWheelAdvance).append(","); + _sb_.append(this.subRewardPoolInfo).append(","); _sb_.append(")"); return _sb_.toString(); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java new file mode 100644 index 000000000..a057a4a4e --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/jbean/SubRewardPoolInfo.java @@ -0,0 +1,55 @@ +package com.ljsd.jieling.jbean; + +import com.ljsd.common.mogodb.MongoBase; +import java.util.Map; +import java.util.HashMap; +import java.util.Set; +import java.util.HashSet; +import java.util.List; +import java.util.LinkedList; +import org.springframework.data.annotation.Transient; +import com.ljsd.common.mogodb.dblog.*; + +public final class SubRewardPoolInfo extends MongoBase { + private LinkedList subRewardPool = new LinkedList(); // 挖矿奖池 + @Transient + private LogLinkedList subRewardPoolLog ; + private int lay; // 挖矿奖池层 + + public SubRewardPoolInfo() { + } + + + public SubRewardPoolInfo(SubRewardPoolInfo _o_ ) { + this.subRewardPool = new LinkedList(); + _o_.subRewardPool.forEach(_v_ -> this.subRewardPool.add(_v_)); + this.lay = _o_.lay; + } + + public List getSubRewardPool() { // 挖矿奖池 + if( null == subRewardPoolLog && subRewardPool != null) + subRewardPoolLog = new LogLinkedList( this,"subRewardPool",subRewardPool); + return this.subRewardPoolLog; + } + + public int getLay() { // 挖矿奖池层 + return this.lay; + } + + public void setLay(int lay) { // 挖矿奖池层 + updateString("lay",lay); + this.lay = lay; + } + + + @Override + public String toString() { + StringBuilder _sb_ = new StringBuilder(super.toString()); + _sb_.append("=("); + _sb_.append(this.subRewardPool).append(","); + _sb_.append(this.lay).append(","); + _sb_.append(")"); + return _sb_.toString(); + } + +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java new file mode 100644 index 000000000..4f2a6b9e7 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_kickuser.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.kefu; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.logic.OnlineUserManager; +import com.ljsd.jieling.network.server.SessionManager; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.MessageUtil; + +public class Cmd_kickuser extends GmRoleAbstract { + + @Override + public boolean exec(String[] args) throws Exception { + + SessionManager instance = SessionManager.getInstance(); + ISession session= OnlineUserManager.getSessionByUid(getUser().getId()); + if (session != null) { + MessageUtil.sendErrorCode(session, ErrorCode.kickUserCode, "您已被踢下线!"); + Thread.sleep(100); + instance.kickOldUser(getUser().getId(), "", ErrorCode.kickUserCode, "LOSE HEART PACKET!!!!", 0); + } + return true; + + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java new file mode 100644 index 000000000..5bbc1a697 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/kefu/Cmd_review_gm.java @@ -0,0 +1,150 @@ +package com.ljsd.jieling.kefu; + + +import com.ljsd.fight.CheckFight; +import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; +import com.ljsd.jieling.core.GlobalsDef; +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.logic.championship.ChampionshipLogic; +import com.ljsd.jieling.logic.dao.ArenaRecord; +import com.ljsd.jieling.logic.dao.FamilyFightInfo; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.fight.*; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.util.FightDataUtil; +import config.SArenaRobotConfig; +import manager.STableManager; +import org.luaj.vm2.LuaValue; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * Description: 查看巅峰赛 战斗 + * Author: zsx + * CreateDate: 2019/9/26 11:48 + */ +public class Cmd_review_gm extends GmAbstract { + @Override + public boolean exec(String[] args) throws Exception { + +// for (int i = 0; i <150 ; i++) { +// String key = RedisKey.getKey(RedisKey.FORCE_RANK, "", false); +// RedisUtil.getInstence().zsetAddOne(key, String.valueOf(10000+i), 10000+i); +// } + if (args.length != 1) { + return false; + } + String fightID = args[0]; + ArenaRecord arenaRecord = RedisUtil.getInstence().getMapEntry(RedisKey.CHAMPION_ARENA_RECORD,"", fightID, ArenaRecord.class); + + if(arenaRecord == null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("arena_rrecord null")); + } + byte[] fightData = arenaRecord.getFightData(); + CommonProto.FightData fightDataProto = CommonProto.FightData.parseFrom(fightData); + LuaValue getFightData; + int snapTeamId = GlobalsDef.CHAMPION_ATTACK_TEAM; + RedisUtil.getInstence().del(RedisUtil.getInstence().getKey(RedisKey.CHAMPION_FIGHT, "")); + int warTime = STableManager.getFigureConfig(CommonStaticConfig.class).getsChampionshipSetting().getWarTime(); + Map memberInfoMap = RedisUtil.getInstence().getMapValues(RedisKey.CHAMPION_JOIN, "", Integer.class, ChampionshipLogic.MemberInfo.class); + int attackId = arenaRecord.getAttackId(); + int defUid = arenaRecord.getDefUid(); + ChampionshipLogic.snapOneFightInfo(attackId, memberInfoMap); + ChampionshipLogic.snapOneFightInfo(defUid, memberInfoMap); + + long id = FightDispatcher.getFIghtId(); + EndFightProcessor endFightProcessor = new AreFightPro(); + ((AreFightPro) endFightProcessor).setArenaRecord(arenaRecord); + FightDispatcher.getMap().put(id, endFightProcessor); + Map gameFightTypeMap = new HashMap<>(); + + gameFightTypeMap.put(0, GameFightType.TOPArenaPersonFight); + gameFightTypeMap.put(1, GameFightType.TOPArenaRobotFight); + gameFightTypeMap.put(2, GameFightType.TOPArena2RobotFight); + PVPFightEvent pvpFightEvent = new PVPFightEvent(attackId, snapTeamId, warTime, "", gameFightTypeMap.get(arenaRecord.getType()), defUid, snapTeamId); + + ChampionshipLogic.MemberInfo attackMemberInfo = memberInfoMap.get(attackId); + ChampionshipLogic.MemberInfo defMemberInfo = memberInfoMap.get(defUid); + int minForce = 0; + int defForce = 0; + + if (defMemberInfo.getType() == 0) { + FamilyFightInfo fightInfo = defMemberInfo.getFightInfo(); + pvpFightEvent.setDefFightSnapData(new DefFightSnapData(fightInfo.getHeroAttribute(), fightInfo.getHeroSkills(), fightInfo.getPokenmonSkills(), fightInfo.getPassiveSkills())); + defForce = fightInfo.getForce(); + } else { + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(defUid); + if (sArenaRobotConfig != null) { + defForce = sArenaRobotConfig.getTotalForce(); + } + } + if (attackMemberInfo.getType() == 0) { + FamilyFightInfo fightInfo = attackMemberInfo.getFightInfo(); + pvpFightEvent.setAttackFightSnapData(new DefFightSnapData(fightInfo.getHeroAttribute(), fightInfo.getHeroSkills(), fightInfo.getPokenmonSkills(), fightInfo.getPassiveSkills())); + minForce = fightInfo.getForce(); + } else { + SArenaRobotConfig sArenaRobotConfig = SArenaRobotConfig.getsArenaRobotConfigById(attackId); + if (sArenaRobotConfig != null) { + minForce = sArenaRobotConfig.getTotalForce(); + } + } + if (minForce > defForce) { + if (arenaRecord.getTurn() == 2) { + pvpFightEvent.setRever(true); + } + } else { + if (arenaRecord.getTurn() == 1 || arenaRecord.getTurn() == 3) { + pvpFightEvent.setRever(true); + } + } + + CommonProto.FightTeamInfo fightTeamInfo = null; + CommonProto.FightTeamInfo deffightTeamInfo = null; + if(pvpFightEvent.getAttackFightSnapData()!=null){ + fightTeamInfo = FightUtil.makeFightWithSnapData(pvpFightEvent.getAttackFightSnapData()); + } + if(pvpFightEvent.getDefFightSnapData()!=null){ + deffightTeamInfo = FightUtil.makeFightWithSnapData(pvpFightEvent.getDefFightSnapData()); + } else{ + if(pvpFightEvent.getFightType() == GameFightType.ArenaPersonFight ||pvpFightEvent.getFightType() == GameFightType.CarPersonChallenge ){ + User defInMem = UserManager.getUserInMem(pvpFightEvent.getDefUid()); + deffightTeamInfo = FightUtil.makePersonFightData(defInMem, pvpFightEvent.getDefTeamId(),null,null); + }else{ + deffightTeamInfo = FightUtil. makeRobotFightData(pvpFightEvent.getDefUid()); + } + + } + if(fightTeamInfo==null){ + if( pvpFightEvent.getFightType()!= GameFightType.TOPArena2RobotFight){ + if( SArenaRobotConfig.getsArenaRobotConfigById(pvpFightEvent.getAttackUid()) !=null){ + fightTeamInfo = FightUtil. makeRobotFightData(pvpFightEvent.getAttackUid()); + }else{ + User userInMem = UserManager.getUserInMem(pvpFightEvent.getAttackUid()); + fightTeamInfo = FightUtil.makePersonFightData(userInMem, pvpFightEvent.getTeamId(),pvpFightEvent.getAttackBloodMap(),null); + } + }else{ + fightTeamInfo = FightUtil.makeRobotFightData(pvpFightEvent.getAttackUid()); + } + } + + if (pvpFightEvent.isRever()) { + deffightTeamInfo = CommonProto.FightTeamInfo.newBuilder().mergeFrom(deffightTeamInfo).setFirstCamp(1).build(); + getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo, true);//对方先手 + } else { + getFightData = FightDataUtil.getFinalPlayerFightData(fightTeamInfo, deffightTeamInfo); + } + LuaValue getOptionData = FightDataUtil.getOptionData(pvpFightEvent.getAttackUid() + ""); + int[] fightResult = CheckFight.getInstance().checkFight(fightDataProto.getFightSeed(), pvpFightEvent.getMostTime(), getFightData, getOptionData, pvpFightEvent.getFightType().getFightType()); + String string = Arrays.toString(fightResult); + LOGGER.error("__________________________"+fightResult[0]+":::"+string); + System.out.println("string = " + string); + + return true; + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index b3ea961b3..f75b915aa 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -78,4 +78,6 @@ public interface ActivityType { int ITEMS_STORE= 6000;//百宝商会 int TRIAL_EXPERT = 70;//幻境达人 int SHEJI_ACTIVITY = 60;//社稷大典 + int SUB_ACTIVITY = 8000;//易经宝库 + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index 0cdc70d58..4a8c8d6d2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -59,6 +59,7 @@ public enum ActivityTypeEnum { ITEMS_STORE(ActivityType.ITEMS_STORE, DefaultEmptyActivity::new), TRIAL_EXPERT(ActivityType.TRIAL_EXPERT,TrialExpectRankActivity::new), SHEJI_ACTIVITY(ActivityType.SHEJI_ACTIVITY,SheJiActivity::new), + SUB_ACTIVITY(ActivityType.SUB_ACTIVITY, SubActivity::new), ; private int type; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java new file mode 100644 index 000000000..28bc7fde8 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java @@ -0,0 +1,204 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.*; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.*; +import manager.STableManager; +import util.MathUtils; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * Description: 易经宝库 + * Author: zsx + * CreateDate: 2020/11/6 22:26 + */ +public class SubActivity extends AbstractActivity { + + public static final int LAY_INDEX = 100; + public static final int POOL_INDEX = 1000; + public SubActivity(int id) { + super(id); + } + + + @Override + public void initActivity(User user)throws Exception{ + //重置奖励 + randomReward(user,true); + } + + @Override + public void onResume(User user) throws Exception { + // super.onResume(user); + //重置奖励 + randomReward(user,false); + } + + + @Override + public boolean takeReward(ISession session, int missionId) throws Exception { + User user = UserManager.getUser(session.getUid()); + +// //checkAndUpdate state + ActivityManager activityManager = user.getActivityManager(); + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + if (activityMission == null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(missionId); + if (activityProgressInfo == null || activityProgressInfo.getState() == ActivityType.HAD_TAKED) { + throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); + } + //check had select + if(activityMission.getV()==0){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + + + SBlessingConfigNew sBlessingConfigNew =SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); + //check cost + int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.EXPEDITION_REBORN); + if(integerValue==0){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int[][] cost = new int[1][2]; + cost[0]=sBlessingConfigNew.getCost(); + boolean b = ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME, 1); + if(!b){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + int size = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size(); + if(size==0){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + + //get reward + long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count(); + Integer rewardId = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get((int) count); + SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(rewardId); + + + int[] reward = sBlessingRewardPoolNew.getReward(); + int[][] rewards = new int[1][]; + rewards[0]=reward; + CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards, BIReason.TAKE_ACTIVITY_REWARD); + //up miss + activityProgressInfo.setProgrss(rewardId); + activityProgressInfo.setState( ActivityType.HAD_TAKED); + int curLay = user.getActivityManager().getSubRewardPoolInfo().getLay(); + if(curLay!=sBlessingConfigNew.getFloorCount()&&count==(size-1)){ + ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY); + sendActivityProgress(session, activityManager.getActivityMissionMap().get(id), null); + }else { + sendActivityProgress(session, activityMission, Collections.singleton(missionId)); + } + reportTakeActivityReward(user,rewards,missionId); + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + + return true; + } + + + @Override + public void onEvent(IEvent event) throws Exception { + super.onEvent(event); + } + + /** + * 重置奖励 + */ + private void randomReward(User user,boolean start) throws Exception{ + + //init lay + SubRewardPoolInfo subRewardPoolInfo = user.getActivityManager().getSubRewardPoolInfo(); + if(subRewardPoolInfo==null){ + subRewardPoolInfo = new SubRewardPoolInfo(); + user.getActivityManager().setSubRewardPoolInfo(subRewardPoolInfo); + } + int lay = user.getActivityManager().getSubRewardPoolInfo().getLay(); + int curLay=lay+1; + user.getActivityManager().getSubRewardPoolInfo().setLay(curLay); + HashMap> integerHashSetHashMap = SBlessingRewardPoolNew.getsBlessingRewardPoolNewHashMap(); + //init Activity + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + activityProgressInfo.setProgrss(curLay); + activityProgressInfo.setState(0); + activityMission.getActivityMissionMap().put(LAY_INDEX, activityProgressInfo); + activityMission.setOpenType(1); + activityMission.setActivityState(ActivityType.OPEN_STATE); + activityMission.setV(0); + + + //init reward + + SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); + if(null== sBlessingConfigNew){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int[] basicPoolId = sBlessingConfigNew.getBasicPoolId(); + if(basicPoolId.length sBlessingRewardPoolNews = integerHashSetHashMap.get(poolID); + if(null == sBlessingRewardPoolNews){ + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + List ints = new LinkedList<>(); + for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews) { + for (int i = 0; i list2 = Arrays.stream(fixResult).boxed().collect(Collectors.toList()); + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().clear(); + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().addAll(list2); + + for (int i = 0; i <=list2.size() ; i++) { + ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo(); + activityProgressInfo1.setProgrss(0); + activityProgressInfo1.setState(0); + activityMission.getActivityMissionMap().put(i+1, activityProgressInfo1); + } + + //init finalRewards + if(start){ + int finalPoolId = sBlessingConfigNew.getFinalPoolId(); + HashSet sBlessingRewardPoolNews1 = integerHashSetHashMap.get(finalPoolId); + for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews1) { + ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo(); + activityProgressInfo1.setProgrss(0); + activityProgressInfo1.setState(0); + activityMission.getActivityMissionMap().put(POOL_INDEX+sBlessingRewardPoolNew.getId(), activityProgressInfo1); + } + + } + + + } +} 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 7178e17e7..58bce43d6 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 @@ -673,6 +673,7 @@ public class ExpeditionLogic { builder1.setLevel(familyHeroInfo.getLevel()); builder1.setStar(familyHeroInfo.getStar()); builder1.setRemainHp(heroHP.get(s)); + builder1.setPosition(familyHeroInfo.getPosition()); builders.add(builder1.build()); }); builder.addAllHero(builders); 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 517a65dc2..d1b81650d 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 @@ -803,7 +803,7 @@ public class BuyGoodsLogic { if(sRechargeCommodityConfig.getDailyUpdate()>=1){ if(!refreshBagMap.containsKey(sRechargeCommodityConfig.getId())){ Gson gson = new Gson(); - LOGGER.error(sRechargeCommodityConfig.getId()+"Exception= " + gson.toJson(refreshBagMap.keySet())); + // LOGGER.error(sRechargeCommodityConfig.getId()+"Exception= " + gson.toJson(refreshBagMap.keySet())); return new RechargeResult(); } endTime = refreshBagMap.get(sRechargeCommodityConfig.getId()); @@ -966,6 +966,15 @@ public class BuyGoodsLogic { } } + if (sRechargeCommodityConfig.getTime() == 6) { + if (rechargeInfo.getDyGoodsCanBuyTimes().containsKey(sRechargeCommodityConfig.getId())&&rechargeInfo.getRefreshBagMap().containsKey(sRechargeCommodityConfig.getId())) { + long endTime = rechargeInfo.getRefreshBagMap().get(sRechargeCommodityConfig.getId()); + if (now > endTime || rechargeInfo.getDyGoodsCanBuyTimes().get(sRechargeCommodityConfig.getId()) <= 0) { + continue; + } + } + } + } long startTime=0; diff --git a/tablemanager/src/main/java/config/SBlessingConfigNew.java b/tablemanager/src/main/java/config/SBlessingConfigNew.java new file mode 100644 index 000000000..b619155aa --- /dev/null +++ b/tablemanager/src/main/java/config/SBlessingConfigNew.java @@ -0,0 +1,64 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.Map; + +@Table(name = "BlessingConfigNew") +public class SBlessingConfigNew implements BaseConfig { + + private int id; + + private int activityId; + + private int[] cost; + + private int floorCount; + + private int[] basicPoolId; + + private int finalPoolId; + + private static HashMap sBlessingConfigNewHashMap = new HashMap<>(); + + @Override + public void init() throws Exception { + Map config = STableManager.getConfig(SBlessingConfigNew.class); + config.forEach((integer, sBlessingConfigNew) -> sBlessingConfigNewHashMap.put(sBlessingConfigNew.getActivityId(),sBlessingConfigNew)); + + } + + + public static HashMap getsBlessingConfigNewHashMap() { + return sBlessingConfigNewHashMap; + } + + + public int getId() { + return id; + } + + public int getActivityId() { + return activityId; + } + + public int[] getCost() { + return cost; + } + + public int getFloorCount() { + return floorCount; + } + + public int[] getBasicPoolId() { + return basicPoolId; + } + + public int getFinalPoolId() { + return finalPoolId; + } + + +} \ No newline at end of file diff --git a/tablemanager/src/main/java/config/SBlessingRewardPoolNew.java b/tablemanager/src/main/java/config/SBlessingRewardPoolNew.java new file mode 100644 index 000000000..28903ebf7 --- /dev/null +++ b/tablemanager/src/main/java/config/SBlessingRewardPoolNew.java @@ -0,0 +1,79 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; + +@Table(name = "BlessingRewardPoolNew") +public class SBlessingRewardPoolNew implements BaseConfig { + + private int id; + + private int poolId; + + private int[] reward; + + private int initializeNum; + + private int extractWeight; + + private int floorLimit; + + private int levelLimit; + + private static HashMap> sBlessingRewardPoolNewHashMap = new HashMap<>(); + + @Override + public void init() throws Exception { + + Map configs = STableManager.getConfig(SBlessingRewardPoolNew.class); + for (SBlessingRewardPoolNew sBlessingRewardPoolNew : configs.values()) { + HashSet orDefault = sBlessingRewardPoolNewHashMap.getOrDefault(sBlessingRewardPoolNew.getPoolId(), new HashSet<>()); + orDefault.add(sBlessingRewardPoolNew); + sBlessingRewardPoolNewHashMap.put(sBlessingRewardPoolNew.getPoolId(),orDefault); + } + + } + + + public static HashMap> getsBlessingRewardPoolNewHashMap() { + return sBlessingRewardPoolNewHashMap; + } + + public static void setsBlessingRewardPoolNewHashMap(HashMap> sBlessingRewardPoolNewHashMap) { + SBlessingRewardPoolNew.sBlessingRewardPoolNewHashMap = sBlessingRewardPoolNewHashMap; + } + + public int getId() { + return id; + } + + public int getPoolId() { + return poolId; + } + + public int[] getReward() { + return reward; + } + + public int getInitializeNum() { + return initializeNum; + } + + public int getExtractWeight() { + return extractWeight; + } + + public int getFloorLimit() { + return floorLimit; + } + + public int getLevelLimit() { + return levelLimit; + } + + +} \ No newline at end of file From f303840402998081c1847b24884a336ad2395680 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 6 Nov 2020 17:18:07 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E6=A3=AE=E7=BD=97=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E7=9A=AE=E8=82=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/handler/map/MapLogic.java | 4 +++- .../com/ljsd/jieling/handler/map/TrailHero.java | 16 ++++++++++++---- .../com/ljsd/jieling/handler/map/TrialInfo.java | 4 +++- .../com/ljsd/jieling/logic/item/ItemLogic.java | 4 +++- 4 files changed, 21 insertions(+), 7 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 6adbb5884..e29e2ab20 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 @@ -3227,7 +3227,9 @@ public class MapLogic { skinId = 0; skinTime = 0; } - TrailHero trailHero = new TrailHero(hero.getTemplateId(),HeroLogic.getInstance().calHeroNotBufferAttribute(user,hero,false,0),hero.getStar(),heroSkill,hero.getLevel(),skinId,skinTime); + TrailHero trailHero = new TrailHero(hero.getTemplateId(),HeroLogic.getInstance().calHeroNotBufferAttribute(user,hero,false,0),hero.getStar(),heroSkill,hero.getLevel()); + trailHero.setSkinId(skinId); + trailHero.setSkinTime(skinTime); heroInfo.put(id,trailHero); } mapManager.updateTrailHeroInfo(heroInfo); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java index ba84683df..e78489870 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrailHero.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.handler.map; +import com.ljsd.common.mogodb.MongoBase; + import java.util.Map; /** @@ -7,7 +9,7 @@ import java.util.Map; * @date 2020/5/28 * @discribe */ -public class TrailHero { +public class TrailHero extends MongoBase { private int tmpId; @@ -47,14 +49,12 @@ public class TrailHero { this.star = star; } - public TrailHero(int tmpId, Map property, int star,String heroSkills,int level,int skinId,int skinTime) { + public TrailHero(int tmpId, Map property, int star,String heroSkills,int level) { this.tmpId = tmpId; this.property = property; this.star = star; this.heroSkills = heroSkills; this.level = level; - this.skinId = skinId; - this.skinTime = skinTime; } public int getSkinId() { @@ -80,4 +80,12 @@ public class TrailHero { public void setLevel(int level) { this.level = level; } + + public void setSkinId(int skinId) { + this.skinId = skinId; + } + + public void setSkinTime(int skinTime) { + this.skinTime = skinTime; + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java index e4fb7c9a9..a1bc7c7d6 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/TrialInfo.java @@ -1,5 +1,7 @@ package com.ljsd.jieling.handler.map; +import com.ljsd.common.mogodb.MongoBase; + import java.util.*; /** @@ -7,7 +9,7 @@ import java.util.*; * @date 2020/5/16 * @discribe 试炼信息 */ -public class TrialInfo { +public class TrialInfo extends MongoBase { //默认一层 private int floor = 1; 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 3fae9862a..6f0a377de 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 @@ -212,7 +212,9 @@ public class ItemLogic { throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } user.getHeroManager().addSkin(sHeroSkin.getType(),time); - ItemUtil.drop(user,new int[][]{sHeroSkin.getHeadIcon()},BIReason.SKIN_USE_REWARD); + if(sHeroSkin.getHeadIcon()!=null&&sHeroSkin.getHeadIcon().length>0){ + ItemUtil.drop(user,new int[][]{sHeroSkin.getHeadIcon()},BIReason.SKIN_USE_REWARD); + } HeroInfoProto.GetSkinIndication indication = HeroInfoProto.GetSkinIndication.newBuilder() .setSkinInfo(CommonProto.SkinInfo.newBuilder().setSkinId(sHeroSkin.getType()).setOverTime(time)) .build(); From 08e1b94c60cbafe27f8fab7c9bae091e38d6fe64 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 9 Nov 2020 11:12:37 +0800 Subject: [PATCH 07/12] =?UTF-8?q?=E6=98=93=E7=BB=8F=E5=AE=9D=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/SeletSubRewardPoolRequestHandler.java | 14 +++++++++----- .../ljsd/jieling/logic/activity/SubActivity.java | 3 +-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java index a67f77d63..629864273 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java @@ -59,28 +59,32 @@ public class SeletSubRewardPoolRequestHandler extends BaseHandleruser.getPlayerInfoManager().getLevel()){ throw new ErrorCodeException(ErrorCode.PLAYER_LEVE_NOT); } + //check floor ActivityProgressInfo activityProgressInfo = activityMission.getActivityMissionMap().get(SubActivity.LAY_INDEX); if(activityProgressInfo!=null&&sBlessingRewardPoolNew.getFloorLimit()>activityProgressInfo.getProgrss()){ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); } + //check count + ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + selectId); + if(activityProgressInfo1!=null&&activityProgressInfo1.getProgrss()>=sBlessingRewardPoolNew.getInitializeNum()){ + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } // //check had select if(activityMission.getV()!=0){ - ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + activityMission.getV()); - if(activityProgressInfo1!=null&&activityProgressInfo1.getProgrss()!=0){ - activityProgressInfo1.setProgrss(activityProgressInfo1.getProgrss()-1); + ActivityProgressInfo activityProgressInfoOld = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + activityMission.getV()); + if(activityProgressInfoOld!=null&&activityProgressInfoOld.getProgrss()!=0){ + activityProgressInfoOld.setProgrss(activityProgressInfoOld.getProgrss()-1); } user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size()-1); } activityMission.setV(selectId); - ActivityProgressInfo activityProgressInfo1 = activityMission.getActivityMissionMap().get(SubActivity.POOL_INDEX + selectId); if(activityProgressInfo1!=null){ activityProgressInfo1.setProgrss(activityProgressInfo1.getProgrss()+1); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java index 19e931c9c..b3ce1d40e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java @@ -91,8 +91,7 @@ public class SubActivity extends AbstractActivity { //get reward long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count(); //后5个概率提前结束抽奖 - - if (count != (size - 1) && count >= (size - 5) && (Math.random() * 5 < 1)) { + if (count != (size - 1) && count >= (size - 5) && ((Math.random() * 5) < 1)&&user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size() - 1)== activityMission.getV()) { user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add((int) count, activityMission.getV()); user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size() - 1); } From 73510bd86477eaba81922efb7e83ded240c775e2 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sun, 15 Nov 2020 09:47:25 +0800 Subject: [PATCH 08/12] =?UTF-8?q?=E7=9A=AE=E8=82=A4=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/activity/ActivityType.java | 1 + .../java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index f75b915aa..7a675c357 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java @@ -79,5 +79,6 @@ public interface ActivityType { int TRIAL_EXPERT = 70;//幻境达人 int SHEJI_ACTIVITY = 60;//社稷大典 int SUB_ACTIVITY = 8000;//易经宝库 + int SKIN_RECHARGE_ACTIVITY = 71; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java index 4a8c8d6d2..e7e88996a 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java @@ -60,6 +60,8 @@ public enum ActivityTypeEnum { TRIAL_EXPERT(ActivityType.TRIAL_EXPERT,TrialExpectRankActivity::new), SHEJI_ACTIVITY(ActivityType.SHEJI_ACTIVITY,SheJiActivity::new), SUB_ACTIVITY(ActivityType.SUB_ACTIVITY, SubActivity::new), + SKIN_RECHARGE_ACTIVITY(ActivityType.SKIN_RECHARGE_ACTIVITY, DefaultEmptyActivity::new), + ; private int type; From 16ded73f10e50800013f8822dd658630ae90af89 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 17 Nov 2020 16:59:04 +0800 Subject: [PATCH 09/12] =?UTF-8?q?=E6=98=93=E7=BB=8F=E5=AE=9D=E5=BA=93?= =?UTF-8?q?=E9=81=93=E5=85=B7=E5=9B=9E=E6=94=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 2 + .../jieling/logic/activity/SubActivity.java | 118 ++++++++++++------ .../src/main/java/config/SSpecialConfig.java | 1 + 3 files changed, 84 insertions(+), 37 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 785355f21..fb16b7d59 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -157,6 +157,7 @@ public interface BIReason { int SPECIAL_MONSTER_REWARD = 88;//灵兽涅槃获得 int SPECIAL_FREE_PIECE_REWARD = 89;//灵兽放生获得 int SKIN_USE_REWARD = 90;//激活皮肤获得头像 + int SUB_ACTIVITY_FINISH = 91;//易经宝库活动结束补发 int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 @@ -293,4 +294,5 @@ public interface BIReason { int SKIN_USE_CONSUME = 1073;//激活皮肤消耗 int SUB_ACTIVITY_CONSUME = 1074;//易经宝库 + int SUB_ACTIVITY_CONSUME_FINISH = 1075;//易经宝库活动结束补发消耗 } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java index 28bc7fde8..19e931c9c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/SubActivity.java @@ -3,10 +3,13 @@ package com.ljsd.jieling.logic.activity; 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.jbean.*; import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.dao.Item; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.CommonProto; import com.ljsd.jieling.protocols.PlayerInfoProto; @@ -15,6 +18,7 @@ import com.ljsd.jieling.util.MessageUtil; import config.*; import manager.STableManager; import util.MathUtils; +import util.TimeUtils; import java.util.*; import java.util.stream.Collectors; @@ -28,33 +32,34 @@ public class SubActivity extends AbstractActivity { public static final int LAY_INDEX = 100; public static final int POOL_INDEX = 1000; + public SubActivity(int id) { super(id); } @Override - public void initActivity(User user)throws Exception{ + public void initActivity(User user) throws Exception { //重置奖励 - randomReward(user,true); + randomReward(user, true); } @Override public void onResume(User user) throws Exception { - // super.onResume(user); + // super.onResume(user); //重置奖励 - randomReward(user,false); + randomReward(user, false); } @Override public boolean takeReward(ISession session, int missionId) throws Exception { - User user = UserManager.getUser(session.getUid()); + User user = UserManager.getUser(session.getUid()); // //checkAndUpdate state ActivityManager activityManager = user.getActivityManager(); ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); - if (activityMission == null){ + if (activityMission == null) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } if (activityMission.getActivityState() != ActivityType.OPEN_STATE || activityMission.getOpenType() == 0) { @@ -65,49 +70,52 @@ public class SubActivity extends AbstractActivity { throw new ErrorCodeException(ErrorCode.newDefineCode("活动奖励已经领取")); } //check had select - if(activityMission.getV()==0){ + if (activityMission.getV() == 0) { throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); } - SBlessingConfigNew sBlessingConfigNew =SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); + SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); //check cost - int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.EXPEDITION_REBORN); - if(integerValue==0){ - throw new ErrorCodeException(ErrorCode.CFG_NULL); - } int[][] cost = new int[1][2]; - cost[0]=sBlessingConfigNew.getCost(); + cost[0] = sBlessingConfigNew.getCost(); boolean b = ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME, 1); - if(!b){ + if (!b) { throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); } int size = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size(); - if(size==0){ + if (size == 0) { throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); } //get reward long count = activityMission.getActivityMissionMap().values().stream().filter(activityProgressInfo1 -> activityProgressInfo1.getState() == ActivityType.HAD_TAKED).count(); + //后5个概率提前结束抽奖 + + if (count != (size - 1) && count >= (size - 5) && (Math.random() * 5 < 1)) { + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().add((int) count, activityMission.getV()); + user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().remove(user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().size() - 1); + } Integer rewardId = user.getActivityManager().getSubRewardPoolInfo().getSubRewardPool().get((int) count); + SBlessingRewardPoolNew sBlessingRewardPoolNew = STableManager.getConfig(SBlessingRewardPoolNew.class).get(rewardId); int[] reward = sBlessingRewardPoolNew.getReward(); int[][] rewards = new int[1][]; - rewards[0]=reward; + rewards[0] = reward; CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewards, BIReason.TAKE_ACTIVITY_REWARD); //up miss activityProgressInfo.setProgrss(rewardId); - activityProgressInfo.setState( ActivityType.HAD_TAKED); + activityProgressInfo.setState(ActivityType.HAD_TAKED); int curLay = user.getActivityManager().getSubRewardPoolInfo().getLay(); - if(curLay!=sBlessingConfigNew.getFloorCount()&&count==(size-1)){ + if (curLay != sBlessingConfigNew.getFloorCount() && rewardId == activityMission.getV()) { ActivityLogic.getInstance().resumeActivity(user, ActivityType.SUB_ACTIVITY); sendActivityProgress(session, activityManager.getActivityMissionMap().get(id), null); - }else { + } else { sendActivityProgress(session, activityMission, Collections.singleton(missionId)); } - reportTakeActivityReward(user,rewards,missionId); + reportTakeActivityReward(user, rewards, missionId); PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); @@ -123,16 +131,16 @@ public class SubActivity extends AbstractActivity { /** * 重置奖励 */ - private void randomReward(User user,boolean start) throws Exception{ + private void randomReward(User user, boolean start) throws Exception { //init lay SubRewardPoolInfo subRewardPoolInfo = user.getActivityManager().getSubRewardPoolInfo(); - if(subRewardPoolInfo==null){ + if (subRewardPoolInfo == null) { subRewardPoolInfo = new SubRewardPoolInfo(); user.getActivityManager().setSubRewardPoolInfo(subRewardPoolInfo); } int lay = user.getActivityManager().getSubRewardPoolInfo().getLay(); - int curLay=lay+1; + int curLay = lay + 1; user.getActivityManager().getSubRewardPoolInfo().setLay(curLay); HashMap> integerHashSetHashMap = SBlessingRewardPoolNew.getsBlessingRewardPoolNewHashMap(); //init Activity @@ -149,24 +157,24 @@ public class SubActivity extends AbstractActivity { //init reward SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); - if(null== sBlessingConfigNew){ + if (null == sBlessingConfigNew) { throw new ErrorCodeException(ErrorCode.CFG_NULL); } int[] basicPoolId = sBlessingConfigNew.getBasicPoolId(); - if(basicPoolId.length sBlessingRewardPoolNews = integerHashSetHashMap.get(poolID); - if(null == sBlessingRewardPoolNews){ + if (null == sBlessingRewardPoolNews) { throw new ErrorCodeException(ErrorCode.CFG_NULL); } List ints = new LinkedList<>(); - for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews) { - for (int i = 0; i sBlessingRewardPoolNews1 = integerHashSetHashMap.get(finalPoolId); - for (SBlessingRewardPoolNew sBlessingRewardPoolNew:sBlessingRewardPoolNews1) { + for (SBlessingRewardPoolNew sBlessingRewardPoolNew : sBlessingRewardPoolNews1) { ActivityProgressInfo activityProgressInfo1 = new ActivityProgressInfo(); activityProgressInfo1.setProgrss(0); activityProgressInfo1.setState(0); - activityMission.getActivityMissionMap().put(POOL_INDEX+sBlessingRewardPoolNew.getId(), activityProgressInfo1); + activityMission.getActivityMissionMap().put(POOL_INDEX + sBlessingRewardPoolNew.getId(), activityProgressInfo1); } } } + + @Override + public void onActivityEndOnMySelf(User user) throws Exception { + SGlobalActivity sGlobalActivity = SGlobalActivity.getsGlobalActivityMap().get(id); + + + SBlessingConfigNew sBlessingConfigNew = SBlessingConfigNew.getsBlessingConfigNewHashMap().get(id); + + int removeItemId = sBlessingConfigNew.getCost()[0]; + Item item = user.getItemManager().getItem(removeItemId); + if (item != null) { + int costNum = item.getItemNum(); + //check cost + int[][] cost = new int[1][]; + cost[0] = new int[]{item.getItemId(), item.getItemNum()}; + ItemUtil.itemCost(user, cost, BIReason.SUB_ACTIVITY_CONSUME_FINISH, sGlobalActivity.getId()); + + SItem sItem = SItem.getsItemMap().get(removeItemId); + //give + int integerValue = SSpecialConfig.getIntegerValue(SSpecialConfig.ITEM_1004_RETRIEVE); + if (integerValue == 0) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int[][] rewards = new int[1][]; + rewards[0] = new int[]{16, costNum*integerValue}; + + SItem getItem = SItem.getsItemMap().get(16); + String getName =costNum*integerValue+getItem.getName(); + String title = SErrorCodeEerverConfig.getI18NMessage("activity_item_retrieve_mail_titile"); + String content = SErrorCodeEerverConfig.getI18NMessage("activity_item_retrieve_mail_content", new Object[]{sGlobalActivity.getSesc(),sItem.getName(),costNum,getName}); + String mailReward = ItemUtil.getMailReward(rewards); + int nowTime = (int) (TimeUtils.now() / 1000); + MailLogic.getInstance().sendMail(user.getId(), title, content, mailReward, nowTime, Global.MAIL_EFFECTIVE_TIME); + } + + } } diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 8b23324fe..bb7a32596 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -83,6 +83,7 @@ public class SSpecialConfig implements BaseConfig { public static final String DISCOUNT_MAIN = "discount_main";//关卡礼包 public static final String ANIMAL_BROADCAST_QUALITY = "animal_broadcast_quality"; + public static final String ITEM_1004_RETRIEVE = "item_1004_retrieve";// 结算补发道具16 # 50 @Override public void init() throws Exception { From 3be0f4ff8d873e4ddcbdab6054d7101fcdd238a8 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Sun, 15 Nov 2020 10:58:25 +0800 Subject: [PATCH 10/12] =?UTF-8?q?=E6=9B=B4=E6=8D=A2=E7=9A=AE=E8=82=A4=20?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=88=98=E5=8A=9B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/com/ljsd/jieling/logic/hero/HeroLogic.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 53347e351..40310fae7 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 @@ -1484,7 +1484,7 @@ public class HeroLogic{ Map skinInfo = user.getHeroManager().getSkinInfo(); SHeroSkin sHeroSkin = SHeroSkin.skinMapByType.get(skin); if(sHeroSkin!=null&&sHeroSkin.getMonomerProperty()!=null&&sHeroSkin.getMonomerProperty().length>0){ - if(skinInfo.containsKey(skin)&&skinInfo.get(skin)>TimeUtils.nowInt()){ + if(skinInfo.containsKey(skin)&&(skinInfo.get(skin)==-1||skinInfo.get(skin)>TimeUtils.nowInt())){ combinedAttribute(sHeroSkin.getMonomerProperty(),heroAllAttribute); } } @@ -3308,6 +3308,9 @@ public class HeroLogic{ } hero.setSkin(skinId); + if(isInTeam(user,heroId,1)){ + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid())); + } MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); From 718468b3a156ca1f5fda2d3570dcae5a37852172 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Mon, 9 Nov 2020 13:42:03 +0800 Subject: [PATCH 11/12] =?UTF-8?q?=E6=98=93=E7=BB=8F=E5=AE=9D=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/activity/SeletSubRewardPoolRequestHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java index 629864273..f06a8e466 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/SeletSubRewardPoolRequestHandler.java @@ -73,7 +73,7 @@ public class SeletSubRewardPoolRequestHandler extends BaseHandler=sBlessingRewardPoolNew.getInitializeNum()){ + if(activityProgressInfo1!=null&&activityProgressInfo1.getProgrss()>=sBlessingRewardPoolNew.getInitializeNum()&&activityMission.getV()!=selectId){ throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); } // //check had select From 7e59e809298847f391bad620ca3467bb6e1e48eb Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 15 Dec 2020 15:40:13 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E7=89=B9=E6=9D=83=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/player/PlayerLogic.java | 7 +++++-- 1 file changed, 5 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 cc5b3bf61..a5269e51d 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 @@ -309,8 +309,11 @@ public class PlayerLogic { Set fixVipId = new HashSet<>(); for(Map.Entry vipInfoItem : vipInfo.entrySet()){ //如果这个权限是活动 且永久了 那么需要修复 - if(vipInfoItem.getValue().getEffectTime()==0&&SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(vipInfoItem.getKey()).getUnlockType()==5){ - fixVipId.add(vipInfoItem.getKey()); + if(vipInfoItem.getValue().getEffectTime()==0){ + int unlockType = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(vipInfoItem.getKey()).getUnlockType(); + if(unlockType==5||(unlockType==4&&SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(vipInfoItem.getKey()).getContinueTime().length>0)){ + fixVipId.add(vipInfoItem.getKey()); + } } if(vipInfoItem.getValue().getEffectTime()!=0 && vipInfoItem.getValue().getEffectTime()<=(TimeUtils.now()/1000)){ if(SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(vipInfoItem.getKey()).getPrivilegeType()==VipPrivilegeType.ADVENTURE_BASE_REWARD){