6332 【后端】【2.0】主要是拍品相关规则调整及背包优化(使用拍品数据同步优化)
2个文件已修改
53 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/ChItem.py
@@ -1547,9 +1547,8 @@
    ## 玩家使用拍品
    playerID = curPlayer.GetPlayerID()
    itemID = curItem.GetItemTypeID()
    curItem.SetIsBind(0) # 设置为非拍品
    curItem.ClearUserAttr(ShareDefine.Def_IudetAuctionItemCreateTime)
    GameWorld.DebugLog("玩家使用拍品: itemID=%s" % (itemID), playerID)
    
    if ItemCommon.GetIsEquip(curItem):
@@ -1559,15 +1558,9 @@
            GameWorld.ErrLog("使用装备拍品没有传奇属性!itemID=%s" % (itemID), playerID)
            return
        attrIDList, attrValueList = legendAttrInfo
        # 传奇属性
        if attrIDList and attrValueList and len(attrIDList) == len(attrValueList):
            curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrID)
            curItem.ClearUserAttr(ShareDefine.Def_IudetLegendAttrValue)
            for i, attrID in enumerate(attrIDList):
                value = attrValueList[i]
                curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrID, attrID)
                curItem.AddUserAttr(ShareDefine.Def_IudetLegendAttrValue, value)
        ItemCommon.MakeEquipGS(curItem)
        updateDict = {ShareDefine.Def_IudetLegendAttrID:attrIDList, ShareDefine.Def_IudetLegendAttrValue:attrValueList}
        delKeyList = [ShareDefine.Def_IudetAuctionItemCreateTime]
        ItemCommon.UpdateItemUserData(curItem, updateDict, delKeyList, isUpdateGS=True)
        
    return
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Item/UseItem/ItemCommon.py
@@ -389,6 +389,44 @@
    #这里返回的是SingleItem , 如果创建了,未使用,会找出C++内存泄露!!!
    return curSingleItem
def UpdateItemUserData(curItem, updateDict={}, delKeyList=[], isUpdateGS=False):
    ''' 更新物品UserData数据
    @param curItem: IPY_SingleItem 或  IPY_RoleItem
    @param updateDict: 需要更新的数据 {key:value, key:valueList, ...}
    @param delKeyList: 需要删除的数据 key列表[key, ...]
    @param isUpdateGS: 是否更新评分
    @note: UserData格式举例 {'17':['65','7','52'],'50':['0'],'19':['420','380','50'],'50':['1552728662']}
    '''
    isRoleItem = False
    if not hasattr(curItem, "SetUserData"):
        item = curItem.GetItem()
        isRoleItem = True
    else:
        item = curItem
    userData = item.GetUserData()
    if not userData:
        userDataDict = {}
    else:
        userDataDict = eval(userData)
    for delKey in delKeyList:
        userDataDict.pop(str(delKey), None)
    for key, value in updateDict.items():
        if type(value) == int:
            valueList = ['%s' % value]
        elif type(value) == list:
            valueList = ['%s' % v for v in value]
        userDataDict['%s' % key] = valueList
    UserData = str(userDataDict).replace(" ", "")
    item.SetUserData(UserData, len(UserData))
    if isUpdateGS:
        MakeEquipGS(curItem)
    elif isRoleItem:
        curItem.SetIsBind(curItem.GetIsBind()) # 为了触发物品同步
    return
def MakeEquipGS(curItem):
    if not CheckNoteEquipGS(curItem):