From 972b6dde785b299304a63a4b59f2c6fdc93464ed Mon Sep 17 00:00:00 2001 From: xuexinpeng Date: Thu, 13 May 2021 17:33:19 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B1=B1=E6=B2=B3=E7=A4=BE=E7=A8=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/ljsd/fight/ArenaRecord.java | 52 ++++++++++++++++--- .../Modules/Battle/Logic/Role/RoleLogic.lua | 6 ++- .../com/ljsd/jieling/db/redis/RedisKey.java | 2 + .../HardStageReportRequsetHandler.java | 44 ++++++++++++++++ .../StartHardStageRequestHandler.java | 51 +++++++++++++++--- .../com/ljsd/jieling/util/CBean2Proto.java | 12 +++++ .../com/ljsd/jieling/util/MonsterUtil.java | 4 +- .../java/com/ljsd/jieling/util/UUIDEnum.java | 1 + 8 files changed, 155 insertions(+), 17 deletions(-) create mode 100644 serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/HardStageReportRequsetHandler.java diff --git a/fightmanager/src/main/java/com/ljsd/fight/ArenaRecord.java b/fightmanager/src/main/java/com/ljsd/fight/ArenaRecord.java index cd9e108de..13737848a 100644 --- a/fightmanager/src/main/java/com/ljsd/fight/ArenaRecord.java +++ b/fightmanager/src/main/java/com/ljsd/fight/ArenaRecord.java @@ -1,12 +1,11 @@ package com.ljsd.fight; - -public class ArenaRecord { +public class ArenaRecord { private String id; - private int type; // 1 : 人机对战 2 : 真人对战 3:机机对战 + private int type; // 1 : 人机对战 2 : 真人对战 3:机机对战 private int attackId; //进攻者 @@ -22,13 +21,22 @@ public class ArenaRecord { private int roundTims; //决赛阶段赋值 十位表示队伍id 个位表示第几轮 - private int nums =1; + private int nums = 1; - private int turn =1; + private int turn = 1; private byte[] fightData; - public ArenaRecord(){} + private int level; + + private int head; + + private String userName; + + private int headFrame;//头像框 + + public ArenaRecord() { + } public int getAttackId() { return attackId; @@ -125,4 +133,36 @@ public class ArenaRecord { public void setTurn(int turn) { this.turn = turn; } + + public int getLevel() { + return level; + } + + public int getHead() { + return head; + } + + public String getUserName() { + return userName; + } + + public void setLevel(int level) { + this.level = level; + } + + public void setHead(int head) { + this.head = head; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public void setHeadFrame(int headFrame) { + this.headFrame = headFrame; + } + + public int getHeadFrame() { + return headFrame; + } } diff --git a/luafight/Modules/Battle/Logic/Role/RoleLogic.lua b/luafight/Modules/Battle/Logic/Role/RoleLogic.lua index e3a081321..9cc6e92b3 100644 --- a/luafight/Modules/Battle/Logic/Role/RoleLogic.lua +++ b/luafight/Modules/Battle/Logic/Role/RoleLogic.lua @@ -82,6 +82,7 @@ function RoleLogic:Init(uid, data, position) self.isImmuneAllReduceShield = false --免疫敌方无敌盾(敌方无敌盾对自己无效) self.ignoreShara = false --忽略敌方分摊 self.type = BattleUnitType.Role + self.isNormalAttackAddRage=true --普攻是否回复怒气 self.passiveList = {} if data.passivity and #data.passivity > 0 then table.sort(data.passivity,function(a,b)return a[1] < b[1] end) @@ -137,6 +138,7 @@ function RoleLogic:AddPassive(id, args, isRepeat) -- 加入被动列表 table.insert(self.passiveList, {id, args}) end + -- function RoleLogic:CanCastSkill() return self.sp >= self.spPass and not self.IsDebug @@ -327,8 +329,8 @@ function RoleLogic:SkillCast(skill, func) if (skill.type == BattleSkillType.Normal or skill.type ==BattleSkillType.ChaosNormal) and not self.ctrl_palsy then local function _CheckRage() - -- 后成长怒气 - if skill.isRage then + -- 后成长怒气 判断普攻是否会回复怒气 + if skill.isRage and self.isNormalAttackAddRage then -- 检测被动技能对怒气成长的影响 local grow = self.RageGrow local _RageGrowPassivity = function(finalGrow) diff --git a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java index 63545edf8..3ea90c06c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/db/redis/RedisKey.java @@ -248,6 +248,8 @@ public class RedisKey { //山河社稷图 public static final String SHAN_HE_SHE_JI_CHAPTER_RANK = "SHAN_HE_SHE_JI_CHAPTER_RANK"; public static final String SHAN_HE_SHE_JI_STAR_RANK = "SHAN_HE_SHE_JI_STAR_RANK"; + public static final String HARD_STAGE_FIST_PASS = "HARD_STAGE_FIST_PASS"; + public static final String HARD_STAGE_PASS_MIN_FORCE = "HARD_STAGE_PASS_MIN_FORCE"; public static final String DEATH_PATH_TOTAL_CHALLENGE_COUNT = "DEATH_PATH_TOTAL_CHALLENGE_COUNT"; diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/HardStageReportRequsetHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/HardStageReportRequsetHandler.java new file mode 100644 index 000000000..06a7e8e15 --- /dev/null +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/HardStageReportRequsetHandler.java @@ -0,0 +1,44 @@ +package com.ljsd.jieling.handler.hardStage; + +import com.ljsd.fight.ArenaRecord; +import com.ljsd.jieling.db.redis.RedisKey; +import com.ljsd.jieling.db.redis.RedisUtil; +import com.ljsd.jieling.handler.BaseHandler; +import com.ljsd.jieling.logic.dao.UserManager; +import com.ljsd.jieling.logic.dao.root.User; +import com.ljsd.jieling.network.session.ISession; +import com.ljsd.jieling.util.CBean2Proto; +import com.ljsd.jieling.util.MessageUtil; +import rpc.protocols.CommonProto; +import rpc.protocols.MessageTypeProto; +import rpc.protocols.PlayerInfoProto; +import java.util.*; + +public class HardStageReportRequsetHandler extends BaseHandler { + + + @Override + public MessageTypeProto.MessageType getMessageCode() { + return MessageTypeProto.MessageType.HARD_STAGE_REPORT_REQUEST; + } + + @Override + public void processWithProto(ISession iSession, PlayerInfoProto.HardStageReportRequset proto) throws Exception { + User user = UserManager.getUser(iSession.getUid()); + int id = proto.getHardStageId(); + PlayerInfoProto.HardStageReportResponse.Builder response = PlayerInfoProto.HardStageReportResponse.newBuilder(); + //首次通关记录 + ArenaRecord firstPassRecord = RedisUtil.getInstence().get(RedisKey.HARD_STAGE_FIST_PASS, String.valueOf(id),ArenaRecord.class); + if(firstPassRecord != null){ + CommonProto.HardStagePlayerInfo first = CBean2Proto.getHardStagePlayerInfo(firstPassRecord,1); + response.addPlayer(first); + } + // 最低战力通关记录记录 + ArenaRecord minForcePassRecord = RedisUtil.getInstence().get(RedisKey.HARD_STAGE_PASS_MIN_FORCE, String.valueOf(id),ArenaRecord.class); + if(minForcePassRecord!=null){ + CommonProto.HardStagePlayerInfo min = CBean2Proto.getHardStagePlayerInfo(firstPassRecord,2); + response.addPlayer(min); + } + MessageUtil.sendMessage(iSession, 1, MessageTypeProto.MessageType.HARD_STAGE_REPORT_RESPONSE.getNumber(), response.build(), true); + } +} diff --git a/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java b/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java index 99467b436..b4c73061c 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/handler/hardStage/StartHardStageRequestHandler.java @@ -26,6 +26,10 @@ import config.SHardStage; import org.luaj.vm2.LuaValue; import org.luaj.vm2.lib.jse.JseMathLib; import rpc.protocols.*; +import com.ljsd.fight.ArenaRecord; +import com.ljsd.jieling.util.*; +import util.TimeUtils; +import com.ljsd.jieling.logic.hero.HeroLogic; import java.util.ArrayList; import java.util.List; @@ -83,12 +87,6 @@ public class StartHardStageRequestHandler extends BaseHandler first = RedisUtil.getInstence().getMapValues(RedisKey.HARD_STAGE_FIST_PASS, "", String.class, ArenaRecord.class); + //String key = RedisKey.getKey(RedisKey.HARD_STAGE_BATTLE, String.valueOf(iSession.getUid()), false); + //RedisUtil.getInstence().set(key, fightInfo, -1); + } for (CommonProto.Drop.Builder drop : dropList) { fightStartResponse.addDrop(drop); } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java index 741c94996..7175292b2 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/CBean2Proto.java @@ -19,6 +19,8 @@ import manager.STableManager; import rpc.protocols.*; import util.StringUtil; import util.TimeUtils; +import com.ljsd.fight.ArenaRecord; +import rpc.protocols.CommonProto; import java.util.*; @@ -767,4 +769,14 @@ public class CBean2Proto { public static CommonProto.TeamSimpleInfo getSimpleTeamInfoByPokeMon(Pokemon pokemon,int position){ return CommonProto.TeamSimpleInfo.newBuilder().setHeroid(pokemon.getId()).setHeroTid(pokemon.getTmpId()).setLevel(pokemon.getLevel()).setStar(pokemon.getStar()).setPosition(position).build(); } + public static CommonProto.HardStagePlayerInfo getHardStagePlayerInfo(ArenaRecord arenaRecord,int type)throws Exception{ + CommonProto.FightData fightDataProto = CommonProto.FightData.parseFrom(arenaRecord.getFightData()); + return CommonProto.HardStagePlayerInfo.newBuilder() + .setUid(arenaRecord.getAttackId()) + .setLevel(arenaRecord.getAttackId()) + .setHead(arenaRecord.getHead()) + .setUserName(arenaRecord.getUserName()) + .setHeadFrame(arenaRecord.getHeadFrame()) + .setFightData(fightDataProto).setPower(arenaRecord.getAttackForce()).setType(type).build(); + } } diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java index 770e5c72d..8844fb098 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/MonsterUtil.java @@ -128,7 +128,7 @@ public class MonsterUtil { int[] monsterIds = groupIds[i]; List monsterList = new ArrayList<>(); int position=1; - for (int monsterId : monsterIds) { + /* for (int monsterId : monsterIds) { if(monsterId!=0){ SMonsterConfig sMonsterConfig = STableManager.getConfig(SMonsterConfig.class).get(monsterId); monsterList.add( CBean2Proto.getMonster(sMonsterConfig, nodeConfig).setPosition(position++).build()); @@ -136,7 +136,7 @@ public class MonsterUtil { position++; } - } + }*/ for (int monsterId : monsterIds) { if(monsterId!=0){ monsterList.add(monsterMap.get(monsterId).setPosition(position++).build()); diff --git a/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java b/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java index 80f824daa..579dc3dad 100644 --- a/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java +++ b/serverlogic/src/main/java/com/ljsd/jieling/util/UUIDEnum.java @@ -14,6 +14,7 @@ public enum UUIDEnum { JEWEL(10), SpecialMonster(11), ROBOT_UUID(12), + HardStage(15), ; private int value;