From 50cabbbc229d1adc0e427df765cab2dc0889cdf1 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 15 一月 2020 15:58:20 +0800
Subject: [PATCH] 8369 境界修改(升级境界给技能格式改为json字典)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py |   67 +++++++++++++++++++++------------
 1 files changed, 43 insertions(+), 24 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
index a6cdc18..e283f46 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Skill/GameSkills/SkillCommon.py
@@ -188,42 +188,61 @@
 
     return
 
-def GivePlayerSkillByJobSkillList(curPlayer, jobSkillList):
-    ## 根据职业技能ID列表给玩家技能
+def GivePlayerSkillByJobSkill(curPlayer, jobSkillInfo):
+    ## 根据职业技能ID给玩家技能, 支持字典{"job":[skillID, ...], ...} {job:[skillID, ...], ...} 或 列表[skillID, ...]
+    
+    if not jobSkillInfo:
+        return
+    
+    jobSkillList = []
+    if isinstance(jobSkillInfo, dict):
+        job = curPlayer.GetJob()
+        if job in jobSkillInfo:
+            jobSkillList = jobSkillInfo[job]
+        elif str(job) in jobSkillInfo:
+            jobSkillList = jobSkillInfo[str(job)]
+    elif isinstance(jobSkillInfo, list) or isinstance(jobSkillInfo, tuple):
+        jobSkillList = jobSkillInfo
+    jobSkillList = list(jobSkillList)
     
     if not jobSkillList:
         return
     
-    skillLV = 1
-    giveSkill = None
+    skillManager = curPlayer.GetSkillManager()
+    playerControl = PlayerControl.PlayerControl(curPlayer)
+    GameWorld.DebugLog("给玩家技能: %s" % jobSkillList)
     for skillID in jobSkillList:
-        skillData = GameWorld.GetGameData().FindSkillByType(skillID, skillLV)
+        skillData = GameWorld.GetGameData().GetSkillBySkillID(skillID)
         if skillData == None:
             continue
         if not CheckSkillJob(curPlayer, skillData):
             continue
         if not SkillShell.CheckLearnSkillCondition(curPlayer, skillData):
             continue
-        giveSkill = skillData
-        break
-    
-    if not giveSkill:
-        GameWorld.ErrLog("找不到可以给的技能!jobSkillList=%s" % str(jobSkillList))
-        return
-    
-    skillTypeID = giveSkill.GetSkillTypeID()
-    skillManager = curPlayer.GetSkillManager()
-    if skillManager.FindSkillBySkillTypeID(skillTypeID):
-        #GameWorld.DebugLog("已经有该技能!")
-        return
-    skillManager.LVUpSkillBySkillTypeID(skillTypeID)
-    GameWorld.DebugLog("    给玩家技能: skillTypeID=%s" % (skillTypeID), curPlayer.GetID())
-    
-    if isPassiveSkill(giveSkill):
-        PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillTypeID)
         
-    DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, skillLV)
-    PlayerControl.PlayerControl(curPlayer).RefreshSkillFightPowerEx(skillTypeID, 0)
+        if skillManager.FindSkillBySkillID(skillID):
+            #GameWorld.DebugLog("已经有该技能!skillID=%s" % skillID)
+            continue
+        
+        skillLV = skillData.GetSkillLV()
+        skillTypeID = skillData.GetSkillTypeID()
+        beforeFightPower = 0
+        if skillLV > 1:
+            befSkill = skillManager.FindSkillBySkillTypeID(skillTypeID)
+            beforeFightPower = 0 if not befSkill else befSkill.GetFightPower()
+            
+        skillManager.LVUPSkillByID(skillID)
+        GameWorld.DebugLog("    给玩家技能: skillTypeID=%s,skillID=%s,skillLV=%s" % (skillTypeID, skillID, skillLV), curPlayer.GetID())
+        
+        DataRecordPack.DR_LearnORUPSkill(curPlayer, skillTypeID, skillLV)
+        
+        if isPassiveSkill(skillData):
+            pass
+            #PassiveBuffEffMng.GetPassiveEffManager().RegistPassiveEff(curPlayer, skillTypeID)
+            
+        playerControl.RefreshSkillFightPowerEx(skillID, beforeFightPower, isRefreshState=False)
+        
+    playerControl.RefreshPlayerAttrState()
     return
 
 ## 玩家登录检查学习技能(上线)

--
Gitblit v1.8.0