From 82ca2dd1656364f93523af726ac81b7823cbc3d2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期日, 06 十月 2019 21:20:08 +0800
Subject: [PATCH] 8298 【恺英】【开发】基础套装极/仙/神进阶(神、仙、极传奇属性支持)
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py | 34 ++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py | 144 +++++++++++++++++++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py | 13 -
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 6 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 70 +++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddLegendAttr.py | 22 +--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py | 21 +++
PySysDB/PySysDBPY.h | 26 ++++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 6 +
9 files changed, 282 insertions(+), 60 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 6a28fd8..d4e9873 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1776,6 +1776,32 @@
DWORD _EquipPlace; //装备位(物品表EquipPlace字段)
};
+//装备神装表
+
+struct tagEquipShenAttr
+{
+ DWORD _EquipItemID; //装备ID
+ list ShenAttrIDList; //神品传奇属性ID列表
+ list ShenAttrValueList; //神品传奇属性值列表
+ list XianAttrIDList; //仙品传奇属性ID列表
+ list XianAttrValueList; //仙品传奇属性值列表
+ list JiAttrIDList; //极品传奇属性ID列表
+ list JiAttrValueList; //极品传奇属性值列表
+ list LegendAttrIDList; //普通传奇属性ID列表
+ list LegendAttrValueList; //普通传奇属性值列表
+};
+
+//装备神装进阶表
+
+struct tagEquipShenEvolve
+{
+ DWORD _EquipItemID; //装备ID
+ DWORD EvolveEquipID; //可进阶目标装备ID
+ list EvolveNeedItemIDInfo; //进阶所需附加材料及个数
+ BYTE EvolveNeedSuitCount; //进阶所需本阶套装件数
+ BYTE EvolveNeedEquipID; //进阶所需固定装备ID
+};
+
//装备升星表
struct tagEquipStarUp
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 8e13cd9..0bc1f5c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -1280,6 +1280,12 @@
Def_IudetItemDecompound = 33 # 拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
Def_IudetLiantaiItemID = 35 # 合成该莲台的所有莲台ID [itemID, itemID, ...]
Def_IudetAddSkillID = 37 # 可添加的技能ID列表 [skillID, skillID, ...]
+Def_IudetLegendAttrIDShen = 51 # 物品传奇属性ID列表 - 神
+Def_IudetLegendAttrValueShen = 61 # 物品传奇属性值列表 - 神
+Def_IudetLegendAttrIDXian = 53 # 物品传奇属性ID列表 - 仙
+Def_IudetLegendAttrValueXian = 63 # 物品传奇属性值列表 - 仙
+Def_IudetLegendAttrIDJi = 55 # 物品传奇属性ID列表 - 极
+Def_IudetLegendAttrValueJi = 65 # 物品传奇属性值列表 - 极
Def_IudetItemColor = 16 # 物品颜色,如果该值没有就取物品
Def_IudetItemCount = 18 # 物品个数,支持20亿,目前仅特殊转化物品会用到
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddLegendAttr.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddLegendAttr.py
index d7bf97d..8d7d709 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddLegendAttr.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddLegendAttr.py
@@ -19,7 +19,6 @@
import ItemCommon
import ItemControler
import IPY_GameWorld
-import ShareDefine
#---------------------------------------------------------------------
#逻辑实现
@@ -46,19 +45,16 @@
if not legendAttrInfo:
GameWorld.DebugAnswer(curPlayer, "获取该装备传奇属性失败或没有传奇属性!")
return
- attrIDList, attrValueList = legendAttrInfo
+ ItemControler.SetEquipLegendAttr(curItem, legendAttrInfo)
- # 传奇属性
- if attrIDList and attrValueList and len(attrIDList) == len(attrValueList):
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
- attrDict = {}
- for i, attrID in enumerate(attrIDList):
- value = attrValueList[i]
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, attrID)
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, value)
- attrDict[attrID] = value
- GameWorld.DebugAnswer(curPlayer, "传奇属性:%s" % (attrDict))
+ if legendAttrInfo[2]:
+ GameWorld.DebugAnswer(curPlayer, "神传奇属性:%s %s" % (legendAttrInfo[2], legendAttrInfo[3]))
+ if legendAttrInfo[4]:
+ GameWorld.DebugAnswer(curPlayer, "仙传奇属性:%s %s" % (legendAttrInfo[4], legendAttrInfo[5]))
+ if legendAttrInfo[6]:
+ GameWorld.DebugAnswer(curPlayer, "极传奇属性:%s %s" % (legendAttrInfo[6], legendAttrInfo[7]))
+ if legendAttrInfo[0]:
+ GameWorld.DebugAnswer(curPlayer, "传奇属性:%s %s" % (legendAttrInfo[0], legendAttrInfo[1]))
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 4017062..e2eec17 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1378,6 +1378,26 @@
("DWORD", "EquipPlace", 1),
),
+ "EquipShenAttr":(
+ ("DWORD", "EquipItemID", 1),
+ ("list", "ShenAttrIDList", 0),
+ ("list", "ShenAttrValueList", 0),
+ ("list", "XianAttrIDList", 0),
+ ("list", "XianAttrValueList", 0),
+ ("list", "JiAttrIDList", 0),
+ ("list", "JiAttrValueList", 0),
+ ("list", "LegendAttrIDList", 0),
+ ("list", "LegendAttrValueList", 0),
+ ),
+
+ "EquipShenEvolve":(
+ ("DWORD", "EquipItemID", 1),
+ ("DWORD", "EvolveEquipID", 0),
+ ("list", "EvolveNeedItemIDInfo", 0),
+ ("BYTE", "EvolveNeedSuitCount", 0),
+ ("BYTE", "EvolveNeedEquipID", 0),
+ ),
+
"EquipStarUp":(
("BYTE", "ClassLV", 1),
("BYTE", "EquipPlace", 1),
@@ -4328,6 +4348,48 @@
def GetClassLV(self): return self.ClassLV # 阶级(物品表LV字段)
def GetEquipPlace(self): return self.EquipPlace # 装备位(物品表EquipPlace字段)
+# 装备神装表
+class IPY_EquipShenAttr():
+
+ def __init__(self):
+ self.EquipItemID = 0
+ self.ShenAttrIDList = []
+ self.ShenAttrValueList = []
+ self.XianAttrIDList = []
+ self.XianAttrValueList = []
+ self.JiAttrIDList = []
+ self.JiAttrValueList = []
+ self.LegendAttrIDList = []
+ self.LegendAttrValueList = []
+ return
+
+ def GetEquipItemID(self): return self.EquipItemID # 装备ID
+ def GetShenAttrIDList(self): return self.ShenAttrIDList # 神品传奇属性ID列表
+ def GetShenAttrValueList(self): return self.ShenAttrValueList # 神品传奇属性值列表
+ def GetXianAttrIDList(self): return self.XianAttrIDList # 仙品传奇属性ID列表
+ def GetXianAttrValueList(self): return self.XianAttrValueList # 仙品传奇属性值列表
+ def GetJiAttrIDList(self): return self.JiAttrIDList # 极品传奇属性ID列表
+ def GetJiAttrValueList(self): return self.JiAttrValueList # 极品传奇属性值列表
+ def GetLegendAttrIDList(self): return self.LegendAttrIDList # 普通传奇属性ID列表
+ def GetLegendAttrValueList(self): return self.LegendAttrValueList # 普通传奇属性值列表
+
+# 装备神装进阶表
+class IPY_EquipShenEvolve():
+
+ def __init__(self):
+ self.EquipItemID = 0
+ self.EvolveEquipID = 0
+ self.EvolveNeedItemIDInfo = []
+ self.EvolveNeedSuitCount = 0
+ self.EvolveNeedEquipID = 0
+ return
+
+ def GetEquipItemID(self): return self.EquipItemID # 装备ID
+ def GetEvolveEquipID(self): return self.EvolveEquipID # 可进阶目标装备ID
+ def GetEvolveNeedItemIDInfo(self): return self.EvolveNeedItemIDInfo # 进阶所需附加材料及个数
+ def GetEvolveNeedSuitCount(self): return self.EvolveNeedSuitCount # 进阶所需本阶套装件数
+ def GetEvolveNeedEquipID(self): return self.EvolveNeedEquipID # 进阶所需固定装备ID
+
# 装备升星表
class IPY_EquipStarUp():
@@ -4878,6 +4940,10 @@
self.ipyMysteryShopLen = len(self.ipyMysteryShopCache)
self.ipyEquipPlaceIndexMapCache = self.__LoadFileData("EquipPlaceIndexMap", IPY_EquipPlaceIndexMap)
self.ipyEquipPlaceIndexMapLen = len(self.ipyEquipPlaceIndexMapCache)
+ self.ipyEquipShenAttrCache = self.__LoadFileData("EquipShenAttr", IPY_EquipShenAttr)
+ self.ipyEquipShenAttrLen = len(self.ipyEquipShenAttrCache)
+ self.ipyEquipShenEvolveCache = self.__LoadFileData("EquipShenEvolve", IPY_EquipShenEvolve)
+ self.ipyEquipShenEvolveLen = len(self.ipyEquipShenEvolveCache)
self.ipyEquipStarUpCache = self.__LoadFileData("EquipStarUp", IPY_EquipStarUp)
self.ipyEquipStarUpLen = len(self.ipyEquipStarUpCache)
self.ipyEquipPlusEvolveCache = self.__LoadFileData("EquipPlusEvolve", IPY_EquipPlusEvolve)
@@ -5346,6 +5412,10 @@
def GetMysteryShopByIndex(self, index): return self.ipyMysteryShopCache[index]
def GetEquipPlaceIndexMapCount(self): return self.ipyEquipPlaceIndexMapLen
def GetEquipPlaceIndexMapByIndex(self, index): return self.ipyEquipPlaceIndexMapCache[index]
+ def GetEquipShenAttrCount(self): return self.ipyEquipShenAttrLen
+ def GetEquipShenAttrByIndex(self, index): return self.ipyEquipShenAttrCache[index]
+ def GetEquipShenEvolveCount(self): return self.ipyEquipShenEvolveLen
+ def GetEquipShenEvolveByIndex(self, index): return self.ipyEquipShenEvolveCache[index]
def GetEquipStarUpCount(self): return self.ipyEquipStarUpLen
def GetEquipStarUpByIndex(self, index): return self.ipyEquipStarUpCache[index]
def GetEquipPlusEvolveCount(self): return self.ipyEquipPlusEvolveLen
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 6909941..2d29c31 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py
@@ -799,15 +799,12 @@
suitCntDict[suiteID].append(equipPartStar)
#传奇属性
- legendAttrCount = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
- legendAttrValueCount = curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
- if legendAttrCount and legendAttrCount == legendAttrValueCount:
- for legendIndex in xrange(legendAttrCount):
- legendAttrID = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, legendIndex)
- legendAttrValue = curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, legendIndex)
- PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrListEquip)
- #GameWorld.DebugLog(" 传奇属性: ID=%s +%s" % (legendAttrID, legendAttrValue))
- __CalcFuncAddEquipAttrPer(equipPlace, legendAttrID, legendAttrValue, equip_addEquipBaseAttrPerList)
+ legAttrIDList, legAttrValueList = ItemControler.GetEquipLegendAttrAll(curEquip)
+ for i, legendAttrID in enumerate(legAttrIDList):
+ legendAttrValue = legAttrValueList[i]
+ PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrListEquip)
+ #GameWorld.DebugLog(" 传奇属性: ID=%s +%s" % (legendAttrID, legendAttrValue))
+ __CalcFuncAddEquipAttrPer(equipPlace, legendAttrID, legendAttrValue, equip_addEquipBaseAttrPerList)
#物品强化属性
__CalcAttr_ItemPlus(curPlayer, curEquip, packType, equipIndex, allAttrListPlus, plus_addEquipBaseAttrPerList)
@@ -975,21 +972,16 @@
def CalcAttr_LegendAttr(curPlayer, curEquip, allAttrListEquip, legendAttrDict={}):
## 计算传奇属性
- # 传奇属性ID列表
- legendAttrIDList = [curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i) \
- for i in range(curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID))]
- # 传奇属性值列表
- legendAttrValueList = [curEquip.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i) \
- for i in range(curEquip.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue))]
- if not legendAttrIDList or len(legendAttrIDList) != len(legendAttrValueList):
+ legAttrIDList, legAttrValueList = ItemControler.GetEquipLegendAttrAll(curEquip)
+ if not legAttrIDList:
#GameWorld.DebugLog("没有传奇属性!")
return
- #GameWorld.DebugLog("传奇属性: place=%s,IDList=%s, v=%s" % (curEquip.GetEquipPlace(), legendAttrIDList, legendAttrValueList))
+ #GameWorld.DebugLog("传奇属性: place=%s,IDList=%s, v=%s" % (curEquip.GetEquipPlace(), legAttrIDList, legAttrValueList))
- for i, attrID in enumerate(legendAttrIDList):
- value = legendAttrValueList[i]
- #GameWorld.DebugLog("加传奇属性: %s +%s" % (attrID, value))
- PlayerControl.CalcAttrDict_Type(attrID, value, allAttrListEquip)
+ for i, legendAttrID in enumerate(legAttrIDList):
+ legendAttrValue = legAttrValueList[i]
+ #GameWorld.DebugLog("加传奇属性: %s +%s" % (legendAttrID, legendAttrValue))
+ PlayerControl.CalcAttrDict_Type(legendAttrID, legendAttrValue, allAttrListEquip)
#legendAttrDict[attrID] = legendAttrDict.get(attrID, 0) + value
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
index af85f57..6550cc9 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -1932,6 +1932,27 @@
for i in xrange(len(equipData.legendAttrIDList)):
curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, equipData.legendAttrIDList[i])
curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, equipData.legendAttrValueList[i])
+ # 传奇属性 - 神
+ if equipData.legendAttrIDListShen and equipData.legendAttrValueListShen:
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDShen)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueShen)
+ for i in xrange(len(equipData.legendAttrIDListShen)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDShen, equipData.legendAttrIDListShen[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueShen, equipData.legendAttrValueListShen[i])
+ # 传奇属性 - 仙
+ if equipData.legendAttrIDListXian and equipData.legendAttrValueListXian:
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDXian)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueXian)
+ for i in xrange(len(equipData.legendAttrIDListXian)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDXian, equipData.legendAttrIDListXian[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueXian, equipData.legendAttrValueListXian[i])
+ # 传奇属性 - 极
+ if equipData.legendAttrIDListJi and equipData.legendAttrValueListJi:
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDJi)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueJi)
+ for i in xrange(len(equipData.legendAttrIDListJi)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDJi, equipData.legendAttrIDListJi[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueJi, equipData.legendAttrValueListJi[i])
ItemCommon.MakeEquipGS(curItem)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
index e7142e7..ad587df 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py
@@ -1233,16 +1233,11 @@
curPlayer = self.__Player
srcScore = ItemCommon.GetEquipGearScore(curItem)
- legendAttrIDList, legendAttrValueList = legendAttrInfo
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
- curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
- for i in xrange(len(legendAttrIDList)):
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, legendAttrIDList[i])
- curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, legendAttrValueList[i])
+ SetEquipLegendAttr(curItem, legendAttrInfo)
ItemCommon.MakeEquipGS(curItem)
updScore = ItemCommon.GetEquipGearScore(curItem)
- GameWorld.DebugLog("传奇属性异常,重新刷新一次属性: packType=%s,itemID=%s,legendAttrIDList=%s,legendAttrValueList=%s,srcScore=%s,updScore=%s"
- % (packType, curItem.GetItemTypeID(), legendAttrIDList, legendAttrValueList, srcScore, updScore), curPlayer.GetPlayerID())
+ GameWorld.DebugLog("传奇属性异常,重新刷新一次属性: packType=%s,itemID=%s,srcScore=%s,updScore=%s"
+ % (packType, curItem.GetItemTypeID(), srcScore, updScore), curPlayer.GetPlayerID())
return
def CheckRolePackEquipAttr(self):
@@ -2192,19 +2187,29 @@
legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
if legendAttrIDCnt and legendAttrIDCnt == legendAttrValueCnt:
- attrIDList, attrValueList = [], []
- for legendIndex in xrange(legendAttrIDCnt):
- attrIDList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, legendIndex))
- attrValueList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, legendIndex))
- #GameWorld.DebugLog("已经有传奇属性的拍品: %s, %s" % (attrIDList, attrValueList))
+ legendAttrInfo = GetEquipLegendAttrGroup(curItem)
+ #GameWorld.DebugLog("已经有传奇属性的拍品: %s" % str(legendAttrInfo))
else:
# 生成传奇属性
legendAttrInfo = GetAddEquipLegendAttr(curItem, curPlayer)
+ #GameWorld.DebugLog("重新生成传奇属性的拍品: %s" % str(legendAttrInfo))
if not legendAttrInfo:
return
- attrIDList, attrValueList = legendAttrInfo
- #GameWorld.DebugLog("重新生成传奇属性的拍品: %s, %s" % (attrIDList, attrValueList))
- updateDict = {ShareDefine.Def_IudetLegendAttrID:attrIDList, ShareDefine.Def_IudetLegendAttrValue:attrValueList}
+
+ updateDict = {}
+ if legendAttrInfo[0]:
+ updateDict[ShareDefine.Def_IudetLegendAttrID] = legendAttrInfo[0]
+ updateDict[ShareDefine.Def_IudetLegendAttrValue] = legendAttrInfo[1]
+ if legendAttrInfo[2]:
+ updateDict[ShareDefine.Def_IudetLegendAttrIDShen] = legendAttrInfo[2]
+ updateDict[ShareDefine.Def_IudetLegendAttrValueShen] = legendAttrInfo[3]
+ if legendAttrInfo[4]:
+ updateDict[ShareDefine.Def_IudetLegendAttrIDXian] = legendAttrInfo[4]
+ updateDict[ShareDefine.Def_IudetLegendAttrValueXian] = legendAttrInfo[5]
+ if legendAttrInfo[6]:
+ updateDict[ShareDefine.Def_IudetLegendAttrIDJi] = legendAttrInfo[6]
+ updateDict[ShareDefine.Def_IudetLegendAttrValueJi] = legendAttrInfo[7]
+
delKeyList = [ShareDefine.Def_IudetAuctionItemCreateTime]
ItemCommon.UpdateItemUserData(curItem, updateDict, delKeyList, isUpdateGS=True)
@@ -2321,6 +2326,12 @@
if legendAttrInfo:
tmpEquipData.legendAttrIDList = legendAttrInfo[0]
tmpEquipData.legendAttrValueList = legendAttrInfo[1]
+ tmpEquipData.legendAttrIDListShen = legendAttrInfo[2]
+ tmpEquipData.legendAttrValueListShen = legendAttrInfo[3]
+ tmpEquipData.legendAttrIDListXian = legendAttrInfo[4]
+ tmpEquipData.legendAttrValueListXian = legendAttrInfo[5]
+ tmpEquipData.legendAttrIDListJi = legendAttrInfo[6]
+ tmpEquipData.legendAttrValueListJi = legendAttrInfo[7]
# 其他装备属性
ChItem.EquipAddAdditionEx(curItem, tmpEquipData)
@@ -2328,7 +2339,7 @@
def GetAddEquipLegendAttr(curItem, curPlayer, isAllAttr=False):
'''获取生成到装备上的传奇属性
- @return: None 或者 [[传奇属性效果ID列表], [属性值列表]]
+ @return: None 或者 [传奇属性效果ID列表], [属性值列表], [神ID], [神值], [仙ID], [仙值], [极ID], [极值]
'''
# if GetIsAuctionItem(curItem):
# #GameWorld.DebugLog("拍品无法生成传奇属性!")
@@ -2338,6 +2349,14 @@
itemColor = curItem.GetItemColor()
itemQuality = curItem.GetItemQuality()
isSuit = 1 if curItem.GetSuiteID() else 0
+
+ ipyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipShenAttr", itemID)
+ if ipyData:
+ return ipyData.GetLegendAttrIDList(), ipyData.GetLegendAttrValueList(), \
+ ipyData.GetShenAttrIDList(), ipyData.GetShenAttrValueList(), \
+ ipyData.GetXianAttrIDList(), ipyData.GetXianAttrValueList(), \
+ ipyData.GetJiAttrIDList(), ipyData.GetJiAttrValueList()
+
# 1. 定条数
attrCountIpyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipLegendAttrCount", itemType, itemColor, isSuit, itemQuality)
if not attrCountIpyData:
@@ -2424,8 +2443,91 @@
curLegAttrValueList.append(attrValue)
#GameWorld.DebugLog(" 随机属性: attrID=%s,attrValue=%s,playerLV=%s,curLibNum=%s,valueList=%s"
# % (attrID, attrValue, playerLV, curLibNum, valueList), playerID)
- return [curLegAttrIDList, curLegAttrValueList]
+ return curLegAttrIDList, curLegAttrValueList, [], [], [], [], [], []
+def GetEquipLegendAttrAll(curItem):
+ ## 获取装备传奇属性 - 所有分组合并返回
+ legendAttrInfo = GetEquipLegendAttrGroup(curItem)
+ legAttrIDList = legendAttrInfo[0] + legendAttrInfo[2] + legendAttrInfo[4] + legendAttrInfo[6]
+ legAttrValueList = legendAttrInfo[1] + legendAttrInfo[3] + legendAttrInfo[5] + legendAttrInfo[7]
+ return legAttrIDList, legAttrValueList
+
+def GetEquipLegendAttrGroup(curItem):
+ ## 获取装备传奇属性 - 按类型分组返回
+
+ legAttrIDList, legAttrValueList = [], []
+ legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
+ legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
+ if legendAttrIDCnt == legendAttrValueCnt:
+ for i in xrange(legendAttrIDCnt):
+ legAttrIDList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i))
+ legAttrValueList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i))
+
+ shenAttrIDList, shenAttrValueList = [], []
+ shenAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrIDShen)
+ shenAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValueShen)
+ if shenAttrIDCnt == shenAttrValueCnt:
+ for i in xrange(shenAttrIDCnt):
+ shenAttrIDList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrIDShen, i))
+ shenAttrValueList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValueShen, i))
+
+ xianAttrIDList, xianAttrValueList = [], []
+ xianAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrIDXian)
+ xianAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValueXian)
+ if xianAttrIDCnt == xianAttrValueCnt:
+ for i in xrange(xianAttrIDCnt):
+ xianAttrIDList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrIDXian, i))
+ xianAttrValueList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValueXian, i))
+
+ jiAttrIDList, jiAttrValueList = [], []
+ jiAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrIDJi)
+ jiAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValueJi)
+ if jiAttrIDCnt == jiAttrValueCnt:
+ for i in xrange(jiAttrIDCnt):
+ jiAttrIDList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrIDJi, i))
+ jiAttrValueList.append(curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValueJi, i))
+
+ return legAttrIDList, legAttrValueList, shenAttrIDList, shenAttrValueList, xianAttrIDList, xianAttrValueList, jiAttrIDList, jiAttrValueList
+
+def SetEquipLegendAttr(curItem, legendAttrInfo):
+ ## 设置装备传奇属性
+
+ legAttrIDList, legAttrValueList, shenAttrIDList, shenAttrValueList, \
+ xianAttrIDList, xianAttrValueList, jiAttrIDList, jiAttrValueList = legendAttrInfo
+
+ # 普通传奇属性
+ if legAttrIDList and legAttrValueList and len(legAttrIDList) == len(legAttrValueList):
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
+ for i in xrange(len(legAttrIDList)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, legAttrValueList[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, legAttrValueList[i])
+
+ # 神 传奇属性
+ if shenAttrIDList and shenAttrValueList and len(shenAttrIDList) == len(shenAttrValueList):
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDShen)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueShen)
+ for i in xrange(len(shenAttrIDList)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDShen, shenAttrValueList[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueShen, shenAttrValueList[i])
+
+ # 仙 传奇属性
+ if xianAttrIDList and xianAttrValueList and len(xianAttrIDList) == len(xianAttrValueList):
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDXian)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueXian)
+ for i in xrange(len(xianAttrIDList)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDXian, xianAttrValueList[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueXian, xianAttrValueList[i])
+
+ # 极 传奇属性
+ if jiAttrIDList and jiAttrValueList and len(jiAttrIDList) == len(jiAttrValueList):
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrIDJi)
+ curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValueJi)
+ for i in xrange(len(jiAttrIDList)):
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrIDJi, jiAttrValueList[i])
+ curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValueJi, jiAttrValueList[i])
+
+ return
##创建物品所需的动态数据
#
@@ -2446,6 +2548,12 @@
self.source = ShareDefine.Item_Source_Unkown #物品来源
self.legendAttrIDList = [] # 传奇属性ID
self.legendAttrValueList = [] # 传奇属性值
+ self.legendAttrIDListShen = [] # 传奇属性ID - 神
+ self.legendAttrValueListShen = [] # 传奇属性值 - 神
+ self.legendAttrIDListXian = [] # 传奇属性ID - 仙
+ self.legendAttrValueListXian = [] # 传奇属性值 - 仙
+ self.legendAttrIDListJi = [] # 传奇属性ID - 极
+ self.legendAttrValueListJi = [] # 传奇属性值 - 极
return
def ClearPack(curPlayer, packType):
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 e1f7239..a859d14 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
@@ -419,14 +419,11 @@
isSuit = 1 if curItem.GetSuiteID() > 0 else 0
gsParamIpyData = IpyGameDataPY.GetIpyGameDataNotLog("EquipGSParam", classLV, color, isSuit, itemQuality)
# 传奇属性
- legendAttrIDCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrID)
- legendAttrValueCnt = curItem.GetUserAttrCount(ShareDefine.Def_IudetLegendAttrValue)
- if legendAttrIDCnt and legendAttrIDCnt == legendAttrValueCnt:
- for i in xrange(legendAttrIDCnt):
- attrID = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrID, i)
- attrValue = curItem.GetUserAttrByIndex(ShareDefine.Def_IudetLegendAttrValue, i)
- attrDict[attrID] = attrDict.get(attrID, 0) + attrValue
-
+ legAttrIDList, legAttrValueList = ItemControler.GetEquipLegendAttrAll(curItem)
+ for i, legendAttrID in enumerate(legAttrIDList):
+ legendAttrValue = legAttrValueList[i]
+ attrDict[legendAttrID] = attrDict.get(legendAttrID, 0) + legendAttrValue
+
lingQiIpyData = IpyGameDataPY.GetIpyGameDataNotLog("LingQiAttr", itemID)
if lingQiIpyData:
gsValueEx += lingQiIpyData.GetLingQiAttrScore()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 8e13cd9..0bc1f5c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -1280,6 +1280,12 @@
Def_IudetItemDecompound = 33 # 拆解返还物品列表 [装备ID,材料1ID,个数,是否绑定,材料2ID,个数,是否绑定,...]
Def_IudetLiantaiItemID = 35 # 合成该莲台的所有莲台ID [itemID, itemID, ...]
Def_IudetAddSkillID = 37 # 可添加的技能ID列表 [skillID, skillID, ...]
+Def_IudetLegendAttrIDShen = 51 # 物品传奇属性ID列表 - 神
+Def_IudetLegendAttrValueShen = 61 # 物品传奇属性值列表 - 神
+Def_IudetLegendAttrIDXian = 53 # 物品传奇属性ID列表 - 仙
+Def_IudetLegendAttrValueXian = 63 # 物品传奇属性值列表 - 仙
+Def_IudetLegendAttrIDJi = 55 # 物品传奇属性ID列表 - 极
+Def_IudetLegendAttrValueJi = 65 # 物品传奇属性值列表 - 极
Def_IudetItemColor = 16 # 物品颜色,如果该值没有就取物品
Def_IudetItemCount = 18 # 物品个数,支持20亿,目前仅特殊转化物品会用到
--
Gitblit v1.8.0