| | |
| | | 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 当前玩家
|