From 94ca00f866c8c947240cfbfaa399a88bdd05f62b Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期一, 01 二月 2021 14:47:01 +0800
Subject: [PATCH] 8716 【主干】【后端】【BT2】H.活动-节日祈愿(增加节日游历);
---
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py | 44 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 454 ++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py | 2
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 454 ++++++++++++++++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py | 87 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py | 6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py | 2
PySysDB/PySysDBPY.h | 33 +
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py | 311 +++++++++++
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py | 7
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastTravel.py | 88 +++
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py | 1
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py | 2
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py | 3
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py | 4
PySysDB/PySysDBG.h | 16
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py | 32 +
26 files changed, 1,564 insertions(+), 7 deletions(-)
diff --git a/PySysDB/PySysDBG.h b/PySysDB/PySysDBG.h
index 6074880..3261164 100644
--- a/PySysDB/PySysDBG.h
+++ b/PySysDB/PySysDBG.h
@@ -298,6 +298,22 @@
list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
};
+//节日游历时间表
+
+struct tagActFeastTravel
+{
+ DWORD _CfgID; //配置ID
+ char ActMark; //活动组标记
+ list PlatformList; //活动平台列表["平台A", "平台A", ...],配[]代表所有
+ list ServerGroupIDList; //服务器ID列表
+ char StartDate; //开启日期
+ char EndDate; //结束日期
+ BYTE ResetType; //重置类型,0-0点重置;1-5点重置
+ dict NotifyInfoStart; //全服提示信息 - 相对开始时间
+ dict NotifyInfoEnd; //全服提示信息 - 相对结束时间
+ list NotifyInfoLoop; //全服提示信息 - 循环广播[间隔分钟, 广播key]
+};
+
//等级开启功能 #tagFuncOpenLV
struct tagFuncOpenLV
diff --git a/PySysDB/PySysDBPY.h b/PySysDB/PySysDBPY.h
index 294ba85..5d66d89 100644
--- a/PySysDB/PySysDBPY.h
+++ b/PySysDB/PySysDBPY.h
@@ -1889,6 +1889,7 @@
DWORD _CfgID; //配置ID
char StartDate; //开启日期
char EndDate; //结束日期
+ BYTE ResetType; //重置类型,0-0点重置;1-5点重置
dict TemplateIDInfo; //模板信息 {(世界等级A,B):模板编号, ...}
};
@@ -1916,6 +1917,38 @@
char WorldNotifyKey; //全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,)
};
+//节日游历时间表
+
+struct tagActFeastTravel
+{
+ DWORD _CfgID; //配置ID
+ char StartDate; //开启日期
+ char EndDate; //结束日期
+ BYTE ResetType; //重置类型,0-0点重置;1-5点重置
+ dict TemplateIDInfo; //模板信息 {(世界等级A,B):模板编号, ...}
+};
+
+//节日游历任务表
+
+struct tagActFeastTravelTask
+{
+ BYTE _TraveTasklD; //游历ID
+ WORD FinishNeedValue; //完成所需进度值
+ WORD FinishTimeMax; //总可完成次数,0不限
+ BYTE AddTravelPoint; //完成次数获得游历值
+};
+
+//节日游历奖励表
+
+struct tagActFeastTravelAward
+{
+ BYTE _TemplatelD; //奖励模板ID
+ BYTE RecordIndex; //奖励记录索引
+ WORD NeedTravelPoint; //领奖所需游历值
+ BYTE AwardCountMax; //可领取次数,0代表不限
+ list TravelAwardInfo; //游历奖励 [[物品ID,个数,是否拍品], ...]
+};
+
//诛仙BOSS表
struct tagZhuXianBoss
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
index edf4da4..7ce2e59 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -27426,6 +27426,453 @@
#------------------------------------------------------
+# AA 46 节日游历活动信息 #tagMCFeastTravelInfo
+
+class tagMCFeastTravelAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastTravelAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
+ NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
+ AwardCountMax = 0 #(BYTE AwardCountMax)//最大可领取次数,0代表不限
+ AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
+ AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCFeastTravelAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedTravelPoint = 0
+ self.AwardCountMax = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
+ data = CommFunc.WriteBYTE(data, self.AwardCountMax)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedTravelPoint:%d,
+ AwardCountMax:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedTravelPoint,
+ self.AwardCountMax,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastTravelTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TravelTaskID", c_ubyte), #游历任务ID
+ ("FinishNeedValue", c_ushort), #单次完成所需进度
+ ("FinishTimeMax", c_ubyte), #最大可完成次数,0代表不限
+ ("AddTravelPoint", c_ubyte), #单次完成获得游历值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.TravelTaskID = 0
+ self.FinishNeedValue = 0
+ self.FinishTimeMax = 0
+ self.AddTravelPoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+ TravelTaskID:%d,
+ FinishNeedValue:%d,
+ FinishTimeMax:%d,
+ AddTravelPoint:%d
+ '''\
+ %(
+ self.TravelTaskID,
+ self.FinishNeedValue,
+ self.FinishTimeMax,
+ self.AddTravelPoint
+ )
+ return DumpString
+
+
+class tagMCFeastTravelInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
+ TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
+ TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
+ TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x46
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _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.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelTaskCount):
+ temTravelTaskList = tagMCFeastTravelTask()
+ _pos = temTravelTaskList.ReadData(_lpData, _pos)
+ self.TravelTaskList.append(temTravelTaskList)
+ self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelAwardCount):
+ temTravelAwardList = tagMCFeastTravelAward()
+ _pos = temTravelAwardList.ReadData(_lpData, _pos)
+ self.TravelAwardList.append(temTravelAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x46
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.TravelTaskCount = 0
+ self.TravelTaskList = list()
+ self.TravelAwardCount = 0
+ self.TravelAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 1
+ for i in range(self.TravelTaskCount):
+ length += self.TravelTaskList[i].GetLength()
+ length += 1
+ for i in range(self.TravelAwardCount):
+ length += self.TravelAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ 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.WriteBYTE(data, self.TravelTaskCount)
+ for i in range(self.TravelTaskCount):
+ data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
+ for i in range(self.TravelAwardCount):
+ data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ TravelTaskCount:%d,
+ TravelTaskList:%s,
+ TravelAwardCount:%d,
+ TravelAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.TravelTaskCount,
+ "...",
+ self.TravelAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
+
+
+#------------------------------------------------------
+# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
+
+class tagMCFeastTravelPlayerAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("AwardIndex", c_ubyte), #游历奖励索引
+ ("GetAwardCount", c_ubyte), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.GetAwardCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelPlayerAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+ AwardIndex:%d,
+ GetAwardCount:%d
+ '''\
+ %(
+ self.AwardIndex,
+ self.GetAwardCount
+ )
+ return DumpString
+
+
+class tagMCFeastTravelPlayerTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TravelTaskID", c_ubyte), #游历任务ID
+ ("TravelValue", c_int), #当前进度值,一直累加
+ ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.TravelTaskID = 0
+ self.TravelValue = 0
+ self.FinishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelPlayerTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+ TravelTaskID:%d,
+ TravelValue:%d,
+ FinishCount:%d
+ '''\
+ %(
+ self.TravelTaskID,
+ self.TravelValue,
+ self.FinishCount
+ )
+ return DumpString
+
+
+class tagMCFeastTravelPlayerInfo(Structure):
+ Head = tagHead()
+ TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
+ TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
+ TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
+ TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
+ TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x47
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelPlayerTaskCount):
+ temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
+ _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
+ self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
+ self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelPlayerAwardCount):
+ temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
+ _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
+ self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x47
+ self.TravelPoint = 0
+ self.TravelPlayerTaskCount = 0
+ self.TravelPlayerTaskList = list()
+ self.TravelPlayerAwardCount = 0
+ self.TravelPlayerAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.TravelPlayerTaskCount):
+ length += self.TravelPlayerTaskList[i].GetLength()
+ length += 1
+ for i in range(self.TravelPlayerAwardCount):
+ length += self.TravelPlayerAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.TravelPoint)
+ data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
+ for i in range(self.TravelPlayerTaskCount):
+ data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
+ for i in range(self.TravelPlayerAwardCount):
+ data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TravelPoint:%d,
+ TravelPlayerTaskCount:%d,
+ TravelPlayerTaskList:%s,
+ TravelPlayerAwardCount:%d,
+ TravelPlayerAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TravelPoint,
+ self.TravelPlayerTaskCount,
+ "...",
+ self.TravelPlayerAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
+
+
+#------------------------------------------------------
# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
class tagMCFeastWeekPartyItem(Structure):
@@ -28062,6 +28509,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点开,5点重置;2-5点开,0点重置
WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数
WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
@@ -28079,6 +28527,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.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.WishPoolShowCount):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
@@ -28097,6 +28546,7 @@
self.Head.SubCmd = 0x43
self.StartDate = ""
self.EndtDate = ""
+ self.ResetType = 0
self.WishPoolShowCount = 0
self.WishPoolShowItemList = list()
self.BottleCount = 0
@@ -28108,6 +28558,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 1
length += 1
length += 4 * self.WishPoolShowCount
length += 1
@@ -28121,6 +28572,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.WriteBYTE(data, self.WishPoolShowCount)
for i in range(self.WishPoolShowCount):
data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
@@ -28134,6 +28586,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ ResetType:%d,
WishPoolShowCount:%d,
WishPoolShowItemList:%s,
BottleCount:%d,
@@ -28143,6 +28596,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.ResetType,
self.WishPoolShowCount,
"...",
self.BottleCount,
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
index 4130ece..4d09b1f 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py
@@ -260,6 +260,19 @@
("list", "NotifyInfoLoop", 0),
),
+ "ActFeastTravel":(
+ ("DWORD", "CfgID", 1),
+ ("char", "ActMark", 0),
+ ("list", "PlatformList", 0),
+ ("list", "ServerGroupIDList", 0),
+ ("char", "StartDate", 0),
+ ("char", "EndDate", 0),
+ ("BYTE", "ResetType", 0),
+ ("dict", "NotifyInfoStart", 0),
+ ("dict", "NotifyInfoEnd", 0),
+ ("list", "NotifyInfoLoop", 0),
+ ),
+
"FuncOpenLV":(
("DWORD", "FuncId", 1),
("DWORD", "LimitLV", 0),
@@ -1164,6 +1177,33 @@
# 节日祝福时间表
class IPY_ActFeastWish():
+
+ def __init__(self):
+ self.CfgID = 0
+ self.ActMark = ""
+ self.PlatformList = []
+ self.ServerGroupIDList = []
+ self.StartDate = ""
+ self.EndDate = ""
+ self.ResetType = 0
+ self.NotifyInfoStart = {}
+ self.NotifyInfoEnd = {}
+ self.NotifyInfoLoop = []
+ 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 GetResetType(self): return self.ResetType # 重置类型,0-0点重置;1-5点重置
+ def GetNotifyInfoStart(self): return self.NotifyInfoStart # 全服提示信息 - 相对开始时间
+ def GetNotifyInfoEnd(self): return self.NotifyInfoEnd # 全服提示信息 - 相对结束时间
+ def GetNotifyInfoLoop(self): return self.NotifyInfoLoop # 全服提示信息 - 循环广播[间隔分钟, 广播key]
+
+# 节日游历时间表
+class IPY_ActFeastTravel():
def __init__(self):
self.CfgID = 0
@@ -2195,6 +2235,8 @@
self.ipyActFeastLoginLen = len(self.ipyActFeastLoginCache)
self.ipyActFeastWishCache = self.__LoadFileData("ActFeastWish", IPY_ActFeastWish)
self.ipyActFeastWishLen = len(self.ipyActFeastWishCache)
+ self.ipyActFeastTravelCache = self.__LoadFileData("ActFeastTravel", IPY_ActFeastTravel)
+ self.ipyActFeastTravelLen = len(self.ipyActFeastTravelCache)
self.ipyFuncOpenLVCache = self.__LoadFileData("FuncOpenLV", IPY_FuncOpenLV)
self.ipyFuncOpenLVLen = len(self.ipyFuncOpenLVCache)
self.ipyChinNPCCache = self.__LoadFileData("ChinNPC", IPY_ChinNPC)
@@ -2489,6 +2531,8 @@
def GetActFeastLoginByIndex(self, index): return self.ipyActFeastLoginCache[index]
def GetActFeastWishCount(self): return self.ipyActFeastWishLen
def GetActFeastWishByIndex(self, index): return self.ipyActFeastWishCache[index]
+ def GetActFeastTravelCount(self): return self.ipyActFeastTravelLen
+ def GetActFeastTravelByIndex(self, index): return self.ipyActFeastTravelCache[index]
def GetFuncOpenLVCount(self): return self.ipyFuncOpenLVLen
def GetFuncOpenLVByIndex(self, index): return self.ipyFuncOpenLVCache[index]
def GetChinNPCCount(self): return self.ipyChinNPCLen
diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
index fa2fc3f..f660a05 100644
--- a/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
+++ b/ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py
@@ -226,12 +226,13 @@
OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
OperationActionName_FeastLogin = "ActFeastLogin" # 节日登录活动
-OperationActionName_FeastWish = "ActFeastWish" # 节日祝愿活动
+OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
+OperationActionName_FeastTravel = "ActFeastTravel" # 节日游历活动
#节日活动类型列表 - 该类型无视开服天,日期到了就开启
FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
- OperationActionName_FeastWish,
+ OperationActionName_FeastWish, OperationActionName_FeastTravel,
]
#所有的运营活动列表,含节日活动
OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
@@ -254,7 +255,7 @@
OperationActionName_WeekParty,
OperationActionName_CollectWords, OperationActionName_CollectWords2,
OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
- OperationActionName_FeastWish,
+ OperationActionName_FeastWish, OperationActionName_FeastTravel,
]
#所有的累计充值活动
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
index 4cfe90e..9a8ab21 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py
@@ -3834,6 +3834,13 @@
Def_PDict_FeastWishID = "FeastWishID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
Def_PDict_FeastWishBottleValue = "FeastWishBottleValue_%s" # 祝福瓶当前祝福值,参数(瓶子编号)
Def_PDict_FeastWishBottleGetState = "FeastWishBottleGetState_%s" # 祝福瓶已领取记录,参数(瓶子编号),按记录索引二进制位存储是否已领取
+
+#节日游历活动
+Def_PDict_FeastTravelID = "FeastTravelID" # 玩家身上的活动ID,唯一标识,取活动开始日期time值
+Def_PDict_FeastTravelPoint = "FeastTravelPoint" # 当前总游历点数
+Def_PDict_FeastTravelValue = "FeastTravelValue_%s" # 游历任务总进度值,参数(任务ID)
+Def_PDict_FeastTravelCount = "FeastTravelCount_%s" # 游历任务已完成次数,参数(任务ID)
+Def_PDict_FeastTravelAwardCount = "FeastTravelAwardCount_%s" # 游历已领奖次数,参数(奖励索引)
#-------------------------------------------------------------------------------
#开服活动,Def_PDictType_OpenServerCampaign
@@ -5373,7 +5380,8 @@
Def_RewardType_GoodGame, #游戏好评奖励35
Def_RewardType_CACTGBillboardDabiao, #跨服充值排行活动达标奖励36
Def_RewardType_FeastLogin, #节日登录奖励37
-)= range(38)
+Def_RewardType_FeastTravel, #节日游历奖励38
+)= range(39)
#boss复活相关活动定义
@@ -5416,6 +5424,28 @@
Def_PPAct_FairyDomain, #缥缈仙域 16
) = range(1, 16+1)
+#节日游历活动任务定义
+FeastTravelTaskIDList = (
+Def_FeastTravel_1,
+Def_FeastTravel_Treasure, #极品寻宝 2
+Def_FeastTravel_RuneTreasure, #符印寻宝 3
+Def_FeastTravel_4,
+Def_FeastTravel_XJMJ, #仙界秘境 5
+Def_FeastTravel_6,
+Def_FeastTravel_WorldBoss, #世界BOSS 7
+Def_FeastTravel_FMT, #封魔坛 8
+Def_FeastTravel_FamilyParty, #仙盟宴会 9
+Def_FeastTravel_10,
+Def_FeastTravel_Pray, #祈愿 11
+Def_FeastTravel_BossHome, #boss之家 12
+Def_FeastTravel_VIPBoss, #vipBOSS 13
+Def_FeastTravel_RunFamilyTask, #仙盟任务 14
+Def_FeastTravel_FamilyBoss, #仙盟Boss 15
+Def_FeastTravel_FairyDomain, #缥缈仙域 16
+Def_FeastTravel_UseGold, #累计消费X仙玉 17
+Def_FeastTravel_CTGExp, #累计充值X仙玉,直接使用充值转化的经验 18
+) = range(1, 1 + 18)
+
#周狂欢活动定义(七天巡礼)
WeekPartyActIDList = (
Def_WPAct_RunTask, #仙盟任务 1
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index edf4da4..7ce2e59 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -27426,6 +27426,453 @@
#------------------------------------------------------
+# AA 46 节日游历活动信息 #tagMCFeastTravelInfo
+
+class tagMCFeastTravelAwardItem(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("ItemID", c_int),
+ ("ItemCount", c_ushort),
+ ("IsBind", c_ubyte),
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.ItemID = 0
+ self.ItemCount = 0
+ self.IsBind = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelAwardItem)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+ ItemID:%d,
+ ItemCount:%d,
+ IsBind:%d
+ '''\
+ %(
+ self.ItemID,
+ self.ItemCount,
+ self.IsBind
+ )
+ return DumpString
+
+
+class tagMCFeastTravelAward(Structure):
+ AwardIndex = 0 #(BYTE AwardIndex)//游历奖励索引
+ NeedTravelPoint = 0 #(WORD NeedTravelPoint)//单次领奖所需游历值
+ AwardCountMax = 0 #(BYTE AwardCountMax)//最大可领取次数,0代表不限
+ AwardItemCount = 0 #(BYTE AwardItemCount)//奖励物品数
+ AwardItemList = list() #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
+ self.AwardCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.AwardItemCount):
+ temAwardItemList = tagMCFeastTravelAwardItem()
+ _pos = temAwardItemList.ReadData(_lpData, _pos)
+ self.AwardItemList.append(temAwardItemList)
+ return _pos
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.NeedTravelPoint = 0
+ self.AwardCountMax = 0
+ self.AwardItemCount = 0
+ self.AwardItemList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += 1
+ length += 2
+ length += 1
+ length += 1
+ for i in range(self.AwardItemCount):
+ length += self.AwardItemList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteBYTE(data, self.AwardIndex)
+ data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
+ data = CommFunc.WriteBYTE(data, self.AwardCountMax)
+ data = CommFunc.WriteBYTE(data, self.AwardItemCount)
+ for i in range(self.AwardItemCount):
+ data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ AwardIndex:%d,
+ NeedTravelPoint:%d,
+ AwardCountMax:%d,
+ AwardItemCount:%d,
+ AwardItemList:%s
+ '''\
+ %(
+ self.AwardIndex,
+ self.NeedTravelPoint,
+ self.AwardCountMax,
+ self.AwardItemCount,
+ "..."
+ )
+ return DumpString
+
+
+class tagMCFeastTravelTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TravelTaskID", c_ubyte), #游历任务ID
+ ("FinishNeedValue", c_ushort), #单次完成所需进度
+ ("FinishTimeMax", c_ubyte), #最大可完成次数,0代表不限
+ ("AddTravelPoint", c_ubyte), #单次完成获得游历值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.TravelTaskID = 0
+ self.FinishNeedValue = 0
+ self.FinishTimeMax = 0
+ self.AddTravelPoint = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
+ TravelTaskID:%d,
+ FinishNeedValue:%d,
+ FinishTimeMax:%d,
+ AddTravelPoint:%d
+ '''\
+ %(
+ self.TravelTaskID,
+ self.FinishNeedValue,
+ self.FinishTimeMax,
+ self.AddTravelPoint
+ )
+ return DumpString
+
+
+class tagMCFeastTravelInfo(Structure):
+ Head = tagHead()
+ StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
+ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
+ ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
+ TravelTaskCount = 0 #(BYTE TravelTaskCount)// 游历任务数
+ TravelTaskList = list() #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
+ TravelAwardCount = 0 #(BYTE TravelAwardCount)// 游历奖励数
+ TravelAwardList = list() #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x46
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _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.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelTaskCount):
+ temTravelTaskList = tagMCFeastTravelTask()
+ _pos = temTravelTaskList.ReadData(_lpData, _pos)
+ self.TravelTaskList.append(temTravelTaskList)
+ self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelAwardCount):
+ temTravelAwardList = tagMCFeastTravelAward()
+ _pos = temTravelAwardList.ReadData(_lpData, _pos)
+ self.TravelAwardList.append(temTravelAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x46
+ self.StartDate = ""
+ self.EndtDate = ""
+ self.ResetType = 0
+ self.TravelTaskCount = 0
+ self.TravelTaskList = list()
+ self.TravelAwardCount = 0
+ self.TravelAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 10
+ length += 10
+ length += 1
+ length += 1
+ for i in range(self.TravelTaskCount):
+ length += self.TravelTaskList[i].GetLength()
+ length += 1
+ for i in range(self.TravelAwardCount):
+ length += self.TravelAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ 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.WriteBYTE(data, self.TravelTaskCount)
+ for i in range(self.TravelTaskCount):
+ data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
+ for i in range(self.TravelAwardCount):
+ data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ StartDate:%s,
+ EndtDate:%s,
+ ResetType:%d,
+ TravelTaskCount:%d,
+ TravelTaskList:%s,
+ TravelAwardCount:%d,
+ TravelAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.StartDate,
+ self.EndtDate,
+ self.ResetType,
+ self.TravelTaskCount,
+ "...",
+ self.TravelAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
+
+
+#------------------------------------------------------
+# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
+
+class tagMCFeastTravelPlayerAward(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("AwardIndex", c_ubyte), #游历奖励索引
+ ("GetAwardCount", c_ubyte), #已领取次数;前端判断是否可领取: 总游历值 >= (已领取次数 + 1) * 单次所需游历值
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.AwardIndex = 0
+ self.GetAwardCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelPlayerAward)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+ AwardIndex:%d,
+ GetAwardCount:%d
+ '''\
+ %(
+ self.AwardIndex,
+ self.GetAwardCount
+ )
+ return DumpString
+
+
+class tagMCFeastTravelPlayerTask(Structure):
+ _pack_ = 1
+ _fields_ = [
+ ("TravelTaskID", c_ubyte), #游历任务ID
+ ("TravelValue", c_int), #当前进度值,一直累加
+ ("FinishCount", c_ubyte), #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
+ ]
+
+ def __init__(self):
+ self.Clear()
+ return
+
+ def ReadData(self, stringData, _pos=0, _len=0):
+ self.Clear()
+ memmove(addressof(self), stringData[_pos:], self.GetLength())
+ return _pos + self.GetLength()
+
+ def Clear(self):
+ self.TravelTaskID = 0
+ self.TravelValue = 0
+ self.FinishCount = 0
+ return
+
+ def GetLength(self):
+ return sizeof(tagMCFeastTravelPlayerTask)
+
+ def GetBuffer(self):
+ return string_at(addressof(self), self.GetLength())
+
+ def OutputString(self):
+ DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
+ TravelTaskID:%d,
+ TravelValue:%d,
+ FinishCount:%d
+ '''\
+ %(
+ self.TravelTaskID,
+ self.TravelValue,
+ self.FinishCount
+ )
+ return DumpString
+
+
+class tagMCFeastTravelPlayerInfo(Structure):
+ Head = tagHead()
+ TravelPoint = 0 #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
+ TravelPlayerTaskCount = 0 #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
+ TravelPlayerTaskList = list() #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
+ TravelPlayerAwardCount = 0 #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
+ TravelPlayerAwardList = list() #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
+ data = None
+
+ def __init__(self):
+ self.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x47
+ return
+
+ def ReadData(self, _lpData, _pos=0, _Len=0):
+ self.Clear()
+ _pos = self.Head.ReadData(_lpData, _pos)
+ self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+ self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelPlayerTaskCount):
+ temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
+ _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
+ self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
+ self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+ for i in range(self.TravelPlayerAwardCount):
+ temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
+ _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
+ self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
+ return _pos
+
+ def Clear(self):
+ self.Head = tagHead()
+ self.Head.Clear()
+ self.Head.Cmd = 0xAA
+ self.Head.SubCmd = 0x47
+ self.TravelPoint = 0
+ self.TravelPlayerTaskCount = 0
+ self.TravelPlayerTaskList = list()
+ self.TravelPlayerAwardCount = 0
+ self.TravelPlayerAwardList = list()
+ return
+
+ def GetLength(self):
+ length = 0
+ length += self.Head.GetLength()
+ length += 4
+ length += 1
+ for i in range(self.TravelPlayerTaskCount):
+ length += self.TravelPlayerTaskList[i].GetLength()
+ length += 1
+ for i in range(self.TravelPlayerAwardCount):
+ length += self.TravelPlayerAwardList[i].GetLength()
+
+ return length
+
+ def GetBuffer(self):
+ data = ''
+ data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+ data = CommFunc.WriteDWORD(data, self.TravelPoint)
+ data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
+ for i in range(self.TravelPlayerTaskCount):
+ data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
+ data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
+ for i in range(self.TravelPlayerAwardCount):
+ data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
+ return data
+
+ def OutputString(self):
+ DumpString = '''
+ Head:%s,
+ TravelPoint:%d,
+ TravelPlayerTaskCount:%d,
+ TravelPlayerTaskList:%s,
+ TravelPlayerAwardCount:%d,
+ TravelPlayerAwardList:%s
+ '''\
+ %(
+ self.Head.OutputString(),
+ self.TravelPoint,
+ self.TravelPlayerTaskCount,
+ "...",
+ self.TravelPlayerAwardCount,
+ "..."
+ )
+ return DumpString
+
+
+m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
+
+
+#------------------------------------------------------
# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
class tagMCFeastWeekPartyItem(Structure):
@@ -28062,6 +28509,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点开,5点重置;2-5点开,0点重置
WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数
WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
@@ -28079,6 +28527,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.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
for i in range(self.WishPoolShowCount):
value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
@@ -28097,6 +28546,7 @@
self.Head.SubCmd = 0x43
self.StartDate = ""
self.EndtDate = ""
+ self.ResetType = 0
self.WishPoolShowCount = 0
self.WishPoolShowItemList = list()
self.BottleCount = 0
@@ -28108,6 +28558,7 @@
length += self.Head.GetLength()
length += 10
length += 10
+ length += 1
length += 1
length += 4 * self.WishPoolShowCount
length += 1
@@ -28121,6 +28572,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.WriteBYTE(data, self.WishPoolShowCount)
for i in range(self.WishPoolShowCount):
data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
@@ -28134,6 +28586,7 @@
Head:%s,
StartDate:%s,
EndtDate:%s,
+ ResetType:%d,
WishPoolShowCount:%d,
WishPoolShowItemList:%s,
BottleCount:%d,
@@ -28143,6 +28596,7 @@
self.Head.OutputString(),
self.StartDate,
self.EndtDate,
+ self.ResetType,
self.WishPoolShowCount,
"...",
self.BottleCount,
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
index a03dbba..8fd96e8 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py
@@ -30,6 +30,7 @@
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
+import PlayerFeastTravel
import PlayerActLogin
import PlayerWeekParty
import EventShell
@@ -176,6 +177,7 @@
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Pray, 1)
PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_Pray, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Pray, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Pray, 1)
Sync_NotifyDataChange(curPlayer, [buyType])
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
index e769e71..d57bc94 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py
@@ -57,6 +57,7 @@
import PlayerNewFairyCeremony
import Operate_EquipStone
import OpenServerCampaign
+import PlayerFeastTravel
import PlayerWeekParty
import PlayerFairyDomain
import GameFuncComm
@@ -5143,6 +5144,7 @@
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyRunMission, addCnt)
PlayerFamily.AddFamilyActivity(curPlayer, ShareDefine.FamilyActive_Task, addCnt)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_RunTask, addCnt)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RunFamilyTask, addCnt)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunFamilyTask, addCnt)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RunFamilyTask, addCnt)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastTravel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastTravel.py
new file mode 100644
index 0000000..b902109
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastTravel.py
@@ -0,0 +1,88 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package GM.Commands.FeastTravel
+#
+# @todo:节日游历
+# @author hxp
+# @date 2021-02-01
+# @version 1.0
+#
+# 详细描述: 节日游历
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2021-02-01 15:00"""
+#-------------------------------------------------------------------------------
+
+import GameWorld
+import PlayerControl
+import PlayerFeastTravel
+import IpyGameDataPY
+import ChConfig
+
+
+def __Help(curPlayer):
+ GameWorld.DebugAnswer(curPlayer, "重置所有游历: FeastTravel 0")
+ GameWorld.DebugAnswer(curPlayer, "设置游历点值: FeastTravel 游历值")
+ GameWorld.DebugAnswer(curPlayer, "增加游历进度: FeastTravel 任务ID 增加值")
+ return
+
+## GM命令执行入口
+# @param curPlayer 当前玩家
+# @param paramList 参数列表 []
+# @return None
+# @remarks 函数详细说明.
+def OnExec(curPlayer, paramList):
+
+ if not paramList:
+ __Help(curPlayer)
+ return
+
+ if len(paramList) == 1:
+ # 重置
+ if paramList[0] == 0:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, 0)
+
+ ipyMgr = IpyGameDataPY.IPY_Data()
+ # 重置游历任务相关
+ for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
+ taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
+ taskID = taskIpyData.GetTraveTasklD()
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelValue % taskID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelCount % taskID, 0)
+
+ # 重置游历奖励
+ for index in xrange(ipyMgr.GetActFeastTravelAwardCount()):
+ awardIpyData = ipyMgr.GetActFeastTravelAwardByIndex(index)
+ recordIndex = awardIpyData.GetRecordIndex()
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelAwardCount % recordIndex, 0)
+
+ GameWorld.DebugAnswer(curPlayer, "重置OK!")
+
+ PlayerFeastTravel.Sync_FeastTravelPlayerInfo(curPlayer)
+
+ # 设置游历值
+ else:
+ travelPoint = paramList[0]
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, travelPoint)
+ GameWorld.DebugAnswer(curPlayer, "设置OK!")
+ PlayerFeastTravel.Sync_FeastTravelPlayerInfo(curPlayer, -1, -1)
+
+ elif len(paramList) == 2:
+ taskID, addValue = paramList
+ if taskID not in ChConfig.FeastTravelTaskIDList:
+ GameWorld.DebugAnswer(curPlayer, "游历任务ID不存在,请查看节日游历任务表!")
+ return
+
+ if PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, taskID, addValue):
+ GameWorld.DebugAnswer(curPlayer, "成功!")
+ else:
+ GameWorld.DebugAnswer(curPlayer, "失败!请检查是否已达最大完成次数!")
+
+ else:
+ __Help(curPlayer)
+ return
+
+ return
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
index e969313..b290819 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py
@@ -28,6 +28,7 @@
import NPCCustomRefresh
import PlayerAuctionHouse
import ItemControler
+import PlayerFeastTravel
import PlayerWeekParty
import PlayerActivity
import PlayerFairyCeremony
@@ -162,6 +163,7 @@
PlayerActivity.AddDailyActionFinishCnt(curPlayer, ShareDefine.DailyActionID_FamilyBoss1, 1)
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FamilyBoss, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FamilyBoss, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FamilyBoss, 1)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyBoss, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyBoss, 1)
if fbStep == FB_Step_Open:
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
index f693c7b..48ad529 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py
@@ -30,6 +30,7 @@
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerActLogin
+import PlayerFeastTravel
import PlayerWeekParty
import ItemControler
import GameFuncComm
@@ -105,6 +106,7 @@
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_XJMJ, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_XJMJ, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_XJMJ, 1)
PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_XJMJ, 1)
EventShell.EventRespons_FBEvent(curPlayer, 'passxjmj')
FBCommon.UpdateFBEnterTick(curPlayer)
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
index 27b0dbf..32c453f 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py
@@ -24,6 +24,7 @@
import GameWorld
import PlayerFamily
import IpyGameDataPY
+import PlayerFeastTravel
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import PlayerActLogin
@@ -165,6 +166,7 @@
EventReport.WriteEvent_FB(curPlayer, ChConfig.Def_FBMapID_FamilyParty, 0, ChConfig.CME_Log_Start)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FamilyParty, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FamilyParty, 1)
PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FamilyParty, 1)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
index 6104a38..893cc29 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py
@@ -22,6 +22,7 @@
import PlayerBossReborn
import PlayerNewFairyCeremony
import PlayerFairyCeremony
+import PlayerFeastTravel
import IpyGameDataPY
import NPCCommon
import ChConfig
@@ -98,6 +99,7 @@
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, 1)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, 1)
npcCountDict = {bossID:1}
dropItemMapInfo = [0, 0]
@@ -138,6 +140,7 @@
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_VIPBOSS, sweepCnt)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_VIPBoss, sweepCnt)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_VIPBoss, sweepCnt)
npcCountDict = {bossID:sweepCnt}
jsonItemList = NPCCommon.GiveKillNPCDropPrize(curPlayer, mapID, npcCountDict, curGrade=grade)[0]
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
index ff06a95..0fdffd1 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py
@@ -32,6 +32,7 @@
import PlayerBossReborn
import PlayerFairyCeremony
import PlayerNewFairyCeremony
+import PlayerFeastTravel
import PlayerWeekParty
import PlayerActLogin
import EventReport
@@ -333,6 +334,7 @@
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FMT, addCnt)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FMT, addCnt)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FMT, addCnt)
PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_FMT, addCnt)
return prizeItemList
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
index 2761b28..af7733c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py
@@ -1473,6 +1473,7 @@
("DWORD", "CfgID", 1),
("char", "StartDate", 0),
("char", "EndDate", 0),
+ ("BYTE", "ResetType", 0),
("dict", "TemplateIDInfo", 0),
),
@@ -1492,6 +1493,29 @@
("list", "WishPoolClientItemShow", 0),
("list", "GoodItemIDList", 0),
("char", "WorldNotifyKey", 0),
+ ),
+
+ "ActFeastTravel":(
+ ("DWORD", "CfgID", 1),
+ ("char", "StartDate", 0),
+ ("char", "EndDate", 0),
+ ("BYTE", "ResetType", 0),
+ ("dict", "TemplateIDInfo", 0),
+ ),
+
+ "ActFeastTravelTask":(
+ ("BYTE", "TraveTasklD", 1),
+ ("WORD", "FinishNeedValue", 0),
+ ("WORD", "FinishTimeMax", 0),
+ ("BYTE", "AddTravelPoint", 0),
+ ),
+
+ "ActFeastTravelAward":(
+ ("BYTE", "TemplatelD", 1),
+ ("BYTE", "RecordIndex", 0),
+ ("WORD", "NeedTravelPoint", 0),
+ ("BYTE", "AwardCountMax", 0),
+ ("list", "TravelAwardInfo", 0),
),
"ZhuXianBoss":(
@@ -4759,12 +4783,14 @@
self.CfgID = 0
self.StartDate = ""
self.EndDate = ""
+ self.ResetType = 0
self.TemplateIDInfo = {}
return
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 GetTemplateIDInfo(self): return self.TemplateIDInfo # 模板信息 {(世界等级A,B):模板编号, ...}
# 节日祝福瓶模板表
@@ -4804,6 +4830,55 @@
def GetWishPoolClientItemShow(self): return self.WishPoolClientItemShow # 前端展示物品列表 [物品ID, ...]
def GetGoodItemIDList(self): return self.GoodItemIDList # 需要广播的物品ID列表 [物品ID, ...]
def GetWorldNotifyKey(self): return self.WorldNotifyKey # 全服广播key,参数(玩家名, 物品ID, 物品数据, 个数,)
+
+# 节日游历时间表
+class IPY_ActFeastTravel():
+
+ def __init__(self):
+ self.CfgID = 0
+ self.StartDate = ""
+ self.EndDate = ""
+ self.ResetType = 0
+ self.TemplateIDInfo = {}
+ return
+
+ 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 GetTemplateIDInfo(self): return self.TemplateIDInfo # 模板信息 {(世界等级A,B):模板编号, ...}
+
+# 节日游历任务表
+class IPY_ActFeastTravelTask():
+
+ def __init__(self):
+ self.TraveTasklD = 0
+ self.FinishNeedValue = 0
+ self.FinishTimeMax = 0
+ self.AddTravelPoint = 0
+ return
+
+ def GetTraveTasklD(self): return self.TraveTasklD # 游历ID
+ def GetFinishNeedValue(self): return self.FinishNeedValue # 完成所需进度值
+ def GetFinishTimeMax(self): return self.FinishTimeMax # 总可完成次数,0不限
+ def GetAddTravelPoint(self): return self.AddTravelPoint # 完成次数获得游历值
+
+# 节日游历奖励表
+class IPY_ActFeastTravelAward():
+
+ def __init__(self):
+ self.TemplatelD = 0
+ self.RecordIndex = 0
+ self.NeedTravelPoint = 0
+ self.AwardCountMax = 0
+ self.TravelAwardInfo = []
+ return
+
+ def GetTemplatelD(self): return self.TemplatelD # 奖励模板ID
+ def GetRecordIndex(self): return self.RecordIndex # 奖励记录索引
+ def GetNeedTravelPoint(self): return self.NeedTravelPoint # 领奖所需游历值
+ def GetAwardCountMax(self): return self.AwardCountMax # 可领取次数,0代表不限
+ def GetTravelAwardInfo(self): return self.TravelAwardInfo # 游历奖励 [[物品ID,个数,是否拍品], ...]
# 诛仙BOSS表
class IPY_ZhuXianBoss():
@@ -5628,6 +5703,12 @@
self.ipyActFeastWishBottleLen = len(self.ipyActFeastWishBottleCache)
self.ipyActFeastWishPoolCache = self.__LoadFileData("ActFeastWishPool", IPY_ActFeastWishPool)
self.ipyActFeastWishPoolLen = len(self.ipyActFeastWishPoolCache)
+ self.ipyActFeastTravelCache = self.__LoadFileData("ActFeastTravel", IPY_ActFeastTravel)
+ self.ipyActFeastTravelLen = len(self.ipyActFeastTravelCache)
+ self.ipyActFeastTravelTaskCache = self.__LoadFileData("ActFeastTravelTask", IPY_ActFeastTravelTask)
+ self.ipyActFeastTravelTaskLen = len(self.ipyActFeastTravelTaskCache)
+ self.ipyActFeastTravelAwardCache = self.__LoadFileData("ActFeastTravelAward", IPY_ActFeastTravelAward)
+ self.ipyActFeastTravelAwardLen = len(self.ipyActFeastTravelAwardCache)
self.ipyZhuXianBossCache = self.__LoadFileData("ZhuXianBoss", IPY_ZhuXianBoss)
self.ipyZhuXianBossLen = len(self.ipyZhuXianBossCache)
self.ipyActFeastWeekPartyCache = self.__LoadFileData("ActFeastWeekParty", IPY_ActFeastWeekParty)
@@ -6146,6 +6227,12 @@
def GetActFeastWishBottleByIndex(self, index): return self.ipyActFeastWishBottleCache[index]
def GetActFeastWishPoolCount(self): return self.ipyActFeastWishPoolLen
def GetActFeastWishPoolByIndex(self, index): return self.ipyActFeastWishPoolCache[index]
+ def GetActFeastTravelCount(self): return self.ipyActFeastTravelLen
+ def GetActFeastTravelByIndex(self, index): return self.ipyActFeastTravelCache[index]
+ def GetActFeastTravelTaskCount(self): return self.ipyActFeastTravelTaskLen
+ def GetActFeastTravelTaskByIndex(self, index): return self.ipyActFeastTravelTaskCache[index]
+ def GetActFeastTravelAwardCount(self): return self.ipyActFeastTravelAwardLen
+ def GetActFeastTravelAwardByIndex(self, index): return self.ipyActFeastTravelAwardCache[index]
def GetZhuXianBossCount(self): return self.ipyZhuXianBossLen
def GetZhuXianBossByIndex(self, index): return self.ipyZhuXianBossCache[index]
def GetActFeastWeekPartyCount(self): return self.ipyActFeastWeekPartyLen
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
index 3c16272..4d3d45d 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py
@@ -54,6 +54,7 @@
import PlayerNewFairyCeremony
import GameLogic_CrossGrassland
import PlayerFeastWish
+import PlayerFeastTravel
import PlayerWeekParty
import NPCHurtManager
import PlayerActLogin
@@ -2396,6 +2397,7 @@
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_WorldBoss, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_WorldBOSS, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_WorldBoss, 1)
PlayerActLogin.AddLoginAwardActionCnt(curPlayer, ChConfig.Def_LoginAct_WorldBOSS, 1)
if mapID == ChConfig.Def_FBMapID_BossHome:
@@ -2408,6 +2410,7 @@
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_BossHome, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_BOSSHome, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_BossHome, 1)
elif mapID == ChConfig.Def_FBMapID_CrossPenglai:
#跨服蓬莱仙境
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 f15e221..3005231 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py
@@ -80,6 +80,7 @@
import PlayerBossReborn
import PlayerWeekParty
import PlayerFeastWeekParty
+import PlayerFeastTravel
import PlayerFeastLogin
import PlayerFeastWish
import PlayerActLogin
@@ -703,6 +704,8 @@
PlayerFeastLogin.OnPlayerLogin(curPlayer)
# 节日祝福活动
PlayerFeastWish.OnPlayerLogin(curPlayer)
+ # 节日游历活动
+ PlayerFeastTravel.OnPlayerLogin(curPlayer)
# 登录奖励活动
PlayerActLogin.OnLogin(curPlayer)
# 仙界盛典活动
@@ -5410,6 +5413,9 @@
# 领取节日登录奖励
elif rewardType == ChConfig.Def_RewardType_FeastLogin:
PlayerFeastLogin.GetFeastLoginAward(curPlayer, dataEx)
+ # 领取节日游历奖励
+ elif rewardType == ChConfig.Def_RewardType_FeastTravel:
+ PlayerFeastTravel.GetFeastTravelAward(curPlayer, dataEx)
# 领取跨服充值排行活动达标奖励
elif rewardType == ChConfig.Def_RewardType_CACTGBillboardDabiao:
CrossActCTGBillboard.GetDabiaoAward(curPlayer, dataEx)
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 270a29c..0d0b93c 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -52,6 +52,7 @@
import CrossActCTGBillboard
import PlayerActGrowupBuy
import OpenServerCampaign
+import PlayerFeastTravel
import PlayerWeekParty
import PlayerGoldInvest
import ItemCommon
@@ -434,6 +435,7 @@
#开服活动
#OpenServerCampaign.AddOpenServerCampaignRecordData(curPlayer, ShareDefine.Def_Campaign_Type_Recharge, orderCoin)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_Recharge, addVIPExp)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_CTGExp, addVIPExp)
#投资
if ctgIpyData:
PlayerGoldInvest.InvestByCTG(curPlayer, ctgIpyData.GetRecordID())
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
index 009e152..48c9641 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py
@@ -70,6 +70,7 @@
import GameLogic_DuJie
import PyGameData
import PlayerMagicWeapon
+import PlayerFeastTravel
import GameLogic_SealDemon
import GameLogic_ZhuXianBoss
import GameLogic_CrossDemonKing
@@ -3168,6 +3169,7 @@
# 消费返利
PlayerCostRebate.AddCostRebateGold(curPlayer, costType, price, infoDict)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_UseGold, price)
# 事件汇报
#===========================================================================
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 b09564c..b1c5d28 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py
@@ -83,6 +83,7 @@
import PlayerBossReborn
import PlayerWeekParty
import PlayerFeastWeekParty
+import PlayerFeastTravel
import PlayerFeastLogin
import PlayerFeastWish
import PlayerActLogin
@@ -1391,6 +1392,9 @@
elif actionName == ShareDefine.OperationActionName_FeastWish:
PlayerFeastWish.RefreshFeastWishActionInfo()
+ elif actionName == ShareDefine.OperationActionName_FeastTravel:
+ PlayerFeastTravel.RefreshFeastTravelActionInfo()
+
elif actionName == ShareDefine.OperationActionName_FeastWeekParty:
PlayerFeastWeekParty.RefreshOperationAction_FeastWeekParty()
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py
index e78223e..3ca3d38 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py
@@ -27,6 +27,7 @@
import IpyGameDataPY
import PlayerActivity
import PlayerWeekParty
+import PlayerFeastTravel
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import ItemCommon
@@ -231,6 +232,7 @@
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_FairyDomain, 1)
PlayerWeekParty.AddWeekPartyActionCnt(curPlayer, ChConfig.Def_WPAct_FairyDomain, 1)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_FairyDomain, 1)
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FairyDomain, 1)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_FairyDomain, 1)
return
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py
new file mode 100644
index 0000000..2124b2f
--- /dev/null
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py
@@ -0,0 +1,311 @@
+#!/usr/bin/python
+# -*- coding: GBK -*-
+#-------------------------------------------------------------------------------
+#
+##@package Player.PlayerFeastTravel
+#
+# @todo:节日游历
+# @author hxp
+# @date 2021-02-01
+# @version 1.0
+#
+# 详细描述: 节日游历
+#
+#-------------------------------------------------------------------------------
+#"""Version = 2021-02-01 15:00"""
+#-------------------------------------------------------------------------------
+
+import PyGameData
+import ShareDefine
+import PlayerControl
+import IpyGameDataPY
+import ItemControler
+import ChPyNetSendPack
+import IPY_GameWorld
+import NetPackCommon
+import GameWorld
+import ChConfig
+
+def OnPlayerLogin(curPlayer):
+ isReset = __CheckPlayerFeastTravelAction(curPlayer)
+ if not isReset:
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
+ # 活动中同步活动信息
+ if actInfo.get(ShareDefine.ActKey_State):
+ Sync_FeastTravelActionInfo(curPlayer)
+ Sync_FeastTravelPlayerInfo(curPlayer)
+ return
+
+def RefreshFeastTravelActionInfo():
+ ## 收到GameServer同步的活动信息,刷新活动信息
+ playerManager = GameWorld.GetPlayerManager()
+ for index in xrange(playerManager.GetPlayerCount()):
+ curPlayer = playerManager.GetPlayerByIndex(index)
+ if curPlayer.GetID() == 0:
+ continue
+ __CheckPlayerFeastTravelAction(curPlayer)
+ return
+
+def __CheckPlayerFeastTravelAction(curPlayer):
+ ## 检查玩家活动信息
+
+ playerID = curPlayer.GetPlayerID()
+
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
+ actID = actInfo.get(ShareDefine.ActKey_ID, 0)
+ state = actInfo.get(ShareDefine.ActKey_State, 0)
+
+ playerActID = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelID) # 玩家身上的活动ID
+ # 活动ID 相同的话不处理
+ if actID == playerActID:
+ GameWorld.DebugLog("节日游历活动ID不变,不处理!", curPlayer.GetPlayerID())
+ return
+ GameWorld.DebugLog("节日游历活动重置! actID=%s,playerActID=%s,state=%s" % (actID, playerActID, state), playerID)
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelID, actID)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, 0)
+
+ if not state:
+ return
+
+ templateID = __GetTravelTemplateID()
+
+ ipyMgr = IpyGameDataPY.IPY_Data()
+ # 重置游历任务相关
+ for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
+ taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
+ taskID = taskIpyData.GetTraveTasklD()
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelValue % taskID, 0)
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelCount % taskID, 0)
+
+ # 重置游历奖励
+ for index in xrange(ipyMgr.GetActFeastTravelAwardCount()):
+ awardIpyData = ipyMgr.GetActFeastTravelAwardByIndex(index)
+ if templateID != awardIpyData.GetTemplatelD():
+ continue
+ recordIndex = awardIpyData.GetRecordIndex()
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelAwardCount % recordIndex, 0)
+
+ Sync_FeastTravelActionInfo(curPlayer)
+ Sync_FeastTravelPlayerInfo(curPlayer)
+ return True
+
+def __GetTravelTemplateID():
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
+ if not actInfo:
+ return
+
+ if not actInfo.get(ShareDefine.ActKey_State):
+ return
+
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
+ ipyData = IpyGameDataPY.GetIpyGameData("ActFeastTravel", cfgID)
+ if not ipyData:
+ return
+
+ worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
+ templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
+ return templateID
+
+def AddFeastTravelTaskValue(curPlayer, taskID, addValue=1):
+ ## 增加游历任务完成进度
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
+ if not actInfo:
+ return
+ if not actInfo.get(ShareDefine.ActKey_State):
+ return
+ ipyData = IpyGameDataPY.GetIpyGameData("ActFeastTravelTask", taskID)
+ if not ipyData:
+ return
+ maxFinishCount = ipyData.GetFinishTimeMax()
+ curFinishCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelCount % taskID)
+ if maxFinishCount and curFinishCount >= maxFinishCount:
+ GameWorld.DebugLog("该游历任务已达到最大完成次数!taskID=%s,curFinishCount=%s" % (taskID, curFinishCount))
+ return
+ curValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelValue % taskID)
+ updValue = curValue + addValue
+ GameWorld.DebugLog("增加游历进度: taskID=%s,curValue=%s,addValue=%s,updValue=%s" % (taskID, curValue, addValue, updValue))
+
+ if maxFinishCount:
+ maxValue = ipyData.GetFinishNeedValue() * maxFinishCount
+ if updValue > maxValue:
+ updValue = maxValue
+ GameWorld.DebugLog(" 修正进度值不超过最大可完成次数的总进度值! maxFinishCount=%s,maxValue=%s,updValue=%s"
+ % (maxFinishCount, maxValue, updValue))
+
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelValue % taskID, updValue)
+ updFinishCount = updValue / ipyData.GetFinishNeedValue()
+ GameWorld.DebugLog(" curFinishCount=%s,updFinishCount=%s" % (curFinishCount, updFinishCount))
+ # 增加完成次数
+ if updFinishCount > curFinishCount:
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelCount % taskID, updFinishCount)
+ addFinishCount = updFinishCount - curFinishCount
+ addTravelPointTotal = addFinishCount * ipyData.GetAddTravelPoint()
+
+ curTravelPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelPoint)
+ updTravelPoint = curTravelPoint + addTravelPointTotal
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelPoint, updTravelPoint)
+ GameWorld.DebugLog(" 完成游历: addFinishCount=%s,addTravelPointTotal=%s,curTravelPoint=%s,updTravelPoint=%s"
+ % (addFinishCount, addTravelPointTotal, curTravelPoint, updTravelPoint))
+
+ Sync_FeastTravelPlayerInfo(curPlayer, taskID, -1) # 不通知奖励
+ return True
+
+def GetFeastTravelAward(curPlayer, index):
+ ## 节日游历领奖
+
+ templateID = __GetTravelTemplateID()
+ if not templateID:
+ return
+
+ ipyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastTravelAward", templateID)
+ if not ipyDataList:
+ return
+
+ findIpyData = None
+ for ipyData in ipyDataList:
+ if index == ipyData.GetRecordIndex():
+ findIpyData = ipyData
+ break
+
+ if not findIpyData:
+ return
+
+ getCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelAwardCount % index)
+ getCountMax = findIpyData.GetAwardCountMax()
+ if getCountMax and getCount >= getCountMax:
+ GameWorld.DebugLog(" 节日游历领奖已达最大领取次数! templateID=%s,index=%s,getCount=%s >= getCountMax=%s"
+ % (templateID, index, getCount, getCountMax))
+ return
+
+ curPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelPoint)
+ singleNeedPoint = findIpyData.GetNeedTravelPoint()
+ canUsePoint = curPoint - getCount * singleNeedPoint
+ if canUsePoint < singleNeedPoint:
+ GameWorld.DebugLog(" 节日游历领奖游历值不足! templateID=%s,index=%s,curPoint=%s,getCount=%s,canUsePoint=%s < singleNeedPoint=%s"
+ % (templateID, index, curPoint, getCount, canUsePoint, singleNeedPoint))
+ return
+
+ awardList = findIpyData.GetTravelAwardInfo()
+ if not awardList:
+ return
+
+ if not ItemControler.CheckPackSpaceEnough(curPlayer, awardList):
+ return
+
+ updGetCount = getCount + 1
+ PlayerControl.NomalDictSetProperty(curPlayer, ChConfig.Def_PDict_FeastTravelAwardCount % index, updGetCount)
+
+ GameWorld.DebugLog(" 节日游历领奖! templateID=%s,index=%s,curPoint=%s,getCount=%s,canUsePoint=%s,singleNeedPoint=%s,updGetCount=%s"
+ % (templateID, index, curPoint, getCount, canUsePoint, singleNeedPoint, updGetCount))
+
+ for itemID, itemCnt, isAuctionItem in awardList:
+ ItemControler.GivePlayerItem(curPlayer, itemID, itemCnt, isAuctionItem, [IPY_GameWorld.rptItem], event=["FeastTravel", False, {}])
+
+ Sync_FeastTravelPlayerInfo(curPlayer, -1, index) # 不通知任务
+ return
+
+def Sync_FeastTravelPlayerInfo(curPlayer, taskID=None, awardIndex=None):
+ ## 通知活动玩家信息
+ # @param taskID: None-通知全部;>=0-单个通知;-1-不通知
+
+ syncTaskIDList = []
+ if taskID == None:
+ ipyMgr = IpyGameDataPY.IPY_Data()
+ for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
+ taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
+ syncTaskIDList.append(taskIpyData.GetTraveTasklD())
+ elif taskID >= 0:
+ syncTaskIDList = [taskID]
+
+ syncAwardIndexList = []
+ if awardIndex == None:
+ templateID = __GetTravelTemplateID()
+ if templateID:
+ awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastTravelAward", templateID)
+ if awardIpyDataList:
+ syncAwardIndexList = [awardIpyData.GetRecordIndex() for awardIpyData in awardIpyDataList]
+ elif awardIndex >= 0:
+ syncAwardIndexList = [awardIndex]
+
+ playerPack = ChPyNetSendPack.tagMCFeastTravelPlayerInfo()
+ playerPack.TravelPoint = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelPoint)
+ playerPack.TravelPlayerTaskList = []
+ for taskID in syncTaskIDList:
+ taskInfo = ChPyNetSendPack.tagMCFeastTravelPlayerTask()
+ taskInfo.TravelTaskID = taskID
+ taskInfo.TravelValue = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelValue % taskID)
+ taskInfo.FinishCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelCount % taskID)
+ playerPack.TravelPlayerTaskList.append(taskInfo)
+ playerPack.TravelPlayerTaskCount = len(playerPack.TravelPlayerTaskList)
+
+ playerPack.TravelPlayerAwardList = []
+ for awardIndex in syncAwardIndexList:
+ awardInfo = ChPyNetSendPack.tagMCFeastTravelPlayerAward()
+ awardInfo.AwardIndex = awardIndex
+ awardInfo.GetAwardCount = curPlayer.NomalDictGetProperty(ChConfig.Def_PDict_FeastTravelAwardCount % awardIndex)
+ playerPack.TravelPlayerAwardList.append(awardInfo)
+ playerPack.TravelPlayerAwardCount = len(playerPack.TravelPlayerAwardList)
+
+ NetPackCommon.SendFakePack(curPlayer, playerPack)
+ return
+
+def Sync_FeastTravelActionInfo(curPlayer):
+ ## 通知活动信息
+ actInfo = PyGameData.g_operationActionDict.get(ShareDefine.OperationActionName_FeastTravel, {})
+ if not actInfo:
+ return
+
+ if not actInfo.get(ShareDefine.ActKey_State):
+ return
+
+ cfgID = actInfo.get(ShareDefine.ActKey_CfgID)
+ ipyData = IpyGameDataPY.GetIpyGameData("ActFeastTravel", cfgID)
+ if not ipyData:
+ return
+
+ worldLV = actInfo.get(ShareDefine.ActKey_WorldLV)
+ templateID = GameWorld.GetDictValueByRangeKey(ipyData.GetTemplateIDInfo(), worldLV, 0)
+ if not templateID:
+ return
+
+ openServerDay = GameWorld.GetGameWorld().GetGameWorldDictByKey(ShareDefine.Def_Notify_WorldKey_ServerDay) + 1
+ actPack = ChPyNetSendPack.tagMCFeastTravelInfo()
+ actPack.Clear()
+ actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
+ actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
+ actPack.ResetType = ipyData.GetResetType()
+
+ actPack.TravelTaskList = []
+ ipyMgr = IpyGameDataPY.IPY_Data()
+ for index in xrange(ipyMgr.GetActFeastTravelTaskCount()):
+ taskIpyData = ipyMgr.GetActFeastTravelTaskByIndex(index)
+ taskInfo = ChPyNetSendPack.tagMCFeastTravelTask()
+ taskInfo.TravelTaskID = taskIpyData.GetTraveTasklD()
+ taskInfo.FinishNeedValue = taskIpyData.GetFinishNeedValue()
+ taskInfo.FinishTimeMax = taskIpyData.GetFinishTimeMax()
+ taskInfo.AddTravelPoint = taskIpyData.GetAddTravelPoint()
+ actPack.TravelTaskList.append(taskInfo)
+ actPack.TravelTaskCount = len(actPack.TravelTaskList)
+
+ awardIpyDataList = IpyGameDataPY.GetIpyGameDataList("ActFeastTravelAward", templateID)
+ actPack.TravelAwardList = []
+ for awardIpyData in awardIpyDataList:
+ awardInfo = ChPyNetSendPack.tagMCFeastTravelAward()
+ awardInfo.AwardIndex = awardIpyData.GetRecordIndex()
+ awardInfo.NeedTravelPoint = awardIpyData.GetNeedTravelPoint()
+ awardInfo.AwardCountMax = awardIpyData.GetAwardCountMax()
+ awardInfo.AwardItemList = []
+ for itemID, itemCount, isAuctionItem in awardIpyData.GetTravelAwardInfo():
+ itemInfo = ChPyNetSendPack.tagMCFeastTravelAwardItem()
+ itemInfo.ItemID = itemID
+ itemInfo.ItemCount = itemCount
+ itemInfo.IsBind = isAuctionItem
+ awardInfo.AwardItemList.append(itemInfo)
+ awardInfo.AwardItemCount = len(awardInfo.AwardItemList)
+ actPack.TravelAwardList.append(awardInfo)
+ actPack.TravelAwardCount = len(actPack.TravelAwardList)
+
+ NetPackCommon.SendFakePack(curPlayer, actPack)
+ return
+
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py
index 65f4223..465d7ae 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py
@@ -380,6 +380,7 @@
actPack.Clear()
actPack.StartDate = GameWorld.GetOperationActionDateStr(ipyData.GetStartDate(), openServerDay)
actPack.EndtDate = GameWorld.GetOperationActionDateStr(ipyData.GetEndDate(), openServerDay)
+ actPack.ResetType = ipyData.GetResetType()
actPack.WishPoolShowItemList = poolIpyData.GetWishPoolClientItemShow() if poolIpyData else []
actPack.WishPoolShowCount = len(actPack.WishPoolShowItemList)
actPack.BottleInfoList = []
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
index 890b980..77792bc 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py
@@ -27,6 +27,7 @@
import ItemControler
import NetPackCommon
import PlayerBossReborn
+import PlayerFeastTravel
import PlayerFairyCeremony
import PlayerNewFairyCeremony
import ItemCommon
@@ -331,10 +332,12 @@
if treasureType == 2:
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_RuneTreasure, treasureCount)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_RuneTreasure, treasureCount)
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_RuneTreasure, treasureCount)
else:
PlayerFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
PlayerNewFairyCeremony.AddFCPartyActionCnt(curPlayer, ChConfig.Def_PPAct_Treasure, treasureCount)
+ PlayerFeastTravel.AddFeastTravelTaskValue(curPlayer, ChConfig.Def_FeastTravel_Treasure, treasureCount)
PlayerBossReborn.AddBossRebornActionCnt(curPlayer, ChConfig.Def_BRAct_Treasure, treasureCount)
# 给物品
mailItemList = []
diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
index fa2fc3f..f660a05 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py
@@ -226,12 +226,13 @@
OperationActionName_RechargeRebateGold = "ActRechargeRebateGold" # 充值返利仙玉活动(活动结束邮件发放,节日活动)
OperationActionName_GrowupBuy = "ActGrowupBuy" # 成长必买活动
OperationActionName_FeastLogin = "ActFeastLogin" # 节日登录活动
-OperationActionName_FeastWish = "ActFeastWish" # 节日祝愿活动
+OperationActionName_FeastWish = "ActFeastWish" # 节日祝福活动
+OperationActionName_FeastTravel = "ActFeastTravel" # 节日游历活动
#节日活动类型列表 - 该类型无视开服天,日期到了就开启
FeastOperationActionNameList = [OperationActionName_FeastWeekParty, OperationActionName_FeastRedPacket,
OperationActionName_RechargeRebateGold, OperationActionName_GrowupBuy,
OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
- OperationActionName_FeastWish,
+ OperationActionName_FeastWish, OperationActionName_FeastTravel,
]
#所有的运营活动列表,含节日活动
OperationActionNameList = [OperationActionName_ExpRate, OperationActionName_CostRebate,
@@ -254,7 +255,7 @@
OperationActionName_WeekParty,
OperationActionName_CollectWords, OperationActionName_CollectWords2,
OperationActionName_FeastLogin, OperationActionName_TotalRecharge3,
- OperationActionName_FeastWish,
+ OperationActionName_FeastWish, OperationActionName_FeastTravel,
]
#所有的累计充值活动
--
Gitblit v1.8.0