#!/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 ItemCommon  
 | 
import ShareDefine  
 | 
#---------------------------------------------------------------------  
 | 
  
 | 
# ÏÔʾ˵Óб³°üÀàÐÍ  
 | 
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 = []  
 | 
      
 | 
#    # ²é¿´µÄ±³°üÀàÐÍ  
 | 
#    packTypes = (  
 | 
#                IPY_GameWorld.rptEquip,   #1 ×°±¸  
 | 
#                IPY_GameWorld.rptItem,   #2 ÎïÆ·  
 | 
#                IPY_GameWorld.rptRecycle,   #3 À¬»øÍ°(»ØÊÕÕ¾)  
 | 
#                IPY_GameWorld.rptWarehouse,   #5 ²Ö¿â  
 | 
#                IPY_GameWorld.rptTitle,   #6 ³ÆºÅ±³°ü  
 | 
#                IPY_GameWorld.rptHorse,   #12 ×øÆï±³°ü  
 | 
#                IPY_GameWorld.rptAnyWhere,   #13 ÍòÄܱ³°ü  
 | 
#                IPY_GameWorld.rptCabinetDressCoat,   #16 Ò·þÍâÌ×±³°ü  
 | 
#                IPY_GameWorld.rptCabinetWeaponCoat,   #17 ÎäÆ÷ÍâÌ×±³°ü  
 | 
#                IPY_GameWorld.rptCabinetHorse,    #18 Ê±×°×øÆï±³°ü  
 | 
#                IPY_GameWorld.rptFineSoulSlot,   #21 ¾«ÆÇ²Û  
 | 
#                )  
 | 
      
 | 
    # ÊÇ·ñÖ¸¶¨ÏÔʾµÄ±³°üÀàÐÍ  
 | 
    if IPY_GameWorld.rptDeleted <= packIndex <= ShareDefine.rptMax:  
 | 
        packTypes = [packIndex]  
 | 
          
 | 
    elif packIndex != ShowAllPack:  
 | 
        packTypes = []  
 | 
      
 | 
    # Òª²é¿´µÄ±³°ü  
 | 
    for packIndex in packTypes:  
 | 
        # ±éÀúpack¸ñ×Ó£¬»ñµÃÎïÆ·ÐÅÏ¢  
 | 
        packItemList = _GetPackItem(curPlayer, packIndex)  
 | 
        itemList.extend(packItemList)  
 | 
  
 | 
    resultDict = {  
 | 
                  'LogoffTime':curPlayer.GetLogoffTime(), #ÀëÏßʱ¼ä  
 | 
                  'LoginTime':curPlayer.GetLoginTime(),  # ÉÏÏßʱ¼ä  
 | 
                  'OnlineTime':curPlayer.GetOnlineTime(),  # ÀÛ¼ÆÉÏÏßʱ¼ä  
 | 
                  'LoginIP':curPlayer.GetIP(),  #µÇÈëIP  
 | 
                  'ItemList':itemList,   # ÎïÆ·×°±¸ÁÐ±í  
 | 
                  }  
 | 
  
 | 
      
 | 
    gmResult = 0  
 | 
    if len(resultDict) > pow(2, 14):  
 | 
        resultDict = ''  
 | 
        gmResult = 8  # Êý¾Ý¹ý´ó  
 | 
      
 | 
    resultMsg = str([packCMDList[0], resultDict, 'GMT_PlayerItemInfo', gmResult])  
 | 
    GameWorld.GetPlayerManager().GameServer_QueryPlayerResult(0, 0, 0, 'GMToolResult',   
 | 
                                                              resultMsg, len(resultMsg))  
 | 
    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  
 | 
          
 | 
        #·ÖΪװ±¸ºÍ·Ç×°±¸  
 | 
        if not ItemCommon.CheckItemIsEquip(curItem):  
 | 
            # »ñµÃ¾ßÌåÐÅÏ¢  
 | 
            itemList.append(_GetItemInfo(curItem, packIndex, index))  
 | 
        else:  
 | 
            itemList.append(_GetEquipInfo(curItem, packIndex, index))  
 | 
              
 | 
    return itemList  
 | 
  
 | 
  
 | 
## »ñÈ¡±³°ü×Öµä  
 | 
#  @param curFindPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param packIndex ±³°üË÷Òý  
 | 
#  @param index ÎïÆ·Î»Öà  
 | 
#  @return None  
 | 
def _GetItemInfo(curItem, packType, index):  
 | 
      
 | 
    itemInfo = {  
 | 
                'PackType':packType,  # ±³°üÀàÐÍ  
 | 
                'ItemIndex':index,   # Ë÷Òý  
 | 
                'GUID':curItem.GetGUID(),   # guid  
 | 
                'Name':curItem.GetName(),   # ÎïÆ·Ãû  
 | 
                'ItemID':curItem.GetItemTypeID(),   
 | 
      
 | 
                'IsBand':curItem.GetIsBind(),  # ÊÇ·ñ°ó¶¨  
 | 
                'ItemCnt':curItem.GetCount(),   # ÊýÁ¿  
 | 
                }  
 | 
      
 | 
    return itemInfo  
 | 
  
 | 
  
 | 
## »ñÈ¡±³°ü×Öµä  
 | 
#  @param curFindPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param packIndex ±³°üË÷Òý  
 | 
#  @param index ÎïÆ·Î»Öà  
 | 
#  @return None  
 | 
def _GetEquipInfo(curItem, packType, index):  
 | 
    itemInfo = {  
 | 
                'PackType':packType,  # ±³°üÀàÐÍ  
 | 
                'ItemIndex':index,   # Ë÷Òý  
 | 
                'GUID':curItem.GetGUID(),   # guid  
 | 
                'Name':curItem.GetName(),   # ÎïÆ·Ãû  
 | 
                'IsBand':curItem.GetIsBind(),  # ÊÇ·ñ°ó¶¨  
 | 
                'ItemID':curItem.GetItemTypeID(),   
 | 
                'IsSuite':curItem.GetIsSuite(),  # ÊÇ·ñÌ××°  
 | 
     
 | 
                }  
 | 
      
 | 
    return itemInfo  
 | 
   
 | 
  
 | 
## »ñȡװ±¸¼¼ÄÜ  
 | 
#  @param curEquip ×°±¸  
 | 
#  @return addSkillList ¼¼ÄÜÁÐ±í  
 | 
def GetEquipSkill(curEquip):  
 | 
      
 | 
    #¸Ã×°±¸µ±Ç°µÄÁéÎÆÊôÐÔÁÐ±í  
 | 
    addSkillList = []    
 | 
      
 | 
    for i in range(0, curEquip.GetUserAttrCount(IPY_GameWorld.iudetEquipAddSkillList)):  
 | 
          
 | 
        addSkillID = curEquip.GetUserAttrByIndex(IPY_GameWorld.iudetEquipAddSkillList, i)  
 | 
        addSkillList.append(addSkillID)  
 | 
          
 | 
    return addSkillList  
 |