From 61ffca630c599a03578edd0b0178be58bdde025e Mon Sep 17 00:00:00 2001 From: whb <15647141185@163.com> Date: Fri, 19 Mar 2021 18:41:28 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E7=BE=81=E7=BB=8A=E6=BF=80=E6=B4=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HeroNodeGetInfoRequestHandler.java | 4 +- ...Handler.java => AllBookEnableHandler.java} | 6 +- .../pokemon/GetAllPropertyInfoHandler.java | 24 ++++ .../ljsd/jieling/logic/dao/EquipManager.java | 18 ++- .../ljsd/jieling/logic/dao/HeroManager.java | 17 ++- .../ljsd/jieling/logic/dao/ItemManager.java | 4 - .../jieling/logic/dao/PokemonManager.java | 1 - .../logic/expedition/ExpeditionLogic.java | 28 ++-- .../ljsd/jieling/logic/hero/HeroLogic.java | 124 +++++++++++++----- .../src/main/resources/application.properties | 6 +- .../main/java/config/SSpiritAnimalBook.java | 18 +++ 11 files changed, 178 insertions(+), 72 deletions(-) rename serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/{PokemonBookEnableHandler.java => AllBookEnableHandler.java} (68%) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/GetAllPropertyInfoHandler.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java index d31ec56ce..e8590ee6c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java @@ -88,8 +88,8 @@ public class HeroNodeGetInfoRequestHandler extends BaseHandler { +public class AllBookEnableHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { return MessageTypeProto.MessageType.POKEMON_BOOK_ENABLE_REQUEST; } @Override - public void processWithProto(ISession iSession, HeroInfoProto.PokemonBookEnableRequest proto) throws Exception { - HeroLogic.getInstance().pokemonBookEnable(iSession,proto.getBookId(),MessageTypeProto.MessageType.POKEMON_BOOK_ENABLE_REPONSE); + public void processWithProto(ISession iSession, HeroInfoProto.AllBookEnableRequest proto) throws Exception { + HeroLogic.getInstance().AllBookEnable(iSession,proto.getBookId(),MessageTypeProto.MessageType.POKEMON_BOOK_ENABLE_REPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/GetAllPropertyInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/GetAllPropertyInfoHandler.java new file mode 100644 index 000000000..922ab3fcd --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/GetAllPropertyInfoHandler.java @@ -0,0 +1,24 @@ +package com.ljsd.jieling.handler.pokemon; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.netty.cocdex.PacketNetData; +import com.ljsd.jieling.network.session.ISession; +import rpc.protocols.MessageTypeProto; + +/** + * Description: des + * Author: zsx + * CreateDate: 2021/3/19 16:40 + */ +public class GetAllPropertyInfoHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.GET_ALL_PROPERTY_INFO_REQUEST; + } + + @Override + public void process(ISession iSession, PacketNetData netData) throws Exception { + HeroLogic.getInstance().allBookFetter(iSession,MessageTypeProto.MessageType.GET_ALL_PROPERTY_INFO_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java index d807361d7..4137e88e1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java @@ -1,18 +1,19 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; -import com.ljsd.jieling.logic.activity.event.EquipEvent; -import com.ljsd.jieling.logic.activity.event.Poster; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.mission.GameEvent; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Set; public class EquipManager extends MongoBase { private Map equipMap; + private Set equipBookEnabled = new HashSet<>(); + private Set equipList; private Equip unDetermined; @@ -81,4 +82,15 @@ public class EquipManager extends MongoBase { return equipHandBook; } + + public Set getEquipBookEnabled() { + return equipBookEnabled; + } + + public void addEquipBookEnabled(int bookId) { + equipBookEnabled.add(bookId); + updateString("equipBookEnabled", equipBookEnabled); + + } + } 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 0f49d619a..cd413db03 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 @@ -6,9 +6,11 @@ import com.ljsd.jieling.logic.activity.event.RemoveHeroEvent; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.hero.HongMengAttributeEnum; import config.SSpecialConfig; -import org.luaj.vm2.ast.Str; -import java.util.*; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; public class HeroManager extends MongoBase { @@ -21,6 +23,7 @@ public class HeroManager extends MongoBase { private Map mustRandomCount= new HashMap<>(); private Map heroHandBook = new HashMap<>(); + private Set heroHandBookEnabled = new HashSet<>(); private Map skinInfo = new HashMap<>(); @@ -240,5 +243,15 @@ public class HeroManager extends MongoBase { } } + public Set getHeroHandBookEnabled() { + return heroHandBookEnabled; + } + + public void addHeroHandBookEnabled(int bookId) { + heroHandBookEnabled.add(bookId); + updateString("heroHandBookEnabled", heroHandBookEnabled); + + } + } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java index e5ba12937..8fee7500e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ItemManager.java @@ -1,13 +1,9 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; -import com.ljsd.jieling.db.mongo.MongoKey; -import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.logic.dao.root.User; -import java.util.HashSet; import java.util.Map; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class ItemManager extends MongoBase { diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java index de6e2569e..691e93e8f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PokemonManager.java @@ -1,7 +1,6 @@ package com.ljsd.jieling.logic.dao; import com.ljsd.common.mogodb.MongoBase; -import com.ljsd.jieling.db.mongo.MongoKey; import com.ljsd.jieling.logic.dao.root.User; import java.util.HashMap; 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 5f6bd61d3..fbd35ddc3 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 @@ -1,50 +1,40 @@ package com.ljsd.jieling.logic.expedition; -import com.ljsd.fight.FamilyHeroInfo; -import com.ljsd.jieling.config.clazzStaticCfg.*; +import com.ljsd.jieling.config.clazzStaticCfg.CommonStaticConfig; +import com.ljsd.jieling.config.clazzStaticCfg.PlayStaticConfig; +import com.ljsd.jieling.config.clazzStaticCfg.WorldBossTreasureStaticConfig; import com.ljsd.jieling.core.FunctionIdEnum; import com.ljsd.jieling.core.GlobalsDef; import com.ljsd.jieling.core.HandlerLogicThread; -import com.ljsd.jieling.db.redis.RedisKey; -import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.exception.ErrorCode; import com.ljsd.jieling.exception.ErrorCodeException; import com.ljsd.jieling.globals.Global; import com.ljsd.jieling.handler.map.behavior.BehaviorUtil; import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.OnlineUserManager; -import com.ljsd.jieling.logic.blood.BloodLogic; import com.ljsd.jieling.logic.dao.*; import com.ljsd.jieling.logic.dao.root.User; -import com.ljsd.jieling.logic.fight.FightUtil; -import com.ljsd.jieling.logic.fight.robot.RobotInfo; import com.ljsd.jieling.logic.fight.specialparm.SpecialForTeamBuildEnum; import com.ljsd.jieling.logic.hero.HeroAttributeEnum; import com.ljsd.jieling.logic.hero.HeroLogic; import com.ljsd.jieling.logic.mail.MailLogic; import com.ljsd.jieling.logic.mission.GameEvent; -import com.ljsd.jieling.logic.rank.RankContext; -import com.ljsd.jieling.logic.rank.RankEnum; -import com.ljsd.jieling.logic.rank.RankLogic; -import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.session.ISession; -import rpc.protocols.CommonProto; -import rpc.protocols.Expedition; -import rpc.protocols.MessageTypeProto; -import com.ljsd.jieling.util.*; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.MonsterUtil; import config.*; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.data.redis.core.ZSetOperations; -import rpc.protocols.PlayerInfoProto; +import rpc.protocols.CommonProto; +import rpc.protocols.Expedition; +import rpc.protocols.MessageTypeProto; import util.MathUtils; -import util.StringUtil; import util.TimeUtils; -import java.rmi.server.UID; import java.util.*; import java.util.stream.Collectors; 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 db4f9dc61..9a738010a 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 @@ -60,7 +60,6 @@ public class HeroLogic{ Poster.getPoster().listenEvent(new LeveGiftEventHander(), UserLevelEvent.class); } - public static List transTemplate = new ArrayList<>(); public static List equipSkillPositionTemaplge = new ArrayList<>(6); private static Map> transTemplateByHeroPropertyName = new HashMap<>(); @@ -3074,7 +3073,94 @@ public class HeroLogic{ } //============= 灵兽(异妖)系统 ======================== + public void allBookFetter(ISession session,MessageTypeProto.MessageType messageType) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + EquipManager equipManager = user.getEquipManager(); + Map equipHandBook = equipManager.getEquipHandBook(); + HeroInfoProto.GetAllPropertyInfoResponse.Builder builder = HeroInfoProto.GetAllPropertyInfoResponse.newBuilder(); + //添加灵兽羁绊 + for(int enabled:user.getPokemonManager().getPokemonBookEnabled()){ + builder.addAllBookEnabled(enabled); + } + //添加英雄羁绊 + for (int enabled:user.getHeroManager().getHeroHandBookEnabled()){ + builder.addAllBookEnabled(enabled); + } + //添加魂印羁绊 + for (int enabled:user.getEquipManager().getEquipBookEnabled()){ + builder.addAllBookEnabled(enabled); + } + for (Map.Entry entry:equipHandBook.entrySet()){ + if (entry.getValue()!=0){ + builder.addEquipGot(entry.getKey()); + } + } + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_ALL_PROPERTY_INFO_RESPONSE_VALUE,builder.build(),true); + } + /** + * 激活所有图鉴 + * @param session + * @param bookId + * @param messageType + */ + public void AllBookEnable(ISession session, int bookId, MessageTypeProto.MessageType messageType) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + SSpiritAnimalBook bookConfig = STableManager.getConfig(SSpiritAnimalBook.class).get(bookId); + if(bookConfig==null){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if(user.getPlayerInfoManager().getLevel() heroHandBook = heroManager.getHeroHandBook(); + Set hero=new HashSet<>(); + //将拥有的神将放到set集和中 + for(Map.Entry entry:heroHandBook.entrySet()){ + if (entry.getValue()!=0){ + hero.add(entry.getKey()); + } + } + //判断羁绊神将是否在集合 + for(int tmp:teamers){ + if(!hero.contains(tmp)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } + //将羁绊加入神将羁绊集合 + heroManager.addHeroHandBookEnabled(bookId); + } + //魂印激活 + if(bookConfig.getFetterType()==2){ + + } + //灵兽激活 + if(bookConfig.getFetterType()==3){ + PokemonManager pokemonManager = user.getPokemonManager(); + if(pokemonManager.getPokemonBookEnabled().contains(bookId)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + for(int pokemon:teamers){ + if(!pokemonManager.getPokemonGot().contains(pokemon)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } + pokemonManager.addPokemonBookEnabled(bookId); + } + + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid())); + MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); + + } /** * 获取所有异妖 * @param iSession @@ -3118,8 +3204,8 @@ public class HeroLogic{ teamPokemonInfos.add(teamPokemonInfo); } builder.addAllTeamPokemonInfos(teamPokemonInfos) - .addAllPokemonGot(pokemonManager.getPokemonGot()) - .addAllPokemonBookEnabled(pokemonManager.getPokemonBookEnabled()); + .addAllPokemonGot(pokemonManager.getPokemonGot()); + /*.addAllPokemonBookEnabled(pokemonManager.getPokemonBookEnabled());*/ } MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,builder.build(),true); } @@ -3501,38 +3587,6 @@ public class HeroLogic{ } - /** - * 激活灵兽图鉴 - * @param session - * @param bookId - * @param messageType - */ - public void pokemonBookEnable(ISession session, int bookId, MessageTypeProto.MessageType messageType) throws Exception { - int uid = session.getUid(); - User user = UserManager.getUser(uid); - PokemonManager pokemonManager = user.getPokemonManager(); - if(pokemonManager.getPokemonBookEnabled().contains(bookId)){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - SSpiritAnimalBook bookConfig = STableManager.getConfig(SSpiritAnimalBook.class).get(bookId); - if(bookConfig==null){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - - int[] teamers = bookConfig.getTeamers(); - - for(int pokemon:teamers){ - if(!pokemonManager.getPokemonGot().contains(pokemon)){ - throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); - } - } - - pokemonManager.addPokemonBookEnabled(bookId); - - Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid())); - - MessageUtil.sendMessage(session,1,messageType.getNumber(),null,true); - } /** * 获取所有皮肤信息 diff --git a/serverlogic/src/main/resources/application.properties b/serverlogic/src/main/resources/application.properties index a77f4f5f0..8a90108ef 100644 --- a/serverlogic/src/main/resources/application.properties +++ b/serverlogic/src/main/resources/application.properties @@ -1,5 +1,5 @@ #server info -server.id = 10153 +server.id = 10161 server.openTime = 20190101000101 server.num = 1 server.debug = true @@ -33,7 +33,7 @@ spring.redis.expireTime = -1 #spring.data.mongodb.uri = mongodb://mongouser:ysj#2017#ljsd@111.231.54.96:27017/ysj_wx_1 #spring.data.mongodb2.uri = mongodb://mongouser:ysj#2017#ljsd@111.231.54.96:27017/develop_ysj_wx_1 #mongodb2 develop -spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_10153 +spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_10161 spring.data.mongodbcore.uri = mongodb://60.1.1.14:27017/jl_core #spring.data.mongodb.uri = mongodb://60.1.1.14:27017/jieling_10212 mongodb.options.maxWaitTime = 120000 @@ -62,7 +62,7 @@ netty.allTimeout=35 #core -services.core.ip=60.1.1.153 +services.core.ip=60.1.1.161 services.core.port=7900 services.core.area=1000 services.core.id=1 diff --git a/tablemanager/src/main/java/config/SSpiritAnimalBook.java b/tablemanager/src/main/java/config/SSpiritAnimalBook.java index 55d770422..8e07ab9ee 100644 --- a/tablemanager/src/main/java/config/SSpiritAnimalBook.java +++ b/tablemanager/src/main/java/config/SSpiritAnimalBook.java @@ -16,6 +16,12 @@ public class SSpiritAnimalBook implements BaseConfig { private int activeForce; + private int fetterType; + + private int[][] reward; + + private int openLevel; + @Override public void init() throws Exception { @@ -39,5 +45,17 @@ public class SSpiritAnimalBook implements BaseConfig { return activeForce; } + public int getFetterType() { + return fetterType; + } + + public int[][] getReward() { + return reward; + } + + public int getOpenLevel() { + return openLevel; + } + } \ No newline at end of file From 7c14f87a042557470528355f59928235fda7b9fc Mon Sep 17 00:00:00 2001 From: whb <15647141185@163.com> Date: Thu, 25 Mar 2021 16:05:35 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E5=9B=BE=E9=89=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 5 ++ .../jieling/handler/GetPlayerInfoHandler.java | 4 ++ .../handler/pokemon/AllBookEnableHandler.java | 4 +- .../ljsd/jieling/logic/dao/EquipManager.java | 9 ++- .../ljsd/jieling/logic/hero/HeroLogic.java | 71 +++++++++++++------ .../ljsd/jieling/logic/item/ItemLogic.java | 1 + .../java/com/ljsd/jieling/util/ItemUtil.java | 7 ++ 7 files changed, 78 insertions(+), 23 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 c599497e6..48ded7989 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -168,6 +168,11 @@ public interface BIReason { int GOOD_LUCK_DROP = 96;//扭转乾坤获得 + int ACTIVATION_HERO_FETTER = 97; //激活神将羁绊获得 + int ACTIVATION_EQUIP_FETTER = 98; //激活魂印羁绊获得 + int ACTIVATION_POKEMON_FETTER = 99; //激活灵兽羁绊获得 + + int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 int DECOMPOSE_ITEM_CONSUME = 1002;//分解道具消耗 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java index 9a05c5dee..7b9290704 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/GetPlayerInfoHandler.java @@ -144,6 +144,10 @@ public class GetPlayerInfoHandler extends BaseHandler{ } //图鉴信息 Map heroHandBook = heroManager.getHeroHandBook(); + for (Map.Entry entry:heroHandBook.entrySet()){ + System.out.println(entry.getKey()+":"+entry.getValue()+"神将图鉴"); + + } List heroHandBookList = new ArrayList<>(); heroHandBook.forEach((k,v)->heroHandBookList.add(CommonProto.EveryHeroHandBook.newBuilder().setHeroId(k).setMaxStar(v).build())); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java index f8fd595f1..47de7395d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java @@ -16,11 +16,11 @@ import org.springframework.stereotype.Component; public class AllBookEnableHandler extends BaseHandler { @Override public MessageTypeProto.MessageType getMessageCode() { - return MessageTypeProto.MessageType.POKEMON_BOOK_ENABLE_REQUEST; + return MessageTypeProto.MessageType.ALL_BOOK_ENABLE_REQUEST; } @Override public void processWithProto(ISession iSession, HeroInfoProto.AllBookEnableRequest proto) throws Exception { - HeroLogic.getInstance().AllBookEnable(iSession,proto.getBookId(),MessageTypeProto.MessageType.POKEMON_BOOK_ENABLE_REPONSE); + HeroLogic.getInstance().AllBookEnable(iSession,proto.getBookId(),MessageTypeProto.MessageType.ALL_BOOK_ENABLE_REPONSE); } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java index 4137e88e1..68c1e6a43 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/EquipManager.java @@ -13,7 +13,7 @@ public class EquipManager extends MongoBase { private Map equipMap; private Set equipBookEnabled = new HashSet<>(); - private Set equipList; + private Set equipList = new HashSet<>(); private Equip unDetermined; @@ -93,4 +93,11 @@ public class EquipManager extends MongoBase { } + public Set getEquipList() { + return equipList; + } + public void addEquipList(int equipId){ + equipList.add(equipId); + updateString("equipList",equipList); + } } 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 9a738010a..687aac216 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 @@ -37,10 +37,7 @@ import config.*; import manager.STableManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import rpc.protocols.CommonProto; -import rpc.protocols.HeroInfoProto; -import rpc.protocols.MapInfoProto; -import rpc.protocols.MessageTypeProto; +import rpc.protocols.*; import util.MathUtils; import util.StringUtil; import util.TimeUtils; @@ -1614,6 +1611,16 @@ public class HeroLogic{ return pokenSkillPassiveResult.toString(); } + //图鉴属性加成 + public void bonuses(Set bookEnabled,Map heroAllAttribute){ + if (!bookEnabled.isEmpty()){ + Map config = STableManager.getConfig(SSpiritAnimalBook.class); + for(int bootId:bookEnabled){ + int[][] activePara = config.get(bootId).getActivePara(); + combinedAttribute(activePara,heroAllAttribute); + } + } + } public Map calHeroNotBufferAttribute(User user, Hero hero,boolean isForce,int teamId){ Map heroAllAttribute = calHeroAllAttribute(user, hero,isForce); heroAllAttribute.put(HeroAttributeEnum.CurHP.getPropertyId(),heroAllAttribute.get(GlobalsDef.HP_TYPE)); @@ -1621,6 +1628,9 @@ public class HeroLogic{ Map equipMap = hero.getCreateType()==1?user.getExpeditionManager().getEquipMap():user.getEquipManager().getEquipMap(); PokemonManager pokemonManager = user.getPokemonManager(); + HeroManager heroManager=user.getHeroManager(); + EquipManager equipManager=user.getEquipManager(); + SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); if(teamId!=0){ int heroNum = user.getTeamPosManager().getTeamPosForHero().get(teamId).size(); @@ -1635,13 +1645,13 @@ public class HeroLogic{ } //灵兽图鉴加成 Set pokemonBookEnabled = pokemonManager.getPokemonBookEnabled(); - if(!pokemonBookEnabled.isEmpty()){ - Map config = STableManager.getConfig(SSpiritAnimalBook.class); - for(int bootId:pokemonBookEnabled){ - int[][] activePara = config.get(bootId).getActivePara(); - combinedAttribute(activePara,heroAllAttribute); - } - } + bonuses(pokemonBookEnabled,heroAllAttribute); + //神将羁绊加成 + Set heroBookEnabled = heroManager.getHeroHandBookEnabled(); + bonuses(heroBookEnabled,heroAllAttribute); + //魂印图鉴加成 + Set equipBookEnabled = equipManager.getEquipBookEnabled(); + bonuses(equipBookEnabled,heroAllAttribute); //英雄皮肤加成 记得判断皮肤过期 int skin = hero.getSkin(); if(skin!=0){ @@ -3087,17 +3097,17 @@ public class HeroLogic{ for (int enabled:user.getHeroManager().getHeroHandBookEnabled()){ builder.addAllBookEnabled(enabled); } + //添加魂印羁绊 for (int enabled:user.getEquipManager().getEquipBookEnabled()){ builder.addAllBookEnabled(enabled); } - for (Map.Entry entry:equipHandBook.entrySet()){ - if (entry.getValue()!=0){ - builder.addEquipGot(entry.getKey()); - } - } - MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_ALL_PROPERTY_INFO_RESPONSE_VALUE,builder.build(),true); + for (Integer equip:equipManager.getEquipList()) { + builder.addEquipGot(equip); + } + System.out.println(builder.getAllBookEnabledList()+"羁绊"); + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.GET_ALL_PROPERTY_INFO_RESPONSE_VALUE,builder.build(),true); } /** * 激活所有图鉴 @@ -3112,10 +3122,13 @@ public class HeroLogic{ if(bookConfig==null){ throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } + System.out.println(user.getPlayerInfoManager().getLevel()+":"+bookConfig.getOpenLevel()); if(user.getPlayerInfoManager().getLevel() itemProtoList = new CopyOnWriteArrayList<>(); ItemManager itemManager = user.getItemManager(); List sendToFront = new CopyOnWriteArrayList<>(); @@ -575,6 +576,12 @@ public class ItemUtil { Map extraItem = new HashMap<>(itemMap.size()); for (Map.Entry entry : itemMap.entrySet()) { + SItem itemConfig = STableManager.getConfig(SItem.class).get(entry.getKey()); + if (itemConfig.getItemBaseType()==6){ + equipManager.addEquipList(entry.getKey()); + System.out.println(entry.getKey() + "魂印id"); + } + SItem sItem = SItem.getsItemMap().get (entry.getKey()); long itemNumlimit = sItem.getItemNumlimit(); long itemNum = entry.getValue().intValue(); From c4b4415e0090e58dd4f3a7901e8027fe914d743f Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 31 Mar 2021 21:40:07 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/activity/ActivityType.java | 2 +- .../java/com/ljsd/jieling/logic/activity/ActivityTypeEnum.java | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) 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 43827bedf..f1a72cf78 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 @@ -80,7 +80,7 @@ public interface ActivityType { int SHEJI_ACTIVITY = 60;//社稷大典 int GOOD_LUCK= 61;//扭转乾坤 int COW_FLY_SKY = 62;//牛气冲天 - + int LUCKY_GET = 63;//福星高照 int SUB_ACTIVITY = 8000;//易经宝库 int SKIN_RECHARGE_ACTIVITY = 71; int SPECIAL_MONSTER_RANDOM_ACTIVITY = 100;//灵兽限时抽卡 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 ff68e42fa..3b93f6841 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 @@ -67,6 +67,7 @@ public enum ActivityTypeEnum { NEW_GENERAL_ATTACK(ActivityType.NEW_GENERAL_ATTACK,DefaultEmptyActivity::new), GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new), COW_FLY_SKY(ActivityType.COW_FLY_SKY,CowFlySkyActivity::new), + LUCKY_GET(ActivityType.LUCKY_GET,LuckyGetActivity::new), ; private int type; From bfe16940b29d5e401e6840f22508753eed637fe8 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 1 Apr 2021 13:57:12 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E5=82=A8=E5=80=BC=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E3=80=81=E8=81=8A=E5=A4=A9=E4=BF=AE=E6=94=B9=20=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/chat/logic/ChatLogic.java | 23 +++-- .../ljsd/jieling/chat/messge/LoopQueue.java | 2 +- .../jieling/chat/messge/MessageCache.java | 14 ++- .../java/com/ljsd/jieling/globals/Global.java | 1 + .../logic/activity/LuckyGetActivity.java | 89 +++++++++++++++++++ .../activity/event/LuckyGetBuyEvent.java | 26 ++++++ .../ljsd/jieling/logic/store/StoreLogic.java | 3 + 7 files changed, 149 insertions(+), 9 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java index 0b8ecad25..c42d67656 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/logic/ChatLogic.java @@ -66,6 +66,13 @@ public class ChatLogic { case 1: //世界 chatInfoList = MessageCache.worldMsg.getObjs(messageId); break; + case 2://公会 + int guildId = UserManager.getUser(uid).getPlayerInfoManager().getGuildId(); + if(guildId!=0&&MessageCache.guildMsg.containsKey(guildId)){ + chatInfoList = MessageCache.guildMsg.get(guildId).getObjs(messageId); + } + break; + case 3: //好友 Map hmget = RedisUtil.getInstence().hmget(GameApplication.serverId + RedisKey.CUser_Chat + uid); if (hmget != null && hmget.size() != 0){ @@ -183,17 +190,21 @@ public class ChatLogic { break; case 2: //公会 int guildId = user.getPlayerInfoManager().getGuildId(); + messageId = RedisUtil.getInstence().increment(GameApplication.serverId + RedisKey.CHAT_GUILD_MSG_ID +guildId); if(guildId==0){ throw new ErrorCodeException(ErrorCode.CHAT_NO_FAMILY); } - chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,0); - ChatProto.SendChatInfoIndication sendChatInfoIndication = ChatProto.SendChatInfoIndication.newBuilder() - .setChatInfo(chatInfo) - .setType(2) - .build(); - GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId),MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION,sendChatInfoIndication); + chatInfo = CBean2Proto.getChatInfoBuilder(user,message,nowTime,messageId); +// = ChatProto.SendChatInfoIndication.newBuilder() +// .setChatInfo(chatInfo) +// .setType(2) +// .build(); + MessageCache.addGuildMsg(chatInfo,messageId,guildId); + +// GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(guildId),MessageTypeProto.MessageType.SEND_CHAT_INFO_INDICATION,sendChatInfoIndication); break; case 3: //好友 + ChatProto.SendChatInfoIndication sendChatInfoIndication = null; List friends = friendManager.getFriends(); if (!friends.contains(friendId)) { throw new ErrorCodeException(ErrorCode.CHAT_NOT_FRIENDS); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/LoopQueue.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/LoopQueue.java index af2758171..806495039 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/LoopQueue.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/LoopQueue.java @@ -71,7 +71,7 @@ public class LoopQueue { } if(needCompareTime){ - if( (curTime - queueList[nextIndex].timestamp) >= diffTime){ + if(diffTime!=-1&& (curTime - queueList[nextIndex].timestamp) >= diffTime){ break; } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java b/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java index c0f593fb8..d57ddd6a5 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/chat/messge/MessageCache.java @@ -2,13 +2,17 @@ package com.ljsd.jieling.chat.messge; import rpc.protocols.ChatProto; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + public class MessageCache { private static final int capuatiy =200; private static final int msgInterval = 24*3600*1000; - private static final int perCaught= 20; + private static final int perCaught= 30; - public static LoopQueue worldMsg = new LoopQueue(capuatiy,perCaught,msgInterval); + public static LoopQueue worldMsg = new LoopQueue(capuatiy,perCaught,-1); public static LoopQueue sysMsg = new LoopQueue(capuatiy,perCaught,msgInterval); + public static Map guildMsg = new ConcurrentHashMap(); public static void addWordMsg(ChatProto.ChatInfo chatInfo,long messageId){ @@ -18,5 +22,11 @@ public class MessageCache { public static void addSystemMsg(ChatProto.ChatInfo chatInfo,long messageId ){ sysMsg.push(chatInfo,messageId); } + public static void addGuildMsg(ChatProto.ChatInfo chatInfo,long messageId,int guildId){ + if(!guildMsg.containsKey(guildId)){ + guildMsg.put(guildId,new LoopQueue(capuatiy,perCaught,-1)); + } + guildMsg.get(guildId).push(chatInfo,messageId); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java index 3274462fb..bf96379cd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/Global.java @@ -70,6 +70,7 @@ public interface Global { int VIPSTORID = 20; //vip商店id int GODSTORID = 57; //vip商店id + int LUCKY_GET= 70;//5000储值 int LUXURYMONTHCARDID =11;//6豪华月卡 废弃 改版 int WEEKCARDID = 10; //月卡 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java new file mode 100644 index 000000000..6bd7b4ff2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java @@ -0,0 +1,89 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.ActivityManager; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +import com.ljsd.jieling.logic.activity.event.IEvent; +import com.ljsd.jieling.logic.activity.event.LuckyGetBuyEvent; +import com.ljsd.jieling.logic.activity.event.Poster; +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.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SActivityRewardConfig; +import rpc.protocols.CommonProto; +import rpc.protocols.PlayerInfoProto; +import util.TimeUtils; + +import java.util.*; + +/** + * @author lvxinran + * @date 2021/3/30 + * @discribe + */ +public class LuckyGetActivity extends AbstractActivity{ + + + public LuckyGetActivity(int id) { + super(id); + Poster.getPoster().listenEvent(this, LuckyGetBuyEvent.class); + + } + + @Override + public void onEvent(IEvent event) throws Exception { + if (!(event instanceof LuckyGetBuyEvent)) + return; + LuckyGetBuyEvent buyEvent = (LuckyGetBuyEvent) event; + ActivityManager activityManager = buyEvent.getUser().getActivityManager(); + if(!activityManager.getActivityMissionMap().containsKey(id)){ + return; + } + ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); + if(sActivityRewardConfigs == null){return;} + //已经激活购买的商品 + activityMission.setV(1); + //拿到激活当天0点 + long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now()); + for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][1]-1)*(int)(TimeUtils.ONE_DAY/1000)); + activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); + } + } + public boolean takeReward(ISession session, int missionId) throws Exception { + if(missionId!=-1){ + return super.takeReward(session, missionId); + } + User user = UserManager.getUser(session.getUid()); + List reward = new ArrayList<>(); + getAllMissRewards(user,session,reward); + Map itemMap = new HashMap<>(); + reward.forEach(n-> Arrays.stream(n).forEach(m->itemMap.put(m[0],itemMap.getOrDefault(m[0], 0)+m[1]))); + + int[][] rewardArray = ItemUtil.mapToArray(itemMap); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, rewardArray, BIReason.TAKE_ACTIVITY_REWARD); + + PlayerInfoProto.TakeActivityRewardResponse build = PlayerInfoProto.TakeActivityRewardResponse.newBuilder().setDrop(drop).build(); + + reportTakeActivityReward(user,rewardArray,missionId); + + MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + + return true; + + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + if(activityProgressInfo.getProgrss()==0||TimeUtils.nowInt() Date: Sun, 2 May 2021 20:26:14 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=A6=8F=E6=98=9F=E9=AB=98=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/FuxingStoreBuyHandler.java | 26 ++++++++ .../jieling/logic/activity/ActivityLogic.java | 39 ++++++++++++ .../logic/activity/LuckyGetActivity.java | 63 +++++++++++-------- .../activity/event/LuckyGetBuyEvent.java | 26 -------- .../ljsd/jieling/logic/store/StoreLogic.java | 18 ++++-- .../src/main/java/config/SSpecialConfig.java | 2 + 6 files changed, 118 insertions(+), 56 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java delete mode 100644 serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java new file mode 100644 index 000000000..173d07978 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/activity/FuxingStoreBuyHandler.java @@ -0,0 +1,26 @@ +package com.ljsd.jieling.handler.activity; + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.activity.ActivityLogic; +import com.ljsd.jieling.network.session.ISession; +import org.springframework.stereotype.Component; +import rpc.protocols.ActivityProto; +import rpc.protocols.MessageTypeProto; + +/** + * @author lvxinran + * @date 2021/4/19 + * @discribe + */ +@Component +public class FuxingStoreBuyHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.FU_XING_STORE_BUY_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, ActivityProto.FuXingStoreBuyRequest proto) throws Exception { + ActivityLogic.getInstance().fuxingStoreBuy(iSession,proto.getActivityId()); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java index d1ecbb9fd..9a147d81e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityLogic.java @@ -1454,4 +1454,43 @@ public class ActivityLogic implements IEventHandler{ MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); } + + /** + * 福星高照储值 + */ + public void fuxingStoreBuy(ISession session,int activityId) throws Exception { + int uid = session.getUid(); + User user = UserManager.getUser(uid); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(activityId); + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(activityId); + if(activity.getType()!=ActivityType.LUCKY_GET){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + if(activityMission==null||activityMission.getV()!=0||TimeUtils.now()>activityMission.getCreatTime()){//此活动2为已不可购买状态,1为已购买 + throw new ErrorCodeException(ErrorCode.ACTIVITY_NOT_OPEN); + } + + boolean itemCost = ItemUtil.itemCost(user, SSpecialConfig.getTwiceArrayValue(SSpecialConfig.FU_XING_STORE), 1, 1); + if(!itemCost){ + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + List sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(activityId); + if(sActivityRewardConfigs == null){return;} + //已经激活购买的商品 + //拿到激活当天0点 + long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now()); + for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ + ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); + activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][0]-1)*(int)(TimeUtils.ONE_DAY/1000)); + activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); + } + activityMission.setV(1); + //发推送 + AbstractActivity acticityType = ActivityTypeEnum.getActicityType(activityId); + if(acticityType!=null){ + acticityType.sendActivityProgress(session, activityMission, null); + } + MessageUtil.sendMessage(session,1,MessageTypeProto.MessageType.FU_XING_STORE_BUY_RESPONSE_VALUE,null,true); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java index 6bd7b4ff2..9b9128fa1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java @@ -1,18 +1,17 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.globals.BIReason; -import com.ljsd.jieling.jbean.ActivityManager; import com.ljsd.jieling.jbean.ActivityMission; import com.ljsd.jieling.jbean.ActivityProgressInfo; -import com.ljsd.jieling.logic.activity.event.IEvent; -import com.ljsd.jieling.logic.activity.event.LuckyGetBuyEvent; -import com.ljsd.jieling.logic.activity.event.Poster; 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.util.ItemUtil; import com.ljsd.jieling.util.MessageUtil; +import com.ljsd.jieling.util.ToolsUtil; import config.SActivityRewardConfig; +import config.SGlobalActivity; +import config.SSpecialConfig; import rpc.protocols.CommonProto; import rpc.protocols.PlayerInfoProto; import util.TimeUtils; @@ -29,33 +28,33 @@ public class LuckyGetActivity extends AbstractActivity{ public LuckyGetActivity(int id) { super(id); - Poster.getPoster().listenEvent(this, LuckyGetBuyEvent.class); - } @Override - public void onEvent(IEvent event) throws Exception { - if (!(event instanceof LuckyGetBuyEvent)) - return; - LuckyGetBuyEvent buyEvent = (LuckyGetBuyEvent) event; - ActivityManager activityManager = buyEvent.getUser().getActivityManager(); - if(!activityManager.getActivityMissionMap().containsKey(id)){ - return; - } - ActivityMission activityMission = activityManager.getActivityMissionMap().get(id); + public void initActivity(User user) { + SGlobalActivity activity = SGlobalActivity.getsGlobalActivityMap().get(id); + + ActivityLogic.getInstance().initAllActivityMission(user.getActivityManager().getActivityMissionMap(),id); + + long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1); + int[] onceArrayValue = SSpecialConfig.getOnceArrayValue(SSpecialConfig.FU_XING); + long buyTimeDeadLine = startTime + TimeUtils.DAY * onceArrayValue[0];//截止购买的时间 + user.getActivityManager().getActivityMissionMap().get(id).setCreatTime(buyTimeDeadLine); + if(buyTimeDeadLine sActivityRewardConfigs = SActivityRewardConfig.getsActivityRewardConfigByActivityId(id); - if(sActivityRewardConfigs == null){return;} - //已经激活购买的商品 - activityMission.setV(1); - //拿到激活当天0点 - long beginOfDay = TimeUtils.getBeginOfDay(TimeUtils.now()); - for(SActivityRewardConfig sActivityRewardConfig : sActivityRewardConfigs){ - ActivityProgressInfo activityProgressInfo = new ActivityProgressInfo(); - activityProgressInfo.setProgrss((int)(beginOfDay/1000)+(sActivityRewardConfig.getValues()[1][1]-1)*(int)(TimeUtils.ONE_DAY/1000)); - activityMission.getActivityMissionMap().put(sActivityRewardConfig.getId(), activityProgressInfo); } } + + @Override + public void onResume(User user) throws Exception { + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + if(activityMission.getV()!=1&&TimeUtils.now()>=activityMission.getCreatTime()){ + activityMission.setV(2); + } + } + public boolean takeReward(ISession session, int missionId) throws Exception { if(missionId!=-1){ return super.takeReward(session, missionId); @@ -75,6 +74,20 @@ public class LuckyGetActivity extends AbstractActivity{ MessageUtil.sendMessage(session, 1, rewardResponseValue, build, true); + ActivityMission activityMission = user.getActivityManager().getActivityMissionMap().get(id); + boolean isAll = true; + for(Map.Entry entry:activityMission.getActivityMissionMap().entrySet()){ + if(entry.getValue().getState()==0){ + isAll=false; + break; + } + } + if(isAll){ + activityMission.setV(2); + } + + sendActivityProgress(session,activityMission , null); + return true; } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java deleted file mode 100644 index 0526c9cd8..000000000 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/event/LuckyGetBuyEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.ljsd.jieling.logic.activity.event; - -import com.ljsd.jieling.logic.dao.root.User; - -/** - * @author lvxinran - * @date 2021/3/30 - * @discribe - */ -public class LuckyGetBuyEvent implements IEvent { - - private User user; - - public LuckyGetBuyEvent(User user) { - this.user = user; - } - - - public User getUser() { - return user; - } - - public void setUser(User user) { - this.user = user; - } -} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java index eb90a3268..9ecf9b7b4 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/store/StoreLogic.java @@ -108,8 +108,8 @@ public class StoreLogic implements IEventHandler { } } } else if (sStoreTypeConfig.getStoreOpenRule() == 7) { - long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, 0, 1); - long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_ROLE, 0, 2); + long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 1); + long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER, 0, 2); if (now < startTime || now > endTime) { continue; } @@ -376,6 +376,17 @@ public class StoreLogic implements IEventHandler { if(storeManager.getStoreInfoMap().containsKey(sStoreTypeConfig.getId())){ continue; } + if(sStoreTypeConfig.getStoreOpenRule() == 7){ + + long startTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(), sStoreTypeConfig.getEndTimeLong(),ActivityType.OPEN_TYPE_SERVER,0, 1); + long endTime = ToolsUtil.getTimeLong(sStoreTypeConfig.getStartTimeLong(),sStoreTypeConfig.getEndTimeLong(), ActivityType.OPEN_TYPE_SERVER,0, 2); + long now = TimeUtils.now(); + if(now>startTime&&now itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); + storeManager.newStoreInfo(sStoreTypeConfig.getId(),refreshTimeDelay,startTime,endTime,itemNumMap); + } + + } if (sStoreTypeConfig.getStoreOpenRule() == 1 && sStoreTypeConfig.getId() !=8){ //固定商店 Map itemNumMap = getStoreItem(sStoreTypeConfig.getId(),sStoreTypeConfig,user); long startTime = 0; @@ -500,9 +511,6 @@ public class StoreLogic implements IEventHandler { int vipLeve = user.getPlayerInfoManager().getVipLevel(); user.getPlayerInfoManager().setHadTakeLevelBoxVip(vipLeve); } - if(storeId==Global.LUCKY_GET){ - Poster.getPoster().dispatchEvent(new LuckyGetBuyEvent(user)); - } if(sStoreConfig.getOpenPrivilege()!=null){ PlayerInfoProto.PrivilegeIndication.Builder indication = PlayerInfoProto.PrivilegeIndication.newBuilder(); int[] openPrivilege = sStoreConfig.getOpenPrivilege(); diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 360b5a9d5..558b9568e 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -97,6 +97,8 @@ public class SSpecialConfig implements BaseConfig { public static final String GUILD_LEADER_PASS_TIME = "GuildLeaderPassTime";//会长不上线移交时长 public static final String GUILD_DISMISS_TIME ="GuildDismissTime";//公会全员不上线解散时长 public static final String SHEN_ZHUANG = "ShenZhuang";//神装礼包推送等级 + public static final String FU_XING = "FuXing";//福星高照可购买天数和可领取天数 + public static final String FU_XING_STORE = "FuXingStore";//福星高照购买解锁奖励 @Override public void init() throws Exception { From 448c13c55017c881a7391e9c388164e26aa7482a Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 19 May 2021 00:01:18 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E7=A6=8F=E6=98=9F=E9=AB=98=E7=85=A7?= =?UTF-8?q?=E8=AE=A1=E6=97=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java index 9b9128fa1..d73afc5bc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java @@ -37,8 +37,9 @@ public class LuckyGetActivity extends AbstractActivity{ ActivityLogic.getInstance().initAllActivityMission(user.getActivityManager().getActivityMissionMap(),id); long startTime = ToolsUtil.getTimeLong(activity.getStartTimeLong(),activity.getEndTimeLong(),activity.getTime(),user.getPlayerInfoManager().getCreateTime(), 1); + long zeroTime = TimeUtils.getBeginOfDay(startTime); int[] onceArrayValue = SSpecialConfig.getOnceArrayValue(SSpecialConfig.FU_XING); - long buyTimeDeadLine = startTime + TimeUtils.DAY * onceArrayValue[0];//截止购买的时间 + long buyTimeDeadLine = zeroTime + TimeUtils.DAY * onceArrayValue[0];//截止购买的时间 user.getActivityManager().getActivityMissionMap().get(id).setCreatTime(buyTimeDeadLine); if(buyTimeDeadLine Date: Wed, 19 May 2021 00:18:01 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=BD=92=E5=85=83=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/hero/HeroLogic.java | 3 ++- .../com/ljsd/jieling/logic/item/ItemLogic.java | 15 ++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) 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 0b6c6d336..856f66f19 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 @@ -2754,7 +2754,8 @@ public class HeroLogic{ User user = UserManager.getUser(uid); List heroList = new ArrayList<>(1); heroList.add(heroId); - ErrorCode err = ItemLogic.getInstance().checkHeroResolve(heroList, user); + boolean teamCheck = false; + ErrorCode err = ItemLogic.getInstance().checkHeroResolve(heroList, user,teamCheck); if(null!=err){ throw new ErrorCodeException(err); } 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 c3e4cccb6..61f25736a 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 @@ -579,7 +579,7 @@ public class ItemLogic { return tempReturn; } - public ErrorCode checkHeroResolve(List heroIdsList, User user) { + public ErrorCode checkHeroResolve(List heroIdsList, User user,boolean teamCheck) { HeroManager heroManager = user.getHeroManager(); if (heroIdsList.size() == 0) { return ErrorCode.ITEM_DECOMPOSE_HERO_NO; @@ -592,10 +592,12 @@ public class ItemLogic { if (hero.getIsLock() == 1) { return ErrorCode.ITEM_DECOMPOSE_HERO_LOCK; } - int[] teamId = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HERO_RESOLVE_LICENCE); - boolean battleArray = HeroLogic.getInstance().isBattleArray(user, heroId, teamId); - if (!battleArray) { - return ErrorCode.ITEM_DECOMPOSE_HERO_TEAM; + if(teamCheck){ + int[] teamId = SSpecialConfig.getOnceArrayValue(SSpecialConfig.HERO_RESOLVE_LICENCE); + boolean battleArray = HeroLogic.getInstance().isBattleArray(user, heroId, teamId); + if (!battleArray) { + return ErrorCode.ITEM_DECOMPOSE_HERO_TEAM; + } } SItem sItem = SItem.getsItemMap().get(hero.getTemplateId()); if (sItem.getIfResolve() == 0) { @@ -605,6 +607,9 @@ public class ItemLogic { return null; } + public ErrorCode checkHeroResolve(List heroIdsList, User user) { + return checkHeroResolve(heroIdsList,user,true); + } /** * 同步刷新道具数量