8298 【恺英】【开发】基础套装极/仙/神进阶(神、仙、极传奇属性支持)
9个文件已修改
342 ■■■■ 已修改文件
PySysDB/PySysDBPY.h 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/AddLegendAttr.py 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChEquip.py 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ItemControler.py 144 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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亿,目前仅特殊转化物品会用到
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
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
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
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
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):
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()
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亿,目前仅特殊转化物品会用到