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