From ca1fbca286db5bf04582edfa0dc4e25d648c9060 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期二, 22 十二月 2020 17:02:17 +0800
Subject: [PATCH] 8666 【主干】移植-多日累充; (原BT主单: 8497 【新增】七日累充活动)

---
 ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py                                      |   44 +++++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py                   |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py               |   11 +
 ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py                                    |   11 +
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py |  170 +++++++++++++++++----------
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py                 |   32 +++++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py               |    2 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py             |    3 
 PySysDB/PySysDBPY.h                                                                                  |   12 ++
 ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py                                        |    5 
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py     |    4 
 PySysDB/PySysDBG.h                                                                                   |   16 ++
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py                      |   10 
 13 files changed, 248 insertions(+), 77 deletions(-)

diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index 980a10e..2192bf8 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -592,6 +592,22 @@
 	BYTE		IsDayReset;	//是否每天重置
 };
 
+//累计充值活动表2
+
+struct tagActTotalRecharge2
+{
+	DWORD		_CfgID;	//配置ID
+	char		ActMark;	//活动组标记
+	list		PlatformList;	//活动平台列表["平台A", "平台A", ...],配[]代表所有
+	list		ServerGroupIDList;	//服务器ID列表
+	char		StartDate;	//开启日期
+	char		EndDate;	//结束日期
+	dict		NotifyInfoStart;	//全服提示信息 - 相对开始时间
+	dict		NotifyInfoEnd;	//全服提示信息 - 相对结束时间
+	list		NotifyInfoLoop;	//全服提示信息 - 循环广播[间隔分钟, 广播key]
+	BYTE		IsDayReset;	//是否每天重置
+};
+
 //跨服分区表通用
 
 struct tagCrossZoneComm
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 455d5af..5df7b05 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1609,6 +1609,18 @@
 	BYTE		PrizeCountLimit;	//最大赠送次数
 };
 
+//累计充值活动表2
+
+struct tagActTotalRecharge2
+{
+	DWORD		_CfgID;	//配置ID
+	char		StartDate;	//开启日期
+	char		EndDate;	//结束日期
+	WORD		LVLimit;	//限制等级
+	BYTE		IsDayReset;	//是否每天重置
+	list		TemplateIDList;	//模板ID列表
+};
+
 //累计充值活动表
 
 struct tagActTotalRecharge
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index c2b51b1..ba2b798 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -25140,6 +25140,7 @@
 
 class  tagMCActTotalRechargeInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
     IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
@@ -25157,6 +25158,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
         self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
         self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -25173,6 +25175,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x1D
+        self.ActNum = 0
         self.StartDate = ""
         self.EndtDate = ""
         self.IsDayReset = 0
@@ -25184,6 +25187,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 10
         length += 10
         length += 1
@@ -25197,6 +25201,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
         data = CommFunc.WriteString(data, 10, self.StartDate)
         data = CommFunc.WriteString(data, 10, self.EndtDate)
         data = CommFunc.WriteBYTE(data, self.IsDayReset)
@@ -25209,6 +25214,7 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 StartDate:%s,
                                 EndtDate:%s,
                                 IsDayReset:%d,
@@ -25218,6 +25224,7 @@
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.StartDate,
                                 self.EndtDate,
                                 self.IsDayReset,
@@ -28930,6 +28937,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
                   ("GoldTotal", c_int),    #本次活动已累计充值仙玉数
                   ("AwardRecord", c_int),    #奖励领奖记录,按奖励索引二进制位存储是否已领取
                   ]
@@ -28948,6 +28956,7 @@
     def Clear(self):
         self.Cmd = 0xAA
         self.SubCmd = 0x1C
+        self.ActNum = 0
         self.GoldTotal = 0
         self.AwardRecord = 0
         return
@@ -28962,12 +28971,14 @@
         DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
+                                ActNum:%d,
                                 GoldTotal:%d,
                                 AwardRecord:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
+                                self.ActNum,
                                 self.GoldTotal,
                                 self.AwardRecord
                                 )
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index ba14f83..1ea80b1 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -495,6 +495,19 @@
                         ("BYTE", "IsDayReset", 0),
                         ),
 
+                "ActTotalRecharge2":(
+                        ("DWORD", "CfgID", 1),
+                        ("char", "ActMark", 0),
+                        ("list", "PlatformList", 0),
+                        ("list", "ServerGroupIDList", 0),
+                        ("char", "StartDate", 0),
+                        ("char", "EndDate", 0),
+                        ("dict", "NotifyInfoStart", 0),
+                        ("dict", "NotifyInfoEnd", 0),
+                        ("list", "NotifyInfoLoop", 0),
+                        ("BYTE", "IsDayReset", 0),
+                        ),
+
                 "CrossZoneComm":(
                         ("char", "CrossZoneName", 1),
                         ("BYTE", "ZoneID", 1),
@@ -1609,6 +1622,33 @@
     def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
     def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
 
+# 累计充值活动表2
+class IPY_ActTotalRecharge2():
+    
+    def __init__(self):
+        self.CfgID = 0
+        self.ActMark = ""
+        self.PlatformList = []
+        self.ServerGroupIDList = []
+        self.StartDate = ""
+        self.EndDate = ""
+        self.NotifyInfoStart = {}
+        self.NotifyInfoEnd = {}
+        self.NotifyInfoLoop = []
+        self.IsDayReset = 0
+        return
+        
+    def GetCfgID(self): return self.CfgID # 配置ID
+    def GetActMark(self): return self.ActMark # 活动组标记
+    def GetPlatformList(self): return self.PlatformList # 活动平台列表["平台A", "平台A", ...],配[]代表所有
+    def GetServerGroupIDList(self): return self.ServerGroupIDList # 服务器ID列表
+    def GetStartDate(self): return self.StartDate # 开启日期
+    def GetEndDate(self): return self.EndDate # 结束日期
+    def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
+    def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
+    def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+
 # 跨服分区表通用
 class IPY_CrossZoneComm():
     
@@ -2020,6 +2060,8 @@
         self.ipyActGrowupBuyLen = len(self.ipyActGrowupBuyCache)
         self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
         self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
+        self.ipyActTotalRecharge2Cache = self.__LoadFileData("ActTotalRecharge2", IPY_ActTotalRecharge2)
+        self.ipyActTotalRecharge2Len = len(self.ipyActTotalRecharge2Cache)
         self.ipyCrossZoneCommCache = self.__LoadFileData("CrossZoneComm", IPY_CrossZoneComm)
         self.ipyCrossZoneCommLen = len(self.ipyCrossZoneCommCache)
         self.ipyCrossZonePKCache = self.__LoadFileData("CrossZonePK", IPY_CrossZonePK)
@@ -2302,6 +2344,8 @@
     def GetActGrowupBuyByIndex(self, index): return self.ipyActGrowupBuyCache[index]
     def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
     def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
+    def GetActTotalRecharge2Count(self): return self.ipyActTotalRecharge2Len
+    def GetActTotalRecharge2ByIndex(self, index): return self.ipyActTotalRecharge2Cache[index]
     def GetCrossZoneCommCount(self): return self.ipyCrossZoneCommLen
     def GetCrossZoneCommByIndex(self, index): return self.ipyCrossZoneCommCache[index]
     def GetCrossZonePKCount(self): return self.ipyCrossZonePKLen
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index e7d15be..2b0d82a 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -212,6 +212,7 @@
 OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
 OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
 OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
+OperationActionName_TotalRecharge2 = "ActTotalRecharge2" # 累计充值活动
 OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
 OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
 OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
@@ -228,7 +229,7 @@
                            OperationActionName_BossReborn,OperationActionName_SpringSale, 
                            OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                            OperationActionName_RealmPoint, OperationActionName_FlashSale,
-                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, 
+                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                            OperationActionName_WeekParty, OperationActionName_LoginAward, 
                            OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
                            OperationActionName_DailyGiftbag, OperationActionName_RechargePrize, 
@@ -238,7 +239,7 @@
 #需要记录开启活动时的世界等级的运营活动
 NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, 
                                    OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
-                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge,
+                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                                    OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
                                    OperationActionName_SpringSale, OperationActionName_LuckyTreasure]
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 3a9b423..8774cb7 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3695,11 +3695,11 @@
 Def_PDict_CostRebateWorldLV = "CostRebateWorldLV" #消费返利活动开启时世界等级
 
 #累计充值活动
-Def_PDict_TotalRechargeID = "TotalRechargeID"  # 玩家身上的累计充值活动ID,唯一标识,取活动开始日期time值
-Def_PDict_TotalRechargeTemplateID = "TotalRechargeTemplateID"  # 玩家身上的累计充值模板ID
-Def_PDict_TotalRechargeGold = "TotalRechargeGold"  # 消费返利总累计充值X元
-Def_PDict_TotalRechargeAwardRecord = "TotalRechargeAwardRecord"  # 累计充值领奖记录
-Def_PDict_TotalRechargeWorldLV = "TotalRechargeWorldLV" #累计充值活动开启时世界等级
+Def_PDict_TotalRechargeID = "TotalRechargeID_%s"  # 玩家身上的累计充值活动ID,唯一标识,取活动开始日期time值,参数:(活动编号)
+Def_PDict_TotalRechargeTemplateID = "TotalRechargeTemplateID_%s"  # 玩家身上的累计充值模板ID,参数:(活动编号)
+Def_PDict_TotalRechargeGold = "TotalRechargeGold_%s"  # 消费返利总累计充值X元,参数:(活动编号)
+Def_PDict_TotalRechargeAwardRecord = "TotalRechargeAwardRecord_%s"  # 累计充值领奖记录,参数:(活动编号)
+Def_PDict_TotalRechargeWorldLV = "TotalRechargeWorldLV_%s" #累计充值活动开启时世界等级,参数:(活动编号)
 
 #充值返利活动
 Def_PDict_RechargePrizeID = "RechargePrizeID"  # 玩家身上的重置返利活动ID,唯一标识,取活动开始日期time值
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index c2b51b1..ba2b798 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -25140,6 +25140,7 @@
 
 class  tagMCActTotalRechargeInfo(Structure):
     Head = tagHead()
+    ActNum = 0    #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
     StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
     EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
     IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
@@ -25157,6 +25158,7 @@
     def ReadData(self, _lpData, _pos=0, _Len=0):
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
+        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
         self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
         self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
         self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -25173,6 +25175,7 @@
         self.Head.Clear()
         self.Head.Cmd = 0xAA
         self.Head.SubCmd = 0x1D
+        self.ActNum = 0
         self.StartDate = ""
         self.EndtDate = ""
         self.IsDayReset = 0
@@ -25184,6 +25187,7 @@
     def GetLength(self):
         length = 0
         length += self.Head.GetLength()
+        length += 1
         length += 10
         length += 10
         length += 1
@@ -25197,6 +25201,7 @@
     def GetBuffer(self):
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ActNum)
         data = CommFunc.WriteString(data, 10, self.StartDate)
         data = CommFunc.WriteString(data, 10, self.EndtDate)
         data = CommFunc.WriteBYTE(data, self.IsDayReset)
@@ -25209,6 +25214,7 @@
     def OutputString(self):
         DumpString = '''
                                 Head:%s,
+                                ActNum:%d,
                                 StartDate:%s,
                                 EndtDate:%s,
                                 IsDayReset:%d,
@@ -25218,6 +25224,7 @@
                                 '''\
                                 %(
                                 self.Head.OutputString(),
+                                self.ActNum,
                                 self.StartDate,
                                 self.EndtDate,
                                 self.IsDayReset,
@@ -28930,6 +28937,7 @@
     _fields_ = [
                   ("Cmd", c_ubyte),
                   ("SubCmd", c_ubyte),
+                  ("ActNum", c_ubyte),    #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
                   ("GoldTotal", c_int),    #本次活动已累计充值仙玉数
                   ("AwardRecord", c_int),    #奖励领奖记录,按奖励索引二进制位存储是否已领取
                   ]
@@ -28948,6 +28956,7 @@
     def Clear(self):
         self.Cmd = 0xAA
         self.SubCmd = 0x1C
+        self.ActNum = 0
         self.GoldTotal = 0
         self.AwardRecord = 0
         return
@@ -28962,12 +28971,14 @@
         DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo:
                                 Cmd:%s,
                                 SubCmd:%s,
+                                ActNum:%d,
                                 GoldTotal:%d,
                                 AwardRecord:%d
                                 '''\
                                 %(
                                 self.Cmd,
                                 self.SubCmd,
+                                self.ActNum,
                                 self.GoldTotal,
                                 self.AwardRecord
                                 )
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 5bb5621..9189c2b 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1272,6 +1272,15 @@
                         ("BYTE", "PrizeCountLimit", 0),
                         ),
 
+                "ActTotalRecharge2":(
+                        ("DWORD", "CfgID", 1),
+                        ("char", "StartDate", 0),
+                        ("char", "EndDate", 0),
+                        ("WORD", "LVLimit", 0),
+                        ("BYTE", "IsDayReset", 0),
+                        ("list", "TemplateIDList", 0),
+                        ),
+
                 "ActTotalRecharge":(
                         ("DWORD", "CfgID", 1),
                         ("char", "StartDate", 0),
@@ -4259,6 +4268,25 @@
     def GetGoldPrize(self): return self.GoldPrize # 返利仙玉数
     def GetPrizeCountLimit(self): return self.PrizeCountLimit # 最大赠送次数
 
+# 累计充值活动表2
+class IPY_ActTotalRecharge2():
+    
+    def __init__(self):
+        self.CfgID = 0
+        self.StartDate = ""
+        self.EndDate = ""
+        self.LVLimit = 0
+        self.IsDayReset = 0
+        self.TemplateIDList = []
+        return
+        
+    def GetCfgID(self): return self.CfgID # 配置ID
+    def GetStartDate(self): return self.StartDate # 开启日期
+    def GetEndDate(self): return self.EndDate # 结束日期
+    def GetLVLimit(self): return self.LVLimit # 限制等级
+    def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
+    def GetTemplateIDList(self): return self.TemplateIDList # 模板ID列表
+
 # 累计充值活动表
 class IPY_ActTotalRecharge():
     
@@ -5341,6 +5369,8 @@
         self.ipyActRechargePrizeLen = len(self.ipyActRechargePrizeCache)
         self.ipyRechargePrizeTemplateCache = self.__LoadFileData("RechargePrizeTemplate", IPY_RechargePrizeTemplate)
         self.ipyRechargePrizeTemplateLen = len(self.ipyRechargePrizeTemplateCache)
+        self.ipyActTotalRecharge2Cache = self.__LoadFileData("ActTotalRecharge2", IPY_ActTotalRecharge2)
+        self.ipyActTotalRecharge2Len = len(self.ipyActTotalRecharge2Cache)
         self.ipyActTotalRechargeCache = self.__LoadFileData("ActTotalRecharge", IPY_ActTotalRecharge)
         self.ipyActTotalRechargeLen = len(self.ipyActTotalRechargeCache)
         self.ipyTotalRechargeTemplateCache = self.__LoadFileData("TotalRechargeTemplate", IPY_TotalRechargeTemplate)
@@ -5841,6 +5871,8 @@
     def GetActRechargePrizeByIndex(self, index): return self.ipyActRechargePrizeCache[index]
     def GetRechargePrizeTemplateCount(self): return self.ipyRechargePrizeTemplateLen
     def GetRechargePrizeTemplateByIndex(self, index): return self.ipyRechargePrizeTemplateCache[index]
+    def GetActTotalRecharge2Count(self): return self.ipyActTotalRecharge2Len
+    def GetActTotalRecharge2ByIndex(self, index): return self.ipyActTotalRecharge2Cache[index]
     def GetActTotalRechargeCount(self): return self.ipyActTotalRechargeLen
     def GetActTotalRechargeByIndex(self, index): return self.ipyActTotalRechargeCache[index]
     def GetTotalRechargeTemplateCount(self): return self.ipyTotalRechargeTemplateLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
index 2af21b1..9f49826 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -5355,7 +5355,7 @@
         PlayerCostRebate.OnGetCostRebateAward(curPlayer, dataEx)
     # 领取累计充值奖励
     elif rewardType == ChConfig.Def_RewardType_TotalRecharge:
-        PlayerActTotalRecharge.OnGetTotalRechargeAward(curPlayer, dataEx)
+        PlayerActTotalRecharge.OnGetTotalRechargeAward(curPlayer, dataEx, dataExStr)
     # 领取boss复活活动奖励
     elif rewardType == ChConfig.Def_RewardType_BossReborn:
         PlayerBossReborn.GetBossRebornActionAward(curPlayer, dataEx)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py
index 2dda889..5ea1147 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerActTotalRecharge.py
@@ -9,7 +9,7 @@
 # @date 2018-7-16
 # @version 1.0
 #
-# 详细描述: 累计充值X元活动
+# 详细描述: 累计充值X元活动,支持多个累充活动同时存在,需要多个运营活动时间表配置
 #
 #-------------------------------------------------------------------------------
 #"""Version = 2018-7-16 12:00"""
@@ -28,10 +28,13 @@
 import GameWorld
 import ChConfig
 
-def GetTemplateID(cfgID, dayIndex):
+def GetTemplateID(cfgID, dayIndex, actNum):
     if cfgID == None or dayIndex == None:
         return 0
-    ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
+    if actNum == 1:
+        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
+    else:
+        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge2", cfgID)        
     if not ipyData:
         return 0
     templateIDList = ipyData.GetTemplateIDList()
@@ -39,68 +42,83 @@
     return templateID
 
 def OnPlayerLogin(curPlayer):
-    isReset = __CheckPlayerTotalRechargeAction(curPlayer)
+    # 活动1
+    actNum = 1
+    isReset = __CheckPlayerTotalRechargeAction(curPlayer, actNum)
     if not isReset:
         actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
         # 活动中同步活动信息
         if actTotalRechargeInfo.get(ShareDefine.ActKey_State):
-            Sync_TotalRechargeActionInfo(curPlayer)
-            Sync_TotalRechargeInfo(curPlayer)
+            Sync_TotalRechargeActionInfo(curPlayer, actNum)
+            Sync_TotalRechargeInfo(curPlayer, actNum)
+           
+    # 活动2 
+    actNum = 2
+    isReset = __CheckPlayerTotalRechargeAction(curPlayer, actNum)
+    if not isReset:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
+        # 活动中同步活动信息
+        if actTotalRechargeInfo.get(ShareDefine.ActKey_State):
+            Sync_TotalRechargeActionInfo(curPlayer, actNum)
+            Sync_TotalRechargeInfo(curPlayer, actNum)
     return
 
-def RefreshTotalRechargeActionInfo():
+def RefreshTotalRechargeActionInfo(actNum):
     ## 收到GameServer同步的活动信息,刷新活动信息
     playerManager = GameWorld.GetPlayerManager()
     for index in xrange(playerManager.GetPlayerCount()):
         curPlayer = playerManager.GetPlayerByIndex(index)
         if curPlayer.GetID() == 0:
             continue
-        __CheckPlayerTotalRechargeAction(curPlayer)
+        __CheckPlayerTotalRechargeAction(curPlayer, actNum)
     return
 
-def __CheckPlayerTotalRechargeAction(curPlayer):
+def __CheckPlayerTotalRechargeAction(curPlayer, actNum):
     ## 检查玩家累计充值活动数据信息
     
     playerID = curPlayer.GetPlayerID()
     
-    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    if actNum == 1:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    else:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
     TotalRechargeID = actTotalRechargeInfo.get(ShareDefine.ActKey_ID, 0)
     state = actTotalRechargeInfo.get(ShareDefine.ActKey_State, 0)
     
-    playerTotalRechargeID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeID) # 玩家身上的活动ID
+    playerTotalRechargeID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeID % actNum) # 玩家身上的活动ID
     
     # 活动ID 相同的话不处理
     if TotalRechargeID == playerTotalRechargeID:
-        #GameWorld.DebugLog("累计充值活动ID不变,不处理!", curPlayer.GetPlayerID())
+        GameWorld.DebugLog("累计充值活动ID不变,不处理!actNum=%s" % actNum, curPlayer.GetPlayerID())
         return
     actWorldLV = actTotalRechargeInfo.get(ShareDefine.ActKey_WorldLV, 0)
-    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeWorldLV)
-    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0))
-    playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeTemplateID)
+    playerWorldLV = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeWorldLV % actNum)
+    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
+    playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeTemplateID % actNum)
     
-    GameWorld.DebugLog("累计充值重置! TotalRechargeID=%s,playerTotalRechargeID=%s,state=%s,templateID=%s,playerTemplateID=%s" 
-                       % (TotalRechargeID, playerTotalRechargeID, state, templateID, playerTemplateID), playerID)
+    GameWorld.DebugLog("累计充值重置! actNum=%s,TotalRechargeID=%s,playerTotalRechargeID=%s,state=%s,templateID=%s,playerTemplateID=%s" 
+                       % (actNum, TotalRechargeID, playerTotalRechargeID, state, templateID, playerTemplateID), playerID)
     
     # 未领取的奖励邮件发放
-    __SendTotalRechargeMail(curPlayer, playerTemplateID, playerWorldLV)
+    __SendTotalRechargeMail(curPlayer, playerTemplateID, playerWorldLV, actNum)
     
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID, TotalRechargeID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID, templateID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeWorldLV, actWorldLV)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeGold, 0)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID % actNum, TotalRechargeID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID % actNum, templateID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeWorldLV % actNum, actWorldLV)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeGold % actNum, 0)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum, 0)
     
-    Sync_TotalRechargeActionInfo(curPlayer)
-    Sync_TotalRechargeInfo(curPlayer)
+    Sync_TotalRechargeActionInfo(curPlayer, actNum)
+    Sync_TotalRechargeInfo(curPlayer, actNum)
     return True
 
-def __SendTotalRechargeMail(curPlayer, playerTemplateID, playerWorldLV):
+def __SendTotalRechargeMail(curPlayer, playerTemplateID, playerWorldLV, actNum):
     # 未领取的奖励邮件发放
     
     if not playerTemplateID:
         return
     
-    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold)
+    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold % actNum)
     if not curRechargeGold:
         return
     
@@ -110,7 +128,7 @@
     
     playerID = curPlayer.GetPlayerID()
     batchPlayerIDList, batchAddItemList, batchParamList = [], [], []
-    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord)
+    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum)
     job = curPlayer.GetJob()
     for ipyData in ipyDataList:
         awardIndex = ipyData.GetAwardIndex()
@@ -128,7 +146,7 @@
         batchParamList.append([needGold])
         
     if batchPlayerIDList:
-        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord, awardRecord)
+        PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum, awardRecord)
         PlayerControl.SendMailBatch("TotalRechargeMail", batchPlayerIDList, batchAddItemList, batchParamList)
         
     return
@@ -137,58 +155,71 @@
     #{世界等级范围:{职业:[(物品ID,个数,是否绑定), ...]}}
     itemInfoDict = GameWorld.GetDictValueByRangeKey(itemDict, worldLV, {})
     if str(job) not in itemInfoDict:
-        GameWorld.ErrLog('累计充值奖励未配置该职业itemDict=%s,job=%s'%(itemDict, job))
+        GameWorld.ErrLog('累计充值奖励未配置该职业itemDict=%s,job=%s' % (itemDict, job))
         return []
     else:
         return itemInfoDict[str(job)]
     
 
-def AddTotalRechargeGold(curPlayer, addGold):
+def AddTotalRechargeGold(curPlayer, addGold, actNum):
     if addGold <= 0:
         return
    
-    
-    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    if actNum == 1:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    else:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
+                
     if not actTotalRechargeInfo.get(ShareDefine.ActKey_State):
-        GameWorld.DebugLog("累计充值活动当前未开启!")
+        GameWorld.DebugLog("累计充值活动当前未开启! actNum=%s" % actNum)
         return
     
     actID = actTotalRechargeInfo.get(ShareDefine.ActKey_ID)
-    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0))
+    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
     if not actID or not templateID:
         GameWorld.ErrLog("累计充值活动数据异常!actID=%s,templateID=%s" % (actID, templateID), curPlayer.GetPlayerID())
         return
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID, actID)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID, templateID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeID % actNum, actID)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeTemplateID % actNum, templateID)
     
-    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold)
+    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold % actNum)
     updRechargeGold = curRechargeGold + addGold
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeGold, updRechargeGold)
-    Sync_TotalRechargeInfo(curPlayer)
-    GameWorld.DebugLog("玩家累计充值活动: actID=%s,templateID=%s,curRechargeGold=%s,addGold=%s,updRechargeGold=%s" 
-                       % (actID, templateID, curRechargeGold, addGold, updRechargeGold), curPlayer.GetPlayerID())
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeGold % actNum, updRechargeGold)
+    Sync_TotalRechargeInfo(curPlayer, actNum)
+    GameWorld.DebugLog("玩家累计充值活动: actNum=%s,actID=%s,templateID=%s,curRechargeGold=%s,addGold=%s,updRechargeGold=%s" 
+                       % (actNum, actID, templateID, curRechargeGold, addGold, updRechargeGold), curPlayer.GetPlayerID())
     return
 
-def OnGetTotalRechargeAward(curPlayer, awardIndex):
-    ## 领取累计充值奖励
-
+def OnGetTotalRechargeAward(curPlayer, awardIndex, actNum):
+    '''OnGetTotalRechargeAward
+    @param awardIndex: 奖励索引
+    @param actNum: 活动编号,如1 或 2 代表不同的活动
+    '''
+    actNum = GameWorld.ToIntDef(actNum, 0)
+    if actNum <= 0:
+        GameWorld.DebugLog("没有指定领取的累充活动编号! actNum=%s" % actNum)
+        return
     playerID = curPlayer.GetPlayerID()
     
-    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    if actNum == 1:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    else:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
+                
     TotalRechargeID = actTotalRechargeInfo.get(ShareDefine.ActKey_ID, 0)
     state = actTotalRechargeInfo.get(ShareDefine.ActKey_State, 0)
-    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0))
+    templateID = GetTemplateID(actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID, 0), actTotalRechargeInfo.get(ShareDefine.ActKey_DayIndex, 0), actNum)
     if not state or not templateID:
-        GameWorld.DebugLog("没有累计充值活动,无法领奖!state=%s,templateID=%s" % (state, templateID), playerID)
+        GameWorld.DebugLog("没有累计充值活动,无法领奖!actNum=%s,state=%s,templateID=%s" % (actNum, state, templateID), playerID)
         return
     
-    playerTotalRechargeID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeID) # 玩家身上的活动ID
+    playerTotalRechargeID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeID % actNum) # 玩家身上的活动ID
     if TotalRechargeID != playerTotalRechargeID:
         return
     
-    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord)
+    awardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum)
     if awardRecord & pow(2, awardIndex):
-        GameWorld.DebugLog("已经领取过该累计充值活动奖励!awardIndex=%s" % awardIndex, playerID)
+        GameWorld.DebugLog("已经领取过该累计充值活动奖励! actNum=%s,awardIndex=%s" % (actNum, awardIndex), playerID)
         return
     
     ipyDataList = IpyGameDataPY.GetIpyGameDataList("TotalRechargeTemplate", templateID)
@@ -202,17 +233,17 @@
             break
         
     if not awardIpyData:
-        GameWorld.DebugLog("找不到该返利活动档位索引奖励!templateID=%s,awardIndex=%s" % (templateID, awardIndex), playerID)
+        GameWorld.DebugLog("找不到该返利活动档位索引奖励!actNum=%s,templateID=%s,awardIndex=%s" % (actNum, templateID, awardIndex), playerID)
         return
     
     needGold = awardIpyData.GetNeedGold()
     actWorldLV = actTotalRechargeInfo.get(ShareDefine.ActKey_WorldLV, 0)
     awardItemList = __GetItemList(ipyData.GetAwardItem(), curPlayer.GetJob(), actWorldLV)
     
-    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold)
+    curRechargeGold = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold % actNum)
     if curRechargeGold < needGold:
-        GameWorld.DebugLog("所需充值仙玉数不足,无法领取!templateID=%s,awardIndex=%s,needGold=%s,curRechargeGold=%s" 
-                           % (templateID, awardIndex, needGold, curRechargeGold), playerID)
+        GameWorld.DebugLog("所需充值额度不足,无法领取!actNum=%s,templateID=%s,awardIndex=%s,needGold=%s,curRechargeGold=%s" 
+                           % (actNum, templateID, awardIndex, needGold, curRechargeGold), playerID)
         return
     
     needSpace = len(awardItemList)
@@ -221,32 +252,37 @@
         return
     
     awardRecord |= pow(2, awardIndex)
-    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord, awardRecord)
-    Sync_TotalRechargeInfo(curPlayer)
+    PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum, awardRecord)
+    Sync_TotalRechargeInfo(curPlayer, actNum)
     
     notifyKey = awardIpyData.GetNotifyKey()
     if notifyKey:
         PlayerControl.WorldNotify(0, notifyKey, [curPlayer.GetPlayerName(), needGold])
         
-    for itemID, itemCount, isBind in awardItemList:
+    for itemID, itemCount, _ in awardItemList:
         ItemControler.GivePlayerItem(curPlayer, itemID, itemCount, 0, [IPY_GameWorld.rptItem])
         
     addDataDict = {"TemplateID":templateID, "NeedGold":needGold, "AwardIndex":awardIndex,
-                   "ItemList":str(awardItemList)}
+                   "ItemList":str(awardItemList), "ActNum":actNum}
     DataRecordPack.DR_FuncGiveItem(curPlayer, "TotalRechargeAward", addDataDict)
     return
 
-def Sync_TotalRechargeInfo(curPlayer):
+def Sync_TotalRechargeInfo(curPlayer, actNum):
     ## 通知累计充值玩家数据信息
     playerActInfo = ChPyNetSendPack.tagMCTotalRechargePlayerInfo()
-    playerActInfo.GoldTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold)
-    playerActInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord)
+    playerActInfo.ActNum = actNum
+    playerActInfo.GoldTotal = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeGold % actNum)
+    playerActInfo.AwardRecord = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_TotalRechargeAwardRecord % actNum)
     NetPackCommon.SendFakePack(curPlayer, playerActInfo)
     return
 
-def Sync_TotalRechargeActionInfo(curPlayer):
+def Sync_TotalRechargeActionInfo(curPlayer, actNum):
     ## 通知累计充值活动信息
-    actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    if actNum == 1:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge, {})
+    else:
+        actTotalRechargeInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_TotalRecharge2, {})
+                
     if not actTotalRechargeInfo:
         return
     
@@ -254,7 +290,10 @@
         return
     
     cfgID = actTotalRechargeInfo.get(ShareDefine.ActKey_CfgID)
-    ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
+    if actNum == 1:
+        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge", cfgID)
+    else:
+        ipyData = IpyGameDataPY.GetIpyGameData("ActTotalRecharge2", cfgID)  
     if not ipyData:
         return
     
@@ -265,6 +304,7 @@
     actWorldLV = actTotalRechargeInfo.get(ShareDefine.ActKey_WorldLV, 0)
     openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
     actInfo = ChPyNetSendPack.tagMCActTotalRechargeInfo()
+    actInfo.ActNum = actNum
     actInfo.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
     actInfo.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
     actInfo.LimitLV = ipyData.GetLVLimit()
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 d31cf7f..589e246 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -343,7 +343,8 @@
     PlayerNewFairyCeremony.OnFCRecharge(curPlayer)
     PlayerGoldGift.OnPlayerChargeGold(curPlayer, addGold)
     #累积充值X元
-    PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100)
+    PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100, 1)
+    PlayerActTotalRecharge.AddTotalRechargeGold(curPlayer, orderCoin/100, 2)
     PlayerFairyCeremony.AddFCCTGRMB(curPlayer, orderCoin/100)
     PlayerNewFairyCeremony.AddFCCostGold(curPlayer, orderCoin/100)
     #开服活动
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 152e0ae..0165a84 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -1342,7 +1342,9 @@
             elif actionName == ShareDefine.OperationActionName_CostRebate:
                 PlayerCostRebate.RefreshCostRebateActionInfo()
             elif actionName == ShareDefine.OperationActionName_TotalRecharge:
-                PlayerActTotalRecharge.RefreshTotalRechargeActionInfo()
+                PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(1)
+            elif actionName == ShareDefine.OperationActionName_TotalRecharge2:
+                PlayerActTotalRecharge.RefreshTotalRechargeActionInfo(2)
             elif actionName == ShareDefine.OperationActionName_SpringSale:
                 PlayerSpringSale.RefreshSpringSaleActionInfo()
 
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index e7d15be..2b0d82a 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -212,6 +212,7 @@
 OperationActionName_FlashSale = "ActFlashSale" # 限时抢购活动
 OperationActionName_WishingWell = "ActWishingWell" # 许愿池活动
 OperationActionName_TotalRecharge = "ActTotalRecharge" # 累计充值活动
+OperationActionName_TotalRecharge2 = "ActTotalRecharge2" # 累计充值活动
 OperationActionName_WeekParty = "ActWeekParty" # 周狂欢活动
 OperationActionName_LoginAward = "ActLoginAward" # 登录奖励活动
 OperationActionName_FeastWeekParty = "ActFeastWeekParty" # 节日巡礼狂欢活动
@@ -228,7 +229,7 @@
                            OperationActionName_BossReborn,OperationActionName_SpringSale, 
                            OperationActionName_FlashGiftbag, OperationActionName_FairyCeremony,
                            OperationActionName_RealmPoint, OperationActionName_FlashSale,
-                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, 
+                           OperationActionName_WishingWell, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                            OperationActionName_WeekParty, OperationActionName_LoginAward, 
                            OperationActionName_NewFairyCeremony, OperationActionName_LuckyTreasure,
                            OperationActionName_DailyGiftbag, OperationActionName_RechargePrize, 
@@ -238,7 +239,7 @@
 #需要记录开启活动时的世界等级的运营活动
 NeedWorldLVOperationActNameList = [OperationActionName_FairyCeremony, OperationActionName_WishingWell, 
                                    OperationActionName_NewFairyCeremony, OperationActionName_FlashSale,
-                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge,
+                                   OperationActionName_BossReborn, OperationActionName_TotalRecharge, OperationActionName_TotalRecharge2,
                                    OperationActionName_CostRebate, OperationActionName_FlashGiftbag,
                                    OperationActionName_SpringSale, OperationActionName_LuckyTreasure]
 

--
Gitblit v1.8.0