From 6316f747b4ebd078967bc2c34b9a0d293b153544 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 26 七月 2019 16:52:26 +0800
Subject: [PATCH] 8154 【后端】【主干】【300】拍卖行优化(系统上架拍品支持每件拍品间隔随机秒数上架)

---
 ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py |   48 +++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 39 insertions(+), 9 deletions(-)

diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
index c3ae103..adc2ff1 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py
@@ -496,7 +496,7 @@
     GameWorld.Log("=============================================================")
     return AuctionSystemItem[1]
 
-def OnAuctionItemMinuteProcess():
+def OnAuctionItemMinuteProcess(tick):
     ## 拍卖行拍品定时处理,每整分钟触发一次
     
     # 这里时间需精确到分钟,不然后面的比较会匹配不到
@@ -505,7 +505,10 @@
                                                                     curDateTime.hour, curDateTime.minute), ChConfig.TYPE_Time_Format)
     
     randMailKey = ""
-    sysAuctionItemList = []
+    addItemTick = tick
+    sysAuctionItemList = IpyGameDataPY.GetConfigEx("SysWaitAuctionItemList") # 系统等待上架的拍品列表
+    if not sysAuctionItemList:
+        sysAuctionItemList = []
     addSystemAuctionItemInfo = __GetAuctionSystemItemInfo()
     for cfgID, ipyData, addAuctionItemDatetimeList in addSystemAuctionItemInfo:
         if curDateTime not in addAuctionItemDatetimeList:
@@ -513,20 +516,29 @@
         #cfgID = ipyData.GetCfgID()
         addCountWeightList = ipyData.GetItemCountWeightList()
         auctionItemWeightList = ipyData.GetAuctionItemWeightList()
+        randSecondRange = ipyData.GetAddRandSecondRange()
         
         addCount = GameWorld.GetResultByWeightList(addCountWeightList)
-        addSysItemList = []
+        GameWorld.Log("增加等待上架的系统拍品信息: cfgID=%s,addCount=%s,addItemTick=%s" % (cfgID, addCount, addItemTick))
         for _ in xrange(addCount):
             itemInfo = GameWorld.GetResultByWeightList(auctionItemWeightList)
             if itemInfo != None:
-                addSysItemList.append(itemInfo)
-        GameWorld.Log("增加上架系统拍品信息: cfgID=%s,addCount=%s, %s" % (cfgID, addCount, addSysItemList))
-        sysAuctionItemList += addSysItemList
-        
+                randSeconds = 0
+                if len(randSecondRange) == 2:
+                    randSeconds = random.randint(randSecondRange[0], randSecondRange[1])
+                elif len(randSecondRange) == 1:
+                    randSeconds = randSecondRange[0]
+                addItemTick = addItemTick + randSeconds * 1000
+                sysAuctionItemList.append([addItemTick, itemInfo])
+                GameWorld.Log("    增加等待上架的系统拍品: randSeconds=%s,addItemTick=%s,itemInfo=%s" % (randSeconds, addItemTick, itemInfo))
+                
         randMailKeyList = ipyData.GetRandMailKeyList()
         if randMailKeyList:
             randMailKey = random.choice(randMailKeyList)
             
+    IpyGameDataPY.SetConfigEx("SysWaitAuctionItemList", sysAuctionItemList)
+    #GameWorld.DebugLog("等待系统上架的拍品列表: %s" % sysAuctionItemList)
+    
     # 随机邮件通知 
     if randMailKey:
         playerIDList = []
@@ -540,9 +552,25 @@
                 continue
             playerIDList.append(player.GetPlayerID())
         PlayerCompensation.SendMailByKey(randMailKey, playerIDList, addItemList)
+               
+    return
+
+def __DoSysWaitAddAuctionItem(tick):
+    sysAuctionItemList = IpyGameDataPY.GetConfigEx("SysWaitAuctionItemList") # 系统等待上架的拍品列表
+    if not sysAuctionItemList:
+        return
+    
+    doCount = len(sysAuctionItemList)
+    while doCount > 0 and sysAuctionItemList:
+        doCount -= 1
+        addItemTick, itemInfo = sysAuctionItemList[0]
+        if tick < addItemTick:
+            #GameWorld.DebugLog("未到系统等待上架的拍品tick,不处理! tick=%s,sysAuctionItemList=%s" % (tick, sysAuctionItemList))
+            break
+        sysAuctionItemList.pop(0)
+        GameWorld.DebugLog("系统等待上架的拍品tick已到,可上架! tick=%s >= addItemTick=%s,itemInfo=%s,sysAuctionItemList=%s" % (tick, addItemTick, itemInfo, sysAuctionItemList))
+        DoAddSystemAuctionItem([itemInfo])
         
-    if sysAuctionItemList:
-        DoAddSystemAuctionItem(sysAuctionItemList)        
     return
 
 def OnAuctionItemTimeProcess(curTime, tick):
@@ -550,6 +578,8 @@
     
     __DoSysBuyoutItemByTime(curTime)
     
+    __DoSysWaitAddAuctionItem(tick)
+    
     allAuctionItemByEndTimeList = PyDataManager.GetAuctionItemManager().allAuctionItemByEndTimeList
     if not allAuctionItemByEndTimeList:
         return

--
Gitblit v1.8.0