From 0cb288fc2cad76d7cd8150a3e0b15bbe0eff2c1e Mon Sep 17 00:00:00 2001
From: xdh <xiefantasy@qq.com>
Date: 星期二, 05 三月 2019 10:57:47 +0800
Subject: [PATCH] 6307 【后端】【2.0】多套装备开发单(强化)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 87 +++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 48 +++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py | 52 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 26 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 38 +++
PySysDB/PySysDBPY.h | 14 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py | 92 ++++++---
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py | 52 +++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py | 52 +++--
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 26 +-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 11
12 files changed, 380 insertions(+), 124 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index f75fb8b..a09ade4 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -106,8 +106,7 @@
struct tagItemPlusMax
{
BYTE _Type; //按装备位对应类型查找
- BYTE _ItemRank; // 装备阶数
- BYTE _ItemColor; //装备颜色 如橙装
+ BYTE _Star; // 装备星数
WORD LevelMax; //强化等级上限
};
@@ -1776,4 +1775,15 @@
dict CostItemDict; //特殊材料
dict StarAttrInfo; //星级属性
dict BaseAttrInfo; //基础属性增加
+};
+
+//装备强化进化表
+
+struct tagEquipPlusEvolve
+{
+ BYTE _EquipPlace; //装备位
+ BYTE _EvolveLV; //进化等级
+ WORD NeedPlusLV; //需要强化等级
+ dict CostItem; //消耗材料
+ dict Attr; //属性
};
\ No newline at end of file
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
index 8696fe3..e98ec90 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetPack.py
@@ -6244,6 +6244,58 @@
#------------------------------------------------------
+# A3 16 装备强化进化 #tagCMEquipPlusEvolve
+
+class tagCMEquipPlusEvolve(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemIndex", c_ushort), #装备在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x16
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x16
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipPlusEvolve)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
#A3 05 宝石摘取 #tagCMEquipStonePick
class tagCMEquipStonePick(Structure):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index f1d2171..e174e31 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -15487,15 +15487,16 @@
#------------------------------------------------------
-# A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
+# A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
-class tagMCEquipPartStarLV(Structure):
+class tagMCEquipPartPlusLV(Structure):
_pack_ = 1
_fields_ = [
("PackType", c_ubyte),
("EquipIndex", c_ubyte),
("EquipPartStarLV", c_ushort),
("Proficiency", c_int),
+ ("EvolveLV", c_ubyte),
]
def __init__(self):
@@ -15512,34 +15513,37 @@
self.EquipIndex = 0
self.EquipPartStarLV = 0
self.Proficiency = 0
+ self.EvolveLV = 0
return
def GetLength(self):
- return sizeof(tagMCEquipPartStarLV)
+ return sizeof(tagMCEquipPartPlusLV)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
+ DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
PackType:%d,
EquipIndex:%d,
EquipPartStarLV:%d,
- Proficiency:%d
+ Proficiency:%d,
+ EvolveLV:%d
'''\
%(
self.PackType,
self.EquipIndex,
self.EquipPartStarLV,
- self.Proficiency
+ self.Proficiency,
+ self.EvolveLV
)
return DumpString
-class tagMCEquipPartStarLVInfo(Structure):
+class tagMCEquipPartPlusInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
+ InfoList = list() #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
data = None
def __init__(self):
@@ -15553,7 +15557,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCEquipPartStarLV()
+ temInfoList = tagMCEquipPartPlusLV()
_pos = temInfoList.ReadData(_lpData, _pos)
self.InfoList.append(temInfoList)
return _pos
@@ -15598,8 +15602,8 @@
return DumpString
-m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
+m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
index ee41056..141ea7a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/PyNetPack.ini
@@ -56,12 +56,16 @@
Writer = wdb
Releaser = wdb
RegType = 0
-RegisterPackCount = 1
+RegisterPackCount = 2
PacketCMD_1=0xA3
PacketSubCMD_1=0x01
PacketCallFunc_1=OnEquipMayaPlus
+PacketCMD_2=0xA3
+PacketSubCMD_2=0x16
+PacketCallFunc_2=OnEquipPlusEvolve
+
;npc交互
[FunctionNPCCommon]
ScriptName = Event\EventSrc\FunctionNPCCommon.py
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index c01cc03..4505a99 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3605,12 +3605,13 @@
Def_PDict_RunTaskAwardState = "RunTaskAwardState_%s" # 是否已领取跑环本轮结束奖励 参数任务类型
Def_PDict_RunTaskAwardRecord = "RunTaskAwardRecord_%s" # 跑环本轮结束奖励记录 参数任务类型
Def_PDict_RunTaskNextMissionID = "RunTaskNextMissionID_%s" # 跑环本轮结束下个任务ID 参数任务类型
-# 宝石
+#强化
Def_PDict_EquipPartPlusLV = "EPPlusLV_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
Def_PDict_EquipActiveStarLV = "EquipActiveStarLV" #装备已激活总强化等级
-Def_PDict_EquipPartProficiency = "EPProf_%s_%s" # 装备部位对应公共强化星级,参数为(packType, index)
-Def_PDict_EquipActiveStars = "EquipActiveStars" #装备已激活总强化星级
+Def_PDict_EquipPartProficiency = "EPProf_%s_%s" # 装备部位对应公共强化熟练度,参数为(packType, index)
+Def_PDict_EquipPartPlusEvolveLV = "EPPlusEvolveLV_%s_%s" # 装备部位对应公共强化进化等级,参数为(packType, index)
+# 宝石
Def_PDict_EquipPartStoneID = "StoneID_%s_%s" # 装备位_孔位存储宝石ID*10+是(1)否(0)绑定
# 装备洗练, 暂不区分背包类型,如果有不同背包,策划设定不同的装备位
@@ -4927,7 +4928,8 @@
ItemDel_CoatDecompose, # 时装分解
ItemDel_ZhuXianDecompose, # 诛仙装备分解
ItemDel_EquipStarUp, # 装备升星
-) = range(2000, 2000 + 39)
+ItemDel_EquipPlusEvolve, # 装备强化进化
+) = range(2000, 2000 + 40)
# 物品扣除类型对应信息 {类型:eventName, ...}
ItemDelTypeDict = {
@@ -4970,6 +4972,7 @@
ItemDel_CoatDecompose:"CoatDecompose",
ItemDel_ZhuXianDecompose:"ZhuXianDecompose",
ItemDel_EquipStarUp:"EquipStarUp",
+ ItemDel_EquipPlusEvolve:"EquipPlusEvolve",
}
##==================================================================================================
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
index 8696fe3..e98ec90 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetPack.py
@@ -6244,6 +6244,58 @@
#------------------------------------------------------
+# A3 16 装备强化进化 #tagCMEquipPlusEvolve
+
+class tagCMEquipPlusEvolve(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("Cmd", c_ubyte),
+ ("SubCmd", c_ubyte),
+ ("ItemIndex", c_ushort), #装备在背包中索引
+ ]
+
+ def __init__(self):
+ self.Clear()
+ self.Cmd = 0xA3
+ self.SubCmd = 0x16
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.Cmd = 0xA3
+ self.SubCmd = 0x16
+ self.ItemIndex = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagCMEquipPlusEvolve)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// A3 16 装备强化进化 //tagCMEquipPlusEvolve:
+ Cmd:%s,
+ SubCmd:%s,
+ ItemIndex:%d
+ '''\
+ %(
+ self.Cmd,
+ self.SubCmd,
+ self.ItemIndex
+ )
+ return DumpString
+
+
+m_NAtagCMEquipPlusEvolve=tagCMEquipPlusEvolve()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagCMEquipPlusEvolve.Cmd,m_NAtagCMEquipPlusEvolve.SubCmd))] = m_NAtagCMEquipPlusEvolve
+
+
+#------------------------------------------------------
#A3 05 宝石摘取 #tagCMEquipStonePick
class tagCMEquipStonePick(Structure):
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index f1d2171..e174e31 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -15487,15 +15487,16 @@
#------------------------------------------------------
-# A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
+# A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
-class tagMCEquipPartStarLV(Structure):
+class tagMCEquipPartPlusLV(Structure):
_pack_ = 1
_fields_ = [
("PackType", c_ubyte),
("EquipIndex", c_ubyte),
("EquipPartStarLV", c_ushort),
("Proficiency", c_int),
+ ("EvolveLV", c_ubyte),
]
def __init__(self):
@@ -15512,34 +15513,37 @@
self.EquipIndex = 0
self.EquipPartStarLV = 0
self.Proficiency = 0
+ self.EvolveLV = 0
return
def GetLength(self):
- return sizeof(tagMCEquipPartStarLV)
+ return sizeof(tagMCEquipPartPlusLV)
def GetBuffer(self):
return string_at(addressof(self), self.GetLength())
def OutputString(self):
- DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
+ DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
PackType:%d,
EquipIndex:%d,
EquipPartStarLV:%d,
- Proficiency:%d
+ Proficiency:%d,
+ EvolveLV:%d
'''\
%(
self.PackType,
self.EquipIndex,
self.EquipPartStarLV,
- self.Proficiency
+ self.Proficiency,
+ self.EvolveLV
)
return DumpString
-class tagMCEquipPartStarLVInfo(Structure):
+class tagMCEquipPartPlusInfo(Structure):
Head = tagHead()
Count = 0 #(BYTE Count)// 信息个数
- InfoList = list() #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
+ InfoList = list() #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
data = None
def __init__(self):
@@ -15553,7 +15557,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.Count):
- temInfoList = tagMCEquipPartStarLV()
+ temInfoList = tagMCEquipPartPlusLV()
_pos = temInfoList.ReadData(_lpData, _pos)
self.InfoList.append(temInfoList)
return _pos
@@ -15598,8 +15602,8 @@
return DumpString
-m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
+m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
#------------------------------------------------------
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
index 11a1732..d2dfe21 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
@@ -60,9 +60,12 @@
if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
GameWorld.DebugLog("packType not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
return
-
+ ipyData = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'GridIndex':index})
+ if not ipyData:
+ return
+ equipPlace = ipyData.GetEquipPlace()
indexList = ChConfig.Pack_EquipPart_CanPlusStar[packType]
- if index not in indexList:
+ if equipPlace not in indexList:
GameWorld.Log(" index not in ChConfig.Pack_EquipPart_CanPlusStar", playerID)
return
@@ -74,17 +77,17 @@
GameWorld.DebugLog("OnEquipMayaPlus() equip is empty")
return
- maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
- curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
- if curPartStarLV >= maxStarLV:
- GameWorld.Log("OnEquipMayaPlus:curPartStarLV(%s) >= maxStarLV(%s)" % (curPartStarLV, maxStarLV), playerID)
+ maxPlusLV = ItemCommon.GetItemMaxPlusLV(curPlayer, index, curEquip)
+ curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
+ if curPartPlusLV >= maxPlusLV:
+ GameWorld.Log("OnEquipMayaPlus:curPartPlusLV(%s) >= maxPlusLV(%s)" % (curPartPlusLV, maxPlusLV), playerID)
return
# 强化处理
result = DoLogic_EquipMayaPlus(curPlayer, curEquip, packType, index)
- updPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
- #GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartStarLV, updPartStarLV), playerID)
+ updPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
+ #GameWorld.Log(" result=%s,curStarLV=%s,updStarLV=%s" % (result, curPartPlusLV, updPartStarLV), playerID)
if result == ChConfig.Def_ComposeState_None:
return
@@ -98,8 +101,8 @@
# 强化变更时处理
- if curPartStarLV != updPartStarLV:
- DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
+ if curPartPlusLV != updPartPlusLV:
+ DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
# 增加强化成就
PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlus, 1)
EventShell.EventRespons_EquipPlus(curPlayer)
@@ -117,8 +120,8 @@
if findType == -1:
return result
- curPartStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
- ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartStarLV)
+ curPartPlusLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, index)
+ ipyData = IpyGameDataPY.GetIpyGameData("ItemPlus", findType, curPartPlusLV)
if not ipyData:
return
costSilver = ipyData.GetCostCount()
@@ -132,7 +135,7 @@
if curExp >= totalExp:
#升级
- curPartStarLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
+ curPartPlusLV = __EquipMayaPlusChange(curPlayer, packType, curEquip, index)
curExp = curExp - totalExp
ChEquip.SetEquipPartProficiency(curPlayer, packType, index, curExp)
@@ -140,7 +143,7 @@
# 支付金币
PlayerControl.PayMoney(curPlayer, IPY_GameWorld.TYPE_Price_Silver_Money, costSilver, isNotify=False)
- DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartStarLV)
+ DataRecordPack.DR_UpStarLVSuccess(curPlayer, curExp, curPartPlusLV)
return ChConfig.Def_ComposeState_Sucess
@@ -165,9 +168,7 @@
# 成就
#PlayerSuccess.DoAddSuccessProgress(curPlayer, ShareDefine.SuccType_EquipPlusLV, 1, [updPlusLV])
-
-
-
+
#任务触发
#EventShell.EventRespons_OnEquipPartStarUp(curPlayer, setLV)
# 开服活动数据
@@ -175,24 +176,55 @@
return updPlusLV
-def DoLogic_OnEquipPartStarLVChange(curPlayer, packType):
+def DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV):
#先刷装备BUFF 再计算属性
curPlayer.SetDict(ChConfig.Def_PlayerKey_AttrActivatyNotify, ChConfig.Def_AttrActivatyNotify_Plus)
- ChEquip.RefreshPlayerEquipAttribute(curPlayer)
+ ChEquip.RefreshPlayerEquipAttribute(curPlayer, classLV)
#刷新所有属性
playControl = PlayerControl.PlayerControl(curPlayer)
playControl.RefreshPlayerAttrState()
return
-
-## 全身12部位强化等级最低的一件强化等级
-#def GetMinPlusLV(curPlayer):
-# packType = IPY_GameWorld.rptEquip
-# minPlusLV = GetMaxEquipPartStarLV()
-# equipPartIndexList = ChConfig.Pack_EquipPart_CanPlusStar.get(packType, [])
-# for i in equipPartIndexList:
-# partStarLV = ChEquip.GetEquipPartPlusLV(curPlayer, packType, i)
-# if partStarLV < minPlusLV:
-# minPlusLV = partStarLV
-# return minPlusLV
+#// A3 16 装备强化进化 #tagCMEquipPlusEvolve
+#struct tagCMEquipPlusEvolve
+#{
+# tagHead Head;
+# WORD ItemIndex; //装备在背包中索引
+#};
+def OnEquipPlusEvolve(playerIndex, clientData, tick):
+ curPlayer = GameWorld.GetPlayerManager().GetPlayerByIndex(playerIndex)
+
+ equipPackindex = clientData.ItemIndex
+
+ packType = IPY_GameWorld.rptEquip
+ curPack = curPlayer.GetItemManager().GetPack(packType)
+ curEquip = curPack.GetAt(equipPackindex)
+ if not ItemCommon.CheckItemCanUse(curEquip):
+ return
+ curEvolveLV = ChEquip.GetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex)
+ maxEvolveLV = ItemCommon.GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curEquip)
+ if curEvolveLV >= maxEvolveLV:
+ GameWorld.DebugLog('装备强化进化, 已达最大进化等级equipPackindex=%s, maxEvolveLV=%s'%(equipPackindex, maxEvolveLV))
+ return
+ nextEvolveLV = curEvolveLV + 1
+ equipPlace = curEquip.GetEquipPlace()
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlusEvolve', equipPlace, nextEvolveLV)
+ if not ipyData:
+ return
+ costItemDict = ipyData.GetCostItem()
+ delItemDict = {}
+ itemPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptItem)
+ for itemID, itemCnt in costItemDict.items():
+ hasEnough, indexList, findItemIsBind, lackCnt = ItemCommon.GetItem_FromPack_ByID_ExEx(itemID, itemPack, itemCnt)
+ if not hasEnough:
+ GameWorld.DebugLog('装备强化进化 材料不足itemID= %s,itemCnt=%s'%(itemID, itemCnt))
+ return
+ delItemDict[tuple(indexList)] = itemCnt
+ for itemIndexList, delCnt in delItemDict.items():
+ ItemCommon.ReduceItem(curPlayer, itemPack, itemIndexList, delCnt, True, ChConfig.ItemDel_EquipPlusEvolve)
+
+ ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, equipPackindex, nextEvolveLV)
+ DoLogic_OnEquipPartStarLVChange(curPlayer, packType, ItemCommon.GetItemClassLV(curEquip))
+ ChEquip.NotifyEquipPartPlusLV(curPlayer, packType, equipPackindex)
+ return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
index bde1d0f..f8f110c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/SetEquipPartPlusLV.py
@@ -22,7 +22,7 @@
import ChEquip
import GameWorld
import ItemCommon
-
+import IpyGameDataPY
#---------------------------------------------------------------------
#逻辑实现
## GM命令执行入口
@@ -34,41 +34,49 @@
if not cmdList:
__GMHelpAnswer(curPlayer)
return
-
- if len(cmdList) == 1:
- setStarLV = cmdList[0]
- for pType, indexList in ChConfig.Pack_EquipPart_CanPlusStar.items():
- for i in indexList:
- curPack = curPlayer.GetItemManager().GetPack(pType)
- curEquip = curPack.GetAt(i)
- ChEquip.SetEquipPartPlusLV(curPlayer, pType, i, curEquip, setStarLV)
- ChEquip.SetEquipPartProficiency(curPlayer, pType, i, 0)
- Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, pType)
+ packType = IPY_GameWorld.rptEquip
+ curPack = curPlayer.GetItemManager().GetPack(packType)
+ if len(cmdList) == 2:
+ setStarLV = cmdList[1]
+ classLV = cmdList[0]
+ for equipPlace in ChConfig.Pack_EquipPart_CanPlusStar.get(packType, []):
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
+ if not ipyData:
+ continue
+ gridIndex = ipyData.GetGridIndex()
+ curEquip = curPack.GetAt(gridIndex)
+ ChEquip.SetEquipPartPlusLV(curPlayer, packType, gridIndex, curEquip, setStarLV)
+ ChEquip.SetEquipPartProficiency(curPlayer, packType, gridIndex, 0)
+ ChEquip.SetEquipPartPlusEvolveLV(curPlayer, packType, gridIndex, 0)
+ Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
ChEquip.NotifyEquipPartPlusLV(curPlayer)
- GameWorld.DebugAnswer(curPlayer, "设置所有部位强化等级为: %s" % setStarLV)
+ GameWorld.DebugAnswer(curPlayer, "设置%s阶所有部位强化等级为: %s" % (classLV, setStarLV))
return
if len(cmdList) != 3:
__GMHelpAnswer(curPlayer, "参数错误!")
return
- packType, index, starLV = cmdList
+ classLV, equipPlace, starLV = cmdList
if packType not in ChConfig.Pack_EquipPart_CanPlusStar:
__GMHelpAnswer(curPlayer, "packType不存在!")
return
- if index not in ChConfig.Pack_EquipPart_CanPlusStar[packType]:
+ if equipPlace not in ChConfig.Pack_EquipPart_CanPlusStar[packType]:
__GMHelpAnswer(curPlayer, "index索引不存在!")
return
-
- curPack = curPlayer.GetItemManager().GetPack(packType)
- curEquip = curPack.GetAt(index)
-
- maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
+ if not ipyData:
+ return
+ gridIndex = ipyData.GetGridIndex()
+ curEquip = curPack.GetAt(gridIndex)
+ if not ItemCommon.CheckItemCanUse(curEquip):
+ return
+ maxStarLV = ItemCommon.GetItemMaxPlusLV(curPlayer, gridIndex, curEquip)
starLV = min(starLV, maxStarLV)
- ChEquip.SetEquipPartPlusLV(curPlayer, packType, index, curEquip, starLV)
- ChEquip.SetEquipPartProficiency(curPlayer, packType, index, 0)
- Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType)
+ ChEquip.SetEquipPartPlusLV(curPlayer, packType, gridIndex, curEquip, starLV)
+ ChEquip.SetEquipPartProficiency(curPlayer, packType, gridIndex, 0)
+ Operate_EquipPlus.DoLogic_OnEquipPartStarLVChange(curPlayer, packType, classLV)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index c794290..439adc5 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -113,8 +113,7 @@
"ItemPlusMax":(
("BYTE", "Type", 1),
- ("BYTE", "ItemRank", 1),
- ("BYTE", "ItemColor", 1),
+ ("BYTE", "Star", 1),
("WORD", "LevelMax", 0),
),
@@ -1384,6 +1383,14 @@
("dict", "StarAttrInfo", 0),
("dict", "BaseAttrInfo", 0),
),
+
+ "EquipPlusEvolve":(
+ ("BYTE", "EquipPlace", 1),
+ ("BYTE", "EvolveLV", 1),
+ ("WORD", "NeedPlusLV", 0),
+ ("dict", "CostItem", 0),
+ ("dict", "Attr", 0),
+ ),
}
@@ -1557,14 +1564,12 @@
def __init__(self):
self.Type = 0
- self.ItemRank = 0
- self.ItemColor = 0
+ self.Star = 0
self.LevelMax = 0
return
def GetType(self): return self.Type # 按装备位对应类型查找
- def GetItemRank(self): return self.ItemRank # 装备阶数
- def GetItemColor(self): return self.ItemColor # 装备颜色 如橙装
+ def GetStar(self): return self.Star # 装备星数
def GetLevelMax(self): return self.LevelMax # 强化等级上限
# 装备全身强化属性
@@ -4228,6 +4233,23 @@
def GetCostItemDict(self): return self.CostItemDict # 特殊材料
def GetStarAttrInfo(self): return self.StarAttrInfo # 星级属性
def GetBaseAttrInfo(self): return self.BaseAttrInfo # 基础属性增加
+
+# 装备强化进化表
+class IPY_EquipPlusEvolve():
+
+ def __init__(self):
+ self.EquipPlace = 0
+ self.EvolveLV = 0
+ self.NeedPlusLV = 0
+ self.CostItem = {}
+ self.Attr = {}
+ return
+
+ def GetEquipPlace(self): return self.EquipPlace # 装备位
+ def GetEvolveLV(self): return self.EvolveLV # 进化等级
+ def GetNeedPlusLV(self): return self.NeedPlusLV # 需要强化等级
+ def GetCostItem(self): return self.CostItem # 消耗材料
+ def GetAttr(self): return self.Attr # 属性
def Log(msg, playerID=0, par=0):
@@ -4525,6 +4547,8 @@
self.ipyEquipPlaceIndexMapLen = len(self.ipyEquipPlaceIndexMapCache)
self.ipyEquipStarUpCache = self.__LoadFileData("EquipStarUp", IPY_EquipStarUp)
self.ipyEquipStarUpLen = len(self.ipyEquipStarUpCache)
+ self.ipyEquipPlusEvolveCache = self.__LoadFileData("EquipPlusEvolve", IPY_EquipPlusEvolve)
+ self.ipyEquipPlusEvolveLen = len(self.ipyEquipPlusEvolveCache)
Log("IPY_FuncConfig count=%s" % len(self.ipyFuncConfigDict))
Log("IPY_DataMgr InitOK!")
return
@@ -4963,6 +4987,8 @@
def GetEquipPlaceIndexMapByIndex(self, index): return self.ipyEquipPlaceIndexMapCache[index]
def GetEquipStarUpCount(self): return self.ipyEquipStarUpLen
def GetEquipStarUpByIndex(self, index): return self.ipyEquipStarUpCache[index]
+ def GetEquipPlusEvolveCount(self): return self.ipyEquipPlusEvolveLen
+ def GetEquipPlusEvolveByIndex(self, index): return self.ipyEquipPlusEvolveCache[index]
IPYData = IPY_DataMgr()
def IPY_Data(): return IPYData
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 4025566..0e99c6b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -455,7 +455,7 @@
allAttrListStar = [{} for _ in range(4)] # 星数属性
#allAttrListEquip = [{} for _ in range(4)] # 装备其他
- #allAttrListPlusBase = [{} for _ in range(4)] # 基础强化属性
+ allAttrListPlusBase = [{} for _ in range(4)] # 基础强化属性
allAttrListStone = [{} for _ in range(4)] # 宝石属性
allAttrListSuit = [{} for _ in range(4)] # 套装属性
allAttrListWash = [{} for _ in range(4)] # 洗练属性
@@ -510,15 +510,6 @@
# PlayerControl.CalcAttrDict_Type(effectID, effectValue, allAttrListEquip)
# baseEquipAttrDict[effectID] = baseEquipAttrDict.get(effectID, 0) + effectValue
-# groupType = GetEquipPartSuiteGroupType(curPlayer, equipIndex)
-# for suiteType in range(1, maxSuiteType + 1):
-# suitelv = GetEquipPartSuiteLV(curPlayer, equipIndex, suiteType)
-# if suitelv:
-# maxSuiteLV = Operate_EquipSuitCompose.GetEquipCanDoMaxSuiteLV(curPlayer, curEquip, suiteType, groupType)
-# suiteLV = min(suitelv, maxSuiteLV)
-# if suiteLV:
-# suiteKey = '%s_%s_%s' % (groupType, suiteType, suitelv)
-# suitCntDict[suiteKey] = suitCntDict.get(suiteKey, 0) + 1
#星数属性
equipPartStar = GetEquipPartStarByRank(curPlayer, equipIndex, curEquip) #生效的星数
@@ -532,10 +523,10 @@
suitCntDict[suiteID] = []
suitCntDict[suiteID].append(equipPartStar)
- #物品强化属性,佩饰强化不同要区分
-# if equipIndex in equipPartStarIndexList:
-# equipPartStarLV = GetEquipPartPlusLVByRank(curPlayer, packType, equipIndex, curEquip)
-# CalcAttr_ItemPlus(curPlayer, curEquip, allAttrListPlusBase, equipPartStarLV)
+ #物品强化属性
+ equipPartPlusLV = GetEquipPartPlusLVByRank(curPlayer, packType, equipIndex, curEquip)
+ equipPartPlusEvolveLV = GetEquipPartPlusEvolveLVByEquip(curPlayer, packType, equipIndex, curEquip)
+ CalcAttr_ItemPlus(curPlayer, curEquip, allAttrListPlusBase, equipPartPlusLV, equipPartPlusEvolveLV)
#传奇属性
#CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict)
@@ -654,7 +645,7 @@
# @param curPlayer 当前玩家
# @param curPlayer allAttrList 属性缓存
# @return None
-def CalcAttr_ItemPlus(curPlayer, curEquip, allAttrList, equipPartStarLV=None):
+def CalcAttr_ItemPlus(curPlayer, curEquip, allAttrList, equipPartStarLV, equipPartPlusEvolveLV):
if not equipPartStarLV:
return
plusType = GetEquipPlusType(curEquip)
@@ -667,6 +658,14 @@
attrTypeList, attrValueList = ipyData.GetAttrType(), ipyData.GetAttrValue()
for i, attrID in enumerate(attrTypeList):
PlayerControl.CalcAttrDict_Type(attrID, attrValueList[i], allAttrList)
+
+ #进化属性
+ equipPlace = curEquip.GetEquipPlace()
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlusEvolve', equipPlace, equipPartPlusEvolveLV)
+ if not ipyData:
+ return
+ for attrID, attrValue in ipyData.GetAttr().items():
+ PlayerControl.CalcAttrDict_Type(attrID, attrValue, allAttrList)
return
@@ -889,19 +888,40 @@
oldEquipShowSwitch = curPlayer.GetEquipShowSwitch()
if updEquipShowSwitch == oldEquipShowSwitch:
return
+ classLV, isSuite = updEquipShowSwitch/10, updEquipShowSwitch%10
+ equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+ #验证套装
+ realSuit=True
+ for place in ChConfig.Def_SuitEquipPlaceList:
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, place)
+ if not ipyData:
+ realSuit = False
+ break
+ gridIndex = ipyData.GetGridIndex()
+ curEquip = equipPack.GetAt(gridIndex)
+ if not ItemCommon.CheckItemCanUse(curEquip):
+ realSuit = False
+ break
+ if not curEquip.GetSuiteID():
+ realSuit = False
+ break
+ if realSuit != isSuite:
+ GameWorld.DebugLog('SetEquipShowSwitch 前端发的isSuite 和实际不一致!')
+ return
#通知外观装备
updFaceEquipIndex = 0
equipIndexList = []
+
for equipPlace in [ShareDefine.retWeapon, ShareDefine.retWeapon2, ShareDefine.retClothes]:
- ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', 1, equipPlace)
+ ipyData = IpyGameDataPY.GetIpyGameData('EquipPlaceIndexMap', classLV, equipPlace)
if not ipyData:
continue
gridIndex = ipyData.GetGridIndex()
updFaceEquipIndex = updFaceEquipIndex * 1000 + gridIndex
equipIndexList.append(gridIndex)
PlayerControl.SetFaceEquipIndex(curPlayer, updFaceEquipIndex)
- equipPack = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
+
for equipPackIndex in equipIndexList:
curEquip = equipPack.GetAt(equipPackIndex)
if not ItemCommon.CheckItemCanUse(curEquip):
@@ -930,7 +950,7 @@
## 获取公共部位强化星级, 因装备的最高可强化星级影响,用于算当前装备属性使用, 不影响全身星级
def GetEquipPartPlusLVByRank(curPlayer, packType, index, curEquip):
- maxStarLV = ItemCommon.GetItemMaxPlusLV(curEquip)
+ maxStarLV = ItemCommon.GetItemMaxPlusLV(curPlayer, index, curEquip)
return min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusLV % (packType, index)), maxStarLV)
@@ -953,9 +973,27 @@
return
+## 获取公共部位强化进化等级, 用于算当前装备属性使用, 不影响全身星级
+def GetEquipPartPlusEvolveLVByEquip(curPlayer, packType, index, curEquip):
+ maxEvolveLV = ItemCommon.GetItemMaxPlusEvolveLV(curPlayer, index, curEquip)
+ return min(curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index)), maxEvolveLV)
+
+
+## 获取公共部位强化进化等级
+def GetEquipPartPlusEvolveLV(curPlayer, packType, index):
+ return curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index))
+
+
+## 设置公共部位强化进化等级
+def SetEquipPartPlusEvolveLV(curPlayer, packType, index, evolveLV):
+ if GetEquipPartPlusEvolveLV(curPlayer, packType, index) == evolveLV:
+ return
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_EquipPartPlusEvolveLV % (packType, index), evolveLV)
+ return
+
## 通知公共部位强化等级
def NotifyEquipPartPlusLV(curPlayer, packType=None, index=None):
- ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartStarLVInfo()
+ ePartStarLVPack = ChPyNetSendPack.tagMCEquipPartPlusInfo()
ePartStarLVPack.Clear()
ePartStarLVPack.InfoList = []
@@ -969,12 +1007,13 @@
if index != None and index != i:
continue
- ePartStarLV = ChPyNetSendPack.tagMCEquipPartStarLV()
+ ePartStarLV = ChPyNetSendPack.tagMCEquipPartPlusLV()
ePartStarLV.Clear()
ePartStarLV.PackType = pType
ePartStarLV.EquipIndex = i
ePartStarLV.EquipPartStarLV = GetEquipPartPlusLV(curPlayer, pType, i)
ePartStarLV.Proficiency = GetEquipPartProficiency(curPlayer, pType, i)
+ ePartStarLV.EvolveLV = GetEquipPartPlusEvolveLV(curPlayer, pType, i)
ePartStarLVPack.InfoList.append(ePartStarLV)
ePartStarLVPack.Count = len(ePartStarLVPack.InfoList)
@@ -1167,8 +1206,8 @@
activeCnt = clientData.Cnt
if activeType == 0:
key = ChConfig.Def_PDict_EquipActiveStarLV
- elif activeType == 1:
- key = ChConfig.Def_PDict_EquipActiveStars
+# elif activeType == 1:
+# key = ChConfig.Def_PDict_EquipActiveStars
else:
return
curCnt = curPlayer.NomalDictGetProperty(key)
@@ -1199,8 +1238,8 @@
continue
if aType == 0:
key = ChConfig.Def_PDict_EquipActiveStarLV
- elif aType == 1:
- key = ChConfig.Def_PDict_EquipActiveStars
+# elif aType == 1:
+# key = ChConfig.Def_PDict_EquipActiveStars
else:
return
curCnt = curPlayer.NomalDictGetProperty(key)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
index 76cc7d8..a2fcac8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -1925,7 +1925,7 @@
## 获取物品最高强化等级
# @param itemType: 物品类型
# @return 最大星级,0为不可强化
-def GetItemMaxPlusLV(curItem):
+def GetItemMaxPlusLV(curPlayer, equipPackindex, curItem):
equipPlace = curItem.GetEquipPlace()
plusMaxTypeDict = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelLimit", 1)
if not plusMaxTypeDict:
@@ -1935,19 +1935,41 @@
if equipPlace not in plusMaxTypeDict:
return 0
findType = plusMaxTypeDict[equipPlace]
- #仙器特殊取固定值
- if equipPlace in [ShareDefine.retFairyCan, ShareDefine.retFairyCan2]:
- rank = 0
- itemColor = 0
- else:
- rank = GetItemClassLV(curItem)
- itemColor = curItem.GetItemColor()
- ipyData = IpyGameDataPY.GetIpyGameData("ItemPlusMax", findType, rank, itemColor)
- if not ipyData:
- GameWorld.ErrLog("找不到装备强化等级上限表数据配置! rank = %s, %s" % (rank , curItem.GetItemQuality()))
- return
+ equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, equipPackindex, curItem)
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog("ItemPlusMax", findType, equipStar)
+ if ipyData:
+ return ipyData.GetLevelMax()
- return ipyData.GetLevelMax()
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('ItemPlusMax', {'Type':findType}, True, False)
+ if not ipyDataList:
+ return 0
+ maxStar = ipyDataList[-1].GetStar()
+ if equipStar > maxStar:
+ return ipyDataList[-1].GetLevelMax()
+ findMax = 0
+ for ipyData in ipyDataList:
+ if equipStar >= ipyData.GetStar():
+ findMax = ipyData.GetLevelMax()
+ return findMax
+
+
+## 获取物品最高强化进化等级
+# @param itemType: 物品类型
+# @return 最大星级,0为不可强化
+def GetItemMaxPlusEvolveLV(curPlayer, equipPackindex, curItem):
+ packType = IPY_GameWorld.rptEquip
+ curPlusLV = ChEquip.GetEquipPartPlusLVByRank(curPlayer, packType, equipPackindex, curItem)
+ equipPlace = curItem.GetEquipPlace()
+ ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlusEvolve', {'EquipPlace':equipPlace}, True)
+ if not ipyDataList:
+ return 0
+ maxEvolvelv = 0
+ for ipyData in ipyDataList:
+ if curPlusLV >= ipyData.GetNeedPlusLV():
+ maxEvolvelv = ipyData.GetEvolveLV()
+ else:
+ break
+ return maxEvolvelv
## 获取物品最高星数
# @param itemType: 物品类型
--
Gitblit v1.8.0