From efb45afae0f9f1f8471ef89505fd6a68d03d1ed9 Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期日, 28 四月 2019 13:47:16 +0800
Subject: [PATCH] 6607 【2.0】【后端】技能升级功能改版(点数变更刷新修改)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py           |    9 ---------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py                 |    9 +++++----
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py                  |    2 --
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py             |   14 +++++++++++++-
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py |    3 ---
 5 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py
index a43f922..9e16f5d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/Item_ResetAttrPoint.py
@@ -85,9 +85,6 @@
     #刷新人物所有状态
     playerControl = PlayerControl.PlayerControl(curPlayer)
     playerControl.RefreshPlayerAttrState()
-    
-    #更新技能专精
-    SkillShell.RefreshElementSkillByAttr(curPlayer, resetIDList)
     return True
 
 ## 逻辑实现 //返回值为是否使用成功(外层通知特效)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 138d117..021acb4 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -1773,8 +1773,6 @@
     NotifyPlayerBasePoint(curPlayer, pointAttrIDList)
     playerControl = PlayerControl.PlayerControl(curPlayer)
     playerControl.RefreshPlayerAttrState()
-    #更新技能专精
-    SkillShell.RefreshElementSkillByAttr(curPlayer, pointAttrIDList)
     return
 
 def NotifyPlayerBasePoint(curPlayer, syncAttrIDList=[]):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
index c70482f..f2d2012 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAttrFruit.py
@@ -200,15 +200,6 @@
     
     # 刷新属性
     __RefreshAttr(curPlayer, funcIndex)
-
-    # 若是加灵根属性则更新技能专精
-    pointAttrIDList = []
-    for attrID in attrIDList:
-        if attrID in [ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water, 
-                      ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]:
-            pointAttrIDList.append(attrID)
-    if pointAttrIDList:
-        SkillShell.RefreshElementSkillByAttr(curPlayer, pointAttrIDList)
     return True, hasUseCnt
 
 ## 玩家使用属性果实
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index b92939b..5d406a6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -4345,6 +4345,8 @@
         beforeMaxHP = curPlayer.GetMaxHP()
         beforeMoveSpeedValue = GetSpeedValue(curPlayer)
         beforeMaxProDef = GetMaxProDef(curPlayer)
+        #[金木水火土]
+        beforePointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
         #构建玩家刷新通知客户端字典, 缓存[索引, 数值]
         playerStateDict = {}
         for index in xrange(1, ChConfig.Def_Calc_AllAttrType_MAX):
@@ -4551,7 +4553,17 @@
         
         #通知基础属性
         self.__SyncBaseAttr(curPlayer, baseAttrList)
-        
+        #五行灵根变更需要处理的逻辑
+        afterPointList = [GetMetal(curPlayer), GetWood(curPlayer), GetWater(curPlayer), GetFire(curPlayer), GetEarth(curPlayer)]
+        if beforePointList !=afterPointList:
+            diffPointAttrList = []
+            for i, attrID in enumerate([ShareDefine.Def_Effect_Metal, ShareDefine.Def_Effect_Wood, ShareDefine.Def_Effect_Water,
+                           ShareDefine.Def_Effect_Fire, ShareDefine.Def_Effect_Earth]):
+                if beforePointList[i] != afterPointList[i]:
+                    diffPointAttrList.append(attrID)
+            SkillShell.RefreshElementSkillByAttr(curPlayer, diffPointAttrList)
+                
+             
         # 同步前端战力,因为有 SetFightPower 所以累加战力放在这里所有刷新及计算处理完后才处理,才能正常触发set同步前端
         self.SendModuleFightPowerPack(curPlayer, mfpDict)
         billFuncCnt = len(PyGameData.g_refreshAttrBillboardFunc) # 只处理固定次数,防止死循环
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 68e1a6a..318083e 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/SkillShell.py
@@ -2104,7 +2104,7 @@
     skillManager = curPlayer.GetSkillManager()
     curSkill = skillManager.FindSkillBySkillTypeID(skillTypeID)
     curSkillLV = curSkill.GetSkillLV() if curSkill else 0
-        
+
     if updSkillLV == curSkillLV:
         return
     elif updSkillLV < curSkillLV:
@@ -2119,11 +2119,12 @@
 def RefreshElementSkillByAttr(curPlayer, attrIDList):
     #加点、丹药、境界、洗点 会影响灵根点
     __InitElementSkillInfo()
+
     isRefresh = False
     skillManager = curPlayer.GetSkillManager()
     for i in xrange(skillManager.GetSkillCount()):
         hasSkill = skillManager.GetSkillByIndex(i)
-        hasSkillID = hasSkill.GetSkillID()
+        hasSkillID = hasSkill.GetSkillTypeID()
         ipyData = IpyGameDataPY.GetIpyGameDataByCondition('SkillElement', {'MainSkillID':hasSkillID}, False, False)
         if not ipyData:
             continue
@@ -2150,7 +2151,7 @@
     skillManager = curPlayer.GetSkillManager()
     for i in xrange(skillManager.GetSkillCount()):
         hasSkill = skillManager.GetSkillByIndex(i)
-        hasSkillID = hasSkill.GetSkillID()
+        hasSkillID = hasSkill.GetSkillTypeID()
         ipyData = IpyGameDataPY.GetIpyGameDataByCondition('SkillElement', {'MainSkillID':hasSkillID}, False, False)
         if not ipyData:
             continue
@@ -2187,7 +2188,7 @@
         skillManager = curPlayer.GetSkillManager()
         for i in xrange(skillManager.GetSkillCount()):
             hasSkill = skillManager.GetSkillByIndex(i)
-            hasSkillID = hasSkill.GetSkillID()
+            hasSkillID = hasSkill.GetSkillTypeID()
             ipyData = IpyGameDataPY.GetIpyGameDataByCondition('SkillElement', {'MainSkillID':hasSkillID}, False, False)
             if not ipyData:
                 continue

--
Gitblit v1.8.0