9823 9265【主干】【小7】【骨折】跨服云购修改(优化同步子服购买记录最大条数,目前仅同步前端单次查询最大条数50条)
2个文件已修改
32 ■■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossLuckyCloudBuy.py
@@ -64,6 +64,8 @@
StrValue3:lotteryInfo        分区信息|大奖信息|中奖玩家账号
'''
Def_SyncBuyRec_Count = 50
class LuckyCloudBuyNum():
    ''' 幸运云购购买号码记录
    '''
@@ -478,6 +480,10 @@
    zoneLotteryInfo = {zoneID:[lotteryRec.GetString()]}
    dataMsg = {"syncType":"New", "zoneLotteryInfo":zoneLotteryInfo}
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyLottery, dataMsg)
    maxBuyCount = IpyGameDataPY.GetFuncCfg("LuckyCloudBuySet", 2)
    dataMsg = {"syncType":"All", "zoneID":zoneID, "zoneBuyNumList":[], "remainCount":maxBuyCount}
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
    return True
def Sync_LuckyCloudBuyDataToClientServer(tick, serverGroupID=0):
@@ -498,10 +504,12 @@
    for zoneID in PyGameData.g_luckyCloudBuyLotteryDict.keys():
        zoneBuyNumList = []
        buyRecList = PyGameData.g_luckyCloudBuyNumDict.get(zoneID, [])
        for buyRec in buyRecList:
        for buyRec in buyRecList[-Def_SyncBuyRec_Count:]:
            zoneBuyNumList.append(buyRec.GetString())
            
        dataMsg = {"syncType":"All", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList}
        maxBuyCount = IpyGameDataPY.GetFuncCfg("LuckyCloudBuySet", 2)
        remainCount = max(0, maxBuyCount - len(buyRecList))
        dataMsg = {"syncType":"All", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "remainCount":remainCount}
        CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
        
    return
@@ -654,11 +662,12 @@
    DataRecordPack.SendEventPack("LuckyCloudBuyNum", dataDict)
    
    # 通知子服
    dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "buyPlayer":[serverGroupID, playerID, roundID, buyCount]}
    remainCount -= buyCount
    dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "buyPlayer":[serverGroupID, playerID, roundID, buyCount], "remainCount":remainCount}
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
    
    # 结算开奖
    if remainCount == buyCount:
    if remainCount <= 0:
        DoLuckyCloudBuyLottery(lotteryRec, False, "SoldOut")
        
    return
@@ -709,11 +718,12 @@
        zoneBuyNumList.append(buyRec.GetString())
        
    # 通知子服
    dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList}
    remainCount -= buyCount
    dataMsg = {"syncType":"New", "zoneID":zoneID, "zoneBuyNumList":zoneBuyNumList, "remainCount":remainCount}
    CrossRealmMsg.SendMsgToClientServer(ShareDefine.CrossServerMsg_LuckyCloudBuyNum, dataMsg)
    
    # 结算开奖
    if remainCount == buyCount:
    if remainCount <= 0:
        DoLuckyCloudBuyLottery(lotteryRec, False, "SoldOut")
    return
@@ -723,6 +733,7 @@
    syncType = msgData["syncType"] # All New
    zoneID = msgData["zoneID"]
    zoneBuyNumList = msgData["zoneBuyNumList"]
    remainCount = msgData["remainCount"]
    
    curServerGroupID = GameWorld.GetServerGroupID()
    actInfo = CrossActionControl.GetCrossActInfoByServerGroupID(ShareDefine.CrossActName_LuckyCloudBuy, curServerGroupID)
@@ -737,6 +748,8 @@
        GameWorld.DebugLog("不是本服务器分区的云购记录不处理! curServerGroupID=%s,serverZoneID(%s) != zoneID(%s)" 
                           % (curServerGroupID, serverZoneID, zoneID))
        return
    PyGameData.g_luckyCloudBuyRemainCountDict[zoneID] = remainCount
    
    if syncType == "All":
        PyGameData.g_luckyCloudBuyNumDict = {}
@@ -944,12 +957,10 @@
        lotteryRec = None if not lotteryRecList else lotteryRecList[-1] # 取最新一期的
        if not lotteryRec:
            return
        syncRecList = buyRecList[-50:]
    maxBuyCount = IpyGameDataPY.GetFuncCfg("LuckyCloudBuySet", 2)
        syncRecList = buyRecList[-Def_SyncBuyRec_Count:]
        
    clientPack = ChPyNetSendPack.tagGCLuckyCloudBuyNumRecInfo()
    clientPack.RemainCount = max(0, maxBuyCount - len(buyRecList))
    clientPack.RemainCount = PyGameData.g_luckyCloudBuyRemainCountDict.get(zoneID, 0)
    clientPack.BuyNumRecList = []
    for buyRec in syncRecList:
        buyNumInfo = ChPyNetSendPack.tagGCLuckyCloudBuyNumRec()
ServerPython/CoreServerGroup/GameServer/Script/PyGameData.py
@@ -111,6 +111,7 @@
g_luckyCloudBuyNumDict = {} # 幸运云购购买记录 {zoneID:[LuckyCloudBuyNum, ...], ...}
g_luckyCloudBuyLotteryDict = {} # 幸运云购开奖记录 {zoneID:[LuckyCloudBuyLottery, ...], ...}
g_unNotifyCloudBuyNumDict = {} # 未通知的跨服云购购买信息 {playerID:msgData, ...}
g_luckyCloudBuyRemainCountDict = {} # 幸运云购剩余购买份数 {zoneID:remainCount, ...} - 子服用
g_crossActInfoDict = None # 跨服运营活动信息 {actName:{actInfoDict}, ...}