hxp
2021-02-01 94ca00f866c8c947240cfbfaa399a88bdd05f62b
8716 【主干】【后端】【BT2】H.活动-节日祈愿(增加节日游历);
24个文件已修改
2个文件已添加
1571 ■■■■■ 已修改文件
PySysDB/PySysDBG.h 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
PySysDB/PySysDBPY.h 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py 454 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/IpyGameDataPY.py 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/CoreServerGroup/GameServer/Script/ShareDefine.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChConfig.py 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py 454 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/Operate_PlayerBuyZhenQi.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Event/EventSrc/QuestRunner.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastTravel.py 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_AllFamilyBoss.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_BZZD.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_FamilyParty.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_PersonalBoss.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GameWorldLogic/FBProcess/GameLogic_SealDemon.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/IpyGameDataPY.py 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/NPC/NPCCommon.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/ChPlayer.py 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerControl.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerEventCounter.py 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFairyDomain.py 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py 311 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastWish.py 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerTreasure.py 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ShareDefine.py 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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
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
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,
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
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,
                                   ]
#所有的累计充值活动
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
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,
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
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)
        
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/GM/Commands/FeastTravel.py
New file
@@ -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
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:
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)
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
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]
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
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
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:
        #跨服蓬莱仙境
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)
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()) 
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)
    
    # 事件汇报
    #===========================================================================
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()
                
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
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerFeastTravel.py
New file
@@ -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
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 = []
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 = []
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,
                                   ]
#所有的累计充值活动