From 21d171ec2d815dd43ab5f428737c59fed6905d6f Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期日, 30 十二月 2018 15:46:54 +0800 Subject: [PATCH] 2797 【1.4】【BUG】跨服匹配战斗中,对方掉线,比赛结算显示自己失败(实际是没掉线,只是其中一个玩家没走完整登录流程,但是后端已经在跨服地图中,导致结算的时候计算胜方逻辑异常) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 37 ++++++++++++++++++++++++++++++++++++- 1 files changed, 36 insertions(+), 1 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py index c504d6d..bd403bc 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py @@ -247,7 +247,8 @@ #还在冷却时间内无法释放 if SkillCommon.RefreshSkillRemainTime(playerSkill, tick) != 0: PlayerControl.NotifyCode(curPlayer, "UseSkillCDLimit") - AttackFailNotify(curPlayer, curSkill, ChConfig.SkillFail_CD) + #AttackFailNotify(curPlayer, curSkill, ChConfig.SkillFail_CD) + playerSkill.Sync_Skill() return False #5:检查玩家的魔法值是否够用这个技能 @@ -347,6 +348,13 @@ # @return 返回值真, 检查通过 # @remarks 自定义函数, NPC使用有对象技能 def NPCUseSkillTag(curNPC, curTag, curSkill, tick): + skillTag = GetSkillAffectTag(curSkill) + if skillTag == ChConfig.Def_UseSkillTag_AppointNPC: + # 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用 + curTag = GetAppointNPCBySkillEffect(curSkill) + if not curTag: + return False + if not NPCCanUseSkillTag(curNPC, curTag, curSkill, tick): return False @@ -363,6 +371,29 @@ curNPC.SetDict(ChConfig.Def_NPC_Dict_AtkMovePosY, 0) return result + +# 指定释放的NPCID 和 Def_UseSkillTag_AppointNPC 搭配使用 +def GetAppointNPCBySkillEffect(curSkill): + npcID = 0 + effectID = ChConfig.Def_Skill_Effect_AppointNPC + for i in xrange(0, curSkill.GetEffectCount()): + curEffect = curSkill.GetEffect(i) + curEffectID = curEffect.GetEffectID() + + if not curEffectID: + #策划有可能中途删除,不用return + continue + + #不是需要的效果 + if curEffectID != effectID: + continue + + npcID = curEffect.GetEffectValue(0) + break + + if not npcID: + return None + return GameWorld.FindNPCByNPCID(npcID) # 计算NPC技能位移坐标,预警和非预警都可以用 @@ -511,6 +542,9 @@ # @return 返回值真, 检查通过 def NPCCanUseSkillTag(curNPC, curTag, curSkill, tick): skillTag = GetSkillAffectTag(curSkill) + if skillTag == ChConfig.Def_UseSkillTag_AppointNPC: + return True + #---对象判定--- if IsToPetOwnerSkill(curNPC, skillTag): return True @@ -1030,6 +1064,7 @@ def AttackFailNotify(curPlayer, curSkill, reason=0): sendPack = ChPyNetSendPack.tagMCAttackFail() sendPack.SkillID = curSkill.GetSkillID() + sendPack.Reason = reason NetPackCommon.SendFakePack(curPlayer, sendPack) #--------------------------玩家使用技能 #=============================================================================== -- Gitblit v1.8.0