hxp
2019-12-27 631226708e6ba39636e219a9e92a0c7c496aa442
8352 【后端】GM工具后台增加可补偿上架拍品
1个文件已修改
1个文件已添加
113 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_AddAuctionItem.py 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_AddAuctionItem.py
New file
@@ -0,0 +1,109 @@
#!/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
        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
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
@@ -216,12 +216,14 @@
    '''
    GameWorld.Log("上架系统拍品: %s" % sysAuctionItemList)
    
    itemCount = 1 # 系统拍品,默认上架一个
    isAuctionItem = True
    auctionItemList = []
    for sysAuctionItemInfo in sysAuctionItemList:
        itemCount = 1 # 系统拍品,默认上架一个
        if type(sysAuctionItemInfo) == int:
            itemID = sysAuctionItemInfo
        elif type(sysAuctionItemInfo) == list and len(sysAuctionItemInfo) == 2:
            itemID, itemCount = sysAuctionItemInfo
        elif type(sysAuctionItemInfo) == list and len(sysAuctionItemInfo) >= 5:
            classLV, color, placeList, isSuit, star = sysAuctionItemInfo[:5]
            if star: