From 631226708e6ba39636e219a9e92a0c7c496aa442 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 27 十二月 2019 19:36:48 +0800
Subject: [PATCH] 8352 【后端】GM工具后台增加可补偿上架拍品

---
 ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_AddAuctionItem.py                 |  109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py |    4 +
 2 files changed, 112 insertions(+), 1 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_AddAuctionItem.py b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_AddAuctionItem.py
new file mode 100644
index 0000000..e5fc75d
--- /dev/null
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GM/Commands/GMT_AddAuctionItem.py
@@ -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
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
index d0025ce..c3fe1c7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerAuctionHouse.py
+++ b/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:

--
Gitblit v1.8.0