From 3e312856ab8860d06c92f5ec91ab5b419e1bed93 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期四, 24 一月 2019 15:20:24 +0800
Subject: [PATCH] 5931 【后端】【1.5.100】诛仙装备开发(评分公式参数修改)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 72 +++++++++++++++++-------------------
1 files changed, 34 insertions(+), 38 deletions(-)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
index 7553fae..1f0c471 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -38,6 +38,7 @@
import PlayerMagicWeapon
import time
import json
+import FormulaControl
#---------------------------------------------------------------------
##检查玩家是否可以换装
@@ -69,6 +70,7 @@
if not ItemCommon.CheckItemCanUseByExpireTime(curItem):
# 过期
+ GameWorld.DebugLog("装备已过期!")
return False
changeItemEquipPlace = curItem.GetEquipPlace()
@@ -452,6 +454,7 @@
equipPlaceList = [] # 有穿戴装备的装备位列表
suitCntDict = {} #套装数量字典
legendAttrDict = {} #所有传奇属性
+ equipScoreTotal = 0 #为解决装备评分、战力不一致的情况,装备战力改为由评分作为参数计算战力
#玩家当前可装备的装备类型
for equipIndex in xrange(playerEquip.GetCount()):
@@ -459,7 +462,7 @@
continue
# 翅膀属性在翅膀功能单独刷新
- if equipIndex == ShareDefine.retWing:
+ if equipIndex in ChConfig.EquipItemNoRefreshState or equipIndex == ShareDefine.retWing:
continue
curEquip = playerEquip.GetAt(equipIndex)
@@ -471,6 +474,7 @@
continue
equipPlaceList.append(equipIndex)
+ equipScoreTotal += ItemCommon.GetEquipGearScore(curEquip)
#基础属性效果
for i in range(0, curEquip.GetEffectCount()):
@@ -542,15 +546,10 @@
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_Wash, allAttrListWash)
PlayerControl.SetCalcAttrListValue(curPlayer, ChConfig.Def_CalcAttrFunc_EquipOutOfPrint, allAttrListOutOfPrintEquip)
- #计算装备基础属性附加战力
- LV = curPlayer.GetLV()
- Atk = baseEquipAttrDict.get(ShareDefine.Def_Effect_Atk, 0)
- MinAtk = baseEquipAttrDict.get(ShareDefine.Def_Effect_MinAtk, 0) + Atk
- MaxAtk = baseEquipAttrDict.get(ShareDefine.Def_Effect_MaxAtk, 0) + Atk
- MaxHP = baseEquipAttrDict.get(ShareDefine.Def_Effect_MaxHP, 0)
- Def = baseEquipAttrDict.get(ShareDefine.Def_Effect_Def, 0)
- fightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
- curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, fightPowerEx)
+ #计算装备基础属性附加战力 (目前组成: 评分战力 + ...)
+ equipFightPowerEx = eval(IpyGameDataPY.GetFuncCompileCfg("FightpowerFormula", 2))
+ #GameWorld.DebugLog("装备评分战力: equipScoreTotal=%s,equipFightPowerEx=%s" % (equipScoreTotal, equipFightPowerEx))
+ curPlayer.SetDict(ChConfig.Def_PlayerKey_MFPEx % ShareDefine.Def_MFPType_Equip, equipFightPowerEx)
return
@@ -590,9 +589,13 @@
return
lv = curPlayer.GetLV()
+ OutOfPrintAttrFormatDict = IpyGameDataPY.GetFuncEvalCfg("OutOfPrintValue", 2, {})
for i, attrID in enumerate(OutOfPrintAttrIDList):
+ if str(attrID) not in OutOfPrintAttrFormatDict:
+ continue
+ attrFormat = OutOfPrintAttrFormatDict[str(attrID)]
maxOOPValue = OutOfPrintAttrValueList[i]
- value = eval(IpyGameDataPY.GetFuncCompileCfg("OutOfPrintValue", 1))
+ value = eval(FormulaControl.GetCompileFormula("OutOfPrintAttrFormat_%s" % attrID, attrFormat))
GameWorld.DebugLog("加绝版属性: %s +%s" % (attrID, value))
PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListOutOfPrintEquip)
@@ -743,7 +746,7 @@
for suiteKey, cnt in suitCntDict.items():
groupType,suiteType,suiteLV = suiteKey.split('_')
suiteLV = int(suiteLV)
- job = 0 if groupType == '2' else myjob #仙器组合默认职业0
+ job = 0 if groupType == ChConfig.EquipGroupType_Relics else myjob #仙器组合默认职业0
ipyData = IpyGameDataPY.GetIpyGameData('EquipSuitAttr', int(groupType), int(suiteType), int(suiteLV), job)
if not ipyData:
continue
@@ -764,7 +767,7 @@
paramList= [name, cnt, suiteLV, groupType, suiteType]
notifyRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartSuiteNotify % (groupType, suiteType, cnt))
if not notifyRecord & pow(2, suiteLV):
- if groupType == '1':
+ if groupType == ChConfig.EquipGroupType_Armor:
if cnt >=5:
PlayerControl.WorldNotify(0, 'EquipSuit5', paramList)
notifyRecord |= pow(2, suiteLV)
@@ -980,6 +983,24 @@
break
return findGroupType
+# 获取满套装化的最低阶数,如5件套,4件5级,1件3级,则返回3
+def GetEquipSuitsLVByType(curPlayer, suitType, groupType):
+ suiteLV = 999
+ equipSuitTypeDict = IpyGameDataPY.GetFuncEvalCfg('EquipSuitType')
+ if groupType not in equipSuitTypeDict:
+ return 0
+ maxCnt = len(equipSuitTypeDict[groupType])
+ cnt = 0
+ for equipPlace in equipSuitTypeDict[groupType]:
+ curSuiteLV = GetEquipPartSuiteLV(curPlayer, equipPlace, suitType)
+ if curSuiteLV > 0:
+ cnt += 1
+ suiteLV = min(curSuiteLV, suiteLV)
+
+ if cnt != maxCnt:
+ return 0
+ return 0 if suiteLV == 999 else suiteLV
+
## 通知公共部位套装等级
def NotifyEquipPartSuiteLV(curPlayer, index=None):
@@ -1031,31 +1052,6 @@
suiteLVList.append(suiteLV)
return suiteLVList
-
-## 获取玩家装备预览信息
-def GetPlayerEquipView(curPlayer):
- if not curPlayer:
- return []
-
- playerID = curPlayer.GetPlayerID()
- playerEquipList = []
-
- playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
- #玩家当前可装备的装备类型
- for equipIndex in xrange(0, playerEquip.GetCount()):
-
- if equipIndex not in ShareDefine.RoleEquipType:
- continue
-
- curEquip = playerEquip.GetAt(equipIndex)
- if curEquip.IsEmpty():
- continue
-
- playerEquipList.append([curEquip.GetItemTypeID(), equipIndex, 0, 0])
- #curEquip.GetItemStarLV(), 0])
-
- #GameWorld.DebugLog("玩家装备信息:%s" % str(playerEquipList), playerID)
- return playerEquipList
#// A5 03 全身属性激活 #tagCMActiveAllEquipAttr
--
Gitblit v1.8.0