From 8e8cc31b08dbc74e20e0a43ccc918b0d13130e11 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 3 Apr 2020 11:45:33 +0800 Subject: [PATCH 1/8] =?UTF-8?q?Task=20=E3=80=90ID1006033=E3=80=91=E3=80=90?= =?UTF-8?q?=E6=96=B0=E6=88=98=E6=96=97=E7=89=88=E6=9C=AC=E3=80=91=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E8=A3=85=E5=A4=87=E5=90=88=E6=88=90=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clazzStaticCfg/ItemStaticConfig.java | 32 ++++++++++++++++++- .../com/ljsd/jieling/globals/BIReason.java | 4 ++- .../com/ljsd/jieling/hotfix/HotfixUtil.java | 4 ++- .../ljsd/jieling/logic/dao/RechargeInfo.java | 2 +- .../ljsd/jieling/logic/item/ItemLogic.java | 13 ++++++++ .../src/main/java/config/SEquipConfig.java | 9 ++++++ 6 files changed, 60 insertions(+), 4 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/ItemStaticConfig.java b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/ItemStaticConfig.java index efc578183..8627d5e8b 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/ItemStaticConfig.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/config/clazzStaticCfg/ItemStaticConfig.java @@ -1,11 +1,15 @@ package com.ljsd.jieling.config.clazzStaticCfg; import com.ljsd.jieling.util.ItemUtil; +import config.SEquipConfig; import config.SRewardGroup; import config.SRewardItem; import manager.AbstractClassStaticConfig; +import manager.STableManager; import manager.Table; +import java.util.HashMap; +import java.util.Map; import java.util.Set; /** @@ -15,12 +19,13 @@ import java.util.Set; */ public class ItemStaticConfig extends AbstractClassStaticConfig { + private Map> euipTppes; @Override public void registConfigs(Set registConfigs) { registConfigs.add(SRewardItem.class.getAnnotation(Table.class).name()); registConfigs.add(SRewardGroup.class.getAnnotation(Table.class).name()); - + registConfigs.add(SEquipConfig.class.getAnnotation(Table.class).name()); } @Override @@ -31,5 +36,30 @@ public class ItemStaticConfig extends AbstractClassStaticConfig { } catch (Exception e) { LOGGER.error("SRewardItem|SRewardGroup init fail"); } + try { + euipTppes = new HashMap<>(); + Map config = STableManager.getConfig(SEquipConfig.class); + config.forEach((k,v)->{ + int type = v.getPosition(); + Map orDefault = euipTppes.getOrDefault(type, new HashMap<>()); + orDefault.putIfAbsent(v.getStar(),k); + euipTppes.putIfAbsent(type,orDefault); + }); + }catch (Exception e){ + LOGGER.error("exception"); + } } + + public Map> getEuipTppes() { + return euipTppes; + } + + public int getEquipByStar(int type, int star){ + Map integerIntegerMap = euipTppes.get(type); + if(null == integerIntegerMap){ + return 0; + } + return integerIntegerMap.getOrDefault(star,0); + } + } 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 127a26155..6aa8994ea 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/globals/BIReason.java @@ -113,7 +113,7 @@ public interface BIReason { int EXPEDITION_BOX_REWARD = 65;//猎妖之路宝箱奖励 int EXPEDITION_DROP_REWARD = 66;//猎妖之路奖励 - + int COMPLEX_EQUIP = 67;//合成装备 int ADVENTURE_UPLEVEL_CONSUME = 1000;//秘境升级 int SECRETBOX_CONSUME = 1001;//秘盒抽卡 @@ -209,6 +209,8 @@ public interface BIReason { int CHAMPIONM_EXCHANGE_CONSUME = 1050;//巅峰赛兑换 + int COMPLEX_EQUIP_CONSUME = 1051; //合成英雄 + diff --git a/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java index fb248193c..b4f0299eb 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/hotfix/HotfixUtil.java @@ -65,7 +65,9 @@ public class HotfixUtil implements IEventHandler { } LOGGER.debug("HotfixUtil->currVerion={},version={}", currVerion, version); - + if (SysUtil.isWindows()) { + return; + } //版本发生了变化,热更新 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java index 4cc10e184..f6a242941 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/RechargeInfo.java @@ -246,7 +246,7 @@ public class RechargeInfo extends MongoBase{ public void setMonthSaveAmt(int monthSaveAmt) { this.monthSaveAmt = monthSaveAmt; - updateString("monthSaveAmt",smonthSaveAmt); + updateString("monthSaveAmt",monthSaveAmt); } public int getSmonthSaveAmt() { 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 faece47ab..2087eb5ac 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 @@ -562,4 +562,17 @@ public class ItemLogic { ItemLogUtil.addLogQueue(itemLog); } + /** + * 获取指定装备的所有装备 过滤掉已穿戴 + * @param user + * @param equipid + * @return + */ + public static TreeSet getEquipByID(User user, int equipid) { + TreeSet equiplist = new TreeSet<>(); + user.getEquipManager().getEquipMap().entrySet().stream().filter(stringEquipEntry -> + StringUtil.isEmpty(stringEquipEntry.getValue().getHeroId()) && stringEquipEntry.getValue().getEquipId() == equipid + ).forEach(stringEquipEntry -> equiplist.add(stringEquipEntry.getKey())); + return equiplist; + } } diff --git a/tablemanager/src/main/java/config/SEquipConfig.java b/tablemanager/src/main/java/config/SEquipConfig.java index a8b39cd3b..03069efed 100644 --- a/tablemanager/src/main/java/config/SEquipConfig.java +++ b/tablemanager/src/main/java/config/SEquipConfig.java @@ -33,6 +33,7 @@ public class SEquipConfig implements BaseConfig { private int score; + private int star; @Override public void init() throws Exception { @@ -92,4 +93,12 @@ public class SEquipConfig implements BaseConfig { } public int getIfShow(){return ifShow; } + + public int getStar() { + return star; + } + + public void setStar(int star) { + this.star = star; + } } \ No newline at end of file From 64fabcd9d7068d77176d5d2203c3fca6b222424a Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Fri, 3 Apr 2020 11:45:56 +0800 Subject: [PATCH 2/8] =?UTF-8?q?Task=20=E3=80=90ID1006033=E3=80=91=E3=80=90?= =?UTF-8?q?=E6=96=B0=E6=88=98=E6=96=97=E7=89=88=E6=9C=AC=E3=80=91=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E8=A3=85=E5=A4=87=E5=90=88=E6=88=90=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../handler/equip/ComplexEquipHandler.java | 194 ++++++++++++++++++ .../main/java/config/SEquipStarsConfig.java | 37 ++++ 2 files changed, 231 insertions(+) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexEquipHandler.java create mode 100644 tablemanager/src/main/java/config/SEquipStarsConfig.java diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexEquipHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexEquipHandler.java new file mode 100644 index 000000000..d1e87ab47 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/equip/ComplexEquipHandler.java @@ -0,0 +1,194 @@ +package com.ljsd.jieling.handler.equip; + +import com.ljsd.jieling.config.clazzStaticCfg.ItemStaticConfig; +import com.ljsd.jieling.exception.ErrorCode; +import com.ljsd.jieling.exception.ErrorCodeException; +import com.ljsd.jieling.globals.BIReason; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.Equip; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.logic.hero.HeroLogic; +import com.ljsd.jieling.logic.item.ItemLogic; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.protocols.CommonProto; +import com.ljsd.jieling.protocols.HeroInfoProto; +import com.ljsd.jieling.protocols.MessageTypeProto; +import com.ljsd.jieling.util.CBean2Proto; +import com.ljsd.jieling.util.ItemUtil; +import com.ljsd.jieling.util.MessageUtil; +import config.SEquipStarsConfig; +import manager.STableManager; + +import java.util.*; + +/** + * Description: 合成装备 + * Author: zsx + * CreateDate: 2020/4/2 15:48 + */ +public class ComplexEquipHandler extends BaseHandler { + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.EQUIP_COMPLEX_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, HeroInfoProto.ComplexEquipRequest proto) throws Exception { + + int uid = iSession.getUid(); + User user = UserManager.getUser(uid); + if (user == null) { + throw new ErrorCodeException(ErrorCode.UNKNOWN); + } + if (proto.getStar() != 0) {//手动合成 + //check param and cnf + if (proto.getNum() <= 0) { + throw new ErrorCodeException(ErrorCode.SERVER_DEFINE); + } + int needStar = proto.getStar() - 1; + if (needStar <= 0) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int targetEquip = STableManager.getFigureConfig(ItemStaticConfig.class).getEquipByStar(proto.getType(), proto.getStar()); + if (targetEquip == 0) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int equipId = STableManager.getFigureConfig(ItemStaticConfig.class).getEquipByStar(proto.getType(), needStar); + if (equipId == 0) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + Set equipByIDs = ItemLogic.getEquipByID(user, equipId); + + SEquipStarsConfig sEquipStarsConfig = STableManager.getConfig(SEquipStarsConfig.class).get(needStar); + if (null == sEquipStarsConfig) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + SEquipStarsConfig sTargetEquipStarsConfig = STableManager.getConfig(SEquipStarsConfig.class).get(proto.getStar()); + if (null == sTargetEquipStarsConfig) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + int needcount = sEquipStarsConfig.getRankupCount(); + if (equipByIDs.size() / needcount < proto.getNum()) { + //数据不够 + throw new ErrorCodeException(ErrorCode.UNKNOWN); + } + + //check cost + Map consumeMap = new HashMap<>(); + for (int i = 0; i < proto.getNum(); i++) { + int[][] sumConsume = sTargetEquipStarsConfig.getRankupResources(); + HeroLogic.getInstance().combinedAttribute(sumConsume, consumeMap); + } + boolean enough = ItemUtil.itemCost(user, consumeMap, BIReason.COMPLEX_EQUIP_CONSUME, 0); + if (!enough) { + throw new ErrorCodeException(ErrorCode.ITEM_NOT_ENOUGH); + } + + //drop + int[][] dropItems = new int[1][]; + dropItems[0] = new int[2]; + dropItems[0][0] = targetEquip; + dropItems[0][1] = proto.getNum(); + CommonProto.Drop.Builder drop = ItemUtil.drop(user, dropItems, BIReason.COMPLEX_EQUIP); + HeroInfoProto.ComplexEquipResponse.Builder response = HeroInfoProto.ComplexEquipResponse.newBuilder(); + + //remove hero + int i = 1; + for (String id : equipByIDs) { + if (i > proto.getNum() * needcount) { + break; + } + response.addEquipIds(id); + user.getEquipManager().remove(id); + i++; + } + response.setDrop(drop); + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EQUIP_COMPLEX_RESPONSE_VALUE, response.build(), true); + + } else { + + Map> euipTppes = STableManager.getFigureConfig(ItemStaticConfig.class).getEuipTppes(); + Map integerIntegerMap = new TreeMap<>(euipTppes.getOrDefault(proto.getType(), new HashMap<>())); + + Set equipadds =new HashSet<>(); + Map consumeMap = new HashMap<>(); + List< CommonProto.Equip> equips = new LinkedList<>(); + Set newids = new HashSet<>(); + for (Map.Entry entry : integerIntegerMap.entrySet()) { + //star conf + int targetstar = entry.getKey()+1; + SEquipStarsConfig sTargetEquipStarsConfig = STableManager.getConfig(SEquipStarsConfig.class).get(targetstar); + if (null == sTargetEquipStarsConfig) { + break; + } + SEquipStarsConfig sEquipStarsConfig = STableManager.getConfig(SEquipStarsConfig.class).get(entry.getKey()); + if (null == sEquipStarsConfig) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + int targetEquipId = STableManager.getFigureConfig(ItemStaticConfig.class).getEquipByStar(proto.getType(), targetstar); + if (targetEquipId == 0) { + break; + } + int equipId = STableManager.getFigureConfig(ItemStaticConfig.class).getEquipByStar(proto.getType(),entry.getKey()); + if (equipId == 0) { + throw new ErrorCodeException(ErrorCode.CFG_NULL); + } + + + TreeSet equipByIDs = ItemLogic.getEquipByID(user, equipId); + int canConNum =equipByIDs.size()/sEquipStarsConfig.getRankupCount(); + if(canConNum<=0){ + continue; + } + //check cost + boolean enough; + int needcount=0; + + for (int i = 0; i < canConNum; i++) { + int[][] sumConsume = sEquipStarsConfig.getRankupResources(); + Map consumeMapTem = new HashMap<>(); + HeroLogic.getInstance().combinedAttribute(sumConsume, consumeMapTem); + enough = ItemUtil.checkCost(user, consumeMapTem); + if (!enough) { + break; + } + + //生成装备 混合消耗 + Equip equip = new Equip(user.getId(),targetEquipId); + user.getEquipManager().addEquip(user,equip); + newids.add(equip.getId());//后面合成可能会被删除 + + needcount += sEquipStarsConfig.getRankupCount(); + HeroLogic.getInstance().combinedAttribute(sumConsume, consumeMap); + } + + //消耗装备 + int i = 1; + for (String id : equipByIDs.descendingSet()) { + if (i > needcount) { + break; + } + if(!newids.contains(id)){ + equipadds.add(id); + }else { + newids.remove(id); + } + user.getEquipManager().remove(id); + i++; + } + } + for (String id:newids) { + equips.add(CBean2Proto.getEquipProto( user.getEquipManager().getEquipMap().get(id))); + } + ItemUtil.itemCost(user, consumeMap, BIReason.COMPLEX_EQUIP_CONSUME, 0); + CommonProto.Drop.Builder drop = CommonProto.Drop.newBuilder().addAllEquipId(equips); + HeroInfoProto.ComplexEquipResponse.Builder response = HeroInfoProto.ComplexEquipResponse.newBuilder(); + response.addAllEquipIds(equipadds); + response.setDrop(drop); + System.out.print(response.build().toString()); + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.EQUIP_COMPLEX_RESPONSE_VALUE, response.build(), true); + } + } +} diff --git a/tablemanager/src/main/java/config/SEquipStarsConfig.java b/tablemanager/src/main/java/config/SEquipStarsConfig.java new file mode 100644 index 000000000..0260a8818 --- /dev/null +++ b/tablemanager/src/main/java/config/SEquipStarsConfig.java @@ -0,0 +1,37 @@ +package config; + +import manager.STableManager; +import manager.Table; + +import java.util.Map; + +@Table(name ="EquipStarsConfig") +public class SEquipStarsConfig implements BaseConfig { + + private int id; + + private int rankupCount; + + private int[][] rankupResources; + + + @Override + public void init() throws Exception { + + } + + + public int getId() { + return id; + } + + public int getRankupCount() { + return rankupCount; + } + + public int[][] getRankupResources() { + return rankupResources; + } + + +} \ No newline at end of file From 586c38221dcff7a0513be492a0e1f3a0368369c6 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 1 May 2020 16:14:33 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E7=89=B9=E6=9D=83=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=8F=AF=E5=8F=A0=E5=8A=A0=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=EF=BC=8C=E7=AD=BE=E5=88=B0bug=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ljsd/jieling/logic/dao/PlayerManager.java | 17 ++++++++++------- .../main/java/config/SPrivilegeTypeConfig.java | 4 ++-- 2 files changed, 12 insertions(+), 9 deletions(-) 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 3e10d85f1..fdb02bf0e 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 @@ -340,19 +340,22 @@ public class PlayerManager extends MongoBase { return; } long maxTime; - if(config.getContinueTime()==0){ - maxTime = 0; - }else{ + VipInfo newVipInfo = new VipInfo(); + if(config.getContinueTime()!=null){ if(vipInfo.containsKey(privilageId)){ + if(config.getContinueTime()[1]==1&&TimeUtils.now()/1000vipInfo.get(privilageId).getEffectTime()?(TimeUtils.now()/1000):vipInfo.get(privilageId).getEffectTime(); - maxTime = maxTime+config.getContinueTime(); + maxTime = maxTime+config.getContinueTime()[0]; }else { - maxTime = TimeUtils.now()/1000+config.getContinueTime(); + maxTime = TimeUtils.now()/1000+config.getContinueTime()[0]; } maxTime = (int)(TimeUtils.getLastOrUnderHour(maxTime*1000,5,true)/1000); + newVipInfo.setEffectTime((int)maxTime); } - vipInfo.put(privilageId,new VipInfo(0,(int)maxTime)); - updateString("vipInfo", vipInfo); + this.vipInfo.put(privilageId,newVipInfo); + updateString("vipInfo", this.vipInfo); } public void removeVipPriviliageId(int privilageId){ diff --git a/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java b/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java index 5b71904a8..ecd1c9f52 100644 --- a/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java +++ b/tablemanager/src/main/java/config/SPrivilegeTypeConfig.java @@ -24,7 +24,7 @@ public class SPrivilegeTypeConfig implements BaseConfig { private int[][] condition; - private int continueTime; + private int[] continueTime; private static Map sPrivilegeTypeConfigMap; @@ -84,7 +84,7 @@ public class SPrivilegeTypeConfig implements BaseConfig { return condition; } - public int getContinueTime() { + public int[] getContinueTime() { return continueTime; } From 78b2823b14f8643aa77c217208a11c82852b25b2 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 1 May 2020 16:15:04 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E6=B3=95=E5=AE=9D=E7=AD=89=E7=BA=A7?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E4=B8=80=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java | 2 +- .../src/main/java/com/ljsd/jieling/logic/item/ItemLogic.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java index 196ebc9f5..137f69bfd 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/Hero.java @@ -61,7 +61,7 @@ public class Hero extends MongoBase { this.star = initStar; this.equipByPositionMap = new HashMap<>(); this.soulEquipByPositionMap = new HashMap<>(); - + this.especialEquipLevel = 1; if(initStar!=scHero.getStar()){ Map scHeroRankUpConfigByType = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByShow(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); if(scHeroRankUpConfigByType!=null) { 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 faece47ab..42d6d3830 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 @@ -453,6 +453,9 @@ public class ItemLogic { int especialEquipId = scHero.getEquipTalismana()[1]; SEquipTalismana sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId).get(hero.getEspecialEquipLevel()); + if(sEquipTalismana!=null&&sEquipTalismana.getRankupBasicMaterial()==null){ + throw new ErrorCodeException(ErrorCode.newDefineCode("法宝已最大等级")); + } boolean b = ItemUtil.itemCost(user, sEquipTalismana.getRankupBasicMaterial(), BIReason.ESPECIAL_EQUIP_UP_LEVEL_CONSUME, 1); if(b){ hero.updateEspecial(hero.getEspecialEquipLevel()+1); From 47dbe898dcb6e19b0e6bebfb79c09d53f7afa9c8 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Fri, 3 Apr 2020 16:59:22 +0800 Subject: [PATCH 5/8] =?UTF-8?q?=E6=B3=95=E5=AE=9D=E6=8A=80=E8=83=BD?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ljsd/jieling/logic/hero/HeroLogic.java | 14 +++++++++++--- .../src/main/java/config/SEquipTalismana.java | 1 + 2 files changed, 12 insertions(+), 3 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 75e5e722d..226be9a29 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 @@ -988,10 +988,18 @@ public class HeroLogic{ } } //法宝技能 - int especialEquip = hero.getEspecialEquipLevel(); - if(especialEquip>=0){ - + int[] equipTalismana = tempHero.getEquipTalismana(); + if(hero.getStar() sEquipTalismana = SEquipTalismana.equipTalismanaStarMap.get(especialEquipId); + sEquipTalismana.forEach((k,v)->{ + if(ksb.append(i).append(DIVISION)); + } + }); return sb; } diff --git a/tablemanager/src/main/java/config/SEquipTalismana.java b/tablemanager/src/main/java/config/SEquipTalismana.java index b859ccc2e..f6e8d7711 100644 --- a/tablemanager/src/main/java/config/SEquipTalismana.java +++ b/tablemanager/src/main/java/config/SEquipTalismana.java @@ -40,6 +40,7 @@ public class SEquipTalismana implements BaseConfig { for(Map.Entry entry: equipTalismanaMap.entrySet()){ equipTalismanaStarMap.computeIfAbsent(entry.getValue().getTalismanaId(),v->new HashMap<>()).put(entry.getValue().getLevel(),entry.getValue()); } + System.out.println(); } From ca6ebe69407f2591e7504fd268c8c013bffac520 Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Tue, 14 Apr 2020 05:10:57 +0800 Subject: [PATCH 6/8] =?UTF-8?q?=E3=80=90ID1006878=E3=80=91=E3=80=90?= =?UTF-8?q?=E7=AD=BE=E5=88=B0=E3=80=915=E7=82=B9=E5=88=B7=E6=96=B0?= =?UTF-8?q?=E5=90=8E=E8=BF=98=E6=98=AF=E7=AC=AC=E4=B8=80=E5=A4=A9=E7=9A=84?= =?UTF-8?q?=E7=AD=BE=E5=88=B0=E5=A5=96=E5=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ljsd/jieling/logic/activity/ActivityLogic.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 fad28a631..d1cb1ad00 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 @@ -62,7 +62,7 @@ public class ActivityLogic implements IEventHandler{ public void flushEveryDay(User user, PlayerInfoProto.FivePlayerUpdateIndication.Builder fBuilder) throws Exception { //跟新签到天数 - if (!TimeUtils.isSameMonthFiveWithNow(user.getPlayerInfoManager().getOffLineTime())) { + if (user.getPlayerInfoManager().getOffLineTime()!=0&&!TimeUtils.isSameMonthFiveWithNow(user.getPlayerInfoManager().getOffLineTime())) { user.getPlayerInfoManager().setSign(0); user.getPlayerInfoManager().setSignTotay(0); } else if (user.getPlayerInfoManager().getSignTotay() == 1) { From b1b01decdb3ddb1f6d941c8d3408d68db334c7ad Mon Sep 17 00:00:00 2001 From: zhangshanxue Date: Thu, 7 May 2020 20:00:46 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E3=80=90ID1006916=E3=80=91=20=E3=80=90?= =?UTF-8?q?=E6=9C=88=E5=8D=A1=E3=80=91=E5=8F=AA=E5=BC=80=E6=99=AE=E9=80=9A?= =?UTF-8?q?=E6=9C=88=E5=8D=A1=EF=BC=8C=E5=88=B0=E6=9C=9F=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E9=87=91=E9=A2=9D=E4=B8=8D=E5=AF=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/jieling/logic/player/PlayerLogic.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java index 55e8fdcad..129ba607e 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/player/PlayerLogic.java @@ -904,12 +904,11 @@ public class PlayerLogic { PlayerManager playerInfoManager = user.getPlayerInfoManager(); RechargeInfo rechargeInfo = playerInfoManager.getRechargeInfo(); STableManager.getConfig(SMonthcardConfig.class).forEach((integer, sMonthcardConfig) -> { + int time = playerInfoManager.getMonthCard().getOrDefault(integer,0); int state = playerInfoManager.getMonthCardDailyTake().contains(integer)?1:0; int saveAmt = integer==1?rechargeInfo.getMonthSaveAmt():rechargeInfo.getSmonthSaveAmt(); - int time = playerInfoManager.getMonthCard().getOrDefault(integer,0); cardInfos.add(CommonProto.MonthCardInfo.newBuilder().setId(integer).setEndingTime(time).setState(state).setTotleAmt(saveAmt).build()); }); - return cardInfos; } } From fb3c44536115def9971ecae168d8182abea5ca5a Mon Sep 17 00:00:00 2001 From: lvxinran Date: Thu, 9 Apr 2020 19:54:33 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E8=8B=B1=E9=9B=84=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=E5=85=AC=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../activity/LimitRandomCardActivity.java | 7 +++ .../ljsd/jieling/logic/dao/PlayerManager.java | 5 ++ .../ljsd/jieling/logic/hero/HeroLogic.java | 60 ++++++++++++------- .../main/java/config/SCHeroRankUpConfig.java | 4 +- .../src/main/java/config/SEquipTalismana.java | 1 - .../src/main/java/config/SHeroLevlConfig.java | 4 +- 6 files changed, 55 insertions(+), 26 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java index 01d7fd6b4..fce4b6bdc 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/LimitRandomCardActivity.java @@ -1,6 +1,7 @@ package com.ljsd.jieling.logic.activity; import com.ljsd.jieling.core.GlobalsDef; +import com.ljsd.jieling.core.VipPrivilegeType; import com.ljsd.jieling.db.redis.RedisKey; import com.ljsd.jieling.db.redis.RedisUtil; import com.ljsd.jieling.globals.Global; @@ -12,6 +13,7 @@ import com.ljsd.jieling.logic.dao.ActivityProgressInfo; import com.ljsd.jieling.logic.dao.UserManager; import com.ljsd.jieling.logic.dao.root.User; import com.ljsd.jieling.logic.mail.MailLogic; +import com.ljsd.jieling.logic.player.PlayerLogic; import com.ljsd.jieling.logic.rank.RankContext; import com.ljsd.jieling.logic.rank.RankEnum; import com.ljsd.jieling.logic.rank.rankImpl.AbstractRank; @@ -40,6 +42,11 @@ public class LimitRandomCardActivity extends AbstractActivity { Poster.getPoster().listenEvent(this,RandomCardEvent.class); } + @Override + public void initActivity(User user){ + user.getPlayerInfoManager().clearVipCount(VipPrivilegeType.TIME_RANDOM_FREE); + } + @Override public void onEvent(IEvent event) throws Exception { if(! (event instanceof RandomCardEvent) ){ 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 fdb02bf0e..19d64a633 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 @@ -333,6 +333,11 @@ public class PlayerManager extends MongoBase { updateString("vipInfo", vipInfo); setHadTakeDailyBoxVip(-1); } + public void clearVipCount(int priviliageId){ + vipInfo.put(priviliageId,new VipInfo()); + updateString("vipInfo", vipInfo); + + } public void addVipInfo(int privilageId){ SPrivilegeTypeConfig config = SPrivilegeTypeConfig.getsPrivilegeTypeConfigMap().get(privilageId); 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 226be9a29..e11d5bd32 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 @@ -825,23 +825,31 @@ public class HeroLogic{ int templateId = hero.getTemplateId(); SCHero scHero = SCHero.getsCHero().get(templateId); SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsCHero().get(hero.getLevel()); - float characterLevelPara = sHeroLevlConfig.getCharacterLevelPara(); - Map paraForHero = getParaForHero(hero); + int[][] characterLevelPara = sHeroLevlConfig.getCharacterLevelPara(); + Map paraForHero = getParaForHero(hero); Map baseValueMap = new HashMap<>(); baseValueMap.put(GlobalsDef.HP_TYPE,getBaseValueByType(scHero,GlobalsDef.HP_TYPE)); baseValueMap.put(GlobalsDef.ATTACK_TYPE,getBaseValueByType(scHero,GlobalsDef.ATTACK_TYPE)); baseValueMap.put(GlobalsDef.PHYSICAL_DEFENCE_TYPE,getBaseValueByType(scHero,GlobalsDef.PHYSICAL_DEFENCE_TYPE)); baseValueMap.put(GlobalsDef.MAGIC_DEFENCE_TYPE,getBaseValueByType(scHero,GlobalsDef.MAGIC_DEFENCE_TYPE)); - baseValueMap.put(GlobalsDef.SPEED_TYPE,getBaseValueByType(scHero,GlobalsDef.SPEED_TYPE)); for(Map.Entry item : baseValueMap.entrySet()){ Integer attributeType = item.getKey(); Float heroBaseValue = item.getValue(); - if(attributeType == GlobalsDef.SPEED_TYPE){ - result.put (attributeType,(int)(heroBaseValue * sHeroLevlConfig.getSpeedLevelPara() + STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().calSpeed(heroBaseValue, hero.getBreakId()))); - }else{ - result.put(attributeType,(int)(heroBaseValue * ( 1 + paraForHero.get(GlobalsDef.RANKUP_PARA_TYPE)/10000.f) * characterLevelPara + heroBaseValue * paraForHero.get(GlobalsDef.BREAK_PARA_TYPE)/10000.f)); + int[] levelAttr = Arrays.stream(characterLevelPara).filter(param -> param[0] == attributeType).findFirst().get(); + float value = heroBaseValue + levelAttr[1]; + int[][] rankUpParam = (int[][]) paraForHero.get(GlobalsDef.RANKUP_PARA_TYPE); + if(rankUpParam!=null){ + int[] rankAttr = Arrays.stream(rankUpParam).filter(param -> param[0] == attributeType).findFirst().get(); + value = value *(rankAttr[2] == 0 ? 1 : (rankAttr[2] / 10000.f))+rankAttr[1]; + } + int[][] breakParam = (int[][]) paraForHero.get(GlobalsDef.BREAK_PARA_TYPE); + if(breakParam!=null){ + int[] breakAttr = Arrays.stream(breakParam).filter(param -> param[0] == attributeType).findFirst().get(); + value += breakAttr[1]; } + result.put(attributeType,(int)value); + System.out.println(result); } if(!isForce){ Map secondaryFactorMap = scHero.getSecondaryFactorMap(); @@ -856,22 +864,30 @@ public class HeroLogic{ Map result = new HashMap<>(); SCHero scHero = SCHero.getsCHero().get(templateId); SHeroLevlConfig sHeroLevlConfig = SHeroLevlConfig.getsCHero().get(heroLevl); - float characterLevelPara = sHeroLevlConfig.getCharacterLevelPara(); - Map paraForHero = getParaForRobotHero(scHero,heroLevl,templateId); + int[][] characterLevelPara = sHeroLevlConfig.getCharacterLevelPara(); + Map paraForHero = getParaForRobotHero(scHero,heroLevl,templateId); Map baseValueMap = new HashMap<>(); baseValueMap.put(GlobalsDef.HP_TYPE,getBaseValueByType(scHero,GlobalsDef.HP_TYPE)); baseValueMap.put(GlobalsDef.ATTACK_TYPE,getBaseValueByType(scHero,GlobalsDef.ATTACK_TYPE)); baseValueMap.put(GlobalsDef.PHYSICAL_DEFENCE_TYPE,getBaseValueByType(scHero,GlobalsDef.PHYSICAL_DEFENCE_TYPE)); baseValueMap.put(GlobalsDef.MAGIC_DEFENCE_TYPE,getBaseValueByType(scHero,GlobalsDef.MAGIC_DEFENCE_TYPE)); - baseValueMap.put(GlobalsDef.SPEED_TYPE,getBaseValueByType(scHero,GlobalsDef.SPEED_TYPE)); for(Map.Entry item : baseValueMap.entrySet()){ Integer attributeType = item.getKey(); Float heroBaseValue = item.getValue(); - if(attributeType == GlobalsDef.SPEED_TYPE){ - result.put (attributeType,(int)(heroBaseValue * sHeroLevlConfig.getSpeedLevelPara() + STableManager.getFigureConfig(CommonStaticConfig.class).getGameSetting().calSpeed(heroBaseValue, heroBreakId))); - }else{ - result.put(attributeType,(int)(heroBaseValue * ( 1 + paraForHero.get(GlobalsDef.RANKUP_PARA_TYPE)/10000.f) * characterLevelPara + heroBaseValue * paraForHero.get(GlobalsDef.BREAK_PARA_TYPE)/10000.f)); + int[] levelAttr = Arrays.stream(characterLevelPara).filter(param -> param[0] == attributeType).findFirst().get(); + float value = heroBaseValue + levelAttr[1]; + int[][] rankUpParam = (int[][]) paraForHero.get(GlobalsDef.RANKUP_PARA_TYPE); + if(rankUpParam!=null){ + int[] rankAttr = Arrays.stream(rankUpParam).filter(param -> param[0] == attributeType).findFirst().get(); + value *= rankAttr[1] == 0 ? 1 : rankAttr[1] / 10000.f+rankAttr[2]; } + int[][] breakParam = (int[][]) paraForHero.get(GlobalsDef.BREAK_PARA_TYPE); + if(breakParam!=null){ + int[] breakAttr = Arrays.stream(breakParam).filter(param -> param[0] == attributeType).findFirst().get(); + value += breakAttr[1]; + } + + result.put(attributeType,(int)value); } if(!isForce){ Map secondaryFactorMap = scHero.getSecondaryFactorMap(); @@ -900,11 +916,12 @@ public class HeroLogic{ return 0; } - private Map getParaRate(SCHero scHero,int heroStar,int heroLevel,int heroBreakId){ - Map result = new HashMap<>(2); - float rankupPara =0.0f; + private Map getParaRate(SCHero scHero,int heroStar,int heroLevel,int heroBreakId){ + System.out.println(scHero.getId()); + Map result = new HashMap<>(2); + Object rankupPara=null; //突破系数 - float breakPara = 0.0f; + Object breakPara=null; Map scHeroRankUpConfigByTypeOfStar = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByType(GlobalsDef.UP_STAR_TYPE,scHero.getStar()); if(scHeroRankUpConfigByTypeOfStar!= null){ SCHeroRankUpConfig scHeroRankUpConfig = scHeroRankUpConfigByTypeOfStar.get(heroStar-1); @@ -920,7 +937,8 @@ public class HeroLogic{ Map scHeroRankUpConfigByTypOfBreak = STableManager.getFigureConfig(HeroStaticConfig.class).getScHeroRankUpConfigByType(GlobalsDef.BREAK_TYPE,scHero.getStar()); for( SCHeroRankUpConfig scHeroRankUpConfigTmp :scHeroRankUpConfigByTypOfBreak.values()){ - if( heroLevel >= scHeroRankUpConfigTmp.getLimitLevel() && heroBreakId>= scHeroRankUpConfigTmp.getId() && breakPara< scHeroRankUpConfigTmp.getRankupPara()){ +// && breakPara< scHeroRankUpConfigTmp.getRankupPara() + if( heroLevel >= scHeroRankUpConfigTmp.getLimitLevel() && heroBreakId>= scHeroRankUpConfigTmp.getId() ){ breakPara = scHeroRankUpConfigTmp.getRankupPara(); } if(heroLevel < scHeroRankUpConfigTmp.getOpenLevel()){ @@ -932,13 +950,13 @@ public class HeroLogic{ return result; } - private Map getParaForHero(Hero hero){ + private Map getParaForHero(Hero hero){ SCHero scHero = SCHero.getsCHero().get(hero.getTemplateId()); return getParaRate(scHero, hero.getStar(), hero.getLevel(), hero.getBreakId()); } //todo - private Map getParaForRobotHero(SCHero scHero,int level,int breakId){ + private Map getParaForRobotHero(SCHero scHero,int level,int breakId){ return getParaRate(scHero, scHero.getStar(),level, breakId); } diff --git a/tablemanager/src/main/java/config/SCHeroRankUpConfig.java b/tablemanager/src/main/java/config/SCHeroRankUpConfig.java index a07a1a5c5..968b15a89 100644 --- a/tablemanager/src/main/java/config/SCHeroRankUpConfig.java +++ b/tablemanager/src/main/java/config/SCHeroRankUpConfig.java @@ -9,7 +9,7 @@ public class SCHeroRankUpConfig implements BaseConfig{ private int type; - private float rankupPara; + private int[][] rankupPara; private int limitLevel; @@ -41,7 +41,7 @@ public class SCHeroRankUpConfig implements BaseConfig{ return type; } - public float getRankupPara() { + public int[][] getRankupPara() { return rankupPara; } diff --git a/tablemanager/src/main/java/config/SEquipTalismana.java b/tablemanager/src/main/java/config/SEquipTalismana.java index f6e8d7711..b859ccc2e 100644 --- a/tablemanager/src/main/java/config/SEquipTalismana.java +++ b/tablemanager/src/main/java/config/SEquipTalismana.java @@ -40,7 +40,6 @@ public class SEquipTalismana implements BaseConfig { for(Map.Entry entry: equipTalismanaMap.entrySet()){ equipTalismanaStarMap.computeIfAbsent(entry.getValue().getTalismanaId(),v->new HashMap<>()).put(entry.getValue().getLevel(),entry.getValue()); } - System.out.println(); } diff --git a/tablemanager/src/main/java/config/SHeroLevlConfig.java b/tablemanager/src/main/java/config/SHeroLevlConfig.java index c4e857756..93f3d3b08 100644 --- a/tablemanager/src/main/java/config/SHeroLevlConfig.java +++ b/tablemanager/src/main/java/config/SHeroLevlConfig.java @@ -14,7 +14,7 @@ public class SHeroLevlConfig implements BaseConfig{ private int level; - private float characterLevelPara; + private int[][] characterLevelPara; private float speedLevelPara; @@ -47,7 +47,7 @@ public class SHeroLevlConfig implements BaseConfig{ return sHeroLevlConfigMap; } - public float getCharacterLevelPara() { + public int[][] getCharacterLevelPara() { return characterLevelPara; }