8298 【恺英】【开发】基础套装极/仙/神进阶(神、仙、极传奇属性支持)
| | |
| | | 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
|
| | |
| | | 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亿,目前仅特殊转化物品会用到
|
| | |
| | | import ItemCommon
|
| | | import ItemControler
|
| | | import IPY_GameWorld
|
| | | import ShareDefine
|
| | |
|
| | | #---------------------------------------------------------------------
|
| | | #逻辑实现
|
| | |
| | | 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
|
| | |
|
| | |
| | | ("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),
|
| | |
| | | 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(): |
| | | |
| | |
| | | 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)
|
| | |
| | | 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
|
| | |
| | | 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)
|
| | |
| | | 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
|
| | |
| | | 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
|
| | |
| | |
|
| | | 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):
|
| | |
| | | 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)
|
| | |
|
| | |
| | | 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)
|
| | |
| | |
|
| | | def GetAddEquipLegendAttr(curItem, curPlayer, isAllAttr=False):
|
| | | '''获取生成到装备上的传奇属性
|
| | | @return: None 或者 [[传奇属性效果ID列表], [属性值列表]]
|
| | | @return: None 或者 [传奇属性效果ID列表], [属性值列表], [神ID], [神值], [仙ID], [仙值], [极ID], [极值]
|
| | | '''
|
| | | # if GetIsAuctionItem(curItem):
|
| | | # #GameWorld.DebugLog("拍品无法生成传奇属性!")
|
| | |
| | | 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:
|
| | |
| | | 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
|
| | |
|
| | | ##创建物品所需的动态数据
|
| | | #
|
| | |
| | | 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):
|
| | |
| | | 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()
|
| | |
| | | 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亿,目前仅特殊转化物品会用到
|