| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #-------------------------------------------------------------------------------  | 
| #  | 
| ##@package GM.Commands.GMT_AddAuctionItem  | 
| #  | 
| # @todo:ÉϼÜÅÄÆ·  | 
| # @author hxp  | 
| # @date 2019-12-27  | 
| # @version 1.0  | 
| #  | 
| # ÏêϸÃèÊö: ÉϼÜÅÄÆ·  | 
| #  | 
| #-------------------------------------------------------------------------------  | 
| #"""Version = 2019-12-27 19:30"""  | 
| #-------------------------------------------------------------------------------  | 
|   | 
| import GMCommon  | 
| import GameWorld  | 
| import DataRecordPack  | 
| import IpyGameDataPY  | 
| import AuctionHouse  | 
| import ChConfig  | 
|   | 
|   | 
| #---------------------------------------------------------------------  | 
|   | 
| ## Ö´ÐÐÂß¼  | 
| #  @param curPlayer µ±Ç°Íæ¼Ò  | 
| #  @param gmCmdDict: ÃüÁî×Öµä  | 
| #  @return None  | 
| #  @remarks º¯ÊýÏêϸ˵Ã÷.  | 
| def OnExec(orderId, gmCmdDict):  | 
|       | 
|     familyID = GameWorld.ToIntDef(gmCmdDict.get("familyID", 0))  | 
|     familyPlayerIDList = []  | 
|     if familyID:  | 
|         try:  | 
|             familyPlayerIDList = eval(gmCmdDict.get("playerIDList", "[]"))  | 
|             if not isinstance(familyPlayerIDList, list):  | 
|                 GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "ÊÕÒæÍæ¼ÒIDÁбí¸ñʽ·ÇÁбí!")  | 
|                 return  | 
|         except:  | 
|             GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "ÊÕÒæÍæ¼ÒIDÁбí¸ñʽ´íÎó!")  | 
|             return  | 
|           | 
|     itemDict = {}  | 
|     for key, value in gmCmdDict.items():  | 
|           | 
|         if key.startswith("ItemID"):  | 
|             itemID = GameWorld.ToIntDef(value)  | 
|             if not itemID:  | 
|                 continue  | 
|             itemNum = key[6:]  | 
|             info = {"ItemID":itemID}  | 
|             ipyData = IpyGameDataPY.GetIpyGameDataNotLog("AuctionItem", itemID)  | 
|             if not ipyData:  | 
|                 GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "´æÔÚ·ÇÅÄÆ·ÎïÆ·ID %s" % itemID)  | 
|                 return  | 
|         elif key.startswith("ItemCnt"):  | 
|             itemCount = GameWorld.ToIntDef(value)  | 
|             itemNum = key[7:]  | 
|             info = {"ItemCount":itemCount}  | 
|         else:  | 
|             continue  | 
|           | 
|         if itemNum not in itemDict:  | 
|             itemDict[itemNum] = {}  | 
|         itemInfo = itemDict[itemNum]  | 
|         itemInfo.update(info)  | 
|           | 
|     auctionItemList = []  | 
|     for itemInfo in itemDict.values():  | 
|         itemID = itemInfo.get("ItemID", 0)  | 
|         itemCount = itemInfo.get("ItemCount", 0)  | 
|         if not itemID or not itemCount:  | 
|             continue  | 
|         auctionItemList.append([itemID, itemCount])  | 
|     if not auctionItemList:  | 
|         GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "ÅÄÆ·ID»ò¸öÊýÒì³£!")  | 
|         return  | 
|       | 
|     GameWorld.Log("GMTÉϼÜÅÄÆ·: ")  | 
|     if familyID:  | 
|         curFamily = GameWorld.GetFamilyManager().FindFamily(familyID)  | 
|         if not curFamily:  | 
|             GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "²»´æÔÚ¸ÃÏÉÃË!")  | 
|             return  | 
|         notFamilyMemberIDList = []  | 
|         for menberID in familyPlayerIDList:  | 
|             curMember = curFamily.FindMember(menberID)  | 
|             if curMember == None:  | 
|                 notFamilyMemberIDList.append(menberID)  | 
|         if notFamilyMemberIDList:  | 
|             GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_ParamErr, "ÒÔÏÂÍæ¼ÒID²»ÊǸÃÏÉÃ˳ÉÔ±%s" % notFamilyMemberIDList)  | 
|             return  | 
|           | 
|         if not familyPlayerIDList:  | 
|             for i in xrange(curFamily.GetCount()):  | 
|                 member = curFamily.GetAt(i)  | 
|                 memPlayerID = member.GetPlayerID()  | 
|                 if memPlayerID not in familyPlayerIDList:  | 
|                     familyPlayerIDList.append(memPlayerID)  | 
|             GameWorld.Log("ûÓÐÖ¸¶¨ÊÕÒæ³ÉÔ±£¬Ä¬ÈÏËùÓгÉÔ±¶¼ÊÕÒæ! %s" % familyPlayerIDList)  | 
|               | 
|         familyAuctionItemDict = {} # {ÏÉÃËID:[[ÏíÊÜÊÕÒæµÄ³ÉÔ±ID, ...], [[ÅÄÆ·ID,¸öÊý], [ÅÄÆ·ID,¸öÊý,ÊÇ·ñÅÄÆ·], ...]], ...}  | 
|         familyAuctionItemDict[familyID] = [familyPlayerIDList, auctionItemList]  | 
|         AuctionHouse.DoAddFamilyAuctionItem(ChConfig.Def_FBMapID_MainCity, familyAuctionItemDict)  | 
|     else:  | 
|         AuctionHouse.DoAddSystemAuctionItem(auctionItemList)  | 
|           | 
|     #Ö´Ðгɹ¦  | 
|     GMCommon.GMCommandResult(orderId, gmCmdDict, GMCommon.Def_Success)    | 
|     # Á÷Ïò  | 
|     DataRecordPack.DR_ToolGMOperate(0, '', '', 'GMT_AddAuctionItem', str(gmCmdDict))  | 
|     return  | 
|   |