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