10223 【越南】【砍树】【主干】【港台】秘境寻宝(秘境榜单数据备份优化;优化本服跨服榜备份数据规则,后台查询本服跨服历史榜统一逻辑;)
5个文件已修改
140 ■■■■ 已修改文件
ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py
@@ -233,13 +233,6 @@
    SendEventPack("GameMapOnLinePlayerCnt", dataDict)
    return
## 每天记录排行榜数据
#  @param billboardType: 排行榜类型
#  @return: None
def DR_BillboardDataByDay(billboardType):
    DR_BillboardData(billboardType, "BillboardDataByDay")
    return
## 记录排行榜数据
#  @param billboardType: 排行榜类型
#  @return: None
@@ -248,42 +241,42 @@
    if not billBoard:
        #找不到排行榜
        return
    dataCount = billBoard.GetCount()
    if not dataCount:
        return
    
    for index in range(0, billBoard.GetCount()):
    serverTime = GameWorld.GetServerTime()
    timeStr = "%02d%02d%02d%s" % (serverTime.hour, serverTime.minute, serverTime.second, str(serverTime.microsecond)[:3])
    eventTypeStr = "Billboard_%s_%s_%s" % (billboardType, eventName, timeStr)
    dataDict = {"BillboardType":billboardType, "DataCount":dataCount, "addDataDict":addDataDict}
    SendEventPack(eventTypeStr, dataDict)
    for index in range(0, dataCount):
        billBoardData = billBoard.At(index)
        if not billBoardData:
            continue
        objID = billBoardData.GetID()
        objID2 = billBoardData.GetID2()
        name1 = billBoardData.GetName1()
        name2 = billBoardData.GetName2()
        type2 = billBoardData.GetType2()
        value1 = billBoardData.GetValue1()
        value2 = billBoardData.GetValue2()
        value3 = billBoardData.GetValue3()
        value4 = billBoardData.GetValue4()
        value5 = billBoardData.GetValue5()
        value6 = billBoardData.GetValue6()
        value7 = billBoardData.GetValue7()
        value8 = billBoardData.GetValue8()
        cmpValue = billBoardData.GetCmpValue()
        cmpValue2 = billBoardData.GetCmpValue2()
        cmpValue3 = billBoardData.GetCmpValue3()
        userData = billBoardData.GetUserData()
        dataDict = {"BillboardType":billboardType,
                    "Place":index,  "ObjID":objID, "ObjID2":objID2, "Name1":name1,
                    "Name2":name2,  "Type2":type2, "Value1":value1, "Value2":value2,
                    "CmpValue":cmpValue, "CmpValue2":cmpValue2, "CmpValue3":cmpValue3,
                    "Value3":value3, "Value4":value4, "Value5":value5, "Value6":value6,
                    "Value7":value7, "Value8":value8, "UserData":userData
        rank = index + 1
        dataDict = {"Rank":rank,
                    "ID":billBoardData.GetID(),
                    "ID2":billBoardData.GetID2(),
                    "Name1":billBoardData.GetName1(),
                    "Name2":billBoardData.GetName2(),
                    "Type2":billBoardData.GetType2(),
                    "Value1":billBoardData.GetValue1(),
                    "Value2":billBoardData.GetValue2(),
                    "Value3":billBoardData.GetValue3(),
                    "Value4":billBoardData.GetValue4(),
                    "Value5":billBoardData.GetValue5(),
                    "Value6":billBoardData.GetValue6(),
                    "Value7":billBoardData.GetValue7(),
                    "Value8":billBoardData.GetValue8(),
                    "CmpValue":billBoardData.GetCmpValue(),
                    "CmpValue2":billBoardData.GetCmpValue2(),
                    "CmpValue3":billBoardData.GetCmpValue3(),
                    "UserData":billBoardData.GetUserData(),
                    }
        dataDict.update(addDataDict)
        #发送封包
        SendEventPack("%s_%s" % (eventName, billboardType), dataDict)
        SendEventPack(eventTypeStr, dataDict)
    return
## GM执行命令操作
@@ -393,20 +386,6 @@
    #发送封包
    SendEventPack("ResetGameDataRecord", dataDict)
    return
## 复制的排行榜记录
#  @param Place: 名次
#  @param playerID: 玩家ID
#  @param playerName: 玩家名字
#  @param playerLV: 玩家等级
#  @param playerJob: 玩家职业
#  @param totalPoint: 积分
#  @return: None
def DR_BillboardCopy(billboardType):
    DR_BillboardData(billboardType, "BillboardCopy")
    return
## 弹劾玩家家族职位变更
#  @param familyID: 家族ID
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py
@@ -122,10 +122,10 @@
    def GetGroupValue2(self): return self.__groupValue2
    
    def ClearData(self):
        GameWorld.Log("CrossBillboard ClearData billboardType=%s,groupValue1=%s,groupValue2=%s"
                      % (self.__billboardType, self.__groupValue1, self.__groupValue2))
        GameWorld.Log("CrossBillboard ClearData billboardType=%s,groupValue1=%s,groupValue2=%s,dataCount=%s"
                      % (self.__billboardType, self.__groupValue1, self.__groupValue2, len(self.__billboardList)))
        if GameWorld.IsCrossServer():
            self.SaveDRData()
            self.SaveDRData("Clear")
        self.__billboardList = [] # [tagDBCrossBillboard, ...] 
        self.__idOrderDict = {} # {id:名次, ...}
        
@@ -169,16 +169,25 @@
        order = idOrderDict[findID]
        return order - 1
    
    def SaveDRData(self):
    def SaveDRData(self, eventName="", addDataDict={}):
        ## 记录流向数据
        eventTypeName = "CrossBillboard_%s" % (self.__billboardType)
        drDict = {"BillboardType":self.__billboardType, "GroupValue1":self.__groupValue1, "GroupValue2":self.__groupValue2,
                  "DataCount":len(self.__billboardList)}
        DataRecordPack.SendEventPack(eventTypeName, drDict)
        dataCount = len(self.__billboardList)
        if not dataCount:
            return
        serverTime = GameWorld.GetServerTime()
        timeStr = "%02d%02d%02d%s" % (serverTime.hour, serverTime.minute, serverTime.second, str(serverTime.microsecond)[:3])
        eventTypeStr = "Billboard_%s_%s_%s_%s_%s" % (self.__billboardType, self.__groupValue1, self.__groupValue2, eventName, timeStr)
        dataDict = {"BillboardType":self.__billboardType, "DataCount":dataCount, "addDataDict":addDataDict,
                    "GroupValue1":self.__groupValue1, "GroupValue2":self.__groupValue2}
        DataRecordPack.SendEventPack(eventTypeStr, dataDict)
        for index, billboardData in enumerate(self.__billboardList):
            dataDict = {"BillboardType":billboardData.BillboardType, "GroupValue1":billboardData.GroupValue1,
                        "GroupValue2":billboardData.GroupValue2, "Type2":billboardData.Type2,
                        "ID":billboardData.ID, "ID2":billboardData.ID2, "Place":index,
            rank = index + 1
            dataDict = {"Type2":billboardData.Type2, "Rank":rank,
                        "ID":billboardData.ID, "ID2":billboardData.ID2,
                        "Name1":billboardData.Name1, "Name2":billboardData.Name2,
                        "Value1":billboardData.Value1, "Value2":billboardData.Value2,
                        "Value3":billboardData.Value3, "Value4":billboardData.Value4,
@@ -186,7 +195,7 @@
                        "Value7":billboardData.Value7, "Value8":billboardData.Value8,
                        "CmpValue":billboardData.CmpValue, "CmpValue2":billboardData.CmpValue2, 
                        "CmpValue3":billboardData.CmpValue3, "UserData":billboardData.UserData}
            DataRecordPack.SendEventPack(eventTypeName, dataDict)
            DataRecordPack.SendEventPack(eventTypeStr, dataDict)
        return
    
    def GetBillboardDataList(self): return self.__billboardList
@@ -273,10 +282,12 @@
def CopyBillboardOnDay():
    billboardMgr = PyDataManager.GetCrossBillboardManager()
    for billboardType in ShareDefine.CrossBillboardTypeList:
        if billboardType in [ShareDefine.Def_CBT_BossTrialSubmitBak, ShareDefine.Def_CBT_BossTrialSubmitFamilyBak]:
            continue
        groupList = billboardMgr.GetBillboardGroupList(billboardType)
        for billboardType, groupValue1, groupValue2 in groupList:
            billboardObj = billboardMgr.GetCrossBillboard(billboardType, groupValue1, groupValue2)
            billboardObj.SaveDRData()
            billboardObj.SaveDRData("OnDay")
    return
def CopyBillboard(fromBillboardType, toBillboardType):
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
@@ -50,10 +50,7 @@
    
    __OnEndAward(actNum, ipyData, dayIndex) # 兼容活动没有配置参与时间段的在活动结束补触发结算奖励
    
    DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_BossTrialSubmitFamily, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex})
    PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitFamilyBak, ShareDefine.Def_BT_BossTrialSubmitFamily)
    DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_BossTrialSubmit, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex})
    PlayerBillboard.CopyBillboard(ShareDefine.Def_BT_BossTrialSubmitBak, ShareDefine.Def_BT_BossTrialSubmit)
    GameWorld.Log("=================================================================================")
    return
@@ -82,6 +79,10 @@
    
    templateID = GameWorld.GetTemplateID(ipyData, cfgID, dayIndex)
    __OnEndAward_Personal(templateID, ShareDefine.Def_BT_BossTrialSubmit)
    # 流向备份
    DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_BossTrialSubmitFamily, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex})
    DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_BossTrialSubmit, "BossTrial", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex})
    GameWorld.Log("=================================================================================")
    return
@@ -495,7 +496,7 @@
    
    # 结算时排序并保存榜单数据流向
    billboardObj.SortData()
    billboardObj.SaveDRData()
    billboardObj.SaveDRData("BossTrial", {"cfgID":cfgID, "zoneID":zoneID})
    
    GameWorld.Log("结算跨服Boss凭证个人排行奖励: billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s,billboardDataCount=%s" 
                  % (billboardType, zoneID, cfgID, templateID, billboardDataCount))
@@ -543,7 +544,7 @@
    
    # 结算时排序并保存榜单数据流向
    billboardObj.SortData()
    billboardObj.SaveDRData()
    billboardObj.SaveDRData("BossTrial", {"cfgID":cfgID, "zoneID":zoneID})
    
    GameWorld.Log("结算跨服Boss凭证仙盟排行奖励: billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s,billboardDataCount=%s" 
                  % (billboardType, zoneID, cfgID, templateID, billboardDataCount))
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py
@@ -40,7 +40,6 @@
    
    __OnEndAward(actNum, ipyData, dayIndex) # 兼容活动没有配置参与时间段的在活动结束补触发结算奖励
    
    DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_XianXiaMJScore, "XianXiaMJ", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex})
    GameWorld.Log("=================================================================================")
    return
@@ -64,6 +63,8 @@
    GameWorld.Log("=== 本服仙匣秘境活动发放榜单奖励! === actNum=%s,cfgID=%s,dayIndex=%s" % (actNum, cfgID, dayIndex))
    
    __OnEndAward_Personal(ipyData.GetPersonalTemplateID(), ShareDefine.Def_BT_XianXiaMJScore)
    DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_XianXiaMJScore, "XXMJ", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex})
    GameWorld.Log("=================================================================================")
    return
@@ -258,7 +259,7 @@
    
    # 结算时排序并保存榜单数据流向
    billboardObj.SortData()
    billboardObj.SaveDRData()
    billboardObj.SaveDRData("XXMJ", {"cfgID":cfgID, "zoneID":zoneID})
    
    GameWorld.Log("结算跨服仙匣秘境个人排行奖励: billboardType=%s,zoneID=%s,cfgID=%s,templateID=%s,billboardDataCount=%s" 
                  % (billboardType, zoneID, cfgID, templateID, billboardDataCount))
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
@@ -43,9 +43,11 @@
def NoteOssBillboardInfoByDay():
    ## 每天记录排行榜信息到oss中
    if GameWorld.IsCrossServer():
        return
    Def_NoteOssBillboardTypeList = IpyGameDataPY.GetFuncEvalCfg("BillboardSet", 1)
    for billboardType in Def_NoteOssBillboardTypeList:
        DataRecordPack.DR_BillboardDataByDay(billboardType)
        DataRecordPack.DR_BillboardData(billboardType, "OnDay")
    return
def CopyBillboardOnDay():