From b31e57a8079f5bf8fae3dc607929d72939e7e7c0 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 13 一月 2021 18:25:05 +0800
Subject: [PATCH] 8677 【BT】【后端】跨服冲榜活动; 新增跨服活动时间管理模块、跨服榜单;跨服邮件;跨服广播优化;相关GM命令、后台工具;(冲突补同步)
---
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 2 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 37 ++++++++++++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 7 +++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 37 ++++++++++++++++--
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 14 +++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 9 ++++
6 files changed, 97 insertions(+), 9 deletions(-)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index 8860fd5..fc51542 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -90,6 +90,7 @@
import CrossRealmPK
import CrossRealmMsg
import CrossRealmPlayer
+import CrossActionControl
import PlayerFBHelpBattle
import PlayerFamilyRedPacket
import PlayerFairyDomain
@@ -1930,6 +1931,7 @@
PlayerTeam.OnServerClose(tick)
ChPlayer.SavePlayerLVData()
PlayerFBHelpBattle.OnServerClose()
+ CrossActionControl.OnServerClose()
GameWorldArena.OnServerClose()
GameWorld.Log("通知C++关服!")
GameWorld.GetGameWorld().OnServerClose()
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index 2b0d82a..820ffd7 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -146,6 +146,7 @@
Def_Notify_WorldKey_MapServerScriptReloadVersion = 'MapServerScriptReloadVersion' # MapServer 脚本重读版本标记
Def_Notify_WorldKey_InitGameWorldTime = "InitGameWorldTime" #启动服务器时间
Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名
+Def_Notify_WorldKey_CrossActInfo = "CrossActInfo_%s" # 跨服运营活动信息,参数为运营活动名
Def_Notify_WorldKey_ActionBossRebornSign = "ActBossSign_%s" # 活动boss重生标记,参数为日常活动ID 或 运营活动名
Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID
Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID
@@ -243,13 +244,24 @@
OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_LuckyTreasure]
+#跨服运营活动表名定义
+CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
+
+#跨服运营活动列表
+CrossActNameList = [CrossActName_CTGBillboard]
+
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
ActKey_State = "State" # 活动状态 0-未开启, >0开启中,也代表当日的第几个时间段
ActKey_CfgID = "CfgID" # 活动表配置ID
-ActKey_DayIndex = "DayIndex" # 活动表配置ID
+ActKey_DayIndex = "DayIndex" # 当前活动天索引,0开始,代表第1天
+ActKey_TemplateID = "TemplateID" # 当前活动模板ID
ActKey_WorldLV = "WorldLV" # 活动开启时世界等级
ActKey_WorldLVList = "WorldLVList" # 活动每天的世界等级列表
+
+ActKey_ServerIDRangeList = "ServerIDRangeList" # 活动服务器ID范围信息
+ActKey_IpyDataInfo = "IpyDataInfo" # 活动对应 IpyData 信息
+ActKey_DBInfo = "DBInfo" # 保存db的历史活动信息
#答题类型枚举
Def_Game_ExamTypeList = range(1, 4 + 1)
@@ -667,7 +679,16 @@
Def_BT_Max, #排行榜最大类型
) = range(0, 28 + 2)
-
+
+''' 跨服排行榜类型, 从 150 开始
+与本服榜单存储的是不一样的数据库表格,理论上类型可以和本服榜单类型重复,为了做下区分防误导,跨服榜单从 150 开始
+跨服榜单表(tagDBCrossBillboard)
+本服榜单表(tagDBBillboard)
+'''
+CrossBillboardTypeList = (
+Def_CBT_ActCTG, # 跨服运营活动 - 充值榜 150
+) = range(150, 150 + 1)
+
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
PlayerJob_Warrior:Def_BT_FightPower_Warrior,
@@ -1065,7 +1086,7 @@
Def_UniversalGameRecType_FairyDomain, #缥缈仙域事件次数记录13
Def_UniversalGameRecType_Reward, # 通用奖励表(TopBar)14
Def_UniversalGameRecType_ArenaBattleRecord, # 竞技场玩家挑战记录 15
- Def_UniversalGameRecType_16,
+ Def_UniversalGameRecType_CrossActInfo, # 跨服运营活动信息记录 16
Def_UniversalGameRecType_17,
Def_UniversalGameRecType_18,
Def_UniversalGameRecType_19,
@@ -1251,6 +1272,7 @@
CrossServerMsg_PKOverInfo = "PKOverInfo" # 跨服PK结果
CrossServerMsg_PKSeasonInfo = "PKSeasonInfo" # 跨服PK赛季信息
CrossServerMsg_PKSyncBillboard = "PKSyncBillboard" # 跨服PK同步排行榜
+CrossServerMsg_SyncBillboard = "SyncBillboard" # 跨服同步排行榜
CrossServerMsg_CrossBossInfo = "CrossBossInfo" # 跨服Boss信息
CrossServerMsg_CrossBossState = "CrossBossState" # 跨服Boss状态
CrossServerMsg_PutInItem = "PutInItem" # 获得物品
@@ -1262,8 +1284,11 @@
CrossServerMsg_EnterFBRet = "EnterFBRet" # 请求进入跨服副本返回信息
CrossServerMsg_FBEnd = "FBEnd" # 完成跨服副本
CrossServerMsg_NPCAttackCount = "NPCAttackCount" # 攻击NPC次数记录
-CrossServerMsg_SendMail = "SendMail" # 发送邮件
+CrossServerMsg_SendMail = "SendMail" # 发送邮件,已知玩家目标服务器,主动发送
CrossServerMsg_FBPlayerCount = "FBPlayerCount" # 副本功能线路人数同步
+CrossServerMsg_CrossActInfo = "CrossActInfo" # 跨服运营活动信息
+CrossServerMsg_MailPlayerIDList = "MailPlayerIDList" # 跨服邮件玩家ID通知,玩家目标服务器可能无法知道,被动推送
+CrossServerMsg_MailContent = "MailContent" # 跨服邮件内容通知
# 子服发送跨服信息定义
ClientServerMsg_ServerInitOK = "ServerInitOK" # 子服启动成功
@@ -1275,6 +1300,9 @@
ClientServerMsg_PKCancel = "PKCancel" # 跨服PK取消匹配
ClientServerMsg_PKPrepareOK = "PKPrepareOK" # 跨服PK准备完毕
ClientServerMsg_PKBillboard = "PKBillboard" # 跨服PK排行榜
+ClientServerMsg_QueryBillboard = "QueryBillboard" # 跨服排行榜 - 查询、同步等
+ClientServerMsg_UpdateBillboard = "UpdateBillboard" # 跨服排行榜 - 更新
+ClientServerMsg_MailContent = "MailContent" # 跨服邮件内容同步 - 请求同步、汇报成功等
ClientServerMsg_Reborn = "Reborn" # 复活
ClientServerMsg_QueryNPCInfo = "QueryNPCInfo" # 查询跨服地图NPC信息
ClientServerMsg_SetPlayerAttrValue = "SetPlayerAttrValue" # 玩家属性数值更新
@@ -1283,6 +1311,7 @@
ClientServerMsg_AddBuff = "AddBuff" # 添加BUFF
#跨服广播类型定义
+CrossNotify_CrossAct = "CrossAct"
CrossNotify_World = "World"
CrossNotify_Family = "Family"
CrossNotify_Player = "Player"
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 9d3033f..127debf 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3688,6 +3688,12 @@
Def_PDict_FreeGoodsOpenTime = "FreeGoodsOpenTime" #极品白拿开启时间
Def_PDict_FreeGoodsBuyState = "FreeGoodsBuyState_%s" #极品白拿购买状态,参数编号 0-未买 time值-购买时间 1-已返还
+#跨服充值排行活动
+Def_PDict_CA_CTGBillboardID = "CA_CTGBillboardID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
+Def_PDict_CA_CTGBillboardTemplateID = "CA_CTGBillboardTemplateID" # 玩家身上活动模板ID
+Def_PDict_CA_CTGBillboardRMB = "CA_CTGBillboardRMB" # 活动累计充值RMB值
+Def_PDict_CA_CTGBillboardAward = "CA_CTGBillboardAward" # 活动充值目标领奖状态,按二进制位存储
+
#消费返利活动
Def_PDict_CostRebateID = "CostRebateID" # 玩家身上的消费返利活动ID,唯一标识,取活动开始日期time值
Def_PDict_CostRebateTemplateID = "CostRebateTemplateID" # 玩家身上的消费返利模板ID
@@ -5353,7 +5359,8 @@
Def_RewardType_OnLineTotal, #累计在线奖励33
Def_RewardType_ShareGame, #每日分享奖励34
Def_RewardType_GoodGame, #游戏好评奖励35
-)= range(36)
+Def_RewardType_CACTGBillboardDabiao, #跨服充值排行活动达标奖励36
+)= range(37)
#boss复活相关活动定义
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
index 2cb259c..65088fb 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -49,6 +49,7 @@
import PlayerGoldGift
import PlayerActTotalRecharge
import PlayerActRechargePrize
+import CrossActCTGBillboard
import PlayerActGrowupBuy
import OpenServerCampaign
import PlayerWeekParty
@@ -357,6 +358,12 @@
DataRecordPack.DR_CTGOK(curPlayer, addDRDict)
#---充值成功后逻辑---
+ orderRMB = orderCoin / 100
+ # 所有真实充值均有效的
+ if coinType in [CoinType_Gold, CoinType_Buy]:
+ #跨服充值排行活动
+ CrossActCTGBillboard.AddCTGRMB(curPlayer, orderRMB)
+
#仙界盛典-充值大礼
PlayerFairyCeremony.OnFCRecharge(curPlayer)
PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
index 0165a84..28bddf2 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -74,6 +74,7 @@
import GameLogic_FamilyWar
import OpenServerCampaign
import PlayerCostRebate
+import CrossActCTGBillboard
import PlayerActCollectWords
import PlayerActTotalRecharge
import PlayerActRechargePrize
@@ -1398,6 +1399,19 @@
return
+ if key.startswith(ShareDefine.Def_Notify_WorldKey_CrossActInfo[:-2]):
+ keyHead = ShareDefine.Def_Notify_WorldKey_CrossActInfo[:-2]
+ actionName = key[len(keyHead):]
+ if actionName not in PyGameData.g_crossActInfoDict:
+ PyGameData.g_crossActInfoDict[actionName] = {}
+ actInfoDict = PyGameData.g_crossActInfoDict[actionName]
+ actInfoDict.update(eval(msgValue))
+
+ if actionName == ShareDefine.CrossActName_CTGBillboard:
+ CrossActCTGBillboard.RefreshCrossActCTGBillboardInfo()
+
+ return
+
if key == ShareDefine.Def_Notify_WorldKey_CrossZoneName:
PyGameData.g_crossZoneName = msgValue
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index 2b0d82a..820ffd7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -146,6 +146,7 @@
Def_Notify_WorldKey_MapServerScriptReloadVersion = 'MapServerScriptReloadVersion' # MapServer 脚本重读版本标记
Def_Notify_WorldKey_InitGameWorldTime = "InitGameWorldTime" #启动服务器时间
Def_Notify_WorldKey_OperationActionInfo = "OperationActionInfo_%s" # 运营活动信息,参数为运营活动名
+Def_Notify_WorldKey_CrossActInfo = "CrossActInfo_%s" # 跨服运营活动信息,参数为运营活动名
Def_Notify_WorldKey_ActionBossRebornSign = "ActBossSign_%s" # 活动boss重生标记,参数为日常活动ID 或 运营活动名
Def_Notify_WorldKey_DailyActionState = "DailyActionState_%s" # 日常活动状态,参数为日常活动ID
Def_Notify_WorldKey_CrossDailyActionState = "CrossDailyActionState_%s" # 跨服日常活动状态,参数为日常活动ID
@@ -243,13 +244,24 @@
OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
OperationActionName_SpringSale, OperationActionName_LuckyTreasure]
+#跨服运营活动表名定义
+CrossActName_CTGBillboard = "CrossActCTGBillboard" # 充值排行榜
+
+#跨服运营活动列表
+CrossActNameList = [CrossActName_CTGBillboard]
+
#活动信息字典key定义
ActKey_ID = "ID" # 活动ID,唯一标识的ID,一般是活动开启的time值
ActKey_State = "State" # 活动状态 0-未开启, >0开启中,也代表当日的第几个时间段
ActKey_CfgID = "CfgID" # 活动表配置ID
-ActKey_DayIndex = "DayIndex" # 活动表配置ID
+ActKey_DayIndex = "DayIndex" # 当前活动天索引,0开始,代表第1天
+ActKey_TemplateID = "TemplateID" # 当前活动模板ID
ActKey_WorldLV = "WorldLV" # 活动开启时世界等级
ActKey_WorldLVList = "WorldLVList" # 活动每天的世界等级列表
+
+ActKey_ServerIDRangeList = "ServerIDRangeList" # 活动服务器ID范围信息
+ActKey_IpyDataInfo = "IpyDataInfo" # 活动对应 IpyData 信息
+ActKey_DBInfo = "DBInfo" # 保存db的历史活动信息
#答题类型枚举
Def_Game_ExamTypeList = range(1, 4 + 1)
@@ -667,7 +679,16 @@
Def_BT_Max, #排行榜最大类型
) = range(0, 28 + 2)
-
+
+''' 跨服排行榜类型, 从 150 开始
+与本服榜单存储的是不一样的数据库表格,理论上类型可以和本服榜单类型重复,为了做下区分防误导,跨服榜单从 150 开始
+跨服榜单表(tagDBCrossBillboard)
+本服榜单表(tagDBBillboard)
+'''
+CrossBillboardTypeList = (
+Def_CBT_ActCTG, # 跨服运营活动 - 充值榜 150
+) = range(150, 150 + 1)
+
#职业对应战力排行榜类型
JobFightPowerBillboardDict = {
PlayerJob_Warrior:Def_BT_FightPower_Warrior,
@@ -1065,7 +1086,7 @@
Def_UniversalGameRecType_FairyDomain, #缥缈仙域事件次数记录13
Def_UniversalGameRecType_Reward, # 通用奖励表(TopBar)14
Def_UniversalGameRecType_ArenaBattleRecord, # 竞技场玩家挑战记录 15
- Def_UniversalGameRecType_16,
+ Def_UniversalGameRecType_CrossActInfo, # 跨服运营活动信息记录 16
Def_UniversalGameRecType_17,
Def_UniversalGameRecType_18,
Def_UniversalGameRecType_19,
@@ -1251,6 +1272,7 @@
CrossServerMsg_PKOverInfo = "PKOverInfo" # 跨服PK结果
CrossServerMsg_PKSeasonInfo = "PKSeasonInfo" # 跨服PK赛季信息
CrossServerMsg_PKSyncBillboard = "PKSyncBillboard" # 跨服PK同步排行榜
+CrossServerMsg_SyncBillboard = "SyncBillboard" # 跨服同步排行榜
CrossServerMsg_CrossBossInfo = "CrossBossInfo" # 跨服Boss信息
CrossServerMsg_CrossBossState = "CrossBossState" # 跨服Boss状态
CrossServerMsg_PutInItem = "PutInItem" # 获得物品
@@ -1262,8 +1284,11 @@
CrossServerMsg_EnterFBRet = "EnterFBRet" # 请求进入跨服副本返回信息
CrossServerMsg_FBEnd = "FBEnd" # 完成跨服副本
CrossServerMsg_NPCAttackCount = "NPCAttackCount" # 攻击NPC次数记录
-CrossServerMsg_SendMail = "SendMail" # 发送邮件
+CrossServerMsg_SendMail = "SendMail" # 发送邮件,已知玩家目标服务器,主动发送
CrossServerMsg_FBPlayerCount = "FBPlayerCount" # 副本功能线路人数同步
+CrossServerMsg_CrossActInfo = "CrossActInfo" # 跨服运营活动信息
+CrossServerMsg_MailPlayerIDList = "MailPlayerIDList" # 跨服邮件玩家ID通知,玩家目标服务器可能无法知道,被动推送
+CrossServerMsg_MailContent = "MailContent" # 跨服邮件内容通知
# 子服发送跨服信息定义
ClientServerMsg_ServerInitOK = "ServerInitOK" # 子服启动成功
@@ -1275,6 +1300,9 @@
ClientServerMsg_PKCancel = "PKCancel" # 跨服PK取消匹配
ClientServerMsg_PKPrepareOK = "PKPrepareOK" # 跨服PK准备完毕
ClientServerMsg_PKBillboard = "PKBillboard" # 跨服PK排行榜
+ClientServerMsg_QueryBillboard = "QueryBillboard" # 跨服排行榜 - 查询、同步等
+ClientServerMsg_UpdateBillboard = "UpdateBillboard" # 跨服排行榜 - 更新
+ClientServerMsg_MailContent = "MailContent" # 跨服邮件内容同步 - 请求同步、汇报成功等
ClientServerMsg_Reborn = "Reborn" # 复活
ClientServerMsg_QueryNPCInfo = "QueryNPCInfo" # 查询跨服地图NPC信息
ClientServerMsg_SetPlayerAttrValue = "SetPlayerAttrValue" # 玩家属性数值更新
@@ -1283,6 +1311,7 @@
ClientServerMsg_AddBuff = "AddBuff" # 添加BUFF
#跨服广播类型定义
+CrossNotify_CrossAct = "CrossAct"
CrossNotify_World = "World"
CrossNotify_Family = "Family"
CrossNotify_Player = "Player"
--
Gitblit v1.8.0