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