From 8f20e526809486ab9363908f3b3e819aa452f452 Mon Sep 17 00:00:00 2001 From: lvxinran Date: Tue, 24 Sep 2019 21:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AC=E4=BC=9A=E6=88=98=E6=9C=80=E7=BB=88?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../family/FamilyFightAttackHandler.java | 3 ++- .../jieling/logic/family/GuildFightLogic.java | 26 ++++++++++--------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightAttackHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightAttackHandler.java index bb221cafd..0c602d794 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightAttackHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/family/FamilyFightAttackHandler.java @@ -17,6 +17,7 @@ public class FamilyFightAttackHandler extends BaseHandler heroAttribute = defendInfo.getHeroAttribute(); //防守血量处理 - CommonProto.FightTeamInfo fightDefendTeamInfo = BloodLogic.getInstance().fightDataMakeUp(userDefend,heroAttribute,501); + CommonProto.FightTeamInfo fightDefendTeamInfo = BloodLogic.getInstance().fightDataMakeUp(defendInfo.getHeroSkills(),heroAttribute,defendInfo.getPokenmonSkills()); //攻击者血量处理 CommonProto.FightTeamInfo fightAttackTeamInfo = null; List heroAttackFightInfos = new ArrayList<>(); @@ -408,7 +405,7 @@ public class GuildFightLogic { } StringBuilder skillSb = new StringBuilder(); StringBuilder propertySb = new StringBuilder(); - String heroSkill = HeroLogic.getInstance().getHeroSkills(userDefend, hero, skillSb).toString(); + String heroSkill = HeroLogic.getInstance().getHeroSkills(userAttack, hero, skillSb).toString(); Map heroAttributeMap = HeroLogic.getInstance().calHeroNotBufferAttribute(userAttack, hero, false, 502); for(Map.Entry blood:attackBloodMap.entrySet()){ if(teamHero.getHeroId().equals(blood.getKey())){ @@ -474,7 +471,9 @@ public class GuildFightLogic { indexAttack++; } }else{ - int memberType = GuildLogic.getMemberType(defendUid, GuilidManager.guildInfoMap.get(defendGuildId).getMembers()); + PlayerInfoCache player = RedisUtil.getInstence().getMapEntry(RedisKey.PLAYER_INFO_CACHE, "", String.valueOf(defendUid), PlayerInfoCache.class); + + int memberType =player.getGuildPosition(); int maxStar = sGuildSetting.getStarNum()[memberType-1]; int lessStar = maxStar - dieCount*maxStar/5; //倍数k(maxStar/5) @@ -484,10 +483,10 @@ public class GuildFightLogic { redisUtil.putMapEntry(RedisKey.FAMILY_ATTACK_BLOOD,String.valueOf(userAttack.getId()),attack.getHeroId(),100); } } - redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(defendGuildId), String.valueOf(userDefend.getId()), defendInfo); + redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT, String.valueOf(gid), String.valueOf(defendUid), defendInfo); //发送indication Family.DefeatResponse fightResponse = Family.DefeatResponse.newBuilder().setUid(defendUid).setTeamLostStar(getStar).build(); - GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(userDefend.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse); +// GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(gid), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse); GuildLogic.sendIndicationToMember(GuilidManager.guildInfoMap.get(userAttack.getPlayerInfoManager().getGuildId()), MessageTypeProto.MessageType.FAMILY_DEFEATE_INDICATION,fightResponse); //获得星数处理 int attackGuildId = userAttack.getPlayerInfoManager().getGuildId(); @@ -498,11 +497,11 @@ public class GuildFightLogic { } redisUtil.zsetAddOne(attackRankKey,String.valueOf(userAttack.getId()),starCount+getStar); //建筑星数 - Integer haveGotStar = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR, String.valueOf(attackGuildId), String.valueOf(defendBuildId), int.class); + Integer haveGotStar = redisUtil.getMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR, String.valueOf(attackGuildId), String.valueOf(defendInfo.getBuildId()), int.class); if(haveGotStar==null){ haveGotStar = 0; } - redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR,String.valueOf(attackGuildId),String.valueOf(defendBuildId),haveGotStar+getStar); + redisUtil.putMapEntry(RedisKey.FAMILY_FIGHT_CAL_STAR,String.valueOf(attackGuildId),String.valueOf(defendInfo.getBuildId()),haveGotStar+getStar); Family.FamilyFightAttackResponse response = Family.FamilyFightAttackResponse.newBuilder().setResult(fightResult[0]).setStarCount(getStar).setData(fightData).build(); userAttack.getUserMissionManager().onGameEvent(userAttack, GameEvent.FAMILY_FIGHT_ATTACK); MessageUtil.sendMessage(session, 1, messageType.getNumber(), response, true); @@ -639,6 +638,9 @@ public class GuildFightLogic { redisUtil.removeMapEntrys(RedisKey.FAMILY_FIGHT_BUFF,index,String.valueOf(i)); } GuildInfo guildInfo = GuilidManager.guildInfoMap.get(Integer.parseInt(index)); + if(guildInfo==null){ + continue; + } //删除进攻血量信息 for(Map.Entry> entry:guildInfo.getMembers().entrySet()){ for(Integer attackId:entry.getValue()){