From 6dafb5efaf74d7193d7c6c1d0a0c0b998d0e1e90 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 22 七月 2024 17:59:05 +0800
Subject: [PATCH] 10223 【越南】【砍树】【主干】【港台】秘境寻宝(秘境榜单数据备份优化;优化本服跨服榜备份数据规则,后台查询本服跨服历史榜统一逻辑;)
---
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py | 11 ++-
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py | 4 +
ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py | 83 ++++++++++-----------------
ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py | 5 +
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py | 37 ++++++++----
5 files changed, 67 insertions(+), 73 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py b/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py
index 0d2dc6a..9e36539 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/DataRecordPack.py
+++ b/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
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py
index 4e12dba..ccb8aa3 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/CrossBillboard.py
+++ b/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):
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
index d79e287..b9d120c 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActBossTrial.py
+++ b/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))
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py
index 2bbfd3e..ef75024 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerActXianXiaMJ.py
+++ b/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))
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
index 0217cf2..ed52c4b 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/PlayerBillboard.py
+++ b/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():
--
Gitblit v1.8.0