From 3e338096d5e04a64923531de2dee31c1b3469046 Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 6 Nov 2019 16:17:01 +0800 Subject: [PATCH 1/2] arena fight result --- .../com/ljsd/jieling/logic/arena/ArenaLogic.java | 16 +++++++++++++++- .../com/ljsd/jieling/logic/dao/ArenaRecord.java | 8 ++++++++ .../com/ljsd/jieling/logic/hero/HeroLogic.java | 5 +++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java index 0e56888f5..e905ee5d3 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/arena/ArenaLogic.java @@ -170,6 +170,14 @@ public class ArenaLogic { if(arenaManager.getCount() != 0){ myscore = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK,Integer.toString(curSeason), Integer.toString(uid)).intValue(); + }else{ + if(curSeason>1){ + int lastScore = RedisUtil.getInstence().getZSetScore(RedisKey.ARENA_RANK, Integer.toString(curSeason - 1), Integer.toString(uid)).intValue(); + if(lastScore!=-1){ + myscore = lastScore; + } + } + } user.getTeamPosManager().setCurTeamPosId(teamId); @@ -189,6 +197,7 @@ public class ArenaLogic { arenaRecord.setAttackForce( HeroLogic.getInstance().calTeamTotalForce(user, GlobalsDef.TEAM_ARENA_DEFENSE,false)); arenaRecord.setCreateTime((int)(System.currentTimeMillis()/1000)); arenaRecord.setId(KeyGenUtils.produceIdByModule(UUIDEnum.ARENARECORD,uid)); + arenaRecord.setFightResult(fightResult); RedisUtil.getInstence().putMapEntry(RedisKey.ARENA_RRECORD,Integer.toString(challengeUid),arenaRecord.getId(),arenaRecord); RedisUtil.getInstence().incrementZsetScore(RedisKey.ARENA_RANK,Integer.toString(curSeason),Integer.toString(challengeUid),defScoreChange); MessageUtil.sendRedIndication(challengeUid,GlobalsDef.ARENA_CHALLENGE_TYPE); @@ -211,7 +220,11 @@ public class ArenaLogic { setMyArenaEnemys(uid,user); arenaManager.updateChallenge(fightResult); //组战斗数据 - ArenaInfoProto.ArenaChallengeResponse build = builder.setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange).addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())).build(); + ArenaInfoProto.ArenaChallengeResponse build = builder + .setMyScoreChange(myscoreChange).setDefScoreChange(defScoreChange) + .addAllArenaEnemys(getArenaEnemyList(arenaManager.getArenaEnemies())) + .setFightResult(fightResult) + .build(); user.getUserMissionManager().onGameEvent(user, GameEvent.ARENA_CHALLENGE,fightResult,myscoreChange + myscore); Poster.getPoster().dispatchEvent(new ArenaChallengeEvent(user.getId())); MessageUtil.sendMessage(session,1, MessageTypeProto.MessageType.ARENA_CHALLENGE_RESPONSE_VALUE,build,true); @@ -535,6 +548,7 @@ public class ArenaLogic { .setAttackInfo(arenaPersonInfo) .setMyScoreChange(arenaRecord.getDefScore()) .setAttackTime(arenaRecord.getCreateTime()) + .setFightResult(arenaRecord.getFightResult()) .build()); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaRecord.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaRecord.java index 397398c99..68d19a858 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaRecord.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/dao/ArenaRecord.java @@ -16,6 +16,8 @@ public class ArenaRecord { private int createTime; + private int fightResult; + public ArenaRecord(){} public int getAttackId() { @@ -66,5 +68,11 @@ public class ArenaRecord { this.id = id; } + public int getFightResult() { + return fightResult; + } + public void setFightResult(int fightResult) { + this.fightResult = fightResult; + } } 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 f5bc39c76..41637a25a 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 @@ -32,6 +32,7 @@ import org.slf4j.LoggerFactory; import util.MathUtils; import util.StringUtil; +import java.math.BigDecimal; import java.rmi.server.ExportException; import java.util.*; import java.util.concurrent.ConcurrentHashMap; @@ -1291,7 +1292,7 @@ public class HeroLogic { effectValue += targetValue; heroAllAttribute.put(targetPropertyId,effectValue); }else{ - propertyPercentMap.put(targetPropertyId,10000+effectValue); + propertyPercentMap.put(targetPropertyId,effectValue); } iterator.remove(); } @@ -1299,7 +1300,7 @@ public class HeroLogic { for(Map.Entry item : propertyPercentMap.entrySet()){ Integer propertyId = item.getKey(); Integer propertyValue = heroAllAttribute.get(propertyId); - heroAllAttribute.put(propertyId,(int)(propertyValue/10000f*item.getValue())); + heroAllAttribute.put(propertyId,propertyValue+BigDecimal.valueOf(propertyValue/10000f).multiply(BigDecimal.valueOf(item.getValue())).intValue()); } Integer maxHp = heroAllAttribute.get(HeroAttributeEnum.Hp.getPropertyId()); Integer curHp = heroAllAttribute.get(HeroAttributeEnum.CurHP.getPropertyId()); From f24b6f3ccb42ceb0b93421ef483c1f780d9ed68a Mon Sep 17 00:00:00 2001 From: wangyuan Date: Wed, 6 Nov 2019 16:21:40 +0800 Subject: [PATCH 2/2] set open server time & fix random reward --- serverlogic/src/main/java/com/ljsd/GameApplication.java | 5 +++-- .../main/java/com/ljsd/jieling/logic/fight/CombatLogic.java | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/serverlogic/src/main/java/com/ljsd/GameApplication.java b/serverlogic/src/main/java/com/ljsd/GameApplication.java index d0237958c..c823012d1 100644 --- a/serverlogic/src/main/java/com/ljsd/GameApplication.java +++ b/serverlogic/src/main/java/com/ljsd/GameApplication.java @@ -67,6 +67,7 @@ public class GameApplication { app.setWebEnvironment(false); configurableApplicationContext = app.run(args); + ServerConfiguration serverConfiguration = configurableApplicationContext.getBean(ServerConfiguration.class); serverProperties = serverConfiguration.getServerProperties(); serverId = serverProperties.getId(); @@ -75,6 +76,8 @@ public class GameApplication { LOGGER.info("ServerProperties ->{},coreIp=>{}", serverProperties.toString()); RedisUtil.getInstence().init(configurableApplicationContext); MongoUtil.getInstence().init(configurableApplicationContext); + //todo 设置开服时间 + setRegisterTime();// might loop //注册消息处理方法 register(configurableApplicationContext); ProtocolsManager protocolsManager = ProtocolsManager.getInstance(); @@ -85,8 +88,6 @@ public class GameApplication { //http线程池初始化 // HttpPool.init(); - //todo 设置开服时间 - setRegisterTime();// might loop GuilidManager.init(); STableManager.initialize("config"); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java index 5ddfac4e5..c1c0428f8 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/logic/fight/CombatLogic.java @@ -903,7 +903,7 @@ public class CombatLogic { ItemUtil.combineReward(user,true,randomRewardMin, times,baseItemMap,baseCardMap,baseEquipMap,baseRandomMap,BIReason.ADVENTURE_BASE_REWARD); int timesTemp =times; while (!viewBaseReward&×Temp-->0){ - ItemUtil.combineReward(user,false,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); + ItemUtil.combineReward(user,true,sMainLevelConfig.getRandomReward(), 1f,randomItemMap,randomCardMap,randomEquipMap,randomRandomMap,BIReason.ADVENTURE_RANDOM_REWARDD); } takeTimes+=times; } @@ -926,6 +926,7 @@ public class CombatLogic { lastTimeTakes=times; } ItemUtil.extraAddItem(user,baseItemMap); + ItemUtil.extraAddItem(user,randomItemMap); if(viewBaseReward){ myResult = true; rewardStr = ItemUtil.getReward(baseItemMap, baseCardMap, baseEquipMap, baseRandomMap);