|  |  | 
 |  |  |     return msgList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | ## 提示超级装备
 | 
 |  |  | #  @param curPlayer 当前玩家
 | 
 |  |  | #  @param curItem 得到的物品
 | 
 |  |  | #  @param notifyType 鉴定1 打造2 升星3 神器升星4 神器唤醒5 宠物装备合成6 丢宝箱装备7
 | 
 |  |  | #  @param useItemID 使用的物品id
 | 
 |  |  | #  @return None
 | 
 |  |  | #  @remarks 函数详细说明.
 | 
 |  |  | def Notify_SuperItem(curPlayer, curItem, notifyType, useItemID=0):
 | 
 |  |  | #===============================================================================
 | 
 |  |  | #Item_Link_Appraisal 鉴定出了一件惊世神装
 | 
 |  |  | #Item_Link_Factory   打造出了一件惊世神装
 | 
 |  |  | #S1 -> playID,S2 -> playname,S3 -> playname,s4 -> itemID,s5 -> start,s6 -> hole,s7-s15 stoneID,s16 -> 五行,
 | 
 |  |  | #s17 -> 灵魂技能ID,s18 -> 当前耐久,s19 -> 最大耐久,s20 -> 绑定,s21 -> MakeID,s22 -> 物品名字
 | 
 |  |  | #===============================================================================
 | 
 |  |  | 
 | 
 |  |  |      | 
 |  |  |     #升星及神器
 | 
 |  |  |     if notifyType in [3]:
 | 
 |  |  | #===============================================================================
 | 
 |  |  | #        #升星的系统提示参数列表
 | 
 |  |  | #        roleName = curPlayer.GetName()
 | 
 |  |  | #                 | 
 |  |  | #        #S1 -> playID,S2 -> playname,S3 -> playname,
 | 
 |  |  | #        msgList = ['%s' % curPlayer.GetID(), '%s' % roleName, '%s' % roleName]
 | 
 |  |  | #         | 
 |  |  | #        # 物品xml参数s4-s55
 | 
 |  |  | #        msgList.extend(GetItemXMLMsg(curItem))
 | 
 |  |  | #         | 
 |  |  | # #        GameWorld.Log('升星,msgList = %s, %s'%(len(msgList), msgList))
 | 
 |  |  | #        if notifyType == 3:
 | 
 |  |  | #            msgList.extend(["%s" % curItem.GetItemStarLV()])  # 升星最后一个参数为星数
 | 
 |  |  | #            #普通升星
 | 
 |  |  | #            PlayerControl.WorldNotify(0, "Item_Link_UpGrade", msgList)
 | 
 |  |  | #===============================================================================
 | 
 |  |  | 
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |          | 
 |  |  |     #---除升星外的系统提示参数列表---
 | 
 |  |  |     msgList = ['%s' % curPlayer.GetID(), '%s' % curPlayer.GetName(), '%s' % curPlayer.GetName(),
 | 
 |  |  |                '%s' % curItem.GetItemTypeID(),'%s' % curItem.GetIsBind(), '%s' % curItem.GetItemTypeID()
 | 
 |  |  |                ]
 | 
 |  |  |     #鉴定
 | 
 |  |  |     if notifyType == 1:
 | 
 |  |  |         PlayerControl.WorldNotify(0, "Item_Link_Appraisal", msgList)
 | 
 |  |  |     #打造
 | 
 |  |  |     elif notifyType == 2:
 | 
 |  |  |         PlayerControl.WorldNotify(0, "Item_Link_Factory", msgList)
 | 
 |  |  |     #宠物装备合成
 | 
 |  |  |     elif notifyType == 6:
 | 
 |  |  |         PlayerControl.WorldNotify(0, "Pet_liubo_436832", msgList)
 | 
 |  |  |     # mu装备全服广播
 | 
 |  |  |     elif notifyType == 7:
 | 
 |  |  |         # 插入使用的物品名
 | 
 |  |  |         if not useItemID:
 | 
 |  |  |             return
 | 
 |  |  |         msgList.insert(3, '%s' % useItemID)
 | 
 |  |  |         msgList.insert(4, '%s' % useItemID)
 | 
 |  |  |         itemInfo = GetNotifySuperItemInfo(curPlayer, curItem)
 | 
 |  |  |         msgList = msgList[:5] + itemInfo
 | 
 |  |  |         PlayerControl.WorldNotify(0, "GeRen_lhs_318691", msgList)
 | 
 |  |  |     return
 | 
 |  |  | #---------------------------------------------------------------------
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | ## 清除按天过期物品
 | 
 |  |  | #  @param curPlayer 玩家
 | 
 |  |  | #  @return None
 | 
 |  |  | 
 |  |  |         return 0
 | 
 |  |  |     keyStr = ChConfig.Def_VPackCnt_Dict[packindex]
 | 
 |  |  |     return IpyGameDataPY.GetFuncCfg(keyStr)
 | 
 |  |  | #---------------------------------------------------------------------
 | 
 |  |  | ## 获得物品信息提示
 | 
 |  |  | #  @param curPlayer 当前玩家
 | 
 |  |  | #  @param useItemID 使用物品
 | 
 |  |  | #  @param singleItem 通知的物品对象
 | 
 |  |  | #  @return None
 | 
 |  |  | #  @remarks 函数详细说明.
 | 
 |  |  | def NeedNotifyItem(curPlayer, useItemID , singleItem):
 | 
 |  |  |     #需要提示的物品列表
 | 
 |  |  |     #===========================================================================
 | 
 |  |  |     # itemIDDict = ReadChConfig.GetEvalChConfig('need_notify_id_dict')
 | 
 |  |  |     # if useItemID not in itemIDDict.keys():
 | 
 |  |  |     #    return
 | 
 |  |  |     #  | 
 |  |  |     # notifyList = itemIDDict.get(useItemID, [])
 | 
 |  |  |     #  | 
 |  |  |     # if not notifyList:
 | 
 |  |  |     #    GameWorld.Log("NeedNotifyItem() need_notify_id_dict.txt error useItemID=%s not data" % (useItemID))
 | 
 |  |  |     #    return
 | 
 |  |  |     #  | 
 |  |  |     # isQualityNotify = notifyList[0] # 卓越是否提示
 | 
 |  |  |     # notifyStarLV = notifyList[1] # 通知的强化星级
 | 
 |  |  |     # itemIdList = notifyList[2:] # 去除星级通知的,其他的为具体id通知
 | 
 |  |  |     #  | 
 |  |  |     # curItemID = singleItem.GetItemTypeID()
 | 
 |  |  |     # curItemCount = singleItem.GetCount()
 | 
 |  |  |     # # 如果是指定标的物
 | 
 |  |  |     # if (curItemID, curItemCount) in itemIdList:
 | 
 |  |  |     #    PlayerControl.WorldNotify(0, "itemuse_chenxin_0", [curPlayer.GetPlayerName(),
 | 
 |  |  |     #                             useItemID, useItemID, curItemID, curItemID, curItemCount])
 | 
 |  |  |     #    return
 | 
 |  |  |     #  | 
 |  |  |     # # 其他的装备判断
 | 
 |  |  |     # itemQuality = singleItem.GetItemQuality()
 | 
 |  |  |     # isSuite = singleItem.GetIsSuite()
 | 
 |  |  |     # plusLV = singleItem.GetItemStarLV()
 | 
 |  |  |     # # 卓越广播,套装广播,星级广播
 | 
 |  |  |     # if (isQualityNotify and itemQuality) or isSuite or plusLV >= notifyStarLV:
 | 
 |  |  |     #    Notify_SuperItem(curPlayer, singleItem, 7, useItemID)
 | 
 |  |  |     #===========================================================================
 | 
 |  |  |      | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | ## 杀怪掉落提示
 | 
 |  |  | 
 |  |  | #  @return None
 | 
 |  |  | def NotifyItemDropByKill(curPlayer, curItem, npcID, notifyMark='', mapID=0):
 | 
 |  |  |     return #吕超说此处屏蔽
 | 
 |  |  |     #需要提示的物品列表
 | 
 |  |  |     itemIDDict = ReadChConfig.GetEvalChConfig('need_notify_id_dict')
 | 
 |  |  | 
 | 
 |  |  |     notifyList = itemIDDict.get(0, [])
 | 
 |  |  |     if not notifyList:
 | 
 |  |  |         #GameWorld.Log("NotifyItemDropByKill() need_notify_id_dict.txt error useItemID=0")
 | 
 |  |  |         return
 | 
 |  |  |      | 
 |  |  |     playerName = curPlayer.GetPlayerName()
 | 
 |  |  |     notifyQuality = notifyList[0] # 需要提示的品质等级
 | 
 |  |  |     notifyStarLV = notifyList[1] # 通知的强化星级
 | 
 |  |  |     itemIdList = notifyList[2:] # 去除星级通知的,其他的为具体id通知
 | 
 |  |  |      | 
 |  |  |     curItemID = curItem.GetItemTypeID()
 | 
 |  |  |     curItemCount = curItem.GetCount()
 | 
 |  |  |     mapID = GameWorld.GetMap().GetMapID() if not mapID else mapID
 | 
 |  |  |     # 如果是指定标的物
 | 
 |  |  |     if (curItemID, curItemCount) in itemIdList:
 | 
 |  |  |         itemIDMarkDict = ReadChConfig.GetEvalChConfig('need_notify_id_mark_dict')
 | 
 |  |  |         notifyMark = itemIDMarkDict.get(curItemID, "GeRen_admin_272921")
 | 
 |  |  |         PlayerControl.WorldNotify(0, notifyMark, [playerName, mapID, npcID, curItemID, curItemID])
 | 
 |  |  |         return
 | 
 |  |  |      | 
 |  |  |     # 其他的装备判断
 | 
 |  |  | #    itemQuality = curItem.GetItemQuality()
 | 
 |  |  | #    isSuite = curItem.GetIsSuite()
 | 
 |  |  | #    plusLV = curItem.GetItemStarLV()
 | 
 |  |  | #    # 卓越广播,套装广播,星级广播
 | 
 |  |  | #    if not ((itemQuality >= notifyQuality) or isSuite or plusLV >= notifyStarLV):
 | 
 |  |  | #        return
 | 
 |  |  |      | 
 |  |  |     msgList = ['%s' % playerName,  | 
 |  |  |                '%s' % mapID,  | 
 |  |  |                '%s' % npcID,
 | 
 |  |  |                #'%s' % 0,
 | 
 |  |  |                ] + GetNotifySuperItemInfo(curPlayer, curItem)
 | 
 |  |  |      | 
 |  |  |     notifyMark = notifyMark if notifyMark else "GeRen_admin_671654"
 | 
 |  |  |     PlayerControl.WorldNotify(0, notifyMark , msgList)
 | 
 |  |  |     return
 | 
 |  |  | 
 | 
 |  |  | def GetNotifySuperItemInfo(curPlayer, curItem, place=None):
 | 
 |  |  | def GetNotifySuperItemInfo(curPlayer, curEquip, place=None):
 | 
 |  |  |     '''装备提示超链接信息汇总
 | 
 |  |  |     <a><Word info=item id=%s0/>|showitem=%s0 isbind=%s1 itemcnt=%s2 stone=%s3 userdata=%s4 place=%s5 equippartsuite=%s6 strengthenlv=%s7 equipwash=%s8 equipitems=%s9</a>
 | 
 |  |  |     isbind:是否绑定
 | 
 |  |  |     itemcnt:物品数量
 | 
 |  |  |     stone:宝石信息 [stoneItemID, ...]
 | 
 |  |  |     userdata:传奇属性
 | 
 |  |  |     place:装备位
 | 
 |  |  |     equippartsuite:套装信息 同查看玩家
 | 
 |  |  |     strengthenlv:强化等级
 | 
 |  |  |     equipwash:洗练信息 同查看玩家,单部位
 | 
 |  |  |     equipitems:各部位物品id [[装备位,物品id] ...]
 | 
 |  |  |         <a><Word info=item id=%s0/>|showitem=%s0 itemPlus=%s0</a>
 | 
 |  |  |         {"ItemID":物品ID, "UserData":..., "Star":星级, "EvolveLV":进化等级,"PlusLV":强化等级,"Stone":[宝石ID,...], "Wash":{"LV":洗练等级,"Value":[洗练值, ...]}, "Equips":[itemID, itemID, ...]}
 | 
 |  |  |     '''
 | 
 |  |  |     if place == None:
 | 
 |  |  |         place = curItem.GetEquipPlace()
 | 
 |  |  |      | 
 |  |  |     packType = curEquip.GetItemPlaceType()
 | 
 |  |  |     packIndex = curEquip.GetItemPlaceIndex()
 | 
 |  |  |     if packType != IPY_GameWorld.rptEquip:
 | 
 |  |  |         return "{}"
 | 
 |  |  |      | 
 |  |  |     classLV = GetItemClassLV(curEquip)
 | 
 |  |  |     if not classLV:
 | 
 |  |  |         return "{}"
 | 
 |  |  |      | 
 |  |  |     packType = IPY_GameWorld.rptEquip
 | 
 |  |  |     itemDict = {}
 | 
 |  |  |     itemDict["ItemID"] = curEquip.GetItemTypeID()
 | 
 |  |  |     userData = curEquip.GetUserData()
 | 
 |  |  |     if userData and userData != "{}":
 | 
 |  |  |         itemDict["UserData"] = userData
 | 
 |  |  |         
 | 
 |  |  |     notifyList = [""] * 10
 | 
 |  |  |     notifyList[0] = curItem.GetItemTypeID()
 | 
 |  |  |     notifyList[1] = curItem.GetIsBind()
 | 
 |  |  |     notifyList[2] = curItem.GetCount()
 | 
 |  |  |     notifyList[3] = "%s" % Operate_EquipStone.GetEquipIndexStoneIDList(curPlayer, place)
 | 
 |  |  |     userData = curItem.GetUserData()
 | 
 |  |  |     notifyList[4] = userData if (userData and userData != "{}") else ""
 | 
 |  |  |     notifyList[5] =  place
 | 
 |  |  |     notifyList[6] = ""  | 
 |  |  |     notifyList[7] = ChEquip.GetEquipPartPlusLV(curPlayer, IPY_GameWorld.rptEquip, place)
 | 
 |  |  |      | 
 |  |  |     # 单部位洗练信息
 | 
 |  |  |     washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % place) + 1
 | 
 |  |  |     valueList = [curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashValue % (place, attrNum)) \
 | 
 |  |  |                     for attrNum in xrange(1, Operate_EquipWash.Def_EquipWashMaxAttrCount + 1)]
 | 
 |  |  |     notifyList[8] = "%s" % {"Place":place, "LV":washLV, "Value":valueList}
 | 
 |  |  |      | 
 |  |  |     # 身上所穿装备ID信息
 | 
 |  |  |     equipItems = []
 | 
 |  |  |     playerEquip = curPlayer.GetItemManager().GetPack(IPY_GameWorld.rptEquip)
 | 
 |  |  |     for equipIndex in xrange(playerEquip.GetCount()):
 | 
 |  |  |         if equipIndex not in ShareDefine.RoleEquipType :
 | 
 |  |  |             continue
 | 
 |  |  |         curEquip = playerEquip.GetAt(equipIndex)
 | 
 |  |  |         if not curEquip or curEquip.IsEmpty():
 | 
 |  |  |             continue
 | 
 |  |  |         equipItems.append([curEquip.GetItemPlaceIndex(), curEquip.GetItemTypeID()])
 | 
 |  |  |     notifyList[9] = "%s" % equipItems
 | 
 |  |  |      | 
 |  |  |     return notifyList
 | 
 |  |  |     #部位升星数据
 | 
 |  |  |     equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, packIndex, curEquip)
 | 
 |  |  |     if equipStar:
 | 
 |  |  |         itemDict["Star"] = equipStar
 | 
 |  |  |          | 
 |  |  |     #部位强化数据
 | 
 |  |  |     equipPartPlusLV = ChEquip.GetEquipPartPlusLVByRank(curPlayer, packType, packIndex, curEquip)
 | 
 |  |  |     equipPartPlusEvolveLV = ChEquip.GetEquipPartPlusEvolveLVByEquip(curPlayer, packType, packIndex, curEquip)
 | 
 |  |  |     if equipPartPlusLV:
 | 
 |  |  |         itemDict["PlusLV"] = equipPartPlusLV
 | 
 |  |  |     if equipPartPlusEvolveLV:
 | 
 |  |  |         itemDict["EvolveLV"] = equipPartPlusEvolveLV
 | 
 |  |  |          | 
 |  |  |     #部位宝石数据
 | 
 |  |  |     stoneIDList = Operate_EquipStone.GetEquipIndexStoneIDList(curPlayer, packIndex)
 | 
 |  |  |     if stoneIDList and stoneIDList.count(0) != len(stoneIDList):
 | 
 |  |  |         itemDict["Stone"] = stoneIDList
 | 
 |  |  |          | 
 |  |  |     #部位洗练数据
 | 
 |  |  |     washLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashLV % packIndex) + 1
 | 
 |  |  |     valueList = []
 | 
 |  |  |     for attrNum in xrange(1, Operate_EquipWash.Def_EquipWashMaxAttrCount + 1):
 | 
 |  |  |         value = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_EquipWashValue % (packIndex, attrNum))
 | 
 |  |  |         valueList.append(value)
 | 
 |  |  |     if valueList and valueList.count(0) != len(valueList):
 | 
 |  |  |         itemDict["Wash"] = {"LV":washLV, "Value":valueList}
 | 
 |  |  |          | 
 |  |  |     classItems = [] # 本阶已穿装备ID
 | 
 |  |  |     ipyDataList = IpyGameDataPY.GetIpyGameDataByCondition('EquipPlaceIndexMap', {'ClassLV':classLV}, True)
 | 
 |  |  |     if ipyDataList:
 | 
 |  |  |         equipPack = curPlayer.GetItemManager().GetPack(packType)
 | 
 |  |  |         for ipyData in ipyDataList:
 | 
 |  |  |             index = ipyData.GetGridIndex()
 | 
 |  |  |             classEquip = equipPack.GetAt(index)
 | 
 |  |  |             if not classEquip or classEquip.IsEmpty():
 | 
 |  |  |                 continue
 | 
 |  |  |             equipID = classEquip.GetItemTypeID()
 | 
 |  |  |             equipStar = ChEquip.GetEquipPartStarByRank(curPlayer, index, classEquip)
 | 
 |  |  |             classItems.append([equipID, equipStar])
 | 
 |  |  |     if classItems:
 | 
 |  |  |         itemDict["Equips"] = classItems
 | 
 |  |  |          | 
 |  |  |     return json.dumps(itemDict, ensure_ascii=False).replace(" ", "")
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | ## 使用物品的特殊提示
 | 
 |  |  | #  @param curPlayer 当前玩家
 |