From 6cc88e349d09427a3258b5495b1619500cd78b3c Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 12 一月 2023 17:31:52 +0800 Subject: [PATCH] 9762 【BT8】【后端】藏宝阁(古宝特殊效果属性支持) 冲突 master --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 38 ++++++++++++++++++++++++-------------- 1 files changed, 24 insertions(+), 14 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 2456e9f..d477dd1 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py @@ -4531,7 +4531,6 @@ PlayerLove.CalcLoveAttr(curPlayer) PlayerCharm.CalcCharmAttr(curPlayer) PlayerLianTi.CalcLianTiAttr(curPlayer) - PlayerGubao.CalcGubaoAttr(curPlayer) PlayerShentong.CalcShentongAttr(curPlayer) self.RefreshAllState(isForce=True) GameWorld.DebugLog("End ReCalcAllState!!!") @@ -4645,6 +4644,8 @@ if curPlayer.GetDictByKey(ChConfig.Def_Player_RefreshAttr) != 1: return False + PlayerGubao.CalcGubaoAttr(curPlayer) # 古宝定位为对贯通所有游戏功能系统的属性玩法,所以每次都重新刷新 + GameWorld.DebugLog("Start RefreshPlayerAttrStateEx!!!") #beforeAtkInterval = curPlayer.GetAtkInterval() @@ -4681,10 +4682,10 @@ # 基础属性等功能汇总完后统一刷新,因为各功能可能会加属性点数 if funcIndex in [ChConfig.Def_CalcAttrFunc_RoleBase, ChConfig.Def_CalcAttrFunc_LingGenQuailty]: continue - attrInfo, insidePerAttrDict = GetCalcAttrListValue(curPlayer, funcIndex) + attrInfo, insidePerAttrDict = GetCalcAttrListValue(curPlayer, funcIndex)[:2] if attrInfo == notAttrList and not insidePerAttrDict: continue - GameWorld.DebugLog("功能点属性: %s, %s, 内层百分比附加: %s" % (funcIndex, attrInfo, insidePerAttrDict)) + GameWorld.DebugLog("功能点属性: %s(%s), %s, 内层百分比附加: %s" % (funcIndex, ChConfig.FuncIndexName.get(funcIndex, ""), attrInfo, insidePerAttrDict)) funcAttrInfoList[funcIndex] = attrInfo funcInsidePerAttrList[funcIndex] = insidePerAttrDict # 不同功能点间的数值累加,需使用支持衰减递增的计算方式 @@ -4700,14 +4701,16 @@ # 功能有加基础属性值,这里再重新刷新一下基础属性, 基础属性会影响战斗属性, 每次都刷新角色基础属性 hasChange_Qualitylv = self.CalcRoleBaseAttr(curPlayer) - roleBaseAttrInfo, roleInsidePerAttrDict = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_RoleBase) - lingGenQualityAttrList, lingGenQualityInsidePerAttrDict = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingGenQuailty) + roleBaseAttrInfo, roleInsidePerAttrDict = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_RoleBase)[:2] + lingGenQualityAttrList, lingGenQualityInsidePerAttrDict = GetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_LingGenQuailty)[:2] funcAttrInfoList[ChConfig.Def_CalcAttrFunc_RoleBase] = roleBaseAttrInfo funcInsidePerAttrList[ChConfig.Def_CalcAttrFunc_RoleBase] = roleInsidePerAttrDict funcAttrInfoList[ChConfig.Def_CalcAttrFunc_LingGenQuailty] = lingGenQualityAttrList funcInsidePerAttrList[ChConfig.Def_CalcAttrFunc_LingGenQuailty] = lingGenQualityInsidePerAttrDict - GameWorld.DebugLog("功能点属性: %s, %s, 内层百分比附加: %s" % (ChConfig.Def_CalcAttrFunc_RoleBase, roleBaseAttrInfo, roleInsidePerAttrDict)) - GameWorld.DebugLog("功能点属性: %s, %s, 内层百分比附加: %s" % (ChConfig.Def_CalcAttrFunc_LingGenQuailty, lingGenQualityAttrList, lingGenQualityInsidePerAttrDict)) + GameWorld.DebugLog("功能点属性: %s(%s), %s, 内层百分比附加: %s" + % (ChConfig.Def_CalcAttrFunc_RoleBase, ChConfig.FuncIndexName.get(ChConfig.Def_CalcAttrFunc_RoleBase, ""), roleBaseAttrInfo, roleInsidePerAttrDict)) + GameWorld.DebugLog("功能点属性: %s(%s), %s, 内层百分比附加: %s" + % (ChConfig.Def_CalcAttrFunc_LingGenQuailty, ChConfig.FuncIndexName.get(ChConfig.Def_CalcAttrFunc_LingGenQuailty, ""), lingGenQualityAttrList, lingGenQualityInsidePerAttrDict)) #self.PrintAttr(curPlayer, "基础后") @@ -7323,10 +7326,15 @@ #------------------------------------------------------------------------------- ## 设置保存功能事先计算好的属性值 -def SetCalcAttrListValue(curPlayer, funcIndex, allAttrList, insidePerAttrDict={}): +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点,所以这里按万分率来算,支持小数算法 @@ -7343,7 +7351,7 @@ if playerID not in PyGameData.g_playerFuncAttrDict: PyGameData.g_playerFuncAttrDict[playerID] = {} funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID] - funcAttrDict[funcIndex] = [allAttrList, insidePerAttrDict] + funcAttrDict[funcIndex] = [allAttrList, insidePerAttrDict, customAttrDict] #GameWorld.DebugLog("保存功能点属性: funcIndex=%s, %s, %s" % (funcIndex, allAttrList, insidePerAttrDict)) return @@ -7351,26 +7359,28 @@ ## 获取功能点预先计算的所加属性值 attrList = [{} for _ in range(4)] insidePerAttrDict = {} + customAttrDict = {} if isinstance(funcIndex, int): funcIndexList = [funcIndex] elif isinstance(funcIndex, list): funcIndexList = funcIndex else: - return attrList, insidePerAttrDict + return attrList, insidePerAttrDict, customAttrDict playerID = curPlayer.GetPlayerID() if playerID not in PyGameData.g_playerFuncAttrDict: - return attrList, insidePerAttrDict + return attrList, insidePerAttrDict, customAttrDict funcAttrDict = PyGameData.g_playerFuncAttrDict[playerID] for funcIndex in funcIndexList: if funcIndex not in funcAttrDict: continue - funcAttrList, funcInsidePerAttrDict = funcAttrDict[funcIndex] + 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 + return attrList, insidePerAttrDict, customAttrDict ## 重置缓存 def ClearCalcAttrListValue(curPlayer, funcIndex): -- Gitblit v1.8.0