From 834f6e303e0ec11fec235a1adb217434513f8f65 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Wed, 9 Sep 2020 08:13:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AB=E6=97=A5=E7=99=BB=E5=BD=95=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=EF=BC=8C=E5=85=AC=E4=BC=9A=E5=89=AF=E6=9C=AC=E8=BE=B9?= =?UTF-8?q?=E7=95=8C=EF=BC=8C=E4=B8=8D=E5=8F=91=E6=8E=92=E8=A1=8C=E5=A5=96?= =?UTF-8?q?=E5=8A=B1=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gamecommon/src/main/java/util/TimeUtils.java | 21 +++- .../handler/map/mapType/EndlessMap.java | 4 - .../logic/activity/NewEightActivity.java | 2 +- .../logic/activity/NewWelfareActivity.java | 3 +- .../logic/family/GuildChallengeLogic.java | 117 ++++++++++++------ .../ljsd/jieling/thread/task/MinuteTask.java | 3 - 6 files changed, 102 insertions(+), 48 deletions(-) diff --git a/gamecommon/src/main/java/util/TimeUtils.java b/gamecommon/src/main/java/util/TimeUtils.java index 933844561..c498a8367 100644 --- a/gamecommon/src/main/java/util/TimeUtils.java +++ b/gamecommon/src/main/java/util/TimeUtils.java @@ -139,7 +139,7 @@ public class TimeUtils { public static void main(String[] args) { - long lastHour = getNextWeekendStartTime(1,5); + int lastHour = getOverTimeCount(1599602400000L,1600462810000L,5); System.out.println(lastHour); } @@ -1381,4 +1381,23 @@ public class TimeUtils { return (Integer.MAX_VALUE-now()/1000)/Math.pow(10,9); } + + /** + * 返回两个事件中间过了几个hour时 + * @param time1 + * @param time2 + * @param hour + * @return + */ + public static int getOverTimeCount(long time1,long time2,int hour){ + long last = getLastOrUnderHour(time1, hour, 0, false); + long under = getLastOrUnderHour(time2, hour, 0, true); + if(last>under){ + return 0; + } + if(last==under){ + return 1; + } + return (int) Math.floor((under-last)/(HOUR*24D)); + } } \ No newline at end of file diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/EndlessMap.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/EndlessMap.java index c7451ae94..b0e7afd47 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/EndlessMap.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/map/mapType/EndlessMap.java @@ -221,10 +221,6 @@ public class EndlessMap extends AbstractMap{ for (int i = 0 ; i heroAllAttribute = HeroLogic.getInstance().calHeroNotBufferAttribute(user, hero,false,GlobalsDef.ENDLESS_TEAM); -// int blood = (int)((heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId())/10000d)* endlessHeroInfo.get(heroId)); - bloodMap.put(heroId,(10000-endlessHeroInfo.get(heroId))/100); } pveFightEvent.setAttackBloodMap(bloodMap); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewEightActivity.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewEightActivity.java index a44d41640..f03faa4c1 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewEightActivity.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/activity/NewEightActivity.java @@ -21,7 +21,7 @@ public class NewEightActivity extends AbstractActivity { @Override boolean takeRewardsProcess(ISession session, SActivityRewardConfig sActivityRewardConfig, ActivityProgressInfo activityProgressInfo) throws Exception { User user = UserManager.getUser(session.getUid()); - if(TimeUtils.getSoFarWentDays(user.getPlayerInfoManager().getCreateTime(),System.currentTimeMillis())currBossId){ + guildInfo.setCurrBossId(currBossId+1); + guildInfo.setBossHpRemain(0); + } + } + } int isRefresh = 0 ; //先清除特权 @@ -99,10 +111,18 @@ public class GuildChallengeLogic { if(guildMyInfo.getLastMonsterId()!=0&&currBossId==guildMyInfo.getLastMonsterId()&&guildMyInfo.getGuildChallengeDamage()>0){ canSweep = 1; } + int remainHp; + if(bossHpRemain==0){ + remainHp = 0; + }else if(bossHpRemain==-1){ + remainHp = -1; + }else{ + remainHp = (int)(bossHpRemain*10000/config.getMonsterHp()); + } Family.GetGuildChallengeInfoResponse response = Family.GetGuildChallengeInfoResponse.newBuilder() .setCanSweep(canSweep) .setCurBoss(currBossId) - .setBlood(bossHpRemain==0?10000:(int)(bossHpRemain*10000/config.getMonsterHp())) + .setBlood(remainHp) .setBuffTime(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffOverTime():0) .setBuffCount(guildInfo.getBuffOverTime()> TimeUtils.nowInt()?guildInfo.getBuffIndex():0) .setSweepDamage(guildMyInfo.getGuildChallengeDamage()) @@ -138,7 +158,8 @@ public class GuildChallengeLogic { int kill = 0; long damage = 0; GuildInfo guildInfo; - SGuildCheckpointConfig config = STableManager.getConfig(SGuildCheckpointConfig.class).get(bossId); + Map configMap = STableManager.getConfig(SGuildCheckpointConfig.class); + SGuildCheckpointConfig config = configMap.get(bossId); if(config==null){ throw new ErrorCodeException("配置不存在"+bossId); } @@ -164,7 +185,7 @@ public class GuildChallengeLogic { buffList.add(config.getAttributePromote()[buffIndex-1]); pveFightEvent.setBuffIds(buffList); } - if(guildInfo.getBossHpRemain()!=0){ + if(guildInfo.getBossHpRemain()!=0&&guildInfo.getBossHpRemain()!=-1){ List hp = new ArrayList<>(); for(int i = 0 ; i <6;i++){ if(i==1){ @@ -183,8 +204,12 @@ public class GuildChallengeLogic { if(checkResult[0]==1) { kill = 1; //重置boss血量 - guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); - guildInfo.setBossHpRemain(0); + if(guildInfo.getCurrBossId()!=configMap.size()){ + guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); + guildInfo.setBossHpRemain(0); + }else{ + guildInfo.setBossHpRemain(-1); + } //加公会经验 Map levelConfigMap = STableManager.getConfig(SGuildLevelConfig.class); if (guildInfo.getExp() + config.getLegionExp() >= levelConfigMap.get(guildInfo.getLevel()).getExp()) { @@ -218,8 +243,12 @@ public class GuildChallengeLogic { } else { guildInfo.updateExp(guildInfo.getExp() + config.getLegionExp()); } - guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); - guildInfo.setBossHpRemain(0); + if(guildInfo.getCurrBossId()!=configMap.size()){ + guildInfo.setCurrBossId(guildInfo.getCurrBossId() + 1); + guildInfo.setBossHpRemain(0); + }else{ + guildInfo.setBossHpRemain(-1); + } kill=1; } damage = guildMyInfo.getGuildChallengeDamage(); @@ -233,33 +262,36 @@ public class GuildChallengeLogic { long score = Double.valueOf(rank.getScoreById(user.getId(), guildId+":"+bossId)).longValue(); rank.addRank(uid,guildId+":"+bossId,score==-1?damage:score+damage); if(kill==1){ - GuildLogic.sendFamilyBaseUpdateIndication(guildInfo); - Map> members = guildInfo.getMembers(); - for(Set items : members.values()){ - for(Integer sendUid : items){ - if(!OnlineUserManager.sessionMap.containsKey(sendUid)){ - continue; + //如果不是最后一个boss更特权 + if(guildInfo.getCurrBossId()!=configMap.size()){ + GuildLogic.sendFamilyBaseUpdateIndication(guildInfo); + Map> members = guildInfo.getMembers(); + for(Set items : members.values()){ + for(Integer sendUid : items){ + if(!OnlineUserManager.sessionMap.containsKey(sendUid)){ + continue; + } + AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{ + GuildMyInfo guildMyInfo = user1.getGuildMyInfo(); + if(guildMyInfo.getGuildChallengeDamage()==0){ + return; + } + if(guildMyInfo.getRefreshedBoss().contains(bossId)) { + return; + } + int[] refreshPrivilege = config.getPrivilege(); + for(int clearPrivilege:refreshPrivilege){ + user1.getPlayerInfoManager().clearVipCount(clearPrivilege); + } + user1.getPlayerInfoManager().removeVipPriviliageId(3013); + user1.getStoreManager().removeStoreItemInfo(7,10031); + StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7)); + guildMyInfo.setLastMonsterId(bossId+1); + guildMyInfo.setGuildChallengeDamage(0); + guildMyInfo.addRefreshedBoss(bossId); + }); + ProtocolsManager.getInstance().updateAyncWorker(worker); } - AyyncWorker worker = new AyyncWorker(UserManager.getUser(sendUid),false,(user1)->{ - GuildMyInfo guildMyInfo = user1.getGuildMyInfo(); - if(guildMyInfo.getGuildChallengeDamage()==0){ - return; - } - if(guildMyInfo.getRefreshedBoss().contains(bossId)) { - return; - } - int[] refreshPrivilege = config.getPrivilege(); - for(int clearPrivilege:refreshPrivilege){ - user1.getPlayerInfoManager().clearVipCount(clearPrivilege); - } - user1.getPlayerInfoManager().removeVipPriviliageId(3013); - user1.getStoreManager().removeStoreItemInfo(7,10031); - StoreLogic.sendStoreUpdateIndication(user1.getId(),user1.getStoreManager().getStoreInfoMap().get(7)); - guildMyInfo.setLastMonsterId(bossId+1); - guildMyInfo.setGuildChallengeDamage(0); - guildMyInfo.addRefreshedBoss(bossId); - }); - ProtocolsManager.getInstance().updateAyncWorker(worker); } } //异步发奖 @@ -270,9 +302,16 @@ public class GuildChallengeLogic { }else{ drop = ItemUtil.drop(user, new int[]{config.getReward()}, 1, 0, 1); } - double blood = guildInfo.getBossHpRemain(); + int remainHp; + if(guildInfo.getBossHpRemain()==0){ + remainHp = 0; + }else if(guildInfo.getBossHpRemain()==-1){ + remainHp = -1; + }else{ + remainHp = (int)(guildInfo.getBossHpRemain()*10000D/config.getMonsterHp()); + } Family.GuildChallengeIndication.Builder indication = Family.GuildChallengeIndication.newBuilder() - .setBlood(guildInfo.getBossHpRemain()==0?10000:(int)(blood*10000/config.getMonsterHp())) + .setBlood(remainHp) .setCurBoss(guildInfo.getCurrBossId()); GuildLogic.sendIndicationToMemberWithoutUser(guildInfo, MessageTypeProto.MessageType.GUILD_CHALLENGE_INDICATION,indication.build(),uid); @@ -391,8 +430,12 @@ public class GuildChallengeLogic { if(config==null){ continue; } - String mailReward = ItemUtil.getMailReward(config.getRankingReward()); - MailLogic.getInstance().sendMail(Integer.parseInt(rankInfo.getValue()), title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + String uid = rankInfo.getValue(); + User user = UserManager.getUser(Integer.parseInt(uid)); + if (user.getPlayerInfoManager().getGuildId()==guildId){ + String mailReward = ItemUtil.getMailReward(config.getRankingReward()); + MailLogic.getInstance().sendMail(Integer.parseInt(uid), title, content, mailReward, TimeUtils.nowInt(), Global.MAIL_EFFECTIVE_TIME); + } index++; } // 排行不清除 diff --git a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java index b4a4329ff..b7688cb7f 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/thread/task/MinuteTask.java @@ -15,10 +15,8 @@ import com.ljsd.jieling.handler.map.MapLogic; import com.ljsd.jieling.hotfix.HotfixUtil; import com.ljsd.jieling.ktbeans.BeanBuilder.KtBeanBuilderUtils; import com.ljsd.jieling.ktbeans.KTRequestBeans.LoginParamType; -import com.ljsd.jieling.ktbeans.ReportUtil; import com.ljsd.jieling.ktbeans.parmsBean.ParamEventBean; import com.ljsd.jieling.ktbeans.sendbeans.KTAppOnline; -import com.ljsd.jieling.ktbeans.sendbeans.ReportServerEvent; import com.ljsd.jieling.logic.GlobalDataManaager; import com.ljsd.jieling.logic.OnlineUserManager; import com.ljsd.jieling.logic.SituationLogic; @@ -40,7 +38,6 @@ import com.ljsd.jieling.logic.question.QuestionLogic; import com.ljsd.jieling.logic.store.BuyGoodsLogic; import com.ljsd.jieling.logic.store.StoreLogic; import com.ljsd.jieling.network.server.ProtocolsManager; -import com.ljsd.jieling.network.session.ISession; import com.ljsd.jieling.util.MessageUtil; import manager.STableManager; import org.slf4j.Logger;