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