From e6f8b3973d44ecd892a465f74eeedc4b9fdb178f Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 5 Jun 2020 15:17:22 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=8E=92=E8=A1=8C=E6=A6=9C=E4=BC=98?= =?UTF-8?q?=E5=8C=96=EF=BC=8C=E6=8A=BD=E5=8D=A1=E4=BB=A3=E7=A0=81=E5=9B=9E?= =?UTF-8?q?=E6=BB=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/globals/BIReason.java | 2 + .../jieling/handler/RankFirstHandler.java | 25 +++++++++ .../com/ljsd/jieling/handler/RankHandler.java | 3 -- .../handler/workshop/RankProudHandler.java | 27 ++++++++++ .../jieling/logic/GlobalDataManaager.java | 2 + .../ljsd/jieling/logic/dao/PlayerManager.java | 16 ++++++ .../ljsd/jieling/logic/hero/HeroLogic.java | 14 ++--- .../jieling/logic/player/PlayerLogic.java | 1 + .../ljsd/jieling/logic/rank/RankLogic.java | 51 +++++++++++++++++++ .../logic/rank/rankImpl/AbstractRank.java | 28 +++++++++- .../src/main/java/config/SSpecialConfig.java | 1 + 11 files changed, 158 insertions(+), 12 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java 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 7fb2efbac..3b5b02df8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -139,6 +139,8 @@ public interface BIReason { int EXCEPTION_TREASURE_REWARD = 77;//天空密境积分奖励 + int PROUD_REWARD = 78;//膜拜获得金币奖励 + 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/RankFirstHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java new file mode 100644 index 000000000..31e55fca2 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankFirstHandler.java @@ -0,0 +1,25 @@ +package com.ljsd.jieling.handler; + +import com.ljsd.jieling.logic.rank.RankLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/6/5 + * @discribe + */ +@Component +public class RankFirstHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.RANK_GET_FIRST_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.RankFirstRequest proto) throws Exception { + RankLogic.getInstance().getRankFirstInfo(iSession,proto.getTypesList(),MessageTypeProto.MessageType.RANK_GET_FIRST_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java index bcb37c075..52241dd66 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/RankHandler.java @@ -1,9 +1,6 @@ package com.ljsd.jieling.handler; -import com.ljsd.jieling.handler.map.MapLogic; -import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankLogic; -import com.ljsd.jieling.netty.cocdex.PacketNetData; import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.protocols.MessageTypeProto; import com.ljsd.jieling.protocols.PlayerInfoProto; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java new file mode 100644 index 000000000..575df3498 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/workshop/RankProudHandler.java @@ -0,0 +1,27 @@ +package com.ljsd.jieling.handler.workshop; + + +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.rank.RankLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.protocols.PlayerInfoProto; +import org.springframework.stereotype.Component; + +/** + * @author lvxinran + * @date 2020/6/5 + * @discribe + */ +@Component +public class RankProudHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.RANK_PROUD_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.RankProudRequest proto) throws Exception { + RankLogic.getInstance().rankProud(iSession,proto.getRankType(), MessageTypeProto.MessageType.RANK_PROUD_RESPONSE); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java index 62d411f35..675564d8c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/GlobalDataManaager.java @@ -351,6 +351,8 @@ public class GlobalDataManaager implements IManager { }else { user.getPlayerInfoManager().setIsdayFirst(0); } + //刷新膜拜信息 + user.getPlayerInfoManager().setProudInfo(new HashSet<>()); } if (TimeUtils.isOverTime(0,user.getPlayerInfoManager().getLoginTime())) { flushGoodsTimes(user); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java index 5f20b6568..d688dd672 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/PlayerManager.java @@ -103,6 +103,8 @@ public class PlayerManager extends MongoBase { private String maxforceHero; + private Set proudInfo = new HashSet<>(); + public PlayerManager(){ this.setRootCollection(User._COLLECTION_NAME); } @@ -689,4 +691,18 @@ public class PlayerManager extends MongoBase { this.maxforceHero = maxforceHero; updateString("maxforceHero",maxforceHero); } + + public Set getProudInfo() { + return proudInfo; + } + + public void addProudInfo(int type) { + proudInfo.add(type); + updateString("proudInfo",proudInfo); + } + + public void setProudInfo(Set proudInfo) { + this.proudInfo = proudInfo; + updateString("proudInfo",proudInfo); + } } 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 8569f8922..891e9d450 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 @@ -267,20 +267,20 @@ public class HeroLogic{ } int j=0; - //标记是否触发保底 - boolean specialTrigger=false; +// //标记是否触发保底 +// boolean specialTrigger=false; for(int i=0;i rankTypes, MessageTypeProto.MessageType messageType) throws Exception { + PlayerManager playerManager = UserManager.getUser(session.getUid()).getPlayerInfoManager(); + PlayerInfoProto.RankFirstResponse.Builder response = PlayerInfoProto.RankFirstResponse.newBuilder(); + for(int type :rankTypes){ + AbstractRank rankEnum = RankContext.getRankEnum(type); + CommonProto.UserRank.Builder first = rankEnum.getFirst(); + response.addRanks(first.build()); + response.addProud(playerManager.getProudInfo().contains(type)?1:0); + } + MessageUtil.sendMessage(session,1,messageType.getNumber(),response.build(),true); + } + + + /** + * 膜拜 + * @param session + * @param type + * @param messageType + */ + public void rankProud(ISession session, int type,MessageTypeProto.MessageType messageType) throws Exception { + User user = UserManager.getUser(session.getUid()); + PlayerManager playerManager = user.getPlayerInfoManager(); + if(playerManager.getProudInfo().contains(type)){ + throw new ErrorCodeException(ErrorCode.SERVER_SELF_DEFINE); + } + playerManager.addProudInfo(type); + int[] drop = SSpecialConfig.getOnceArrayValue(SSpecialConfig.REWARD_OF_WORSHIP); + CommonProto.Drop.Builder dropBuilder = ItemUtil.drop(user, new int[][]{drop}, BIReason.PROUD_REWARD); + PlayerInfoProto.RankProudResponse response = PlayerInfoProto.RankProudResponse.newBuilder().setDrop(dropBuilder.build()).build(); + MessageUtil.sendMessage(session,1,messageType.getNumber(),response,true); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java index 0757cf17f..2d2a6b3cd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/rank/rankImpl/AbstractRank.java @@ -89,6 +89,24 @@ public abstract class AbstractRank implements IRank { public Set> getRankByKey(String rkey,int start,int end){ return RedisUtil.getInstence().getZsetreverseRangeWithScores(redisKey, rkey, start, end); } + + //获取第一名信息 + public CommonProto.UserRank.Builder getFirst() throws Exception { + Set> rankByKey = getRankByKey("", 0, 1); + CommonProto.UserRank.Builder builder = CommonProto.UserRank.newBuilder(); + if(rankByKey.size()!=1){ + return builder; + } + ZSetOperations.TypedTuple data = rankByKey.iterator().next(); + User everyUser = UserManager.getUser(Integer.parseInt(data.getValue()), true); + CommonProto.RankInfo.Builder everyRankInfo = CommonProto.RankInfo.newBuilder() + .setRank(1) + .setParam1(getParam1(data.getScore())) + .setParam2(getParam2(data.getScore())) + .setParam3(getParam3(data.getScore())); + builder = getOneUserRank(everyUser,everyRankInfo); + return builder; + } protected PlayerInfoProto.RankResponse.Builder getAllUserResponse(Set> zsetreverseRangeWithScores,int start) throws Exception{ PlayerInfoProto.RankResponse.Builder builder = PlayerInfoProto.RankResponse.newBuilder(); forEach(start,zsetreverseRangeWithScores,(index,data)->{ @@ -108,6 +126,10 @@ public abstract class AbstractRank implements IRank { .setParam1(getParam1(data.getScore())) .setParam2(getParam2(data.getScore())) .setParam3(getParam3(data.getScore())); + CommonProto.UserRank.Builder oneUserRank = getOneUserRank(everyUser, everyRankInfo); + builder.addRanks(oneUserRank); + } + public CommonProto.UserRank.Builder getOneUserRank(User everyUser,CommonProto.RankInfo.Builder everyRankInfo){ CommonProto.UserRank.Builder everyRank = CommonProto.UserRank.newBuilder() .setUid(everyUser.getId()) .setUserName(everyUser.getPlayerInfoManager().getNickName()) @@ -115,8 +137,9 @@ public abstract class AbstractRank implements IRank { .setHeadFrame(everyUser.getPlayerInfoManager().getHeadFrame()) .setLevel(everyUser.getPlayerInfoManager().getLevel()) .setRankInfo(everyRankInfo) - .setForce(everyUser.getPlayerInfoManager().getMaxForce()); - builder.addRanks(everyRank); + .setForce(everyUser.getPlayerInfoManager().getMaxForce()) + .setSex(everyUser.getPlayerInfoManager().getSex()); + return everyRank; } protected void getMyInfo(User user,String rkey,PlayerInfoProto.RankResponse.Builder allUserResponse){ @@ -178,4 +201,5 @@ public abstract class AbstractRank implements IRank { public double getScoreById(int uid,String rkey){ return RedisUtil.getInstence().getZSetScore(redisKey,rkey, String.valueOf(uid)); } + } diff --git a/tablemanager/src/main/java/config/SSpecialConfig.java b/tablemanager/src/main/java/config/SSpecialConfig.java index 3a7daa5f6..7bacceb56 100644 --- a/tablemanager/src/main/java/config/SSpecialConfig.java +++ b/tablemanager/src/main/java/config/SSpecialConfig.java @@ -63,6 +63,7 @@ public class SSpecialConfig implements BaseConfig { public static final String GUILD_TECHNOLOGY_RETURN_PERCENT = "guild_technology_return_percent";//公会技能重置返还材料比例 实际百分比为填写数值/10000 public static final String LOTTERY_ENERGY_COST = "lottery_energy_cost";//钻石抽积攒仙缘能量(原非酋气息)抽奖消耗 public static final String EXPEDITION_REBORN = "expedition_reborn";// 大闹天宫复活道具id + public static final String REWARD_OF_WORSHIP = "reward_of_worship";//膜拜获得金币奖励 @Override public void init() throws Exception { From 886ac0c143b1711e7afbda422f3236f5e58c35a7 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 5 Jun 2020 16:49:00 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=8A=BD=E5=8D=A1=E6=81=A2=E5=A4=8D?= =?UTF-8?q?=E4=B9=8B=E5=89=8D=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/hero/HeroLogic.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 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 818990978..239ed197a 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 @@ -273,14 +273,14 @@ public class HeroLogic{ randCount++; poolCount++; int randomPoolId = pooId; -// if(!specialTrigger){ -// randomPoolId = getSpecialPoolByRandcount(sLotterySetting, randCount,poolCount); -// specialTrigger=true; -// } - if(randomPoolId==0){ - randomPoolId = getPooId(sLotterySetting); + int specialPoolId = getSpecialPoolByRandcount(sLotterySetting, randCount,poolCount); + if(specialPoolId == 0){ + if(randomPoolId==0){ + randomPoolId = getPooId(sLotterySetting); + } + }else{ + randomPoolId =specialPoolId; } -// totalCount++; SLotteryRewardConfig sLotteryRewardConfig = randomHeroByPoolId(randomPoolId, totalCount, user.getPlayerInfoManager().getLevel()); LOGGER.info("the uid={},the type={},the poolId={},reward={},poolCount={}",uid,type,randomPoolId,sLotteryRewardConfig.getId(),poolCount);