10223 【越南】【砍树】【主干】【港台】秘境寻宝(秘境榜单数据备份优化;优化本服跨服榜备份数据规则,后台查询本服跨服历史榜统一逻辑;)
| | |
| | | SendEventPack("GameMapOnLinePlayerCnt", dataDict)
|
| | | return
|
| | |
|
| | | ## 每天记录排行榜数据
|
| | | # @param billboardType: 排行榜类型
|
| | | # @return: None
|
| | | def DR_BillboardDataByDay(billboardType):
|
| | | DR_BillboardData(billboardType, "BillboardDataByDay")
|
| | | return
|
| | |
|
| | | ## 记录排行榜数据
|
| | | # @param billboardType: 排行榜类型
|
| | | # @return: None
|
| | |
| | | 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执行命令操作
|
| | |
| | | #发送封包
|
| | | 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
|
| | |
| | | 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:名次, ...}
|
| | |
|
| | |
| | | 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,
|
| | |
| | | "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
|
| | |
| | | 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):
|
| | |
| | | |
| | | __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 |
| | |
| | | |
| | | 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 |
| | | |
| | |
| | | |
| | | # 结算时排序并保存榜单数据流向 |
| | | 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)) |
| | |
| | | |
| | | # 结算时排序并保存榜单数据流向 |
| | | 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)) |
| | |
| | | |
| | | __OnEndAward(actNum, ipyData, dayIndex) # 兼容活动没有配置参与时间段的在活动结束补触发结算奖励 |
| | | |
| | | DataRecordPack.DR_BillboardData(ShareDefine.Def_BT_XianXiaMJScore, "XianXiaMJ", {"actNum":actNum, "cfgID":cfgID, "dayIndex":dayIndex}) |
| | | GameWorld.Log("=================================================================================") |
| | | return |
| | | |
| | |
| | | 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 |
| | | |
| | |
| | | |
| | | # 结算时排序并保存榜单数据流向 |
| | | 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)) |
| | |
| | |
|
| | | 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():
|