5287 【BT5】【主干】后台查询玩家背包道具报错(物品过多时长度超65535,简化返回物品数据信息)
2个文件已修改
50 ■■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_PlayerItemInfo.py 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_PlayerItemInfo.py 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/RemoteQuery/GY_Query_PlayerItemInfo.py
@@ -56,15 +56,16 @@
        packItemList = _GetPackItem(curPlayer, packIndex)
        itemList.extend(packItemList)
        
    totalItemCount = len(itemList)
    gmResult = GMCommon.Def_Success
    resultMsg = {"PackIndex":packIndex, "ItemList":itemList}
    if len(resultMsg) > pow(2, 14):
        resultMsg = {}
    resultMsg = {"PackIndex":packIndex, "TotalItemCount":totalItemCount, "ItemList":itemList}
    retData = str([packCMDList[0], resultMsg, 'GMT_PlayerItemInfo', gmResult]).replace(" ", "")
    if len(retData) >= 65535:
        gmResult = GMCommon.Def_MaxLimit # 数据过大
    resultMsg = str([packCMDList[0], resultMsg, 'GMT_PlayerItemInfo', gmResult])
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GMToolResult',
                                                              resultMsg, len(resultMsg))
        resultMsg["ItemList"] = itemList[:totalItemCount / 2] # 暂只返回一半
        retData = str([packCMDList[0], resultMsg, 'GMT_PlayerItemInfo', gmResult]).replace(" ", "")
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GMToolResult', retData, len(retData))
    return ''
    
    
@@ -116,16 +117,28 @@
    
    curItemInfo = {"ItemGUID":curItem.GetGUID(),
                   "ItemTypeID":curItem.GetItemTypeID(),
                   "ItemName":curItem.GetName().decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding()),
                   "Count":curItem.GetCount(),
                   "UserData":curItem.GetUserData(),
                   "IsBind":curItem.GetIsBind(),
                   "IsSuite":1 if curItem.GetSuiteID() else 0,
                   "RemainHour":curItem.GetRemainHour(),
                   "GearScore":curItem.GetGearScore(),
                   #"ItemName":curItem.GetName().decode(ShareDefine.Def_Game_Character_Encoding).encode(GameWorld.GetCharacterEncoding()),
                   #"Count":curItem.GetCount(),
                   #"UserData":curItem.GetUserData(),
                   #"IsBind":curItem.GetIsBind(),
                   #"IsSuite":1 if curItem.GetSuiteID() else 0,
                   #"RemainHour":curItem.GetRemainHour(),
                   #"GearScore":curItem.GetGearScore(),
                   "CreateTime":curItem.GetCreateTime(),
                   "ItemPlaceIndex":curItem.GetItemPlaceIndex()
                   }
    
    if curItem.GetSuiteID():
        curItemInfo["IsSuite"] = 1
    if curItem.GetCount() > 1:
        curItemInfo["Count"] = curItem.GetCount()
    if curItem.GetUserData() not in ["", "{}"]:
        curItemInfo["UserData"] = curItem.GetUserData()
    if curItem.GetIsBind():
        curItemInfo["IsBind"] = curItem.GetIsBind()
    if curItem.GetRemainHour():
        curItemInfo["RemainHour"] = curItem.GetRemainHour()
    if curItem.GetGearScore():
        curItemInfo["GearScore"] = curItem.GetGearScore()
    return curItemInfo
ServerPython/db/PyMongoDataServer/GMToolLogicProcess/Commands/GMT_PlayerItemInfo.py
@@ -126,11 +126,12 @@
        
        itemList.append(_GetItemInfo(itemDict))
        
    resultMsg = {"PackIndex":packIndex, "ItemList":itemList}
    totalItemCount = len(itemList)
    resultMsg = {"PackIndex":packIndex, "TotalItemCount":totalItemCount, "ItemList":itemList}
    # 不大与word
    if len(resultMsg) > pow(2, 14):
    if len(str(resultMsg)) > 65000:
        return GMCommon.Def_MaxLimit, ''
    # 回复查询信息
    return GMCommon.Def_Success, resultMsg
@@ -161,7 +162,7 @@
    for k, v in itemDict.items():
        if k in ["UserDataLen", "ItemPlaceType", "PlayerID", "IsLocked", "SID", "VerNO"]:
            continue
        if not v:
        if not v or v == "{}":
            continue
        curItemInfo[k] = v