hch
2019-07-26 8bfa5768bc81e3d8a3838527b22170b3fe95460e
Merge branch 'master' of http://192.168.0.87:10010/r/SnxxServerCode
4个文件已修改
54 ■■■■ 已修改文件
PySysDB/PySysDBG.h 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/AuctionHouse.py 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBG.h
@@ -66,6 +66,7 @@
    BYTE        AuctionCount;    //上架次数
    list        RandMinuteRange;    //上架随机间隔分钟下限|上限
    list        ItemCountWeightList;    //上架随机件数权重列表, [[权重, 件数], ...]
    list        AddRandSecondRange;    //每件拍品随机间隔上架秒数 上限|下限
    list        AuctionItemWeightList;    //上架物品随机权重, [[权重, 物品ID],[权重, [阶,颜色,部位集合,是否套装,星级]] ...]
    list        RandMailKeyList;    //上架随机邮件列表,有配置时上架的时候在线玩家会收到一封上架邮件提醒
};
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
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -359,7 +359,7 @@
    #红包
    PlayerFamilyRedPacket.OnRedPacketMinuteProcess()
    #拍卖行
    AuctionHouse.OnAuctionItemMinuteProcess()
    AuctionHouse.OnAuctionItemMinuteProcess(tick)
    #每5分钟触发一次仙盟总战力更新
    if curMinute % 5 == 0:
        PlayerFamily.UpdFamilyTotalFightPower()
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -82,6 +82,7 @@
                        ("BYTE", "AuctionCount", 0),
                        ("list", "RandMinuteRange", 0),
                        ("list", "ItemCountWeightList", 0),
                        ("list", "AddRandSecondRange", 0),
                        ("list", "AuctionItemWeightList", 0),
                        ("list", "RandMailKeyList", 0),
                        ),
@@ -648,6 +649,7 @@
        self.AuctionCount = 0
        self.RandMinuteRange = []
        self.ItemCountWeightList = []
        self.AddRandSecondRange = []
        self.AuctionItemWeightList = []
        self.RandMailKeyList = []
        return
@@ -660,6 +662,7 @@
    def GetAuctionCount(self): return self.AuctionCount # 上架次数
    def GetRandMinuteRange(self): return self.RandMinuteRange # 上架随机间隔分钟下限|上限
    def GetItemCountWeightList(self): return self.ItemCountWeightList # 上架随机件数权重列表, [[权重, 件数], ...]
    def GetAddRandSecondRange(self): return self.AddRandSecondRange # 每件拍品随机间隔上架秒数 上限|下限
    def GetAuctionItemWeightList(self): return self.AuctionItemWeightList # 上架物品随机权重, [[权重, 物品ID],[权重, [阶,颜色,部位集合,是否套装,星级]] ...]
    def GetRandMailKeyList(self): return self.RandMailKeyList # 上架随机邮件列表,有配置时上架的时候在线玩家会收到一封上架邮件提醒