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/BIReason.java b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java index 305942c2e..2fd46609e 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/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/handler/Expedition/HeroNodeGetInfoRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/Expedition/HeroNodeGetInfoRequestHandler.java index aaac75cc1..98ba0285b 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 @@ -79,7 +79,6 @@ public class HeroNodeGetInfoRequestHandler extends BaseHandler 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/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/handler/pokemon/PokemonBookEnableHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java similarity index 60% rename from serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/PokemonBookEnableHandler.java rename to serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java index 4f2b7d025..47de7395d 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/PokemonBookEnableHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/pokemon/AllBookEnableHandler.java @@ -13,14 +13,14 @@ import org.springframework.stereotype.Component; * @discribe */ @Component -public class PokemonBookEnableHandler extends BaseHandler { +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.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.ALL_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/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/ActivityType.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/ActivityType.java index 0a0c96287..3770447d7 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,8 @@ public interface ActivityType { int SHEJI_ACTIVITY = 60;//社稷大典 int GOOD_LUCK= 61;//扭转乾坤 int COW_FLY_SKY = 62;//牛气冲天 - int FIFTEEN_LOGIN = 63;//十五日签到 + int LUCKY_GET = 63;//福星高照 + int FIFTEEN_LOGIN = 64;//十五日签到 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 2a97ece92..1e8165a13 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 @@ -68,6 +68,7 @@ public enum ActivityTypeEnum { GOOD_LUCK(ActivityType.GOOD_LUCK,DefaultEmptyActivity::new), COW_FLY_SKY(ActivityType.COW_FLY_SKY,CowFlySkyActivity::new), FIFTEEN_LOGIN(ActivityType.FIFTEEN_LOGIN,FifteenActivity::new), + LUCKY_GET(ActivityType.LUCKY_GET,LuckyGetActivity::new), ; private int type; 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..d73afc5bc --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LuckyGetActivity.java @@ -0,0 +1,103 @@ +package com.ljsd.jieling.logic.activity; + +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.jbean.ActivityMission; +import com.ljsd.jieling.jbean.ActivityProgressInfo; +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; + +import java.util.*; + +/** + * @author lvxinran + * @date 2021/3/30 + * @discribe + */ +public class LuckyGetActivity extends AbstractActivity{ + + + public LuckyGetActivity(int id) { + super(id); + } + + @Override + 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); + long zeroTime = TimeUtils.getBeginOfDay(startTime); + int[] onceArrayValue = SSpecialConfig.getOnceArrayValue(SSpecialConfig.FU_XING); + long buyTimeDeadLine = zeroTime + TimeUtils.DAY * onceArrayValue[0];//截止购买的时间 + user.getActivityManager().getActivityMissionMap().get(id).setCreatTime(buyTimeDeadLine); + if(buyTimeDeadLine=activityMission.getCreatTime()){ + activityMission.setV(2); + } + } + + 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); + + 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; + + } + + @Override + boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { + if(activityProgressInfo.getProgrss()==0||TimeUtils.nowInt() equipMap; + private Set equipBookEnabled = new HashSet<>(); + private Set equipList = new HashSet<>(); private Equip unDetermined; @@ -81,4 +82,22 @@ public class EquipManager extends MongoBase { return equipHandBook; } + + public Set getEquipBookEnabled() { + return equipBookEnabled; + } + + public void addEquipBookEnabled(int bookId) { + equipBookEnabled.add(bookId); + updateString("equipBookEnabled", equipBookEnabled); + + } + + 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/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 ae0fc525c..db8230a46 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 8da9cacf0..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 @@ -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; @@ -61,7 +58,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<>(); @@ -1623,6 +1619,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)); @@ -1630,6 +1636,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(); @@ -1644,13 +1653,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){ @@ -2745,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); } @@ -3094,7 +3104,116 @@ 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 (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); + } + /** + * 激活所有图鉴 + * @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); + } + System.out.println(user.getPlayerInfoManager().getLevel()+":"+bookConfig.getOpenLevel()); + 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)){ + System.out.println(tmp); + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } + //将羁绊加入神将羁绊集合 + heroManager.addHeroHandBookEnabled(bookId); + drop = ItemUtil.drop(user,reward , BIReason.ACTIVATION_HERO_FETTER); + + } + //魂印激活 + if(bookConfig.getFetterType()==2){ + EquipManager equipManager = user.getEquipManager(); + if(equipManager.getEquipBookEnabled().contains(bookId)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + for (int equip:teamers){ + if (!equipManager.getEquipList().contains(equip)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + } + equipManager.addEquipBookEnabled(bookId); + drop = ItemUtil.drop(user,reward , BIReason.ACTIVATION_HERO_FETTER); + + } + //灵兽激活 + 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); + drop = ItemUtil.drop(user,reward , BIReason.ACTIVATION_HERO_FETTER); + } + PlayerInfoProto.UseAndPriceItemResponse.Builder useAndPriceItemResponse = PlayerInfoProto.UseAndPriceItemResponse.newBuilder(); + if (drop != null) { + useAndPriceItemResponse.setDrop(drop); + } + Poster.getPoster().dispatchEvent(new UserMainTeamForceEvent(session.getUid())); + MessageUtil.sendMessage(session,1,messageType.getNumber(),useAndPriceItemResponse.build(),true); + + + } /** * 获取所有异妖 * @param iSession @@ -3138,8 +3257,7 @@ public class HeroLogic{ teamPokemonInfos.add(teamPokemonInfo); } builder.addAllTeamPokemonInfos(teamPokemonInfos) - .addAllPokemonGot(pokemonManager.getPokemonGot()) - .addAllPokemonBookEnabled(pokemonManager.getPokemonBookEnabled()); + .addAllPokemonGot(pokemonManager.getPokemonGot()); } MessageUtil.sendMessage(iSession,1,MessageTypeProto.MessageType.GET_ALL_POKEMON_RESPONSE_VALUE,builder.build(),true); } @@ -3521,38 +3639,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/java/com/ljsd/jieling/logic/item/ItemLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java index 409a4dd02..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 @@ -141,6 +141,7 @@ public class ItemLogic { int msgId = MessageTypeProto.MessageType.USER_AND_PRICE_ITEM_RESPONSE_VALUE; int uid = iSession.getUid(); User user = UserManager.getUser(uid); + EquipManager equipManager=user.getEquipManager(); if (itemList.size() == 0) { throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); } @@ -578,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; @@ -591,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) { @@ -604,6 +607,9 @@ public class ItemLogic { return null; } + public ErrorCode checkHeroResolve(List heroIdsList, User user) { + return checkHeroResolve(heroIdsList,user,true); + } /** * 同步刷新道具数量 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 656751e41..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; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java index ab9c00a6b..a91a87a42 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/ItemUtil.java @@ -568,6 +568,7 @@ public class ItemUtil { if (itemMap.isEmpty()) { return; } + EquipManager equipManager=user.getEquipManager(); List 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(); 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/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 { 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