hxp
2019-02-20 23a19f492a066151b6ed1ff21d6a17b391a6b8af
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -196,40 +196,60 @@
# A0 07 副本地图功能线路人数 #tagGCFBLinePlayerCnt
class  tagGCFBLineInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("FBLineID", c_ubyte),    # 功能线路ID
                  ("PlayerCnt", c_ushort),    # 线路当前玩家数
                  ]
    FBLineID = 0    #(BYTE FBLineID)// 功能线路ID
    PlayerCnt = 0    #(WORD PlayerCnt)// 线路当前玩家数
    ExtraStrLen = 0    #(WORD ExtraStrLen)// 长度
    ExtraStr = ""    #(String ExtraStr)// 额外信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        self.FBLineID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PlayerCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExtraStrLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ExtraStr,_pos = CommFunc.ReadString(_lpData, _pos,self.ExtraStrLen)
        return _pos
    def Clear(self):
        self.FBLineID = 0
        self.PlayerCnt = 0
        self.ExtraStrLen = 0
        self.ExtraStr = ""
        return
    def GetLength(self):
        return sizeof(tagGCFBLineInfo)
        length = 0
        length += 1
        length += 2
        length += 2
        length += len(self.ExtraStr)
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteBYTE(data, self.FBLineID)
        data = CommFunc.WriteWORD(data, self.PlayerCnt)
        data = CommFunc.WriteWORD(data, self.ExtraStrLen)
        data = CommFunc.WriteString(data, self.ExtraStrLen, self.ExtraStr)
        return data
    def OutputString(self):
        DumpString = '''// A0 07 副本地图功能线路人数 //tagGCFBLinePlayerCnt:
        DumpString = '''
                                FBLineID:%d,
                                PlayerCnt:%d
                                PlayerCnt:%d,
                                ExtraStrLen:%d,
                                ExtraStr:%s
                                '''\
                                %(
                                self.FBLineID,
                                self.PlayerCnt
                                self.PlayerCnt,
                                self.ExtraStrLen,
                                self.ExtraStr
                                )
        return DumpString
@@ -4695,6 +4715,151 @@
#------------------------------------------------------
# AC 11 节日红包活动信息 #tagGCFeastRedPacketInfo
class  tagGCFeastRedPacketDay(Structure):
    RedPacketCount = 0    #(BYTE RedPacketCount)
    RedPacketIDList = list()    #(vector<WORD> RedPacketIDList)// 当日定时发放的系统红包表ID列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.RedPacketCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RedPacketCount):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.RedPacketIDList.append(value)
        return _pos
    def Clear(self):
        self.RedPacketCount = 0
        self.RedPacketIDList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2 * self.RedPacketCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.RedPacketCount)
        for i in range(self.RedPacketCount):
            data = CommFunc.WriteWORD(data, self.RedPacketIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                RedPacketCount:%d,
                                RedPacketIDList:%s
                                '''\
                                %(
                                self.RedPacketCount,
                                "..."
                                )
        return DumpString
class  tagGCFeastRedPacketInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
    RedPacketDays = 0    #(BYTE RedPacketDays)
    RedPacketDayList = list()    #(vector<tagGCFeastRedPacketDay> RedPacketDayList)// 每日系统红包信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x11
        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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RedPacketDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RedPacketDays):
            temRedPacketDayList = tagGCFeastRedPacketDay()
            _pos = temRedPacketDayList.ReadData(_lpData, _pos)
            self.RedPacketDayList.append(temRedPacketDayList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x11
        self.StartDate = ""
        self.EndtDate = ""
        self.LimitLV = 0
        self.ResetType = 0
        self.RedPacketDays = 0
        self.RedPacketDayList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        for i in range(self.RedPacketDays):
            length += self.RedPacketDayList[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.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteBYTE(data, self.RedPacketDays)
        for i in range(self.RedPacketDays):
            data = CommFunc.WriteString(data, self.RedPacketDayList[i].GetLength(), self.RedPacketDayList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                LimitLV:%d,
                                ResetType:%d,
                                RedPacketDays:%d,
                                RedPacketDayList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.LimitLV,
                                self.ResetType,
                                self.RedPacketDays,
                                "..."
                                )
        return DumpString
m_NAtagGCFeastRedPacketInfo=tagGCFeastRedPacketInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFeastRedPacketInfo.Head.Cmd,m_NAtagGCFeastRedPacketInfo.Head.SubCmd))] = m_NAtagGCFeastRedPacketInfo
#------------------------------------------------------
# AC 02 通知仙魔之争信息 #tagGCXMZZInfo
class  tagGCXMZZInfo(Structure):
@@ -5271,6 +5436,91 @@
m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
#------------------------------------------------------
# AC 0B 新仙界盛典活动信息 #tagGCNewFairyCeremonyInfo
class  tagGCNewFairyCeremonyInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    WorldLV = 0    #(WORD WorldLV)// 世界等级
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x0B
        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.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x0B
        self.StartDate = ""
        self.EndtDate = ""
        self.WorldLV = 0
        self.LimitLV = 0
        self.ResetType = 0
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 2
        length += 1
        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.WriteWORD(data, self.WorldLV)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                WorldLV:%d,
                                LimitLV:%d,
                                ResetType:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.WorldLV,
                                self.LimitLV,
                                self.ResetType
                                )
        return DumpString
m_NAtagGCNewFairyCeremonyInfo=tagGCNewFairyCeremonyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCNewFairyCeremonyInfo.Head.Cmd,m_NAtagGCNewFairyCeremonyInfo.Head.SubCmd))] = m_NAtagGCNewFairyCeremonyInfo
#------------------------------------------------------
@@ -5881,6 +6131,7 @@
    RealmLV = 0    #(WORD RealmLV)//境界
    OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
    IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
    ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
    data = None
    def __init__(self):
@@ -5899,6 +6150,7 @@
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -5913,6 +6165,7 @@
        self.RealmLV = 0
        self.OnlineType = 0
        self.IsInTeam = 0
        self.ServerGroupID = 0
        return
    def GetLength(self):
@@ -5925,6 +6178,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        return length
@@ -5938,6 +6192,7 @@
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteBYTE(data, self.OnlineType)
        data = CommFunc.WriteBYTE(data, self.IsInTeam)
        data = CommFunc.WriteDWORD(data, self.ServerGroupID)
        return data
    def OutputString(self):
@@ -5949,7 +6204,8 @@
                                LV:%d,
                                RealmLV:%d,
                                OnlineType:%d,
                                IsInTeam:%d
                                IsInTeam:%d,
                                ServerGroupID:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -5959,7 +6215,8 @@
                                self.LV,
                                self.RealmLV,
                                self.OnlineType,
                                self.IsInTeam
                                self.IsInTeam,
                                self.ServerGroupID
                                )
        return DumpString
@@ -6589,6 +6846,581 @@
m_NAtagGCVoiceChat=tagGCVoiceChat()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
#------------------------------------------------------
# B5 04 拍卖行新上架拍品 #tagGCAddAuctionItem
class  tagGCAddAuctionItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB5
        self.SubCmd = 0x04
        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.Cmd = 0xB5
        self.SubCmd = 0x04
        self.ItemID = 0
        return
    def GetLength(self):
        return sizeof(tagGCAddAuctionItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B5 04 拍卖行新上架拍品 //tagGCAddAuctionItem:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID
                                )
        return DumpString
m_NAtagGCAddAuctionItem=tagGCAddAuctionItem()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAddAuctionItem.Cmd,m_NAtagGCAddAuctionItem.SubCmd))] = m_NAtagGCAddAuctionItem
#------------------------------------------------------
# B5 01 拍卖行拍卖中的物品信息 #tagGCAuctionItemInfo
class  tagGCAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    FamilyPlayerCount = 0    #(BYTE FamilyPlayerCount)
    FamilyPlayerIDList = list()    #(vector<DWORD> FamilyPlayerIDList)//享受收益的仙盟玩家ID列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        self.FamilyPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FamilyPlayerCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.FamilyPlayerIDList.append(value)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderPrice = 0
        self.UserDataLen = 0
        self.UserData = ""
        self.FamilyPlayerCount = 0
        self.FamilyPlayerIDList = list()
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 2
        length += 2
        length += len(self.UserData)
        length += 1
        length += 4 * self.FamilyPlayerCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        data = CommFunc.WriteBYTE(data, self.FamilyPlayerCount)
        for i in range(self.FamilyPlayerCount):
            data = CommFunc.WriteDWORD(data, self.FamilyPlayerIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderPrice:%d,
                                UserDataLen:%d,
                                UserData:%s,
                                FamilyPlayerCount:%d,
                                FamilyPlayerIDList:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderPrice,
                                self.UserDataLen,
                                self.UserData,
                                self.FamilyPlayerCount,
                                "..."
                                )
        return DumpString
class  tagGCAuctionItemInfo(Structure):
    Head = tagHead()
    QueryType = 0    #(DWORD QueryType)//查询的分类标识
    QueryCount = 0    #(BYTE QueryCount)//指定返回个数,0为全部
    IsFamily = 0    #(BYTE IsFamily)//是否查询仙盟拍品
    AuctionItemCount = 0    #(WORD AuctionItemCount)//拍品数量
    AuctionItemList = list()    #(vector<tagGCAuctionItem> AuctionItemList)//拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x01
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.QueryType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsFamily,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCAuctionItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x01
        self.QueryType = 0
        self.QueryCount = 0
        self.IsFamily = 0
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        length += 1
        length += 2
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.QueryType)
        data = CommFunc.WriteBYTE(data, self.QueryCount)
        data = CommFunc.WriteBYTE(data, self.IsFamily)
        data = CommFunc.WriteWORD(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                QueryType:%d,
                                QueryCount:%d,
                                IsFamily:%d,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.QueryType,
                                self.QueryCount,
                                self.IsFamily,
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCAuctionItemInfo=tagGCAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAuctionItemInfo.Head.Cmd,m_NAtagGCAuctionItemInfo.Head.SubCmd))] = m_NAtagGCAuctionItemInfo
#------------------------------------------------------
# B5 02 拍卖行玩家拍卖中的物品信息 #tagGCPlayerAuctionItemInfo
class  tagGCPlayerAuctionItem(Structure):
    ItemGUID = ""    #(char ItemGUID[40])
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    FamilyPlayerCount = 0    #(BYTE FamilyPlayerCount)
    FamilyPlayerIDList = list()    #(vector<DWORD> FamilyPlayerIDList)//享受收益的仙盟玩家ID列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        self.FamilyPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FamilyPlayerCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.FamilyPlayerIDList.append(value)
        return _pos
    def Clear(self):
        self.ItemGUID = ""
        self.FamilyID = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.AddTime = ""
        self.BidderPrice = 0
        self.UserDataLen = 0
        self.UserData = ""
        self.FamilyPlayerCount = 0
        self.FamilyPlayerIDList = list()
        return
    def GetLength(self):
        length = 0
        length += 40
        length += 4
        length += 4
        length += 2
        length += 19
        length += 2
        length += 2
        length += len(self.UserData)
        length += 1
        length += 4 * self.FamilyPlayerCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 40, self.ItemGUID)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        data = CommFunc.WriteBYTE(data, self.FamilyPlayerCount)
        for i in range(self.FamilyPlayerCount):
            data = CommFunc.WriteDWORD(data, self.FamilyPlayerIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                ItemGUID:%s,
                                FamilyID:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                AddTime:%s,
                                BidderPrice:%d,
                                UserDataLen:%d,
                                UserData:%s,
                                FamilyPlayerCount:%d,
                                FamilyPlayerIDList:%s
                                '''\
                                %(
                                self.ItemGUID,
                                self.FamilyID,
                                self.ItemID,
                                self.ItemCount,
                                self.AddTime,
                                self.BidderPrice,
                                self.UserDataLen,
                                self.UserData,
                                self.FamilyPlayerCount,
                                "..."
                                )
        return DumpString
class  tagGCPlayerAuctionItemInfo(Structure):
    Head = tagHead()
    AuctionItemCount = 0    #(WORD AuctionItemCount)//拍品数量
    AuctionItemList = list()    #(vector<tagGCPlayerAuctionItem> AuctionItemList)//拍品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x02
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AuctionItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.AuctionItemCount):
            temAuctionItemList = tagGCPlayerAuctionItem()
            _pos = temAuctionItemList.ReadData(_lpData, _pos)
            self.AuctionItemList.append(temAuctionItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x02
        self.AuctionItemCount = 0
        self.AuctionItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.AuctionItemCount):
            length += self.AuctionItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.AuctionItemCount)
        for i in range(self.AuctionItemCount):
            data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AuctionItemCount:%d,
                                AuctionItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AuctionItemCount,
                                "..."
                                )
        return DumpString
m_NAtagGCPlayerAuctionItemInfo=tagGCPlayerAuctionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionItemInfo.Head.Cmd,m_NAtagGCPlayerAuctionItemInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionItemInfo
#------------------------------------------------------
# B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo
class  tagGCPlayerAuctionRecord(Structure):
    FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
    RecordType = 0    #(BYTE RecordType)//记录类型 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
    RecordTime = ""    #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
    RecordPrice = 0    #(WORD RecordPrice)//记录价格
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.RecordPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.FamilyID = 0
        self.RecordType = 0
        self.RecordTime = ""
        self.RecordPrice = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 19
        length += 2
        length += 4
        length += 2
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteBYTE(data, self.RecordType)
        data = CommFunc.WriteString(data, 19, self.RecordTime)
        data = CommFunc.WriteWORD(data, self.RecordPrice)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                FamilyID:%d,
                                RecordType:%d,
                                RecordTime:%s,
                                RecordPrice:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.FamilyID,
                                self.RecordType,
                                self.RecordTime,
                                self.RecordPrice,
                                self.ItemID,
                                self.ItemCount,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagGCPlayerAuctionRecordInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    AuctionRecordList = list()    #(vector<tagGCPlayerAuctionRecordInfo> AuctionRecordList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x03
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temAuctionRecordList = tagGCPlayerAuctionRecordInfo()
            _pos = temAuctionRecordList.ReadData(_lpData, _pos)
            self.AuctionRecordList.append(temAuctionRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB5
        self.Head.SubCmd = 0x03
        self.Count = 0
        self.AuctionRecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.AuctionRecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.AuctionRecordList[i].GetLength(), self.AuctionRecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                AuctionRecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagGCPlayerAuctionRecordInfo=tagGCPlayerAuctionRecordInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCPlayerAuctionRecordInfo.Head.Cmd,m_NAtagGCPlayerAuctionRecordInfo.Head.SubCmd))] = m_NAtagGCPlayerAuctionRecordInfo
#------------------------------------------------------
@@ -8404,7 +9236,7 @@
    RoundCount = 0    #(BYTE RoundCount)// PK回合数
    RoundWinnerID = list()    #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表
    AddScore = 0    #(WORD AddScore)// 本场加分
    Score = 0    #(WORD Score)// 当前积分
    Score = 0    #(DWORD Score)// 当前积分
    DanLV = 0    #(BYTE DanLV)// 当前段位
    CWinCnt = 0    #(WORD CWinCnt)// 当前连胜数
    TagNameLen = 0    #(BYTE TagNameLen)
@@ -8428,7 +9260,7 @@
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.RoundWinnerID.append(value)
        self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -8462,7 +9294,7 @@
        length += 1
        length += 4 * self.RoundCount
        length += 2
        length += 2
        length += 4
        length += 1
        length += 2
        length += 1
@@ -8480,7 +9312,7 @@
        for i in range(self.RoundCount):
            data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i])
        data = CommFunc.WriteWORD(data, self.AddScore)
        data = CommFunc.WriteWORD(data, self.Score)
        data = CommFunc.WriteDWORD(data, self.Score)
        data = CommFunc.WriteBYTE(data, self.DanLV)
        data = CommFunc.WriteWORD(data, self.CWinCnt)
        data = CommFunc.WriteBYTE(data, self.TagNameLen)
@@ -8726,64 +9558,92 @@
# C0 06 跨服PK本服赛季状态 #tagGCCrossRealmPKSeasonState
class  tagGCCrossRealmPKSeasonState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ZoneID", c_ubyte),    # 所属赛区ID
                  ("SeasonID", c_ushort),    # 当前赛季ID
                  ("SeasonState", c_ubyte),    # 赛季状态;0-未开启,1-开启中,2-已结束
                  ("MatchState", c_ubyte),    # 匹配状态;0-未开启;1-开启中
                  ]
    Head = tagHead()
    ZoneID = 0    #(BYTE ZoneID)// 所属赛区ID
    SeasonID = 0    #(WORD SeasonID)// 当前赛季ID
    SeasonState = 0    #(BYTE SeasonState)// 赛季状态;0-未开启,1-开启中,2-已结束
    MatchState = 0    #(BYTE MatchState)// 匹配状态;0-未开启;1-开启中
    CrossZoneNameLen = 0    #(BYTE CrossZoneNameLen)
    CrossZoneName = ""    #(String CrossZoneName)// 跨服分区名
    data = None
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        self.SubCmd = 0x06
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x06
        return
    def ReadData(self, stringData, _pos=0, _len=0):
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SeasonID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.SeasonState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MatchState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CrossZoneNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CrossZoneName,_pos = CommFunc.ReadString(_lpData, _pos,self.CrossZoneNameLen)
        return _pos
    def Clear(self):
        self.Cmd = 0xC0
        self.SubCmd = 0x06
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x06
        self.ZoneID = 0
        self.SeasonID = 0
        self.SeasonState = 0
        self.MatchState = 0
        self.CrossZoneNameLen = 0
        self.CrossZoneName = ""
        return
    def GetLength(self):
        return sizeof(tagGCCrossRealmPKSeasonState)
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        length += 1
        length += 1
        length += 1
        length += len(self.CrossZoneName)
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ZoneID)
        data = CommFunc.WriteWORD(data, self.SeasonID)
        data = CommFunc.WriteBYTE(data, self.SeasonState)
        data = CommFunc.WriteBYTE(data, self.MatchState)
        data = CommFunc.WriteBYTE(data, self.CrossZoneNameLen)
        data = CommFunc.WriteString(data, self.CrossZoneNameLen, self.CrossZoneName)
        return data
    def OutputString(self):
        DumpString = '''// C0 06 跨服PK本服赛季状态 //tagGCCrossRealmPKSeasonState:
                                Cmd:%s,
                                SubCmd:%s,
        DumpString = '''
                                Head:%s,
                                ZoneID:%d,
                                SeasonID:%d,
                                SeasonState:%d,
                                MatchState:%d
                                MatchState:%d,
                                CrossZoneNameLen:%d,
                                CrossZoneName:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Head.OutputString(),
                                self.ZoneID,
                                self.SeasonID,
                                self.SeasonState,
                                self.MatchState
                                self.MatchState,
                                self.CrossZoneNameLen,
                                self.CrossZoneName
                                )
        return DumpString
m_NAtagGCCrossRealmPKSeasonState=tagGCCrossRealmPKSeasonState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Cmd,m_NAtagGCCrossRealmPKSeasonState.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKSeasonState.Head.Cmd,m_NAtagGCCrossRealmPKSeasonState.Head.SubCmd))] = m_NAtagGCCrossRealmPKSeasonState
#------------------------------------------------------
@@ -13487,114 +14347,6 @@
m_NAtagMCMagicWeaponLVInfo=tagMCMagicWeaponLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponLVInfo.Head.Cmd,m_NAtagMCMagicWeaponLVInfo.Head.SubCmd))] = m_NAtagMCMagicWeaponLVInfo
#------------------------------------------------------
# A3 BE 通知客户端法宝精炼等级 #tagMCMagicWeaponMsg
class  tagMCMagicWeaponLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("MWID", c_int),    # 法宝ID
                  ("MWLV", 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.MWID = 0
        self.MWLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCMagicWeaponLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 BE 通知客户端法宝精炼等级 //tagMCMagicWeaponMsg:
                                MWID:%d,
                                MWLV:%d
                                '''\
                                %(
                                self.MWID,
                                self.MWLV
                                )
        return DumpString
class  tagMCMagicWeaponMsg(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)// 法宝个数
    MWInfo = list()    #(vector<tagMCMagicWeaponLV> MWInfo)//法宝信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBE
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temMWInfo = tagMCMagicWeaponLV()
            _pos = temMWInfo.ReadData(_lpData, _pos)
            self.MWInfo.append(temMWInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xBE
        self.Count = 0
        self.MWInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.MWInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.MWInfo[i].GetLength(), self.MWInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                MWInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCMagicWeaponMsg=tagMCMagicWeaponMsg()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMagicWeaponMsg.Head.Cmd,m_NAtagMCMagicWeaponMsg.Head.SubCmd))] = m_NAtagMCMagicWeaponMsg
#------------------------------------------------------
@@ -18777,7 +19529,6 @@
    ItemData = ""    #(String ItemData)//物品记录
    PlusDataSize = 0    #(DWORD PlusDataSize)
    PlusData = ""    #(String PlusData)//扩展记录    
    CrossPlayer = 0    #(BYTE CrossPlayer)//是否跨服玩家
    data = None
    def __init__(self):
@@ -18796,7 +19547,6 @@
        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
        self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
        self.CrossPlayer,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -18811,7 +19561,6 @@
        self.ItemData = ""
        self.PlusDataSize = 0
        self.PlusData = ""
        self.CrossPlayer = 0
        return
    def GetLength(self):
@@ -18824,7 +19573,6 @@
        length += len(self.ItemData)
        length += 4
        length += len(self.PlusData)
        length += 1
        return length
@@ -18838,7 +19586,6 @@
        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
        data = CommFunc.WriteDWORD(data, self.PlusDataSize)
        data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
        data = CommFunc.WriteBYTE(data, self.CrossPlayer)
        return data
    def OutputString(self):
@@ -18850,8 +19597,7 @@
                                ItemDataSize:%d,
                                ItemData:%s,
                                PlusDataSize:%d,
                                PlusData:%s,
                                CrossPlayer:%d
                                PlusData:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -18861,8 +19607,7 @@
                                self.ItemDataSize,
                                self.ItemData,
                                self.PlusDataSize,
                                self.PlusData,
                                self.CrossPlayer
                                self.PlusData
                                )
        return DumpString
@@ -20084,6 +20829,545 @@
m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop
#------------------------------------------------------
# A8 15 诛仙装备分解结果通知 #tagMCZhuXianDecomposeResult
class  tagMCZhuXianDecomposeItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),    #物品ID
                  ("ItemCnt", c_ubyte),    #物品数量
                  ("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.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCZhuXianDecomposeItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A8 15 诛仙装备分解结果通知 //tagMCZhuXianDecomposeResult:
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
class  tagMCZhuXianDecomposeResult(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//数量
    ItemList = list()    #(vector<tagMCZhuXianDecomposeItem> ItemList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x15
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temItemList = tagMCZhuXianDecomposeItem()
            _pos = temItemList.ReadData(_lpData, _pos)
            self.ItemList.append(temItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA8
        self.Head.SubCmd = 0x15
        self.Cnt = 0
        self.ItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.ItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                ItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCZhuXianDecomposeResult=tagMCZhuXianDecomposeResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianDecomposeResult.Head.Cmd,m_NAtagMCZhuXianDecomposeResult.Head.SubCmd))] = m_NAtagMCZhuXianDecomposeResult
#------------------------------------------------------
# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
class  tagMCActLoginAwardAction(Structure):
    TemplateID = 0    #(DWORD TemplateID)// 模板ID
    ActionType = 0    #(WORD ActionType)// 活动类别
    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
    Count = 0    #(WORD Count)// 物品配置长度
    ItemInfo = ""    #(String ItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
        return _pos
    def Clear(self):
        self.TemplateID = 0
        self.ActionType = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.Count = 0
        self.ItemInfo = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += 4
        length += 4
        length += 2
        length += len(self.ItemInfo)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.TemplateID)
        data = CommFunc.WriteWORD(data, self.ActionType)
        data = CommFunc.WriteDWORD(data, self.TotalTimes)
        data = CommFunc.WriteDWORD(data, self.SingleTimes)
        data = CommFunc.WriteWORD(data, self.Count)
        data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
        return data
    def OutputString(self):
        DumpString = '''
                                TemplateID:%d,
                                ActionType:%d,
                                TotalTimes:%d,
                                SingleTimes:%d,
                                Count:%d,
                                ItemInfo:%s
                                '''\
                                %(
                                self.TemplateID,
                                self.ActionType,
                                self.TotalTimes,
                                self.SingleTimes,
                                self.Count,
                                self.ItemInfo
                                )
        return DumpString
class  tagMCActLoginAwardDayInfo(Structure):
    ActCnt = 0    #(BYTE ActCnt)// 数量
    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
    WorldLV = 0    #(WORD WorldLV)// 世界等级
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.TemplateList.append(value)
        self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ActCnt = 0
        self.TemplateList = list()
        self.WorldLV = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2 * self.ActCnt
        length += 2
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ActCnt)
        for i in range(self.ActCnt):
            data = CommFunc.WriteWORD(data, self.TemplateList[i])
        data = CommFunc.WriteWORD(data, self.WorldLV)
        return data
    def OutputString(self):
        DumpString = '''
                                ActCnt:%d,
                                TemplateList:%s,
                                WorldLV:%d
                                '''\
                                %(
                                self.ActCnt,
                                "...",
                                self.WorldLV
                                )
        return DumpString
class  tagMCActLoginAwardInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    DayCnt = 0    #(BYTE DayCnt)// 天数
    DayInfoList = list()    #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
    TCount = 0    #(BYTE TCount)// 模板数
    ActionInfo = list()    #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0C
        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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DayCnt):
            temDayInfoList = tagMCActLoginAwardDayInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TCount):
            temActionInfo = tagMCActLoginAwardAction()
            _pos = temActionInfo.ReadData(_lpData, _pos)
            self.ActionInfo.append(temActionInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0C
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LimitLV = 0
        self.DayCnt = 0
        self.DayInfoList = list()
        self.TCount = 0
        self.ActionInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        length += 2
        length += 1
        for i in range(self.DayCnt):
            length += self.DayInfoList[i].GetLength()
        length += 1
        for i in range(self.TCount):
            length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.DayCnt)
        for i in range(self.DayCnt):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TCount)
        for i in range(self.TCount):
            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                IsDayReset:%d,
                                ResetType:%d,
                                LimitLV:%d,
                                DayCnt:%d,
                                DayInfoList:%s,
                                TCount:%d,
                                ActionInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.IsDayReset,
                                self.ResetType,
                                self.LimitLV,
                                self.DayCnt,
                                "...",
                                self.TCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
#------------------------------------------------------
# AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
class  tagMCActLoginAwardTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TemplateID", c_ushort),    # 模板ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ("GotTimes", c_ushort),    #已领取次数
                  ]
    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.TemplateID = 0
        self.CurTimes = 0
        self.GotTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCActLoginAwardTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
                                TemplateID:%d,
                                CurTimes:%d,
                                GotTimes:%d
                                '''\
                                %(
                                self.TemplateID,
                                self.CurTimes,
                                self.GotTimes
                                )
        return DumpString
class  tagMCActLoginAwardDayPlayerInfo(Structure):
    DayIndex = 0    #(DWORD DayIndex)//第X天
    ACount = 0    #(DWORD ACount)//任务条目数
    TaskList = list()    #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        for i in range(self.ACount):
            temTaskList = tagMCActLoginAwardTaskInfo()
            _pos = temTaskList.ReadData(_lpData, _pos)
            self.TaskList.append(temTaskList)
        return _pos
    def Clear(self):
        self.DayIndex = 0
        self.ACount = 0
        self.TaskList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        for i in range(self.ACount):
            length += self.TaskList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.DayIndex)
        data = CommFunc.WriteDWORD(data, self.ACount)
        for i in range(self.ACount):
            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayIndex:%d,
                                ACount:%d,
                                TaskList:%s
                                '''\
                                %(
                                self.DayIndex,
                                self.ACount,
                                "..."
                                )
        return DumpString
class  tagMCActLoginAwardPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    DayInfoList = list()    #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0D
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x0D
        self.Count = 0
        self.DayInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.DayInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                DayInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
#------------------------------------------------------
@@ -21454,6 +22738,518 @@
#------------------------------------------------------
# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
class  tagMCFeastWeekPartyItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NeedPoint", c_ushort),    # 领奖需要积分
                  ("ItemID", c_int),    # 物品ID
                  ("ItemCnt", 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.NeedPoint = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastWeekPartyItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 20 节日巡礼活动信息 //tagMCFeastWeekPartyInfo:
                                NeedPoint:%d,
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.NeedPoint,
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
class  tagMCFeastWeekPartyAction(Structure):
    TemplateID = 0    #(DWORD TemplateID)// 模板ID
    ActionType = 0    #(WORD ActionType)// 活动类别
    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
    Point = 0    #(DWORD Point)// 单次领奖积分
    Count = 0    #(BYTE Count)// 物品数
    ItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> ItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temItemInfo = tagMCFeastWeekPartyItem()
            _pos = temItemInfo.ReadData(_lpData, _pos)
            self.ItemInfo.append(temItemInfo)
        return _pos
    def Clear(self):
        self.TemplateID = 0
        self.ActionType = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.Point = 0
        self.Count = 0
        self.ItemInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 2
        length += 4
        length += 4
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.ItemInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.TemplateID)
        data = CommFunc.WriteWORD(data, self.ActionType)
        data = CommFunc.WriteDWORD(data, self.TotalTimes)
        data = CommFunc.WriteDWORD(data, self.SingleTimes)
        data = CommFunc.WriteDWORD(data, self.Point)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                TemplateID:%d,
                                ActionType:%d,
                                TotalTimes:%d,
                                SingleTimes:%d,
                                Point:%d,
                                Count:%d,
                                ItemInfo:%s
                                '''\
                                %(
                                self.TemplateID,
                                self.ActionType,
                                self.TotalTimes,
                                self.SingleTimes,
                                self.Point,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagMCFeastWeekPartyDayInfo(Structure):
    ActCnt = 0    #(BYTE ActCnt)// 数量
    TemplateList = list()    #(vector<WORD> TemplateList)// 模板列表
    PCount = 0    #(BYTE PCount)// 物品数
    PItemInfo = list()    #(vector<tagMCFeastWeekPartyItem> PItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActCnt):
            value,_pos=CommFunc.ReadWORD(_lpData,_pos)
            self.TemplateList.append(value)
        self.PCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PCount):
            temPItemInfo = tagMCFeastWeekPartyItem()
            _pos = temPItemInfo.ReadData(_lpData, _pos)
            self.PItemInfo.append(temPItemInfo)
        return _pos
    def Clear(self):
        self.ActCnt = 0
        self.TemplateList = list()
        self.PCount = 0
        self.PItemInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2 * self.ActCnt
        length += 1
        for i in range(self.PCount):
            length += self.PItemInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ActCnt)
        for i in range(self.ActCnt):
            data = CommFunc.WriteWORD(data, self.TemplateList[i])
        data = CommFunc.WriteBYTE(data, self.PCount)
        for i in range(self.PCount):
            data = CommFunc.WriteString(data, self.PItemInfo[i].GetLength(), self.PItemInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ActCnt:%d,
                                TemplateList:%s,
                                PCount:%d,
                                PItemInfo:%s
                                '''\
                                %(
                                self.ActCnt,
                                "...",
                                self.PCount,
                                "..."
                                )
        return DumpString
class  tagMCFeastWeekPartyInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    DayCnt = 0    #(BYTE DayCnt)// 天数
    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayInfo> DayInfoList)// 每天模板
    TCount = 0    #(BYTE TCount)// 模板数
    ActionInfo = list()    #(vector<tagMCFeastWeekPartyAction> ActionInfo)// 活动模板信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        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.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DayCnt):
            temDayInfoList = tagMCFeastWeekPartyDayInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TCount):
            temActionInfo = tagMCFeastWeekPartyAction()
            _pos = temActionInfo.ReadData(_lpData, _pos)
            self.ActionInfo.append(temActionInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x20
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LimitLV = 0
        self.DayCnt = 0
        self.DayInfoList = list()
        self.TCount = 0
        self.ActionInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        length += 2
        length += 1
        for i in range(self.DayCnt):
            length += self.DayInfoList[i].GetLength()
        length += 1
        for i in range(self.TCount):
            length += self.ActionInfo[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.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.DayCnt)
        for i in range(self.DayCnt):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TCount)
        for i in range(self.TCount):
            data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                IsDayReset:%d,
                                ResetType:%d,
                                LimitLV:%d,
                                DayCnt:%d,
                                DayInfoList:%s,
                                TCount:%d,
                                ActionInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.IsDayReset,
                                self.ResetType,
                                self.LimitLV,
                                self.DayCnt,
                                "...",
                                self.TCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastWeekPartyInfo=tagMCFeastWeekPartyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyInfo.Head.Cmd,m_NAtagMCFeastWeekPartyInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyInfo
#------------------------------------------------------
# AA 21 节日巡礼玩家活动信息 #tagMCFeastWeekPartyPlayerInfo
class  tagMCFeastWeekPartyTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TemplateID", c_ushort),    # 模板ID
                  ("CurTimes", c_int),    #已完成次数
                  ("GotTimes", c_int),    #已领取次数
                  ]
    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.TemplateID = 0
        self.CurTimes = 0
        self.GotTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastWeekPartyTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 21 节日巡礼玩家活动信息 //tagMCFeastWeekPartyPlayerInfo:
                                TemplateID:%d,
                                CurTimes:%d,
                                GotTimes:%d
                                '''\
                                %(
                                self.TemplateID,
                                self.CurTimes,
                                self.GotTimes
                                )
        return DumpString
class  tagMCFeastWeekPartyDayPlayerInfo(Structure):
    DayIndex = 0    #(DWORD DayIndex)//第X天
    Point = 0    #(DWORD Point)//积分
    AwardRecord = 0    #(DWORD AwardRecord)//积分领奖记录
    ACount = 0    #(DWORD ACount)//任务条目数
    TaskList = list()    #(vector<tagMCFeastWeekPartyTaskInfo> TaskList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        for i in range(self.ACount):
            temTaskList = tagMCFeastWeekPartyTaskInfo()
            _pos = temTaskList.ReadData(_lpData, _pos)
            self.TaskList.append(temTaskList)
        return _pos
    def Clear(self):
        self.DayIndex = 0
        self.Point = 0
        self.AwardRecord = 0
        self.ACount = 0
        self.TaskList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 4
        for i in range(self.ACount):
            length += self.TaskList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.DayIndex)
        data = CommFunc.WriteDWORD(data, self.Point)
        data = CommFunc.WriteDWORD(data, self.AwardRecord)
        data = CommFunc.WriteDWORD(data, self.ACount)
        for i in range(self.ACount):
            data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayIndex:%d,
                                Point:%d,
                                AwardRecord:%d,
                                ACount:%d,
                                TaskList:%s
                                '''\
                                %(
                                self.DayIndex,
                                self.Point,
                                self.AwardRecord,
                                self.ACount,
                                "..."
                                )
        return DumpString
class  tagMCFeastWeekPartyPlayerInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    DayInfoList = list()    #(vector<tagMCFeastWeekPartyDayPlayerInfo> DayInfoList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x21
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temDayInfoList = tagMCFeastWeekPartyDayPlayerInfo()
            _pos = temDayInfoList.ReadData(_lpData, _pos)
            self.DayInfoList.append(temDayInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x21
        self.Count = 0
        self.DayInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.DayInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                DayInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
#------------------------------------------------------
# AA 02 首充信息 #tagMCFirstGoldInfo
class  tagMCFirstGoldInfo(Structure):
@@ -22441,6 +24237,395 @@
#------------------------------------------------------
# AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
class  tagMCLuckyTreasureItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),    # 物品ID
                  ("ItemCnt", 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.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCLuckyTreasureItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
class  tagMCLuckyTreasureInfo(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点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    LuckyPoint = 0    #(WORD LuckyPoint)// 总幸运值
    Count = 0    #(WORD Count)// 物品数
    ItemList = list()    #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x1F
        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.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temItemList = tagMCLuckyTreasureItem()
            _pos = temItemList.ReadData(_lpData, _pos)
            self.ItemList.append(temItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x1F
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.LimitLV = 0
        self.LuckyPoint = 0
        self.Count = 0
        self.ItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 2
        length += 2
        length += 2
        for i in range(self.Count):
            length += self.ItemList[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.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteWORD(data, self.LuckyPoint)
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                LimitLV:%d,
                                LuckyPoint:%d,
                                Count:%d,
                                ItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.LimitLV,
                                self.LuckyPoint,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
#------------------------------------------------------
# AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
class  tagMCLuckyTreasureResultInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LuckyPoint", c_ushort),    # 当前幸运点
                  ("HasFree", c_ubyte),    # 是否免费过
                  ("ItemID", c_int),    # 物品ID
                  ("ItemCnt", c_ushort),    #物品数量
                  ("IsBind", c_ubyte),    # 是否绑定
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x1E
        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.Cmd = 0xAA
        self.SubCmd = 0x1E
        self.LuckyPoint = 0
        self.HasFree = 0
        self.ItemID = 0
        self.ItemCnt = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCLuckyTreasureResultInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                LuckyPoint:%d,
                                HasFree:%d,
                                ItemID:%d,
                                ItemCnt:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.LuckyPoint,
                                self.HasFree,
                                self.ItemID,
                                self.ItemCnt,
                                self.IsBind
                                )
        return DumpString
m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
#------------------------------------------------------
# AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
class  tagMCNewAllPeoplePartyCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ActID", c_int),    #活动ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ]
    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.ActID = 0
        self.CurTimes = 0
        return
    def GetLength(self):
        return sizeof(tagMCNewAllPeoplePartyCount)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
                                ActID:%d,
                                CurTimes:%d
                                '''\
                                %(
                                self.ActID,
                                self.CurTimes
                                )
        return DumpString
class  tagMCNewAllPeoplePartyInfo(Structure):
    Head = tagHead()
    CurPoint = 0    #(DWORD CurPoint)//当前总点数
    AwardRecord = 0    #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
    Count = 0    #(BYTE Count)
    BuyCountList = list()    #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temBuyCountList = tagMCNewAllPeoplePartyCount()
            _pos = temBuyCountList.ReadData(_lpData, _pos)
            self.BuyCountList.append(temBuyCountList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x23
        self.CurPoint = 0
        self.AwardRecord = 0
        self.Count = 0
        self.BuyCountList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 1
        for i in range(self.Count):
            length += self.BuyCountList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.CurPoint)
        data = CommFunc.WriteDWORD(data, self.AwardRecord)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                CurPoint:%d,
                                AwardRecord:%d,
                                Count:%d,
                                BuyCountList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.CurPoint,
                                self.AwardRecord,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
#------------------------------------------------------
# AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
class  tagMCNewXJSDRecharge(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("State", c_ubyte),    #0-不可领 1-可领 2-已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x22
        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.Cmd = 0xAA
        self.SubCmd = 0x22
        self.State = 0
        return
    def GetLength(self):
        return sizeof(tagMCNewXJSDRecharge)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
                                Cmd:%s,
                                SubCmd:%s,
                                State:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.State
                                )
        return DumpString
m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
#------------------------------------------------------
# AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
class  tagMCRechargeRankTeHuiInfo(Structure):
@@ -23199,7 +25384,7 @@
class  tagMCWeekPartyAction(Structure):
    TemplateID = 0    #(DWORD TemplateID)// 模板ID
    ActionType = 0    #(WORD ActionType)// 活动类别
    TotalTimes = 0    #(BYTE TotalTimes)// 可完成的总次数,0表示不限次数
    TotalTimes = 0    #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
    SingleTimes = 0    #(DWORD SingleTimes)// 单次领奖需要的次数
    Point = 0    #(DWORD Point)// 单次领奖积分
    Count = 0    #(BYTE Count)// 物品数
@@ -23214,7 +25399,7 @@
        self.Clear()
        self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Point,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -23238,7 +25423,7 @@
        length = 0
        length += 4
        length += 2
        length += 1
        length += 4
        length += 4
        length += 4
        length += 1
@@ -23251,7 +25436,7 @@
        data = ''
        data = CommFunc.WriteDWORD(data, self.TemplateID)
        data = CommFunc.WriteWORD(data, self.ActionType)
        data = CommFunc.WriteBYTE(data, self.TotalTimes)
        data = CommFunc.WriteDWORD(data, self.TotalTimes)
        data = CommFunc.WriteDWORD(data, self.SingleTimes)
        data = CommFunc.WriteDWORD(data, self.Point)
        data = CommFunc.WriteBYTE(data, self.Count)
@@ -23352,6 +25537,7 @@
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
@@ -23372,6 +25558,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
@@ -23394,6 +25581,7 @@
        self.Head.SubCmd = 0x0A
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.IsDayReset = 0
        self.ResetType = 0
        self.LimitLV = 0
@@ -23408,6 +25596,7 @@
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        length += 2
@@ -23425,6 +25614,7 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
@@ -23441,6 +25631,7 @@
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                IsDayReset:%d,
                                ResetType:%d,
                                LimitLV:%d,
@@ -23453,6 +25644,7 @@
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.IsDayReset,
                                self.ResetType,
                                self.LimitLV,
@@ -23475,8 +25667,8 @@
    _pack_ = 1
    _fields_ = [
                  ("TemplateID", c_ushort),    # 模板ID
                  ("CurTimes", c_ushort),    #已完成次数
                  ("GotTimes", c_ushort),    #已领取次数
                  ("CurTimes", c_int),    #已完成次数
                  ("GotTimes", c_int),    #已领取次数
                  ]
    def __init__(self):
@@ -24380,6 +26572,62 @@
m_NAtagMCDiceAward=tagMCDiceAward()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDiceAward.Cmd,m_NAtagMCDiceAward.SubCmd))] = m_NAtagMCDiceAward
#------------------------------------------------------
# AB 25 节日红包信息 #tagMCFeastRedPackInfo
class  tagMCFeastRedPackInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MoneyNum", c_int),    # 累积抢到多少钱
                  ("GrabCnt", c_ushort),    # 已抢红包次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAB
        self.SubCmd = 0x25
        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.Cmd = 0xAB
        self.SubCmd = 0x25
        self.MoneyNum = 0
        self.GrabCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastRedPackInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 25 节日红包信息 //tagMCFeastRedPackInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                MoneyNum:%d,
                                GrabCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.MoneyNum,
                                self.GrabCnt
                                )
        return DumpString
m_NAtagMCFeastRedPackInfo=tagMCFeastRedPackInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastRedPackInfo.Cmd,m_NAtagMCFeastRedPackInfo.SubCmd))] = m_NAtagMCFeastRedPackInfo
#------------------------------------------------------
@@ -26866,6 +29114,114 @@
#------------------------------------------------------
# B2 12 诛仙BOSS协助次数 #tagMCZhuXianBossCnt
class  tagMCZhuXianBossCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Cnt", c_ubyte),    # 剩余可协助次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x12
        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.Cmd = 0xB2
        self.SubCmd = 0x12
        self.Cnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCZhuXianBossCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 12 诛仙BOSS协助次数 //tagMCZhuXianBossCnt:
                                Cmd:%s,
                                SubCmd:%s,
                                Cnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Cnt
                                )
        return DumpString
m_NAtagMCZhuXianBossCnt=tagMCZhuXianBossCnt()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianBossCnt.Cmd,m_NAtagMCZhuXianBossCnt.SubCmd))] = m_NAtagMCZhuXianBossCnt
#------------------------------------------------------
# B2 13 诛仙塔通关层数 #tagMCZhuXianTowerInfo
class  tagMCZhuXianTowerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Floor", c_int),    # 已通关层
                  ("LastFloor", c_int),    # 上次挑战层
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x13
        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.Cmd = 0xB2
        self.SubCmd = 0x13
        self.Floor = 0
        self.LastFloor = 0
        return
    def GetLength(self):
        return sizeof(tagMCZhuXianTowerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 13 诛仙塔通关层数 //tagMCZhuXianTowerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                Floor:%d,
                                LastFloor:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Floor,
                                self.LastFloor
                                )
        return DumpString
m_NAtagMCZhuXianTowerInfo=tagMCZhuXianTowerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCZhuXianTowerInfo.Cmd,m_NAtagMCZhuXianTowerInfo.SubCmd))] = m_NAtagMCZhuXianTowerInfo
#------------------------------------------------------
# B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer
class  tagMCAddMaliciousAtkPlayer(Structure):
@@ -27455,6 +29811,118 @@
m_NAtagMCPassiveSetAnswer=tagMCPassiveSetAnswer()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPassiveSetAnswer.Cmd,m_NAtagMCPassiveSetAnswer.SubCmd))] = m_NAtagMCPassiveSetAnswer
#------------------------------------------------------
# B4 13 通知玩家所有已学技能 #tagMCPlayerSkills
class  tagPlayerSkill(Structure):
    _pack_ = 1
    _fields_ = [
                  ("SkillID", c_int),    #技能ID
                  ("RemainTime", c_int),    #剩余时间
                  ("Proficiency", c_int),    #熟练度
                  ]
    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.SkillID = 0
        self.RemainTime = 0
        self.Proficiency = 0
        return
    def GetLength(self):
        return sizeof(tagPlayerSkill)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 13 通知玩家所有已学技能 //tagMCPlayerSkills:
                                SkillID:%d,
                                RemainTime:%d,
                                Proficiency:%d
                                '''\
                                %(
                                self.SkillID,
                                self.RemainTime,
                                self.Proficiency
                                )
        return DumpString
class  tagMCPlayerSkills(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)//技能个数
    Skills = list()    #(vector<tagPlayerSkill> Skills)// 技能数据
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x13
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temSkills = tagPlayerSkill()
            _pos = temSkills.ReadData(_lpData, _pos)
            self.Skills.append(temSkills)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x13
        self.Count = 0
        self.Skills = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.Skills[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.Skills[i].GetLength(), self.Skills[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                Skills:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCPlayerSkills=tagMCPlayerSkills()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerSkills.Head.Cmd,m_NAtagMCPlayerSkills.Head.SubCmd))] = m_NAtagMCPlayerSkills
#------------------------------------------------------
@@ -28188,6 +30656,7 @@
                  ("DayPKCount", c_ubyte),    # 当日已PK次数
                  ("DayWinCount", c_ubyte),    # 当日已胜利次数
                  ("DayBuyCount", c_ubyte),    # 当日已购买次数
                  ("DayItemAddCount", c_ubyte),    # 当日物品增加次数
                  ]
    def __init__(self):
@@ -28212,6 +30681,7 @@
        self.DayPKCount = 0
        self.DayWinCount = 0
        self.DayBuyCount = 0
        self.DayItemAddCount = 0
        return
    def GetLength(self):
@@ -28231,7 +30701,8 @@
                                CWinCount:%d,
                                DayPKCount:%d,
                                DayWinCount:%d,
                                DayBuyCount:%d
                                DayBuyCount:%d,
                                DayItemAddCount:%d
                                '''\
                                %(
                                self.Cmd,
@@ -28243,7 +30714,8 @@
                                self.CWinCount,
                                self.DayPKCount,
                                self.DayWinCount,
                                self.DayBuyCount
                                self.DayBuyCount,
                                self.DayItemAddCount
                                )
        return DumpString