From 5a175a55e3f51458993ec66f59b1c18a8c354d4d Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 19 二月 2020 17:23:21 +0800 Subject: [PATCH] 8374 【后端】【主干】通知客户端攻击封包增加专精技能(改为用扩展属性 ExAttr7、ExAttr8 通知) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py | 38 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 36 insertions(+), 2 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 417c3da..6309be3 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py @@ -2133,7 +2133,7 @@ GameWorld.DebugLog('更换专精 不成功 selectSkillID=%s'%selectSkillID) return - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementID % mainSkillID, selectSkillID) + UpdateElementSkillSelect(curPlayer, mainSkillID, selectSkillID) #ChEquip.ChangeEquipfacadeByLingGen(curPlayer) if curElementSkillID and curElementSkillID != selectSkillID: #原技能删除 @@ -2148,6 +2148,40 @@ curControl.RefreshPlayerAttrState() NotifyElementSkillInfo(curPlayer, mainSkillID, selectSkillID if updSelectSkillLV != activeSkillLV else 0) + return + +def UpdateElementSkillSelect(curPlayer, mainSkillID, selectSkillID): + ## 更新专精技能选择, selectSkillID 可能被重置为0 + PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementID % mainSkillID, selectSkillID) + #GameWorld.DebugLog("更新专精技能选择 mainSkillID=%s, selectSkillID=%s" % (mainSkillID, selectSkillID)) + + # 以下额外更新选择的专精技能对应编号,用于表现其他玩家不同专精技能特效用 + mainSkillList = IpyGameDataPY.GetFuncEvalCfg("SkillActTypeIdSort", curPlayer.GetJob()) + if mainSkillID not in mainSkillList: + return + mainSkillIndex = mainSkillList.index(mainSkillID) + if mainSkillIndex < ShareDefine.Def_PDictDigitCnt: + exAttrValue = curPlayer.GetExAttr7() + exAttrIndex = mainSkillIndex + else: + exAttrValue = curPlayer.GetExAttr8() + exAttrIndex = mainSkillIndex - ShareDefine.Def_PDictDigitCnt + + elementSkillNum = 0 + if selectSkillID: + ipyData = IpyGameDataPY.GetIpyGameData('SkillElement', selectSkillID) + if ipyData: + elementSkillNum = ipyData.GetElementSkillNum() + + updExAttrValue = GameWorld.ChangeDataByDigitPlace(exAttrValue, exAttrIndex, elementSkillNum) + #GameWorld.DebugLog(" exAttrValue=%s,exAttrIndex=%s,elementSkillNum=%s,updExAttrValue=%s" + # % (exAttrValue, exAttrIndex, elementSkillNum, updExAttrValue)) + + # 需要广播周围玩家 + if mainSkillIndex < ShareDefine.Def_PDictDigitCnt: + curPlayer.SetExAttr7(updExAttrValue, True) + else: + curPlayer.SetExAttr8(updExAttrValue, True) return def RefreshElementSkill(curPlayer, skillTypeID, isChangeLV=True): @@ -2192,7 +2226,7 @@ if updSkillLV == 0:#重置为未选状态 ipyData = IpyGameDataPY.GetIpyGameData('SkillElement', skillTypeID) mainSkillID = ipyData.GetMainSkillID() - PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SkillElementID % mainSkillID, 0) + UpdateElementSkillSelect(curPlayer, mainSkillID, 0) #ChEquip.ChangeEquipfacadeByLingGen(curPlayer) isNotify = True else: -- Gitblit v1.8.0