From 4f91cc2f5734412bfe3c708240693e3668e43670 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 16 一月 2019 23:11:27 +0800
Subject: [PATCH] 5722 【后端】【1.5】跨服BOSS开发(修复不同服跨服聊天异常问题)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py |   63 ++++++++++++++++++++++++++++---
 1 files changed, 57 insertions(+), 6 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
index c11de89..30205b2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -476,8 +476,9 @@
     curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedHorse, maxSpeed)
     
     # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
-    PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
-
+    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
+    curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
+    
     #PlayerControl.CalcFuncPackItem(curPlayer, ShareDefine.Def_Pack_Type_HorseSkill, allAttrList)
     
     # 保存计算值
@@ -631,9 +632,10 @@
         
         skillIDList = upIpyData.GetSkillID()
         if skillIDList:
+            sysMark = upIpyData.GetSysMark() or 'MountUpLv'
             for skillID in skillIDList:
                 __GiveSkill(curPlayer, skillID, tick)
-                PlayerControl.WorldNotify(0, 'MountUpLv', [playerName, horseID, updClassLV, skillID])
+                PlayerControl.WorldNotify(0, sysMark, [playerName, horseID, updClassLV, skillID])
         if not skillIDList and updClassLV == maxLV:
             PlayerControl.WorldNotify(0, 'MountUpLvMax', [playerName, horseID])
         
@@ -641,7 +643,7 @@
         PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_HorseAllLV, 1, [horseID, updClassLV])
         
         EventShell.EventRespons_HorseLV(curPlayer, updClassLV)
-        
+        EventShell.EventRespons_HorseUp(curPlayer)
         
     addLV = updClassLV - horseLV
     if addLV:
@@ -682,6 +684,7 @@
     #EventReport.WriteEvent_custom_mission_log(curPlayer, ChConfig.CME_Class_Horse, ChConfig.CME_Log_End, 1, cmeInfoEx=str(updateClassLV))
     sumLV = GetHorseSumLV(curPlayer)
     PlayerMagicWeapon.SetMWPrivilegeData(curPlayer, ChConfig.MWPrivilege_Horse, sumLV)
+
     # 刷属性,更新排行榜
     RefreshHorseAttr(curPlayer)
     # 玩家马匹进阶
@@ -734,6 +737,52 @@
 # @param curPlayer 玩家
 # @return None
 def PlayerHorseLogin(curPlayer):
+    if not GameWorld.GetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Horse):
+        GameWorld.SetDictValueByBit(curPlayer, ChConfig.Def_Player_Dict_VersionFix, ChConfig.Def_VerFix_Horse, 1)
+        #等级不能超上限,技能删了重新学
+        skillManager = curPlayer.GetSkillManager()
+        delCnt = 0
+        for i in xrange(skillManager.GetSkillCount()):
+            dataIndex = i-delCnt
+            skill = skillManager.GetSkillByIndex(dataIndex)
+            if skill == None:
+                continue
+            if skill.GetFuncType() != ChConfig.Def_SkillFuncType_HorseSkill:
+                continue
+            skillTypeID = skill.GetSkillTypeID()
+            skillManager.DeleteSkillBySkillTypeID(skillTypeID)
+            delCnt += 1
+            
+        tick = GameWorld.GetGameWorld().GetTick()
+        ipyDataMgr = IpyGameDataPY.IPY_Data()
+        for i in xrange(ipyDataMgr.GetHorseCount()):
+            ipyData = ipyDataMgr.GetHorseByIndex(i)
+            horseID = ipyData.GetHorseID()
+            curlv = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_Horser_LV % horseID, 0, ChConfig.Def_PDictType_Horse)
+            if not curlv:
+                continue
+            maxLV = ipyData.GetMaxLV()
+            if curlv > maxLV:
+                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_LV % horseID, maxLV, ChConfig.Def_PDictType_Horse)
+                PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_Exp % horseID, 0, ChConfig.Def_PDictType_Horse)
+                GameWorld.Log('   老号坐骑等级超过上限,坐骑ID=%s,原LV=%s,重置为=%s'%(horseID, curlv, maxLV))
+                curlv = maxLV
+        
+            for lv in xrange(1, curlv + 1):
+                upIpyData = IpyGameDataPY.GetIpyGameData("HorseUp", horseID, lv)
+                if not upIpyData:
+                    break
+                skillIDList = upIpyData.GetSkillID()
+                if not skillIDList:
+                    continue
+                for skillID in skillIDList:
+                    __GiveSkill(curPlayer, skillID, tick)
+        # 重刷战力
+        curControl = PlayerControl.PlayerControl(curPlayer)
+        curControl.RefreshAllSkill()
+        RefreshHorseAttr(curPlayer)
+        
+    
     Sync_HorseClassData(curPlayer)
     return
 
@@ -820,7 +869,8 @@
     ItemCommon.ReduceItem(curPlayer, itemPack, itemList, needItemCnt, False, ChConfig.ItemDel_Horse)
     #设置初始等级
     PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_Horser_LV % horseID, ipyData.GetInitLV(), ChConfig.Def_PDictType_Horse)
-    
+    for _ in xrange(ipyData.GetInitLV()):
+        EventShell.EventRespons_HorseUp(curPlayer)
     # 记录开服活动马匹阶级
     sumLV = GetHorseSumLV(curPlayer)
     OpenServerCampaign.UpdOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_HorseLV, sumLV)
@@ -850,7 +900,8 @@
 
     # 刷属性,更新排行榜
     RefreshHorseAttr(curPlayer)
-    PlayerControl.WorldNotify(0, 'GetMount', [curPlayer.GetName(), ipyData.GetItemID()])
+    sysMark = ipyData.GetUnlockSys() or 'GetMount'
+    PlayerControl.WorldNotify(0, sysMark, [curPlayer.GetName(), ipyData.GetItemID()])
 #    
 #    HorseSkinNotifyDict = ReadChConfig.GetEvalChConfig("HorseSkinNotify")
 #    if horseSkinID in HorseSkinNotifyDict:

--
Gitblit v1.8.0