6649 【2.0】【后端】查看聊天信息、广播信息和掉落记录里的装备需求
2个文件已修改
257 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py 253 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_EquipPlus.py
@@ -163,7 +163,9 @@
    broadCastLVList = IpyGameDataPY.GetFuncEvalCfg("StrengthenLevelBroadCast", 1)
    #GameWorld.DebugLog("PlusLVChange index=%s,updPlusLV=%s,broadCastLVList=%s" % (index, updPlusLV, broadCastLVList))
    if updPlusLV in broadCastLVList:
        msgParamList = [curPlayer.GetPlayerName()] + ItemCommon.GetNotifySuperItemInfo(curPlayer, curEquip, index) + [updPlusLV]
        itemID = curEquip.GetItemTypeID()
        superItemInfo = ItemCommon.GetNotifySuperItemInfo(curPlayer, curEquip, index)
        msgParamList = [curPlayer.GetPlayerName(), itemID, superItemInfo, updPlusLV]
        PlayerControl.WorldNotify(0, "StrengthenCongratulation", msgParamList)
        
    # 成就
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -213,71 +213,6 @@
    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
@@ -766,48 +701,6 @@
        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
## 杀怪掉落提示
@@ -815,93 +708,73 @@
#  @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 当前玩家