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