1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
#!/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