| #!/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  |