#!/usr/bin/python
|
# -*- coding: GBK -*-
|
#---------------------------------------------------------------------
|
#
|
#---------------------------------------------------------------------
|
##@package GY_Query_PlayerItemInfo
|
# @todo: GM²éÑ¯Íæ¼ÒÎïÆ· ÐÅÏ¢
|
#
|
# @author: wdb
|
# @date 2012-06-06 12:00
|
# @version 1.4
|
#
|
# @note
|
# @change: "2012-06-14 18:00" wdb gm¹¤¾ßµ÷Õû£¬Ôö¼ÓÃüÁîid
|
# @change: "2012-06-28 16:30" wdb ɾ³ý´íÎólog£¬Ôö¼Ó±³°üÀàÐÍ
|
# @change: "2012-06-29 21:30" wdb ·µ»ØÐÅÏ¢ÊÇ·ñ¹ý³¤
|
# @change: "2015-12-29 11:00" hxp ¿ª·ÅÆäËû±³°ü²éѯ
|
#---------------------------------------------------------------------
|
#"""Version = 2015-12-29 11:00"""
|
#---------------------------------------------------------------------
|
import IPY_GameWorld
|
import GameWorld
|
import ShareDefine
|
import GMCommon
|
#---------------------------------------------------------------------
|
|
# ÏÔʾ˵Óб³°üÀàÐÍ
|
ShowAllPack = -1
|
|
## ÇëÇóÂß¼
|
# @param query_Type ÇëÇóÀàÐÍ
|
# @param query_ID ÇëÇóµÄÍæ¼ÒID
|
# @param packCMDList ·¢°üÃüÁî [ ]
|
# @param tick µ±Ç°Ê±¼ä
|
# @return resultDisc
|
# @remarks º¯ÊýÏêϸ˵Ã÷.
|
def DoLogic(query_Type, query_ID, packCMDList, tick):
|
curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(query_ID)
|
|
if not curPlayer or curPlayer.IsEmpty():
|
return ''
|
|
packIndex = packCMDList[1]
|
itemList = []
|
|
# ÊÇ·ñÖ¸¶¨ÏÔʾµÄ±³°üÀàÐÍ
|
if IPY_GameWorld.rptDeleted <= packIndex <= ShareDefine.rptMax:
|
packTypes = [packIndex]
|
|
elif packIndex == ShowAllPack:
|
return 'Not allowed to query all package items.'
|
|
# Òª²é¿´µÄ±³°ü
|
for packIndex in packTypes:
|
# ±éÀúpack¸ñ×Ó£¬»ñµÃÎïÆ·ÐÅÏ¢
|
packItemList = _GetPackItem(curPlayer, packIndex)
|
itemList.extend(packItemList)
|
|
totalItemCount = len(itemList)
|
gmResult = GMCommon.Def_Success
|
|
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["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 ''
|
|
|
## »ñÈ¡±³°ü×Öµä
|
# @param curFindPlayer µ±Ç°Íæ¼Ò
|
# @param packIndex ±³°üË÷Òý
|
# @param discKey ×Öµäkey
|
# @return None
|
def _GetPackItem(curFindPlayer, packIndex):
|
|
itemPack = curFindPlayer.GetItemManager().GetPack(packIndex)
|
|
itemList = []
|
|
if not itemPack:
|
return itemList
|
|
for index in range(itemPack.GetCount()):
|
curItem = itemPack.GetAt(index)
|
|
if curItem == None:
|
continue
|
|
if curItem.IsEmpty():
|
continue
|
|
itemList.append(_GetItemInfo(curItem))
|
|
return itemList
|
|
def _GetItemInfo(curItem):
|
# "ItemGUID" : "096389AD-904F-4DAA-B7ED155B8663CE45",
|
# "ItemTypeID" : NumberLong(3901),
|
# "Count" : 100,
|
# "IsBind" : 0,
|
# "UserData" : "{}",
|
# "IsSuite" : 0,
|
# "RemainHour" : 0,
|
# "GearScore" : NumberLong(0),
|
# "CreateTime" : "2019-10-16 20:12:17"
|
|
# "ItemPlaceIndex" : 1,
|
# "PlayerID" : NumberLong(268902),
|
# "ItemPlaceType" : 2,
|
# "UserDataLen" : NumberLong(2),
|
# "IsLocked" : 0,
|
# "SID" : -1135840175,
|
# "VerNO" : NumberLong(1),
|
|
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(),
|
"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
|
|