|  |  |  | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | def CheckRolePackEquipAttr(self): | 
|---|
|  |  |  | ''' 玩家上线修复装备属性bug | 
|---|
|  |  |  | 版本1:邮件给装备没有传奇属性,检查无传奇属性装备 | 
|---|
|  |  |  | 版本2:绝版属性数值调整,已获得的装备重新刷下 | 
|---|
|  |  |  | ''' | 
|---|
|  |  |  | curPlayer = self.__Player | 
|---|
|  |  |  | checkVersion = 2 | 
|---|
|  |  |  | key = "LoginCheckEquipAttr" | 
|---|
|  |  |  | if curPlayer.NomalDictGetProperty(key): | 
|---|
|  |  |  | curVersion = curPlayer.NomalDictGetProperty(key) | 
|---|
|  |  |  | if curVersion == checkVersion: | 
|---|
|  |  |  | return | 
|---|
|  |  |  | playerID = curPlayer.GetPlayerID() | 
|---|
|  |  |  | GameWorld.Log("玩家上线处理装备属性! curVersion=%s,checkVersion=%s" % (curVersion, checkVersion), playerID) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | outOfPrintAttrItemDict = {} # 有绝版属性的定制物品属性信息 {itemID:[绝版属性ID列表, 绝版属性数值列表], ...} | 
|---|
|  |  |  | ipyDataMgr = IpyGameDataPY.IPY_Data() | 
|---|
|  |  |  | for i in xrange(ipyDataMgr.GetAppointItemCount()): | 
|---|
|  |  |  | ipyData = ipyDataMgr.GetAppointItemByIndex(i) | 
|---|
|  |  |  | outOfPrintAttrList = ipyData.GetOutOfPrintAttr() | 
|---|
|  |  |  | outOfPrintAttrValueList = ipyData.GetOutOfPrintAttrValue() | 
|---|
|  |  |  | if not outOfPrintAttrList or len(outOfPrintAttrList) != len(outOfPrintAttrValueList): | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | itemID = GetAppointItemRealID(ipyData.GetID()) | 
|---|
|  |  |  | if not itemID: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | outOfPrintAttrItemDict[itemID] = [outOfPrintAttrList, outOfPrintAttrValueList] | 
|---|
|  |  |  |  | 
|---|
|  |  |  | checkPackList = [IPY_GameWorld.rptEquip, IPY_GameWorld.rptItem, IPY_GameWorld.rptWarehouse] | 
|---|
|  |  |  | for packType in checkPackList: | 
|---|
|  |  |  | curPack = curPlayer.GetItemManager().GetPack(packType) | 
|---|
|  |  |  | 
|---|
|  |  |  | isEquip = ItemCommon.CheckItemIsEquip(curItem) | 
|---|
|  |  |  | if not isEquip: | 
|---|
|  |  |  | continue | 
|---|
|  |  |  | itemID = curItem.GetItemTypeID() | 
|---|
|  |  |  | self.CheckEquipAttr(packType, curItem) | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, key, 1) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | # 重刷绝版属性 | 
|---|
|  |  |  | if itemID in outOfPrintAttrItemDict: | 
|---|
|  |  |  | outOfPrintAttrList, outOfPrintAttrValueList = outOfPrintAttrItemDict[itemID] | 
|---|
|  |  |  | curItem.ClearUserAttr(ShareDefine.Def_IudetOutOfPrintAttrID) | 
|---|
|  |  |  | curItem.ClearUserAttr(ShareDefine.Def_IudetOutOfPrintAttrValue) | 
|---|
|  |  |  | for outOfPrintAttrIndex in xrange(len(outOfPrintAttrList)): | 
|---|
|  |  |  | curItem.AddUserAttr(ShareDefine.Def_IudetOutOfPrintAttrID, outOfPrintAttrList[outOfPrintAttrIndex]) | 
|---|
|  |  |  | curItem.AddUserAttr(ShareDefine.Def_IudetOutOfPrintAttrValue, outOfPrintAttrValueList[outOfPrintAttrIndex]) | 
|---|
|  |  |  | GameWorld.Log("    玩家登录重刷装备绝版属性: packType=%s,i=%s,itemID=%s,outOfPrintAttrList=%s,outOfPrintAttrValueList=%s" | 
|---|
|  |  |  | % (packType, i, itemID, outOfPrintAttrList, outOfPrintAttrValueList), playerID) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | PlayerControl.NomalDictSetProperty(curPlayer, key, checkVersion) | 
|---|
|  |  |  | return | 
|---|
|  |  |  |  | 
|---|
|  |  |  | ## 是否能放入物品 | 
|---|