From 9c92cdf70f8883d45193da683b52dc59eed2c438 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 17 九月 2018 14:38:53 +0800
Subject: [PATCH] 3443 【后端】Boss复活活动,时间段支持日期跨天或日期支持重置时间点设置(如0点或5点) 2303 【后端】限时特惠提前通知前端开启 2302 【后端】限时礼包开启提前通知前端 3305 【后端】运营类活动优化
---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 21 +++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py | 29 ++++++---
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py | 31 ++++++----
ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py | 4
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 21 +++++++
ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 23 ++++++-
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 14 ++++
PySysDB/PySysDBPY.h | 5 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py | 16 +++--
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 2
13 files changed, 135 insertions(+), 35 deletions(-)
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index a10171c..ae1d90e 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -768,6 +768,8 @@
WORD LVLimit; //限制等级
BYTE IsDayReset; //是否每天重置
list ShopTypeList; //商店类型列表
+ char MailKey; //活动更新时发送邮件key
+ list MailItemPrize; //活动更新时发送邮件奖励物品
};
//日常任务表
@@ -1139,6 +1141,8 @@
WORD LVLimit; //限制等级
BYTE IsDayReset; //是否每天重置
list GiftbagTypeList; //礼包类型列表
+ char MailKey; //活动更新时发送邮件key
+ list MailItemPrize; //活动更新时发送邮件奖励物品
};
//限时礼包模板表
@@ -1193,6 +1197,7 @@
DWORD _CfgID; //配置ID
char StartDate; //开启日期
char EndDate; //结束日期
+ BYTE ResetType; //重置类型,0-0点重置;1-5点重置
WORD LVLimit; //限制等级
BYTE TemplateID; //模板编号
};
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index 79008bf..a8171fe 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -19858,6 +19858,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -19877,6 +19878,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.ActivityTimeCount):
temActivityTime = tagMCFlashGiftbagTime()
@@ -19898,6 +19900,7 @@
self.Head.SubCmd = 0x12
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -19911,6 +19914,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -19927,6 +19931,7 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
for i in range(self.ActivityTimeCount):
data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -19942,6 +19947,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -19953,6 +19959,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -20501,6 +20508,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -20520,6 +20528,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.ActivityTimeCount):
temActivityTime = tagMCSpringSaleTime()
@@ -20541,6 +20550,7 @@
self.Head.SubCmd = 0x11
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -20554,6 +20564,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -20570,6 +20581,7 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
for i in range(self.ActivityTimeCount):
data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -20585,6 +20597,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -20596,6 +20609,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -21319,6 +21333,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
LimitLV = 0 #(WORD LimitLV)// 限制等级
TaskCnt = 0 #(BYTE TaskCnt)
TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
@@ -21335,6 +21350,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.TaskCnt):
@@ -21350,6 +21366,7 @@
self.Head.SubCmd = 0x04
self.StartDate = ""
self.EndtDate = ""
+ self.ResetType = 0
self.LimitLV = 0
self.TaskCnt = 0
self.TaskInfo = list()
@@ -21360,6 +21377,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 1
length += 2
length += 1
for i in range(self.TaskCnt):
@@ -21372,6 +21390,7 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
data = CommFunc.WriteWORD(data, self.LimitLV)
data = CommFunc.WriteBYTE(data, self.TaskCnt)
for i in range(self.TaskCnt):
@@ -21383,6 +21402,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ ResetType:%d,
LimitLV:%d,
TaskCnt:%d,
TaskInfo:%s
@@ -21391,6 +21411,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.ResetType,
self.LimitLV,
self.TaskCnt,
"..."
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
index 2a47ecf..7f6f5b1 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/GameWorldLogic/GameWorldProcess.py
@@ -1371,6 +1371,8 @@
# 通知开服天数
openServerDay = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_ServerDay)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_ServerDay, openServerDay)
+ openServerTime = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_InitOpenServerTime)
+ GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_InitOpenServerTime, openServerTime)
# 合服状态
isMixServer = PlayerDBGSEvent.GetDBGSTrig_ByKey(PlayerDBGSEvent.Def_IsMixServer)
GameWorld.SendMapServerMsgEx(ShareDefine.Def_Notify_WorldKey_IsMixServer, isMixServer)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
index 3e2f353..3222e6e 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/Player/ChPlayer.py
@@ -109,8 +109,8 @@
#通知玩家登陆信息,来自运营方
#DoLogic_LoginUserData(curPlayer)
- #通知开服天数
- PlayerEventCounter.Sync_OpenServerDay(curPlayer)
+ #通知开服天数, 登录时改为地图通知,因为GameServer的PlayerLogin在地图之后,前端有些功能处理需要提前得到开服天
+ #PlayerEventCounter.Sync_OpenServerDay(curPlayer)
# 通知广播信息
GMCommon.SendBroadCastToClient(curPlayer)
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index ed961fe..c73e566 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -127,6 +127,7 @@
Def_Notify_Separator = '+'
#通知地图服务器并设置该字典值
+Def_Notify_WorldKey_InitOpenServerTime = 'InitOpenServerTime' # 开服时间
Def_Notify_WorldKey_ServerDay = 'ServerDay' # 开服天数
Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器
Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 12fda6f..67440f3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3579,10 +3579,12 @@
#限时特惠活动
Def_PDict_SpringSaleID = "SpringSaleID" # 玩家身上的限时特惠活动ID,唯一标识,取活动开始日期time
+Def_PDict_SpringSaleMailState = "SpringSaleMailState" # 玩家身上的活动更新提醒邮件状态
#限时礼包活动
Def_PDict_FlashGiftbagID = "FlashGiftbagID" # 玩家身上的限时礼包活动ID,唯一标识,取活动开始日期time
Def_PDict_FlashGiftbagBuyCount = "FlashGiftbagBuyCount_%s" # 限时礼包已购买次数,参数(礼包ID)
+Def_PDict_FlashGiftbagMailState = "FlashGiftbagMailState" # 玩家身上的活动更新提醒邮件状态
#BOSS复活
Def_PDict_BossRebornID = "BossRebornID" # 玩家身上的BOSS复活活动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 79008bf..a8171fe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -19858,6 +19858,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -19877,6 +19878,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.ActivityTimeCount):
temActivityTime = tagMCFlashGiftbagTime()
@@ -19898,6 +19900,7 @@
self.Head.SubCmd = 0x12
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -19911,6 +19914,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -19927,6 +19931,7 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
for i in range(self.ActivityTimeCount):
data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -19942,6 +19947,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -19953,6 +19959,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -20501,6 +20508,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
@@ -20520,6 +20528,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.ActivityTimeCount):
temActivityTime = tagMCSpringSaleTime()
@@ -20541,6 +20550,7 @@
self.Head.SubCmd = 0x11
self.StartDate = ""
self.EndtDate = ""
+ self.AdvanceMinutes = 0
self.ActivityTimeCount = 0
self.ActivityTime = list()
self.IsDayReset = 0
@@ -20554,6 +20564,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 2
length += 1
for i in range(self.ActivityTimeCount):
length += self.ActivityTime[i].GetLength()
@@ -20570,6 +20581,7 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
for i in range(self.ActivityTimeCount):
data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -20585,6 +20597,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ AdvanceMinutes:%d,
ActivityTimeCount:%d,
ActivityTime:%s,
IsDayReset:%d,
@@ -20596,6 +20609,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.AdvanceMinutes,
self.ActivityTimeCount,
"...",
self.IsDayReset,
@@ -21319,6 +21333,7 @@
Head = tagHead()
StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
LimitLV = 0 #(WORD LimitLV)// 限制等级
TaskCnt = 0 #(BYTE TaskCnt)
TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
@@ -21335,6 +21350,7 @@
_pos = self.Head.ReadData(_lpData, _pos)
self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
+ self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.TaskCnt):
@@ -21350,6 +21366,7 @@
self.Head.SubCmd = 0x04
self.StartDate = ""
self.EndtDate = ""
+ self.ResetType = 0
self.LimitLV = 0
self.TaskCnt = 0
self.TaskInfo = list()
@@ -21360,6 +21377,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 1
length += 2
length += 1
for i in range(self.TaskCnt):
@@ -21372,6 +21390,7 @@
data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
data = CommFunc.WriteString(data, 10, self.StartDate)
data = CommFunc.WriteString(data, 10, self.EndtDate)
+ data = CommFunc.WriteBYTE(data, self.ResetType)
data = CommFunc.WriteWORD(data, self.LimitLV)
data = CommFunc.WriteBYTE(data, self.TaskCnt)
for i in range(self.TaskCnt):
@@ -21383,6 +21402,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ ResetType:%d,
LimitLV:%d,
TaskCnt:%d,
TaskInfo:%s
@@ -21391,6 +21411,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.ResetType,
self.LimitLV,
self.TaskCnt,
"..."
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index e18b371..3ba43fe 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -638,6 +638,8 @@
("WORD", "LVLimit", 0),
("BYTE", "IsDayReset", 0),
("list", "ShopTypeList", 0),
+ ("char", "MailKey", 0),
+ ("list", "MailItemPrize", 0),
),
"DailyQuest":(
@@ -910,6 +912,8 @@
("WORD", "LVLimit", 0),
("BYTE", "IsDayReset", 0),
("list", "GiftbagTypeList", 0),
+ ("char", "MailKey", 0),
+ ("list", "MailItemPrize", 0),
),
"FlashGiftbag":(
@@ -949,6 +953,7 @@
("DWORD", "CfgID", 1),
("char", "StartDate", 0),
("char", "EndDate", 0),
+ ("BYTE", "ResetType", 0),
("WORD", "LVLimit", 0),
("BYTE", "TemplateID", 0),
),
@@ -2252,7 +2257,9 @@
self.AdvanceMinutes = 0
self.LVLimit = 0
self.IsDayReset = 0
- self.ShopTypeList = []
+ self.ShopTypeList = []
+ self.MailKey = ""
+ self.MailItemPrize = []
return
def GetCfgID(self): return self.CfgID # 配置ID
@@ -2263,7 +2270,9 @@
def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
def GetLVLimit(self): return self.LVLimit # 限制等级
def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
- def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表
+ def GetShopTypeList(self): return self.ShopTypeList # 商店类型列表
+ def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key
+ def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品
# 日常任务表
class IPY_DailyQuest():
@@ -2828,7 +2837,9 @@
self.AdvanceMinutes = 0
self.LVLimit = 0
self.IsDayReset = 0
- self.GiftbagTypeList = []
+ self.GiftbagTypeList = []
+ self.MailKey = ""
+ self.MailItemPrize = []
return
def GetCfgID(self): return self.CfgID # 配置ID
@@ -2839,7 +2850,9 @@
def GetAdvanceMinutes(self): return self.AdvanceMinutes # 前端提前X分钟展示活动
def GetLVLimit(self): return self.LVLimit # 限制等级
def GetIsDayReset(self): return self.IsDayReset # 是否每天重置
- def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
+ def GetGiftbagTypeList(self): return self.GiftbagTypeList # 礼包类型列表
+ def GetMailKey(self): return self.MailKey # 活动更新时发送邮件key
+ def GetMailItemPrize(self): return self.MailItemPrize # 活动更新时发送邮件奖励物品
# 限时礼包模板表
class IPY_FlashGiftbag():
@@ -2918,6 +2931,7 @@
self.CfgID = 0
self.StartDate = ""
self.EndDate = ""
+ self.ResetType = 0
self.LVLimit = 0
self.TemplateID = 0
return
@@ -2925,6 +2939,7 @@
def GetCfgID(self): return self.CfgID # 配置ID
def GetStartDate(self): return self.StartDate # 开启日期
def GetEndDate(self): return self.EndDate # 结束日期
+ def GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
def GetLVLimit(self): return self.LVLimit # 限制等级
def GetTemplateID(self): return self.TemplateID # 模板编号
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 d7caf38..b295e14 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -238,6 +238,7 @@
curPlayer.SetDict(ChConfig.Def_PlayerKey_LoadMapIsLogin, 1)
#通知时间
Sync_PyServerDataTimeToClient(curPlayer)
+ Sync_OpenServerDay(curPlayer)
#通知玩家基本信息
curPlayer.Sync_ClientPlayerLogin()
@@ -5326,6 +5327,19 @@
NetPackCommon.SendFakePack(curPlayer, serverDateTime)
return
+## 通知开服天数
+# @param curPlayer: 玩家实例
+# @return: None
+def Sync_OpenServerDay(curPlayer):
+ gw = GameWorld.GetGameWorld()
+ packData = ChPyNetSendPack.tagOpenServerDay()
+ packData.Clear()
+ packData.Day = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay)
+ packData.IsMixServer = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_IsMixServer)
+ packData.MixDay = gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_MixServerDay)
+ packData.OpenServerTime = GameWorld.ChangeTimeNumToStr(gw.GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_InitOpenServerTime))
+ NetPackCommon.SendFakePack(curPlayer, packData)
+ return
#===============================================================================
# //B4 09 玩家移动 # tagCMPyMove
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
index 5e300bb..fb1100f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerBossReborn.py
@@ -59,6 +59,7 @@
actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
bossRebornID = actBossRebornInfo.get(ShareDefine.ActKey_ID, 0)
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
playerBossRebornID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornID) # 玩家身上的活动ID
@@ -66,10 +67,11 @@
if bossRebornID == playerBossRebornID:
#GameWorld.DebugLog("BOSS复活活动ID不变,不处理!", curPlayer.GetPlayerID())
return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0))
- if not actBossIpyData:
- return
- templateID = actBossIpyData.GetTemplateID()
+
+ templateID = 0
+ if cfgID:
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
+ templateID = 0 if not actBossIpyData else actBossIpyData.GetTemplateID()
playerTemplateID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_BossRebornTemplateID)
GameWorld.DebugLog("BOSS复活重置! costRebateID=%s,playerCostRebateID=%s,state=%s,templateID=%s,playerTemplateID=%s"
@@ -210,9 +212,10 @@
def SyncBossRebornInfo(curPlayer):
actBossRebornInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_BossReborn, {})
state = actBossRebornInfo.get(ShareDefine.ActKey_State, 0)
- if not state:
+ cfgID = actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0)
+ if not state or not cfgID:
return
- actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", actBossRebornInfo.get(ShareDefine.ActKey_CfgID, 0))
+ actBossIpyData = IpyGameDataPY.GetIpyGameData("ActBossReborn", cfgID)
if not actBossIpyData:
return
templateID = actBossIpyData.GetTemplateID()
@@ -225,6 +228,7 @@
actInfo.Clear()
actInfo.StartDate = actBossIpyData.GetStartDate()
actInfo.EndtDate = actBossIpyData.GetEndDate()
+ actInfo.ResetType = actBossIpyData.GetResetType()
actInfo.LimitLV = actBossIpyData.GetLVLimit()
actInfo.TaskInfo = []
for ipyData in ipyDataList:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
index dd67884..43396b0 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFlashGiftbag.py
@@ -68,21 +68,27 @@
actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FlashGiftbag, {})
actID = actInfo.get(ShareDefine.ActKey_ID, 0)
state = actInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagID) # 玩家身上的活动ID
- # 活动ID 相同的话不处理
- if actID == playerActID:
+ if actID != playerActID:
+ giftbagTypeList = GetGiftbagTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
+ ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID, actID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState, 0)
+ GameWorld.DebugLog("限时礼包重置! actID=%s,playerActID=%s,state=%s,giftbagTypeList=%s" % (actID, playerActID, state, giftbagTypeList), playerID)
+ Sync_FlashGiftbagActionInfo(curPlayer)
+ else:
GameWorld.DebugLog("限时礼包活动ID不变,不处理!", curPlayer.GetPlayerID())
- return
-
- giftbagTypeList = GetGiftbagTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagID, actID)
- ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList)
-
- GameWorld.DebugLog("限时礼包重置! actID=%s,playerActID=%s,state=%s,giftbagTypeList=%s" % (actID, playerActID, state, giftbagTypeList), playerID)
-
- Sync_FlashGiftbagActionInfo(curPlayer)
+
+ playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FlashGiftbagMailState) # 玩家身上的活动提醒邮件状态
+ if actID and state and state != playerMailState:
+ flashGiftbagIpyData = IpyGameDataPY.GetIpyGameData("ActFlashGiftbag", cfgID)
+ if flashGiftbagIpyData and flashGiftbagIpyData.GetMailKey() and curPlayer.GetLV() >= flashGiftbagIpyData.GetLVLimit():
+ PlayerControl.SendMailByKey(flashGiftbagIpyData.GetMailKey(), [playerID], flashGiftbagIpyData.GetMailItemPrize())
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FlashGiftbagMailState, state)
+ GameWorld.DebugLog(" 发送新限时礼包邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
return True
def ResetGiftbagItemBuyCount(curPlayer, giftbagTypeList):
@@ -232,6 +238,7 @@
packInfo = ChPyNetSendPack.tagMCFlashGiftbagInfo()
packInfo.StartDate = flashGiftbagIpyData.GetStartDate()
packInfo.EndtDate = flashGiftbagIpyData.GetEndDate()
+ packInfo.AdvanceMinutes = flashGiftbagIpyData.GetAdvanceMinutes()
packInfo.ActivityTime = []
for i, startTime in enumerate(startTimeList):
timeInfo = ChPyNetSendPack.tagMCFlashGiftbagTime()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
index 3526621..68735b3 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerSpringSale.py
@@ -62,21 +62,27 @@
actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_SpringSale, {})
actID = actInfo.get(ShareDefine.ActKey_ID, 0)
state = actInfo.get(ShareDefine.ActKey_State, 0)
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID, 0)
playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleID) # 玩家身上的活动ID
- # 活动ID 相同的话不处理
- if actID == playerActID:
- GameWorld.DebugLog("限时特惠活动ID不变,不处理!", curPlayer.GetPlayerID())
- return
-
- shopTypeList = GetShopTypeList(actInfo.get(ShareDefine.ActKey_CfgID, 0), actInfo.get(ShareDefine.ActKey_DayIndex, 0))
- PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID)
- FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
-
- GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID)
-
- Sync_SpringSaleActionInfo(curPlayer)
+ if actID != playerActID:
+ shopTypeList = GetShopTypeList(cfgID, actInfo.get(ShareDefine.ActKey_DayIndex, 0))
+ FunctionNPCCommon.ResetShopItemBuyCountByShopType(curPlayer, shopTypeList)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleID, actID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, 0)
+ Sync_SpringSaleActionInfo(curPlayer)
+ GameWorld.DebugLog("限时特惠重置! actID=%s,playerActID=%s,state=%s,shopTypeList=%s" % (actID, playerActID, state, shopTypeList), playerID)
+ else:
+ GameWorld.DebugLog("限时特惠活动ID不变,不处理!", playerID)
+
+ playerMailState = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_SpringSaleMailState) # 玩家身上的活动提醒邮件状态
+ if actID and state and state != playerMailState:
+ springSaleIpyData = IpyGameDataPY.GetIpyGameData("ActSpringSale", cfgID)
+ if springSaleIpyData and springSaleIpyData.GetMailKey() and curPlayer.GetLV() >= springSaleIpyData.GetLVLimit():
+ PlayerControl.SendMailByKey(springSaleIpyData.GetMailKey(), [playerID], springSaleIpyData.GetMailItemPrize())
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_SpringSaleMailState, state)
+ GameWorld.DebugLog(" 发送新限时特惠邮件提醒! state=%s,playerMailState=%s" % (state, playerMailState), playerID)
return True
def Sync_SpringSaleActionInfo(curPlayer):
@@ -107,6 +113,7 @@
packInfo = ChPyNetSendPack.tagMCSpringSaleInfo()
packInfo.StartDate = springSaleIpyData.GetStartDate()
packInfo.EndtDate = springSaleIpyData.GetEndDate()
+ packInfo.AdvanceMinutes = springSaleIpyData.GetAdvanceMinutes()
packInfo.ActivityTime = []
for i, startTime in enumerate(startTimeList):
timeInfo = ChPyNetSendPack.tagMCSpringSaleTime()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index ed961fe..c73e566 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -127,6 +127,7 @@
Def_Notify_Separator = '+'
#通知地图服务器并设置该字典值
+Def_Notify_WorldKey_InitOpenServerTime = 'InitOpenServerTime' # 开服时间
Def_Notify_WorldKey_ServerDay = 'ServerDay' # 开服天数
Def_Notify_WorldKey_IsMixServer = 'IsMixServer' # 是否合服服务器
Def_Notify_WorldKey_MixServerDay = 'MixServerDay' # 合服天数
--
Gitblit v1.8.0