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/PlayerControl.py |  104 ----------------------------------------------------
 1 files changed, 0 insertions(+), 104 deletions(-)

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 e9bb496..241e10b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -1057,8 +1057,6 @@
         CrossPlayerData.ClearCrossSyncDataCache(curPlayer)
         PyGameData.g_fbBuyBuffTimeDict.pop(playerID, None)
     #清除地图玩家缓存
-    PyGameData.g_playerFuncAttrDict.pop(playerID, None)
-    PyGameData.g_playerEquipPartAttrDict.pop(playerID, None)
     PyGameData.g_playerReqEnterFBEx.pop(playerID, None)
     NPCCommon.ClearPriWoodPile(curPlayer)
     #移除地图缓存的境界难度玩家ID信息
@@ -5045,32 +5043,6 @@
 #  @param allAttrList 属性列表
 #  @return None
 def CalcAttrDict_Type(attrType, value, allAttrList):
-    if value == 0:
-        return
-    
-    #[属性索引, 是否基础属性,(非)线性]
-    attrInfo = ChConfig.ItemEffect_AttrDict.get(attrType, [])
-    if attrInfo == []:
-        return
-    
-    index = ChConfig.Def_CalcAttrIndexDict[(attrInfo[1], attrInfo[2])]
-    
-    attrDict = allAttrList[index]
-    for i in attrInfo[0]:
-        GameWorld.AddDictValue(attrDict, {i:value})
-    return
-
-def CalcAttrDict_TypeEx(attrType, value, allAttrDict):
-    ## 统计玩家属性,累加
-    if value == 0:
-        return
-    
-    #[属性索引, 是否基础属性,(非)线性]
-    attrInfo = ChConfig.ItemEffect_AttrDict.get(attrType, [])
-    if attrInfo == []:
-        return
-    for i in attrInfo[0]:
-        GameWorld.AddDictValue(allAttrDict, {i:value})
     return
 
 ## 培养境界等级
@@ -5175,32 +5147,6 @@
 
 ## 设置保存功能事先计算好的属性值
 def SetCalcAttrListValue(curPlayer, funcIndex, allAttrList, insidePerAttrDict=None, customAttrDict=None):
-    # 设置值之前先清空重置
-    # @param customAttrDict: 自定义的属性信息,必须是格式 {"自定义属性描述名key":属性信息, ...}  自定义属性描述名key - 建议不同功能点之间不要重复
-    ClearCalcAttrListValue(curPlayer, funcIndex)
-    if insidePerAttrDict == None:
-        insidePerAttrDict = {}
-    if customAttrDict == None:
-        customAttrDict = {}
-        
-    battleAttrDict = allAttrList[ChConfig.CalcAttr_Battle]
-    if ChConfig.TYPE_Calc_PerLVAtk in battleAttrDict:
-        # 每1级加的攻击力不一定满1点,所以这里按万分率来算,支持小数算法
-        addAtk = int(curPlayer.GetLV() * battleAttrDict[ChConfig.TYPE_Calc_PerLVAtk] / float(ShareDefine.Def_MaxRateValue))
-        battleAttrDict[ChConfig.TYPE_Calc_AttrATKMin] = battleAttrDict.get(ChConfig.TYPE_Calc_AttrATKMin, 0) + addAtk
-        battleAttrDict[ChConfig.TYPE_Calc_AttrATKMax] = battleAttrDict.get(ChConfig.TYPE_Calc_AttrATKMax, 0) + addAtk
-        
-    if ChConfig.TYPE_Calc_PerLVMaxHP in battleAttrDict:
-        # 每1级加的生命值不会少于1点,所以直接乘
-        addMaxHP = curPlayer.GetLV() * battleAttrDict[ChConfig.TYPE_Calc_PerLVMaxHP]
-        battleAttrDict[ChConfig.TYPE_Calc_AttrMaxHP] = battleAttrDict.get(ChConfig.TYPE_Calc_AttrMaxHP, 0) + addMaxHP
-        
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerFuncAttrDict:
-        PyGameData.g_playerFuncAttrDict[playerID] = {}
-    funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID]
-    funcAttrDict[funcIndex] = [allAttrList, insidePerAttrDict, customAttrDict]
-    #GameWorld.DebugLog("保存功能点属性: funcIndex=%s, %s, %s" % (funcIndex, allAttrList, insidePerAttrDict))
     return
 
 def GetCalcAttrListValue(curPlayer, funcIndex):
@@ -5208,57 +5154,7 @@
     attrList = [{} for _ in range(4)]
     insidePerAttrDict = {}
     customAttrDict = {}
-    if isinstance(funcIndex, int):
-        funcIndexList = [funcIndex]
-    elif isinstance(funcIndex, list):
-        funcIndexList = funcIndex
-    else:
-        return attrList, insidePerAttrDict, customAttrDict
-    
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerFuncAttrDict:
-        return attrList, insidePerAttrDict, customAttrDict
-    funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID]
-    for funcIndex in funcIndexList:
-        if funcIndex not in funcAttrDict:
-            continue
-        funcAttrList, funcInsidePerAttrDict, funcCustomAttrDict = funcAttrDict[funcIndex]
-        for i, attrDict in enumerate(attrList):
-            curAttrDict = funcAttrList[i]
-            AddAttrDictValue(attrDict, curAttrDict)
-        customAttrDict.update(funcCustomAttrDict)
-        AddAttrDictValue(insidePerAttrDict, funcInsidePerAttrDict)
     return attrList, insidePerAttrDict, customAttrDict
-
-## 重置缓存
-def ClearCalcAttrListValue(curPlayer, funcIndex):
-    playerID = curPlayer.GetPlayerID()
-    if playerID not in PyGameData.g_playerFuncAttrDict:
-        return
-    funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID]
-    funcAttrDict.pop(funcIndex, None)
-    return
-
-def AddAttrListValue(attrList):
-    addAttrList = [{} for _ in range(4)]
-    for aList in attrList:
-        for i in ChConfig.CalcAttrIndexList:
-            AddAttrDictValue(addAttrList[i], aList[i])
-    return addAttrList
-
-## 属性值字典累加
-def AddAttrDictValue(dict1, dict2):
-    for key, value in dict2.items():
-        if key not in dict1:
-            dict1[key] = value
-        else:
-            aValue = dict1[key]
-            if key in ChConfig.TYPE_Calc_DeclineList:
-                # 这种算法的属性一般是万分率的,最大不超过百分百,故暂默认万分率, 若有不是万分率的属性再做处理
-                dict1[key] = 10000 - (10000 - aValue) * (10000 - value)
-            else:
-                dict1[key] = aValue + value
-    return
 
 def GetLordAttr(curPlayer):
     ## 获取主公属性汇总

--
Gitblit v1.8.0