From 6d52c69be5170f6518ac9be8aa05bae7bfd26b54 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 21 七月 2025 14:24:43 +0800
Subject: [PATCH] 121 【武将】武将系统-服务端(去除旧属性;优化命令Hero、PrintFightPower;优化武将技能战力计算;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py |  321 ++++++++++++++++++++++++++--------------------------
 1 files changed, 160 insertions(+), 161 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 9c66bbb..519373b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerHorse.py
@@ -21,7 +21,6 @@
 import PlayerControl
 import ChConfig
 import OperControlManager
-import OpenServerCampaign
 import ItemCommon
 import ChEquip
 import ShareDefine
@@ -29,7 +28,6 @@
 import ItemControler
 import NetPackCommon
 import PlayerBillboard
-import PlayerAttrFruit
 import GameFuncComm
 import IpyGameDataPY
 import CrossPlayerData
@@ -394,166 +392,167 @@
 
 def CalcHorseAttrEx(curPlayer):
     ## 计算马匹属性
-    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Horse):
-        return
-        
-    allAttrList = [{} for _ in range(4)]
-    allAttrListHorseSoul = [{} for _ in range(4)]
-    allAttrListSkin = [{} for _ in range(4)]
-    allAttrListTrain = [{} for _ in range(4)]
-    allAttrListStar = [{} for _ in range(4)]
-    
-    customAttrDictHorse = {}
-    customAttrDictSkin = {}
-    
-    horseSpeed = 0 # 坐骑功能增加的速度值,骑乘时才有效果
-    horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
-    # 等阶培养属性
-    #totalItemCount = 0
-    horseBaseAttrInfo = {}
-    ipyDataMgr = IpyGameDataPY.IPY_Data()
-    for index in xrange(ipyDataMgr.GetHorseLVUpCount()):
-        horseIpyData = ipyDataMgr.GetHorseLVUpByIndex(index)
-        dataHorseLV = horseIpyData.GetHorseLV()
-        if dataHorseLV > horseLV:
-            break
-        elif dataHorseLV == horseLV:
-            upItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserEatItemCount)
-        else:
-            upItemCount = horseIpyData.GetNeedEatCount()
-                
-        # 等阶额外属性
-        lvAttrTypeList = horseIpyData.GetLVAttrType()
-        lvAttrValueList = horseIpyData.GetLVAttrValue()
-        for i, attrID in enumerate(lvAttrTypeList):
-            attrValue = lvAttrValueList[i]
-            if attrID == ShareDefine.Def_Effect_Speed:
-                horseSpeed += attrValue
-                continue
-            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
-            horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue
-            
-        # 培养丹增加属性
-        upItemPerCount = horseIpyData.GetUpEatItemPerCount()
-        if upItemCount and upItemPerCount:
-            upItemAttrTypeList = horseIpyData.GetUpItemAttrType()
-            upItemAttrValueList = horseIpyData.GetUpItemAttrValue()
-            attrMultiple = upItemCount / upItemPerCount
-            for i, attrID in enumerate(upItemAttrTypeList):
-                attrValue = upItemAttrValueList[i]
-                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
-                horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue * attrMultiple
-                
-    customAttrDictHorse["horseBaseAttrInfo"] = horseBaseAttrInfo
-    
-#    # 等阶培养丹累加个数属性
-#    eatItemAttrInfo = IpyGameDataPY.GetFuncCfg("HorseUpItem", 3)
-#    for attrID, attrValue in eatItemAttrInfo:
-#        PlayerControl.CalcAttrDict_Type(attrID, attrValue * totalItemCount, allAttrList)
-        
-    # 幻化属性
-    initFPAdd = 0 #初始战力
-    horseSkinQualityAttrInfo = {}
-    for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
-        skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
-        if not CheckHorseSkinState(curPlayer, skinPlusIpyData):
-            continue
-        initFPAdd += skinPlusIpyData.GetInitFightPower()
-        attrTypeList = skinPlusIpyData.GetAttrType()
-        attrValueList = skinPlusIpyData.GetAttrValue()
-        for i, attrID in enumerate(attrTypeList):
-            attrValue = attrValueList[i]
-            if attrID == ShareDefine.Def_Effect_Speed:
-                horseSpeed += attrValue
-                continue
-            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
-            
-        #觉醒战力
-        skintype = 1
-        horseID = skinPlusIpyData.GetHorseID()
-        skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (skintype, horseID))
-        skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', skintype, horseID, skinData / 100)
-        if skinIpyData:
-            for attrID, attrValue in skinIpyData.GetAttrInfo().items():
-                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
-                
-        hIpyData = IpyGameDataPY.GetIpyGameData("Horse", horseID)
-        if hIpyData:
-            quality = hIpyData.GetQuality()
-            if quality not in horseSkinQualityAttrInfo:
-                horseSkinQualityAttrInfo[quality] = {}
-            qualityAttrDict = horseSkinQualityAttrInfo[quality]
-            for i, attrID in enumerate(attrTypeList):
-                attrValue = attrValueList[i]
-                qualityAttrDict[attrID] = qualityAttrDict.get(attrID, 0) + attrValue
-                
-        #星级
-        horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID)
-        starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("HorseStarUp", horseID, horseStar)
-        if starIpyData:
-            starAttrType = starIpyData.GetStarAttrType()
-            starAttrValue = starIpyData.GetStarAttrValue()
-            for i, attrID in enumerate(starAttrType):
-                attrValue = starAttrValue[i]
-                if attrID == ShareDefine.Def_Effect_Speed:
-                    horseSpeed += attrValue
-                    continue
-                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
-        
-    customAttrDictSkin["horseSkinQualityAttrInfo"] = horseSkinQualityAttrInfo
-    
-    # 新培养属性
-    for index in xrange(ipyDataMgr.GetHorseTrainCount()):
-        trainIpyData = ipyDataMgr.GetHorseTrainByIndex(index)
-        trainType = trainIpyData.GetTrainType()
-        dataTrainLV = trainIpyData.GetTrainLV()
-        trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainLV % trainType)
-        
-        if dataTrainLV > trainLV:
-            continue
-        elif dataTrainLV == trainLV:
-            trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainItemCount % trainType)
-        else:
-            trainItemCount = trainIpyData.GetEatCntTotal()
-            
-        # 等阶额外属性
-        lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
-        lvAttrValueList = trainIpyData.GetLVAttrValueList()
-        for i, attrID in enumerate(lvAttrTypeList):
-            attrValue = lvAttrValueList[i]
-            if attrID == ShareDefine.Def_Effect_Speed:
-                horseSpeed += attrValue
-                continue
-            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
-            
-        # 培养丹增加属性
-        eatCntEverytime = trainIpyData.GetEatCntEverytime()
-        if trainItemCount and eatCntEverytime:
-            eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
-            eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
-            attrMultiple = trainItemCount / eatCntEverytime
-            for i, attrID in enumerate(eatItemAttrTypeList):
-                attrValue = eatItemAttrValueList[i]
-                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
-                
-    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Horse, initFPAdd)
-    
-    #GameWorld.DebugLog("坐骑功能属性: horseLV=%s,horseSpeed=%s,totalItemCount=%s,initFPAdd=%s" % (horseLV, horseSpeed, totalItemCount, initFPAdd))
-    
-    # 先缓存值,骑乘状态时进行附加
-    curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedHorse, horseSpeed)
-    
-    # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
-    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
-    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
-    
-    # 保存计算值
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSoul, allAttrListHorseSoul)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSkin, allAttrListSkin, customAttrDict=customAttrDictSkin)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseTarin, allAttrListTrain)
-    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseStar, allAttrListStar)
     return
+#    if not GameFuncComm.GetFuncCanUse(curPlayer, ShareDefine.GameFuncID_Horse):
+#        return
+#        
+#    allAttrList = [{} for _ in range(4)]
+#    allAttrListHorseSoul = [{} for _ in range(4)]
+#    allAttrListSkin = [{} for _ in range(4)]
+#    allAttrListTrain = [{} for _ in range(4)]
+#    allAttrListStar = [{} for _ in range(4)]
+#    
+#    customAttrDictHorse = {}
+#    customAttrDictSkin = {}
+#    
+#    horseSpeed = 0 # 坐骑功能增加的速度值,骑乘时才有效果
+#    horseLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserLV)
+#    # 等阶培养属性
+#    #totalItemCount = 0
+#    horseBaseAttrInfo = {}
+#    ipyDataMgr = IpyGameDataPY.IPY_Data()
+#    for index in xrange(ipyDataMgr.GetHorseLVUpCount()):
+#        horseIpyData = ipyDataMgr.GetHorseLVUpByIndex(index)
+#        dataHorseLV = horseIpyData.GetHorseLV()
+#        if dataHorseLV > horseLV:
+#            break
+#        elif dataHorseLV == horseLV:
+#            upItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserEatItemCount)
+#        else:
+#            upItemCount = horseIpyData.GetNeedEatCount()
+#                
+#        # 等阶额外属性
+#        lvAttrTypeList = horseIpyData.GetLVAttrType()
+#        lvAttrValueList = horseIpyData.GetLVAttrValue()
+#        for i, attrID in enumerate(lvAttrTypeList):
+#            attrValue = lvAttrValueList[i]
+#            if attrID == ShareDefine.Def_Effect_Speed:
+#                horseSpeed += attrValue
+#                continue
+#            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
+#            horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue
+#            
+#        # 培养丹增加属性
+#        upItemPerCount = horseIpyData.GetUpEatItemPerCount()
+#        if upItemCount and upItemPerCount:
+#            upItemAttrTypeList = horseIpyData.GetUpItemAttrType()
+#            upItemAttrValueList = horseIpyData.GetUpItemAttrValue()
+#            attrMultiple = upItemCount / upItemPerCount
+#            for i, attrID in enumerate(upItemAttrTypeList):
+#                attrValue = upItemAttrValueList[i]
+#                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrList)
+#                horseBaseAttrInfo[attrID] = horseBaseAttrInfo.get(attrID, 0) + attrValue * attrMultiple
+#                
+#    customAttrDictHorse["horseBaseAttrInfo"] = horseBaseAttrInfo
+#    
+##    # 等阶培养丹累加个数属性
+##    eatItemAttrInfo = IpyGameDataPY.GetFuncCfg("HorseUpItem", 3)
+##    for attrID, attrValue in eatItemAttrInfo:
+##        PlayerControl.CalcAttrDict_Type(attrID, attrValue * totalItemCount, allAttrList)
+#        
+#    # 幻化属性
+#    initFPAdd = 0 #初始战力
+#    horseSkinQualityAttrInfo = {}
+#    for index in xrange(ipyDataMgr.GetHorseSkinPlusCount()):
+#        skinPlusIpyData = ipyDataMgr.GetHorseSkinPlusByIndex(index)
+#        if not CheckHorseSkinState(curPlayer, skinPlusIpyData):
+#            continue
+#        initFPAdd += skinPlusIpyData.GetInitFightPower()
+#        attrTypeList = skinPlusIpyData.GetAttrType()
+#        attrValueList = skinPlusIpyData.GetAttrValue()
+#        for i, attrID in enumerate(attrTypeList):
+#            attrValue = attrValueList[i]
+#            if attrID == ShareDefine.Def_Effect_Speed:
+#                horseSpeed += attrValue
+#                continue
+#            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
+#            
+#        #觉醒战力
+#        skintype = 1
+#        horseID = skinPlusIpyData.GetHorseID()
+#        skinData = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorsePetSkinData % (skintype, horseID))
+#        skinIpyData = IpyGameDataPY.GetIpyGameDataNotLog('HorsePetSkin', skintype, horseID, skinData / 100)
+#        if skinIpyData:
+#            for attrID, attrValue in skinIpyData.GetAttrInfo().items():
+#                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListSkin)
+#                
+#        hIpyData = IpyGameDataPY.GetIpyGameData("Horse", horseID)
+#        if hIpyData:
+#            quality = hIpyData.GetQuality()
+#            if quality not in horseSkinQualityAttrInfo:
+#                horseSkinQualityAttrInfo[quality] = {}
+#            qualityAttrDict = horseSkinQualityAttrInfo[quality]
+#            for i, attrID in enumerate(attrTypeList):
+#                attrValue = attrValueList[i]
+#                qualityAttrDict[attrID] = qualityAttrDict.get(attrID, 0) + attrValue
+#                
+#        #星级
+#        horseStar = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserStar % horseID)
+#        starIpyData = IpyGameDataPY.GetIpyGameDataNotLog("HorseStarUp", horseID, horseStar)
+#        if starIpyData:
+#            starAttrType = starIpyData.GetStarAttrType()
+#            starAttrValue = starIpyData.GetStarAttrValue()
+#            for i, attrID in enumerate(starAttrType):
+#                attrValue = starAttrValue[i]
+#                if attrID == ShareDefine.Def_Effect_Speed:
+#                    horseSpeed += attrValue
+#                    continue
+#                PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListStar)
+#        
+#    customAttrDictSkin["horseSkinQualityAttrInfo"] = horseSkinQualityAttrInfo
+#    
+#    # 新培养属性
+#    for index in xrange(ipyDataMgr.GetHorseTrainCount()):
+#        trainIpyData = ipyDataMgr.GetHorseTrainByIndex(index)
+#        trainType = trainIpyData.GetTrainType()
+#        dataTrainLV = trainIpyData.GetTrainLV()
+#        trainLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainLV % trainType)
+#        
+#        if dataTrainLV > trainLV:
+#            continue
+#        elif dataTrainLV == trainLV:
+#            trainItemCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_HorserTrainItemCount % trainType)
+#        else:
+#            trainItemCount = trainIpyData.GetEatCntTotal()
+#            
+#        # 等阶额外属性
+#        lvAttrTypeList = trainIpyData.GetLVAttrTypeList()
+#        lvAttrValueList = trainIpyData.GetLVAttrValueList()
+#        for i, attrID in enumerate(lvAttrTypeList):
+#            attrValue = lvAttrValueList[i]
+#            if attrID == ShareDefine.Def_Effect_Speed:
+#                horseSpeed += attrValue
+#                continue
+#            PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrListTrain)
+#            
+#        # 培养丹增加属性
+#        eatCntEverytime = trainIpyData.GetEatCntEverytime()
+#        if trainItemCount and eatCntEverytime:
+#            eatItemAttrTypeList = trainIpyData.GetEatItemAttrTypeList()
+#            eatItemAttrValueList = trainIpyData.GetEatItemAttrValueList()
+#            attrMultiple = trainItemCount / eatCntEverytime
+#            for i, attrID in enumerate(eatItemAttrTypeList):
+#                attrValue = eatItemAttrValueList[i]
+#                PlayerControl.CalcAttrDict_Type(attrID, attrValue * attrMultiple, allAttrListTrain)
+#                
+#    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_Horse, initFPAdd)
+#    
+#    #GameWorld.DebugLog("坐骑功能属性: horseLV=%s,horseSpeed=%s,totalItemCount=%s,initFPAdd=%s" % (horseLV, horseSpeed, totalItemCount, initFPAdd))
+#    
+#    # 先缓存值,骑乘状态时进行附加
+#    curPlayer.SetDict(ChConfig.Def_PlayerKey_SpeedHorse, horseSpeed)
+#    
+#    # 果实对坐骑的加成, 魂石果实算附加属性层,单独计算
+#    fightPowerEx = PlayerAttrFruit.CalcAttrFruitAddAtrr(curPlayer, allAttrListHorseSoul, ShareDefine.Def_AttrFruitFunc_Horse)
+#    PlayerControl.SetMFPExFightPower(curPlayer, ShareDefine.Def_MFPType_HorseSoul, fightPowerEx)
+#    
+#    # 保存计算值
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Horse, allAttrList, customAttrDict=customAttrDictHorse)
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSoul, allAttrListHorseSoul)
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseSkin, allAttrListSkin, customAttrDict=customAttrDictSkin)
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseTarin, allAttrListTrain)
+#    PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_HorseStar, allAttrListStar)
+#    return
 
 def GetHorseSkinActCount(curPlayer):
     horseSkinActCount = 0

--
Gitblit v1.8.0