hxp
2021-02-03 602fe4f9eaf193ed5437b91206e02704fd298ce9
Tool/Robot/Protocol/PacketsReceivedPY.py
@@ -1402,7 +1402,7 @@
    Time = 0    #(DWORD Time)//时间
    PlayeJob = 0    #(BYTE PlayeJob)//玩家职业
    MoneyType = 0    #(BYTE MoneyType)//金钱类型
    MoneyNum = 0    #(WORD MoneyNum)//金钱数量
    MoneyNum = 0    #(DWORD MoneyNum)//金钱数量
    GetWay = 0    #(BYTE GetWay)//获得途径
    PacketCnt = 0    #(BYTE PacketCnt)//可抢个数
    State = 0    #(BYTE State)//0未发,1未领取,2已领取,3全部领完
@@ -1421,7 +1421,7 @@
        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoneyNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PacketCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -1450,7 +1450,7 @@
        length += 4
        length += 1
        length += 1
        length += 2
        length += 4
        length += 1
        length += 1
        length += 1
@@ -1466,7 +1466,7 @@
        data = CommFunc.WriteDWORD(data, self.Time)
        data = CommFunc.WriteBYTE(data, self.PlayeJob)
        data = CommFunc.WriteBYTE(data, self.MoneyType)
        data = CommFunc.WriteWORD(data, self.MoneyNum)
        data = CommFunc.WriteDWORD(data, self.MoneyNum)
        data = CommFunc.WriteBYTE(data, self.GetWay)
        data = CommFunc.WriteBYTE(data, self.PacketCnt)
        data = CommFunc.WriteBYTE(data, self.State)
@@ -2326,6 +2326,325 @@
m_NAtagGCViewFamilyRequestInfo=tagGCViewFamilyRequestInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCViewFamilyRequestInfo.Head.Cmd,m_NAtagGCViewFamilyRequestInfo.Head.SubCmd))] = m_NAtagGCViewFamilyRequestInfo
#------------------------------------------------------
# A9 23 竞技场对战记录列表 #tagGCArenaBattleRecordList
class  tagGCArenaBattleRecord(Structure):
    PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
    FightPower = 0    #(DWORD FightPower)//战力,机器人读等级表取等级对应战力
    AddScoreLen = 0    #(BYTE AddScoreLen)
    AddScore = ""    #(String AddScore)//本次对战增加的积分,有正负
    IsWin = 0    #(BYTE IsWin)//是否获胜
    Time = 0    #(DWORD Time)//时间戳
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AddScoreLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AddScore,_pos = CommFunc.ReadString(_lpData, _pos,self.AddScoreLen)
        self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.FightPower = 0
        self.AddScoreLen = 0
        self.AddScore = ""
        self.IsWin = 0
        self.Time = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 2
        length += 4
        length += 1
        length += len(self.AddScore)
        length += 1
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteBYTE(data, self.AddScoreLen)
        data = CommFunc.WriteString(data, self.AddScoreLen, self.AddScore)
        data = CommFunc.WriteBYTE(data, self.IsWin)
        data = CommFunc.WriteDWORD(data, self.Time)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                FightPower:%d,
                                AddScoreLen:%d,
                                AddScore:%s,
                                IsWin:%d,
                                Time:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.FightPower,
                                self.AddScoreLen,
                                self.AddScore,
                                self.IsWin,
                                self.Time
                                )
        return DumpString
class  tagGCArenaBattleRecordList(Structure):
    Head = tagHead()
    RecordCount = 0    #(BYTE RecordCount)
    BattleRecordList = list()    #(vector<tagGCArenaBattleRecord> BattleRecordList)// 对战列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RecordCount):
            temBattleRecordList = tagGCArenaBattleRecord()
            _pos = temBattleRecordList.ReadData(_lpData, _pos)
            self.BattleRecordList.append(temBattleRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x23
        self.RecordCount = 0
        self.BattleRecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.RecordCount):
            length += self.BattleRecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.RecordCount)
        for i in range(self.RecordCount):
            data = CommFunc.WriteString(data, self.BattleRecordList[i].GetLength(), self.BattleRecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RecordCount:%d,
                                BattleRecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RecordCount,
                                "..."
                                )
        return DumpString
m_NAtagGCArenaBattleRecordList=tagGCArenaBattleRecordList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaBattleRecordList.Head.Cmd,m_NAtagGCArenaBattleRecordList.Head.SubCmd))] = m_NAtagGCArenaBattleRecordList
#------------------------------------------------------
# A9 22 竞技场匹配玩家列表 #tagGCArenaMatchList
class  tagGCArenaMatchInfo(Structure):
    PlayerID = 0    #(DWORD PlayerID)//目标玩家ID,小于10000为机器人ID
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(WORD RealmLV)//境界,机器人读境界表取等级对应境界
    FightPower = 0    #(DWORD FightPower)//战力,机器人读等级表取等级对应战力
    Score = 0    #(DWORD Score)//积分
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Score,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        self.FightPower = 0
        self.Score = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 2
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.Score)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                FightPower:%d,
                                Score:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.FightPower,
                                self.Score
                                )
        return DumpString
class  tagGCArenaMatchList(Structure):
    Head = tagHead()
    MatchCount = 0    #(BYTE MatchCount)
    MatchList = list()    #(vector<tagGCArenaMatchInfo> MatchList)// 匹配列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x22
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MatchCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MatchCount):
            temMatchList = tagGCArenaMatchInfo()
            _pos = temMatchList.ReadData(_lpData, _pos)
            self.MatchList.append(temMatchList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x22
        self.MatchCount = 0
        self.MatchList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.MatchCount):
            length += self.MatchList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.MatchCount)
        for i in range(self.MatchCount):
            data = CommFunc.WriteString(data, self.MatchList[i].GetLength(), self.MatchList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                MatchCount:%d,
                                MatchList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.MatchCount,
                                "..."
                                )
        return DumpString
m_NAtagGCArenaMatchList=tagGCArenaMatchList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCArenaMatchList.Head.Cmd,m_NAtagGCArenaMatchList.Head.SubCmd))] = m_NAtagGCArenaMatchList
#------------------------------------------------------
@@ -4745,6 +5064,70 @@
m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
#------------------------------------------------------
# AC 12 跨服运营活动结束 # tagGCCrossActEnd
class  tagGCCrossActEnd(Structure):
    Head = tagHead()
    ActNameLen = 0    #(BYTE ActNameLen)
    ActName = ""    #(String ActName)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x12
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ActName,_pos = CommFunc.ReadString(_lpData, _pos,self.ActNameLen)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x12
        self.ActNameLen = 0
        self.ActName = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += len(self.ActName)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNameLen)
        data = CommFunc.WriteString(data, self.ActNameLen, self.ActName)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNameLen:%d,
                                ActName:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNameLen,
                                self.ActName
                                )
        return DumpString
m_NAtagGCCrossActEnd=tagGCCrossActEnd()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActEnd.Head.Cmd,m_NAtagGCCrossActEnd.Head.SubCmd))] = m_NAtagGCCrossActEnd
#------------------------------------------------------
@@ -7861,7 +8244,7 @@
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BidderPrice = 0    #(DWORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
@@ -7878,7 +8261,7 @@
        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.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -7903,7 +8286,7 @@
        length += 4
        length += 2
        length += 19
        length += 2
        length += 4
        length += 19
        length += 2
        length += len(self.UserData)
@@ -7917,7 +8300,7 @@
        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.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -8024,7 +8407,7 @@
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BidderPrice = 0    #(DWORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
@@ -8041,7 +8424,7 @@
        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.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -8066,7 +8449,7 @@
        length += 4
        length += 2
        length += 19
        length += 2
        length += 4
        length += 19
        length += 2
        length += len(self.UserData)
@@ -8080,7 +8463,7 @@
        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.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -8264,7 +8647,7 @@
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderID = 0    #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BidderPrice = 0    #(DWORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
@@ -8282,7 +8665,7 @@
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -8309,7 +8692,7 @@
        length += 2
        length += 19
        length += 4
        length += 2
        length += 4
        length += 19
        length += 2
        length += len(self.UserData)
@@ -8324,7 +8707,7 @@
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteString(data, 19, self.AddTime)
        data = CommFunc.WriteDWORD(data, self.BidderID)
        data = CommFunc.WriteWORD(data, self.BidderPrice)
        data = CommFunc.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -8543,7 +8926,7 @@
                  ("EquipPlace", c_ubyte),    #当前要升星的装备位
                  ("CurStar", c_ubyte),    #当前星级
                  ("CurRate", c_ubyte),    #当前自动购买后的总概率,不满100则代表拍品库存不足
                  ("AutoBuyCostMoney", c_ushort),    #自动购买所需总消耗
                  ("AutoBuyCostMoney", c_int),    #自动购买所需总消耗
                  ]
    def __init__(self):
@@ -8608,7 +8991,7 @@
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BidderPrice = 0    #(DWORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
@@ -8628,7 +9011,7 @@
        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.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -8659,7 +9042,7 @@
        length += 4
        length += 2
        length += 19
        length += 2
        length += 4
        length += 19
        length += 2
        length += len(self.UserData)
@@ -8676,7 +9059,7 @@
        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.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -8792,7 +9175,7 @@
    ItemID = 0    #(DWORD ItemID)
    ItemCount = 0    #(WORD ItemCount)
    AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
    BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
    BidderPrice = 0    #(DWORD BidderPrice)//竞拍玩家出价
    BiddingTime = ""    #(char BiddingTime[19])//竞价时间 yyyy-MM-dd hh:mm:ss
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
@@ -8809,7 +9192,7 @@
        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.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BiddingTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
@@ -8834,7 +9217,7 @@
        length += 4
        length += 2
        length += 19
        length += 2
        length += 4
        length += 19
        length += 2
        length += len(self.UserData)
@@ -8848,7 +9231,7 @@
        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.WriteDWORD(data, self.BidderPrice)
        data = CommFunc.WriteString(data, 19, self.BiddingTime)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
@@ -10718,6 +11101,190 @@
m_NAtagGCTeamMemFuncDataList=tagGCTeamMemFuncDataList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeamMemFuncDataList.Head.Cmd,m_NAtagGCTeamMemFuncDataList.Head.SubCmd))] = m_NAtagGCTeamMemFuncDataList
#------------------------------------------------------
# C0 07 跨服排行榜信息 #tagGCCrossBillboardInfo
class  tagGCCrossBillboardData(Structure):
    ID = 0    #(DWORD ID)
    Name1 = ""    #(char Name1[33])//名字1,用来显示排序对象名字
    Name2 = ""    #(char Name2[33])//名字2
    Type2 = 0    #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等
    Value1 = 0    #(DWORD Value1)//自定义值1
    Value2 = 0    #(DWORD Value2)//自定义值2
    CmpValue = 0    #(DWORD CmpValue)// 比较权值
    CmpValue2 = 0    #(DWORD CmpValue2)// 比较权值
    CmpValue3 = 0    #(DWORD CmpValue3)// 比较权值
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.ID = 0
        self.Name1 = ""
        self.Name2 = ""
        self.Type2 = 0
        self.Value1 = 0
        self.Value2 = 0
        self.CmpValue = 0
        self.CmpValue2 = 0
        self.CmpValue3 = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 33
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ID)
        data = CommFunc.WriteString(data, 33, self.Name1)
        data = CommFunc.WriteString(data, 33, self.Name2)
        data = CommFunc.WriteBYTE(data, self.Type2)
        data = CommFunc.WriteDWORD(data, self.Value1)
        data = CommFunc.WriteDWORD(data, self.Value2)
        data = CommFunc.WriteDWORD(data, self.CmpValue)
        data = CommFunc.WriteDWORD(data, self.CmpValue2)
        data = CommFunc.WriteDWORD(data, self.CmpValue3)
        return data
    def OutputString(self):
        DumpString = '''
                                ID:%d,
                                Name1:%s,
                                Name2:%s,
                                Type2:%d,
                                Value1:%d,
                                Value2:%d,
                                CmpValue:%d,
                                CmpValue2:%d,
                                CmpValue3:%d
                                '''\
                                %(
                                self.ID,
                                self.Name1,
                                self.Name2,
                                self.Type2,
                                self.Value1,
                                self.Value2,
                                self.CmpValue,
                                self.CmpValue2,
                                self.CmpValue3
                                )
        return DumpString
class  tagGCCrossBillboardInfo(Structure):
    Head = tagHead()
    Type = 0    #(BYTE Type)//榜单类型
    GroupValue1 = 0    #(BYTE GroupValue1)// 分组值1
    GroupValue2 = 0    #(BYTE GroupValue2)// 分组值2,与分组值1组合归为同组榜单数据
    BillboardCount = 0    #(BYTE BillboardCount)
    CrossBillboardDataList = list()    #(vector<tagGCCrossBillboardData> CrossBillboardDataList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x07
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GroupValue2,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.BillboardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.BillboardCount):
            temCrossBillboardDataList = tagGCCrossBillboardData()
            _pos = temCrossBillboardDataList.ReadData(_lpData, _pos)
            self.CrossBillboardDataList.append(temCrossBillboardDataList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xC0
        self.Head.SubCmd = 0x07
        self.Type = 0
        self.GroupValue1 = 0
        self.GroupValue2 = 0
        self.BillboardCount = 0
        self.CrossBillboardDataList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        length += 1
        for i in range(self.BillboardCount):
            length += self.CrossBillboardDataList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Type)
        data = CommFunc.WriteBYTE(data, self.GroupValue1)
        data = CommFunc.WriteBYTE(data, self.GroupValue2)
        data = CommFunc.WriteBYTE(data, self.BillboardCount)
        for i in range(self.BillboardCount):
            data = CommFunc.WriteString(data, self.CrossBillboardDataList[i].GetLength(), self.CrossBillboardDataList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Type:%d,
                                GroupValue1:%d,
                                GroupValue2:%d,
                                BillboardCount:%d,
                                CrossBillboardDataList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Type,
                                self.GroupValue1,
                                self.GroupValue2,
                                self.BillboardCount,
                                "..."
                                )
        return DumpString
m_NAtagGCCrossBillboardInfo=tagGCCrossBillboardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossBillboardInfo.Head.Cmd,m_NAtagGCCrossBillboardInfo.Head.SubCmd))] = m_NAtagGCCrossBillboardInfo
#------------------------------------------------------
@@ -13550,6 +14117,74 @@
m_NAtagMCAllEquipAttrActiveInfo=tagMCAllEquipAttrActiveInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllEquipAttrActiveInfo.Head.Cmd,m_NAtagMCAllEquipAttrActiveInfo.Head.SubCmd))] = m_NAtagMCAllEquipAttrActiveInfo
#------------------------------------------------------
# A3 C3 竞技场玩家信息 #tagMCArenaPlayerInfo
class  tagMCArenaPlayerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsReset", c_ubyte),    #是否是重置的
                  ("Score", c_int),    #当前积分
                  ("BattleCountToday", c_ubyte),    #今日已挑战次数
                  ("MatchRefreshCount", c_ubyte),    #当前已刷新匹配列表次数,每次挑战后会重置
                  ("ItemAddBattleCountToday", c_ubyte),    #今日已使用物品增加的挑战次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xC3
        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 = 0xA3
        self.SubCmd = 0xC3
        self.IsReset = 0
        self.Score = 0
        self.BattleCountToday = 0
        self.MatchRefreshCount = 0
        self.ItemAddBattleCountToday = 0
        return
    def GetLength(self):
        return sizeof(tagMCArenaPlayerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C3 竞技场玩家信息 //tagMCArenaPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                IsReset:%d,
                                Score:%d,
                                BattleCountToday:%d,
                                MatchRefreshCount:%d,
                                ItemAddBattleCountToday:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsReset,
                                self.Score,
                                self.BattleCountToday,
                                self.MatchRefreshCount,
                                self.ItemAddBattleCountToday
                                )
        return DumpString
m_NAtagMCArenaPlayerInfo=tagMCArenaPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCArenaPlayerInfo.Cmd,m_NAtagMCArenaPlayerInfo.SubCmd))] = m_NAtagMCArenaPlayerInfo
#------------------------------------------------------
@@ -17934,7 +18569,7 @@
    StoveLV = 0    #(BYTE StoveLV)// 炼丹炉等级
    StoveExp = 0    #(DWORD StoveExp)// 炼丹炉经验
    ItemID = 0    #(DWORD ItemID)// 合成物品id
    ItemCnt = 0    #(BYTE ItemCnt)// 丹药数量
    ItemCnt = 0    #(WORD ItemCnt)// 丹药数量
    StoveCnt = 0    #(WORD StoveCnt)// 丹药数量
    InfoList = list()    #(vector<tagMCPlayerStoveInfo> InfoList)
    data = None
@@ -17951,7 +18586,7 @@
        self.StoveLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StoveExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.StoveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.StoveCnt):
            temInfoList = tagMCPlayerStoveInfo()
@@ -17978,7 +18613,7 @@
        length += 1
        length += 4
        length += 4
        length += 1
        length += 2
        length += 2
        for i in range(self.StoveCnt):
            length += self.InfoList[i].GetLength()
@@ -17991,7 +18626,7 @@
        data = CommFunc.WriteBYTE(data, self.StoveLV)
        data = CommFunc.WriteDWORD(data, self.StoveExp)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteBYTE(data, self.ItemCnt)
        data = CommFunc.WriteWORD(data, self.ItemCnt)
        data = CommFunc.WriteWORD(data, self.StoveCnt)
        for i in range(self.StoveCnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
@@ -19242,7 +19877,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("LV", c_ubyte),    #等阶
                  ("EatItemCount", c_ushort),    #当前阶已吃丹个数
                  ("EatItemCount", c_int),    #当前阶已吃丹个数
                  ("SkinPlusState", c_int),    #幻化激活状态,按位存储是否激活,幻化编号ID对应位
                  ]
@@ -20982,6 +21617,58 @@
m_NAtagMCCollectAwardItemInfo=tagMCCollectAwardItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectAwardItemInfo.Head.Cmd,m_NAtagMCCollectAwardItemInfo.Head.SubCmd))] = m_NAtagMCCollectAwardItemInfo
#------------------------------------------------------
# A7 20 创角奖励领奖状态 #tagMCCreateRoleAwardState
class  tagMCCreateRoleAwardState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("GetState", c_ubyte),    # 是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA7
        self.SubCmd = 0x20
        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 = 0xA7
        self.SubCmd = 0x20
        self.GetState = 0
        return
    def GetLength(self):
        return sizeof(tagMCCreateRoleAwardState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 20 创角奖励领奖状态 //tagMCCreateRoleAwardState:
                                Cmd:%s,
                                SubCmd:%s,
                                GetState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.GetState
                                )
        return DumpString
m_NAtagMCCreateRoleAwardState=tagMCCreateRoleAwardState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCreateRoleAwardState.Cmd,m_NAtagMCCreateRoleAwardState.SubCmd))] = m_NAtagMCCreateRoleAwardState
#------------------------------------------------------
@@ -23445,6 +24132,593 @@
#------------------------------------------------------
# AA 40 集字活动信息 #tagMCActCollectWordsInfo
class  tagMCActCollectWordsNeedItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCActCollectWordsNeedItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 40 集字活动信息 //tagMCActCollectWordsInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCActCollectWordsExchangeItem(Structure):
    ExchangeNum = 0    #(BYTE ExchangeNum)//兑换编号
    ExchangeCountMax = 0    #(BYTE ExchangeCountMax)//最大兑换次数,0不限制
    ItemID = 0    #(DWORD ItemID)//目标物品
    ItemCount = 0    #(WORD ItemCount)
    IsBind = 0    #(BYTE IsBind)
    NeedItemCount = 0    #(BYTE NeedItemCount)
    NeedItemList = list()    #(vector<tagMCActCollectWordsNeedItem> NeedItemList)// 所需物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ExchangeNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExchangeCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NeedItemCount):
            temNeedItemList = tagMCActCollectWordsNeedItem()
            _pos = temNeedItemList.ReadData(_lpData, _pos)
            self.NeedItemList.append(temNeedItemList)
        return _pos
    def Clear(self):
        self.ExchangeNum = 0
        self.ExchangeCountMax = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        self.NeedItemCount = 0
        self.NeedItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 4
        length += 2
        length += 1
        length += 1
        for i in range(self.NeedItemCount):
            length += self.NeedItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ExchangeNum)
        data = CommFunc.WriteBYTE(data, self.ExchangeCountMax)
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteWORD(data, self.ItemCount)
        data = CommFunc.WriteBYTE(data, self.IsBind)
        data = CommFunc.WriteBYTE(data, self.NeedItemCount)
        for i in range(self.NeedItemCount):
            data = CommFunc.WriteString(data, self.NeedItemList[i].GetLength(), self.NeedItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ExchangeNum:%d,
                                ExchangeCountMax:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d,
                                NeedItemCount:%d,
                                NeedItemList:%s
                                '''\
                                %(
                                self.ExchangeNum,
                                self.ExchangeCountMax,
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind,
                                self.NeedItemCount,
                                "..."
                                )
        return DumpString
class  tagMCActCollectWordsInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    LastDayOnlyExchange = 0    #(BYTE LastDayOnlyExchange)//最后一天是否仅兑换
    ExchangeCount = 0    #(BYTE ExchangeCount)
    ExchangeItemList = list()    #(vector<tagMCActCollectWordsExchangeItem> ExchangeItemList)//兑换组合列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x40
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LastDayOnlyExchange,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ExchangeCount):
            temExchangeItemList = tagMCActCollectWordsExchangeItem()
            _pos = temExchangeItemList.ReadData(_lpData, _pos)
            self.ExchangeItemList.append(temExchangeItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x40
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.LimitLV = 0
        self.LastDayOnlyExchange = 0
        self.ExchangeCount = 0
        self.ExchangeItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 10
        length += 10
        length += 2
        length += 1
        length += 1
        for i in range(self.ExchangeCount):
            length += self.ExchangeItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.LastDayOnlyExchange)
        data = CommFunc.WriteBYTE(data, self.ExchangeCount)
        for i in range(self.ExchangeCount):
            data = CommFunc.WriteString(data, self.ExchangeItemList[i].GetLength(), self.ExchangeItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                LimitLV:%d,
                                LastDayOnlyExchange:%d,
                                ExchangeCount:%d,
                                ExchangeItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.LimitLV,
                                self.LastDayOnlyExchange,
                                self.ExchangeCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActCollectWordsInfo=tagMCActCollectWordsInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsInfo.Head.Cmd,m_NAtagMCActCollectWordsInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsInfo
#------------------------------------------------------
# AA 41 集字活动玩家信息 #tagMCActCollectWordsPlayerInfo
class  tagMCActCollectWordsExchangeInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ExchangeNum", c_ubyte),    #兑换编号
                  ("ExchangeCount", 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.ExchangeNum = 0
        self.ExchangeCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCActCollectWordsExchangeInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 41 集字活动玩家信息 //tagMCActCollectWordsPlayerInfo:
                                ExchangeNum:%d,
                                ExchangeCount:%d
                                '''\
                                %(
                                self.ExchangeNum,
                                self.ExchangeCount
                                )
        return DumpString
class  tagMCActCollectWordsPlayerInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号,1 或 2,相互独立的活动,可同时开启
    ExchangeCount = 0    #(BYTE ExchangeCount)
    ExchangeInfoList = list()    #(vector<tagMCActCollectWordsExchangeInfo> ExchangeInfoList)//兑换数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x41
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ExchangeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ExchangeCount):
            temExchangeInfoList = tagMCActCollectWordsExchangeInfo()
            _pos = temExchangeInfoList.ReadData(_lpData, _pos)
            self.ExchangeInfoList.append(temExchangeInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x41
        self.ActNum = 0
        self.ExchangeCount = 0
        self.ExchangeInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        for i in range(self.ExchangeCount):
            length += self.ExchangeInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteBYTE(data, self.ExchangeCount)
        for i in range(self.ExchangeCount):
            data = CommFunc.WriteString(data, self.ExchangeInfoList[i].GetLength(), self.ExchangeInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                ExchangeCount:%d,
                                ExchangeInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.ExchangeCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActCollectWordsPlayerInfo=tagMCActCollectWordsPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActCollectWordsPlayerInfo.Head.Cmd,m_NAtagMCActCollectWordsPlayerInfo.Head.SubCmd))] = m_NAtagMCActCollectWordsPlayerInfo
#------------------------------------------------------
# AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
class  tagMCActGrowupBuyCTGItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCActGrowupBuyCTGItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 31 成长必买活动信息 //tagMCActGrowupBuyInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCActGrowupBuyCTGInfo(Structure):
    CTGID = 0    #(BYTE CTGID)// 充值表ID
    GainItemCount = 0    #(BYTE GainItemCount)// 获得物品数
    GainItemList = list()    #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.CTGID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GainItemCount):
            temGainItemList = tagMCActGrowupBuyCTGItem()
            _pos = temGainItemList.ReadData(_lpData, _pos)
            self.GainItemList.append(temGainItemList)
        return _pos
    def Clear(self):
        self.CTGID = 0
        self.GainItemCount = 0
        self.GainItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        for i in range(self.GainItemCount):
            length += self.GainItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.CTGID)
        data = CommFunc.WriteBYTE(data, self.GainItemCount)
        for i in range(self.GainItemCount):
            data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                CTGID:%d,
                                GainItemCount:%d,
                                GainItemList:%s
                                '''\
                                %(
                                self.CTGID,
                                self.GainItemCount,
                                "..."
                                )
        return DumpString
class  tagMCActGrowupBuyGroup(Structure):
    BuyCount = 0    #(BYTE BuyCount)// 循环购买礼包数
    BuyCTGIDList = list()    #(vector<tagMCActGrowupBuyCTGInfo> BuyCTGIDList)// 循环购买礼包充值ID信息列表
    PlayerBuyIndex = 0    #(BYTE PlayerBuyIndex)// 玩家当前可购买的礼包充值ID在列表中索引
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.BuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.BuyCount):
            temBuyCTGIDList = tagMCActGrowupBuyCTGInfo()
            _pos = temBuyCTGIDList.ReadData(_lpData, _pos)
            self.BuyCTGIDList.append(temBuyCTGIDList)
        self.PlayerBuyIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.BuyCount = 0
        self.BuyCTGIDList = list()
        self.PlayerBuyIndex = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        for i in range(self.BuyCount):
            length += self.BuyCTGIDList[i].GetLength()
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.BuyCount)
        for i in range(self.BuyCount):
            data = CommFunc.WriteString(data, self.BuyCTGIDList[i].GetLength(), self.BuyCTGIDList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.PlayerBuyIndex)
        return data
    def OutputString(self):
        DumpString = '''
                                BuyCount:%d,
                                BuyCTGIDList:%s,
                                PlayerBuyIndex:%d
                                '''\
                                %(
                                self.BuyCount,
                                "...",
                                self.PlayerBuyIndex
                                )
        return DumpString
class  tagMCActGrowupBuyInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    GroupCount = 0    #(BYTE GroupCount)// 循环购买礼包组数
    GroupList = list()    #(vector<tagMCActGrowupBuyGroup> GroupList)//循环购买礼包组列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x31
        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.GroupCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GroupCount):
            temGroupList = tagMCActGrowupBuyGroup()
            _pos = temGroupList.ReadData(_lpData, _pos)
            self.GroupList.append(temGroupList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x31
        self.StartDate = ""
        self.EndtDate = ""
        self.GroupCount = 0
        self.GroupList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        for i in range(self.GroupCount):
            length += self.GroupList[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.GroupCount)
        for i in range(self.GroupCount):
            data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                GroupCount:%d,
                                GroupList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.GroupCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo
#------------------------------------------------------
# AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
class  tagMCActLoginAwardAction(Structure):
@@ -24216,6 +25490,7 @@
class  tagMCActTotalRechargeInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
@@ -24233,6 +25508,7 @@
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
@@ -24249,6 +25525,7 @@
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x1D
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.IsDayReset = 0
@@ -24260,6 +25537,7 @@
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 10
        length += 10
        length += 1
@@ -24273,6 +25551,7 @@
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ActNum)
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
@@ -24285,6 +25564,7 @@
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                IsDayReset:%d,
@@ -24294,6 +25574,7 @@
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.IsDayReset,
@@ -24878,13 +26159,434 @@
#------------------------------------------------------
# AA 32 跨服充值排行活动信息 #tagMCCACTGBillboardInfo
class  tagMCCACTGBillboardAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),    # 是否拍品
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCCACTGBillboardAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 32 跨服充值排行活动信息 //tagMCCACTGBillboardInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCCACTGBillboardDabiao(Structure):
    AwardIndex = 0    #(BYTE AwardIndex)// 奖励索引 0~31
    NeedRMB = 0    #(DWORD NeedRMB)// 所需充值RMB
    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
    AwardItemList = list()    #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItemList = tagMCCACTGBillboardAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.AwardIndex = 0
        self.NeedRMB = 0
        self.AwardItemCount = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 4
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.AwardIndex)
        data = CommFunc.WriteDWORD(data, self.NeedRMB)
        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
        for i in range(self.AwardItemCount):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                AwardIndex:%d,
                                NeedRMB:%d,
                                AwardItemCount:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.AwardIndex,
                                self.NeedRMB,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
class  tagMCCACTGBillboardOrder(Structure):
    OrderA = 0    #(BYTE OrderA)// 名次A
    OrderB = 0    #(BYTE OrderB)// 至名次B
    NeedRMB = 0    #(DWORD NeedRMB)// 所需充值RMB,未达标的该名次空,排名后面的玩家向下顺延
    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
    AwardItemList = list()    #(vector<tagMCCACTGBillboardAwardItem> AwardItemList)// 奖励物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.OrderA,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.OrderB,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedRMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItemList = tagMCCACTGBillboardAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.OrderA = 0
        self.OrderB = 0
        self.NeedRMB = 0
        self.AwardItemCount = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 4
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.OrderA)
        data = CommFunc.WriteBYTE(data, self.OrderB)
        data = CommFunc.WriteDWORD(data, self.NeedRMB)
        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
        for i in range(self.AwardItemCount):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                OrderA:%d,
                                OrderB:%d,
                                NeedRMB:%d,
                                AwardItemCount:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.OrderA,
                                self.OrderB,
                                self.NeedRMB,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
class  tagMCCACTGBillboardTempInfo(Structure):
    TemplateID = 0    #(BYTE TemplateID)// 活动模板ID
    DabiaoAwardCount = 0    #(BYTE DabiaoAwardCount)// 达标奖励档数
    DabiaoAwardInfo = list()    #(vector<tagMCCACTGBillboardDabiao> DabiaoAwardInfo)// 达标奖励信息
    OrderAwardCount = 0    #(BYTE OrderAwardCount)// 排行奖励档数
    OrderAwardInfo = list()    #(vector<tagMCCACTGBillboardOrder> OrderAwardInfo)// 排行奖励信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.DabiaoAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DabiaoAwardCount):
            temDabiaoAwardInfo = tagMCCACTGBillboardDabiao()
            _pos = temDabiaoAwardInfo.ReadData(_lpData, _pos)
            self.DabiaoAwardInfo.append(temDabiaoAwardInfo)
        self.OrderAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.OrderAwardCount):
            temOrderAwardInfo = tagMCCACTGBillboardOrder()
            _pos = temOrderAwardInfo.ReadData(_lpData, _pos)
            self.OrderAwardInfo.append(temOrderAwardInfo)
        return _pos
    def Clear(self):
        self.TemplateID = 0
        self.DabiaoAwardCount = 0
        self.DabiaoAwardInfo = list()
        self.OrderAwardCount = 0
        self.OrderAwardInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        for i in range(self.DabiaoAwardCount):
            length += self.DabiaoAwardInfo[i].GetLength()
        length += 1
        for i in range(self.OrderAwardCount):
            length += self.OrderAwardInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.TemplateID)
        data = CommFunc.WriteBYTE(data, self.DabiaoAwardCount)
        for i in range(self.DabiaoAwardCount):
            data = CommFunc.WriteString(data, self.DabiaoAwardInfo[i].GetLength(), self.DabiaoAwardInfo[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.OrderAwardCount)
        for i in range(self.OrderAwardCount):
            data = CommFunc.WriteString(data, self.OrderAwardInfo[i].GetLength(), self.OrderAwardInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                TemplateID:%d,
                                DabiaoAwardCount:%d,
                                DabiaoAwardInfo:%s,
                                OrderAwardCount:%d,
                                OrderAwardInfo:%s
                                '''\
                                %(
                                self.TemplateID,
                                self.DabiaoAwardCount,
                                "...",
                                self.OrderAwardCount,
                                "..."
                                )
        return DumpString
class  tagMCCACTGBillboardInfo(Structure):
    Head = tagHead()
    ServerInfoLen = 0    #(BYTE ServerInfoLen)
    ServerIDRangeInfo = ""    #(String ServerIDRangeInfo)//开放该活动的服务器ID范围列表,json格式 [[IDA, IDB], ...], [] 为全服
    GroupValue1 = 0    #(BYTE GroupValue1)// 活动榜单分组值1,用于查询对应榜单
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    TemplateID = 0    #(BYTE TemplateID)// 当前活动模板ID
    TemplateCount = 0    #(BYTE TemplateCount)
    TempInfo = list()    #(vector<tagMCCACTGBillboardTempInfo> TempInfo)// 模板信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x32
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ServerInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerIDRangeInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.ServerInfoLen)
        self.GroupValue1,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.TemplateID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TemplateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TemplateCount):
            temTempInfo = tagMCCACTGBillboardTempInfo()
            _pos = temTempInfo.ReadData(_lpData, _pos)
            self.TempInfo.append(temTempInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x32
        self.ServerInfoLen = 0
        self.ServerIDRangeInfo = ""
        self.GroupValue1 = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.TemplateID = 0
        self.TemplateCount = 0
        self.TempInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += len(self.ServerIDRangeInfo)
        length += 1
        length += 10
        length += 10
        length += 1
        length += 1
        for i in range(self.TemplateCount):
            length += self.TempInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ServerInfoLen)
        data = CommFunc.WriteString(data, self.ServerInfoLen, self.ServerIDRangeInfo)
        data = CommFunc.WriteBYTE(data, self.GroupValue1)
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.TemplateID)
        data = CommFunc.WriteBYTE(data, self.TemplateCount)
        for i in range(self.TemplateCount):
            data = CommFunc.WriteString(data, self.TempInfo[i].GetLength(), self.TempInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ServerInfoLen:%d,
                                ServerIDRangeInfo:%s,
                                GroupValue1:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                TemplateID:%d,
                                TemplateCount:%d,
                                TempInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ServerInfoLen,
                                self.ServerIDRangeInfo,
                                self.GroupValue1,
                                self.StartDate,
                                self.EndtDate,
                                self.TemplateID,
                                self.TemplateCount,
                                "..."
                                )
        return DumpString
m_NAtagMCCACTGBillboardInfo=tagMCCACTGBillboardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardInfo.Head.Cmd,m_NAtagMCCACTGBillboardInfo.Head.SubCmd))] = m_NAtagMCCACTGBillboardInfo
#------------------------------------------------------
# AA 33 跨服充值排行活动玩家信息 #tagMCCACTGBillboardPlayerInfo
class  tagMCCACTGBillboardPlayerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CTGRMBTotal", c_int),    # 活动已累计充值RMB
                  ("DabiaoAwardRecord", c_int),    # 达标奖励记录,与达标奖励索引位或运算判断是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x33
        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 = 0x33
        self.CTGRMBTotal = 0
        self.DabiaoAwardRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCCACTGBillboardPlayerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 33 跨服充值排行活动玩家信息 //tagMCCACTGBillboardPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                CTGRMBTotal:%d,
                                DabiaoAwardRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CTGRMBTotal,
                                self.DabiaoAwardRecord
                                )
        return DumpString
m_NAtagMCCACTGBillboardPlayerInfo=tagMCCACTGBillboardPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCACTGBillboardPlayerInfo.Cmd,m_NAtagMCCACTGBillboardPlayerInfo.SubCmd))] = m_NAtagMCCACTGBillboardPlayerInfo
#------------------------------------------------------
# AA 09 消费返利活动信息 #tagMCCostRebateInfo
class  tagMCCostRebateAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),    
                  ("ItemCount", c_ushort),
                  ("ItemCount", c_int),
                  ("IsBind", c_ubyte),    
                  ]
@@ -25541,6 +27243,636 @@
#------------------------------------------------------
# AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
class  tagMCFeastLoginDayAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastLoginDayAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 42 节日登录奖励活动信息 //tagMCFeastLoginInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCFeastLoginDayAward(Structure):
    DayNum = 0    #(BYTE DayNum)//天编号,从1开始,活动第X天只能领对应第X天的奖励
    AwardCount = 0    #(BYTE AwardCount)
    AwardItemList = list()    #(vector<tagMCFeastLoginDayAwardItem> AwardItemList)// 奖励物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardCount):
            temAwardItemList = tagMCFeastLoginDayAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.DayNum = 0
        self.AwardCount = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        for i in range(self.AwardCount):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.DayNum)
        data = CommFunc.WriteBYTE(data, self.AwardCount)
        for i in range(self.AwardCount):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayNum:%d,
                                AwardCount:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.DayNum,
                                self.AwardCount,
                                "..."
                                )
        return DumpString
class  tagMCFeastLoginInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    DayCount = 0    #(BYTE DayCount)// 总共几天
    DayAwardList = list()    #(vector<tagMCFeastLoginDayAward> DayAwardList)//登录天奖励列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x42
        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.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DayCount):
            temDayAwardList = tagMCFeastLoginDayAward()
            _pos = temDayAwardList.ReadData(_lpData, _pos)
            self.DayAwardList.append(temDayAwardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x42
        self.StartDate = ""
        self.EndtDate = ""
        self.DayCount = 0
        self.DayAwardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        for i in range(self.DayCount):
            length += self.DayAwardList[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.DayCount)
        for i in range(self.DayCount):
            data = CommFunc.WriteString(data, self.DayAwardList[i].GetLength(), self.DayAwardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                DayCount:%d,
                                DayAwardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.DayCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastLoginInfo=tagMCFeastLoginInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginInfo.Head.Cmd,m_NAtagMCFeastLoginInfo.Head.SubCmd))] = m_NAtagMCFeastLoginInfo
#------------------------------------------------------
# AA 46 节日游历活动信息 #tagMCFeastTravelInfo
class  tagMCFeastTravelAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCFeastTravelAward(Structure):
    AwardIndex = 0    #(BYTE AwardIndex)//游历奖励索引
    NeedTravelPoint = 0    #(WORD NeedTravelPoint)//单次领奖所需游历值
    AwardCountMax = 0    #(BYTE AwardCountMax)//最大可领取次数,0代表不限
    AwardItemCount = 0    #(BYTE AwardItemCount)//奖励物品数
    AwardItemList = list()    #(vector<tagMCFeastTravelAwardItem> AwardItemList)//奖励物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.AwardIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedTravelPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.AwardCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItemList = tagMCFeastTravelAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.AwardIndex = 0
        self.NeedTravelPoint = 0
        self.AwardCountMax = 0
        self.AwardItemCount = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2
        length += 1
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.AwardIndex)
        data = CommFunc.WriteWORD(data, self.NeedTravelPoint)
        data = CommFunc.WriteBYTE(data, self.AwardCountMax)
        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
        for i in range(self.AwardItemCount):
            data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                AwardIndex:%d,
                                NeedTravelPoint:%d,
                                AwardCountMax:%d,
                                AwardItemCount:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.AwardIndex,
                                self.NeedTravelPoint,
                                self.AwardCountMax,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
class  tagMCFeastTravelTask(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TravelTaskID", c_ubyte),    #游历任务ID
                  ("FinishNeedValue", c_ushort),    #单次完成所需进度
                  ("FinishTimeMax", c_ubyte),    #最大可完成次数,0代表不限
                  ("AddTravelPoint", c_ubyte),    #单次完成获得游历值
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.TravelTaskID = 0
        self.FinishNeedValue = 0
        self.FinishTimeMax = 0
        self.AddTravelPoint = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelTask)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 46 节日游历活动信息 //tagMCFeastTravelInfo:
                                TravelTaskID:%d,
                                FinishNeedValue:%d,
                                FinishTimeMax:%d,
                                AddTravelPoint:%d
                                '''\
                                %(
                                self.TravelTaskID,
                                self.FinishNeedValue,
                                self.FinishTimeMax,
                                self.AddTravelPoint
                                )
        return DumpString
class  tagMCFeastTravelInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
    TravelTaskCount = 0    #(BYTE TravelTaskCount)// 游历任务数
    TravelTaskList = list()    #(vector<tagMCFeastTravelTask> TravelTaskList)//游历任务信息列表
    TravelAwardCount = 0    #(BYTE TravelAwardCount)// 游历奖励数
    TravelAwardList = list()    #(vector<tagMCFeastTravelAward> TravelAwardList)//游历奖励信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x46
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TravelTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelTaskCount):
            temTravelTaskList = tagMCFeastTravelTask()
            _pos = temTravelTaskList.ReadData(_lpData, _pos)
            self.TravelTaskList.append(temTravelTaskList)
        self.TravelAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelAwardCount):
            temTravelAwardList = tagMCFeastTravelAward()
            _pos = temTravelAwardList.ReadData(_lpData, _pos)
            self.TravelAwardList.append(temTravelAwardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x46
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.TravelTaskCount = 0
        self.TravelTaskList = list()
        self.TravelAwardCount = 0
        self.TravelAwardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 1
        for i in range(self.TravelTaskCount):
            length += self.TravelTaskList[i].GetLength()
        length += 1
        for i in range(self.TravelAwardCount):
            length += self.TravelAwardList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteBYTE(data, self.TravelTaskCount)
        for i in range(self.TravelTaskCount):
            data = CommFunc.WriteString(data, self.TravelTaskList[i].GetLength(), self.TravelTaskList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TravelAwardCount)
        for i in range(self.TravelAwardCount):
            data = CommFunc.WriteString(data, self.TravelAwardList[i].GetLength(), self.TravelAwardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                TravelTaskCount:%d,
                                TravelTaskList:%s,
                                TravelAwardCount:%d,
                                TravelAwardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.TravelTaskCount,
                                "...",
                                self.TravelAwardCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastTravelInfo=tagMCFeastTravelInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelInfo.Head.Cmd,m_NAtagMCFeastTravelInfo.Head.SubCmd))] = m_NAtagMCFeastTravelInfo
#------------------------------------------------------
# AA 47 节日游历活动玩家信息 #tagMCFeastTravelPlayerInfo
class  tagMCFeastTravelPlayerAward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("AwardIndex", c_ubyte),    #游历奖励索引
                  ("GetAwardCount", c_ubyte),    #已领取次数;前端判断是否可领取: 总游历值 >=  (已领取次数 + 1)  * 单次所需游历值
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.AwardIndex = 0
        self.GetAwardCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelPlayerAward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
                                AwardIndex:%d,
                                GetAwardCount:%d
                                '''\
                                %(
                                self.AwardIndex,
                                self.GetAwardCount
                                )
        return DumpString
class  tagMCFeastTravelPlayerTask(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TravelTaskID", c_ubyte),    #游历任务ID
                  ("TravelValue", c_int),    #当前进度值,一直累加
                  ("FinishCount", c_ubyte),    #当前已完成次数; 前端计算未完成次数的进度值=max(0, 当前进度值 - (完成次数 * 单次所需进度))
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.TravelTaskID = 0
        self.TravelValue = 0
        self.FinishCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastTravelPlayerTask)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 47 节日游历活动玩家信息 //tagMCFeastTravelPlayerInfo:
                                TravelTaskID:%d,
                                TravelValue:%d,
                                FinishCount:%d
                                '''\
                                %(
                                self.TravelTaskID,
                                self.TravelValue,
                                self.FinishCount
                                )
        return DumpString
class  tagMCFeastTravelPlayerInfo(Structure):
    Head = tagHead()
    TravelPoint = 0    #(DWORD TravelPoint)//当前总游历值,一直累加,不会扣的
    TravelPlayerTaskCount = 0    #(BYTE TravelPlayerTaskCount)// 游历任务数,不一定有同步,有同步数据则替换即可
    TravelPlayerTaskList = list()    #(vector<tagMCFeastTravelPlayerTask> TravelPlayerTaskList)//游历任务信息列表
    TravelPlayerAwardCount = 0    #(BYTE TravelPlayerAwardCount)// 游历奖励数,不一定有同步,有同步数据则替换即可
    TravelPlayerAwardList = list()    #(vector<tagMCFeastTravelPlayerAward> TravelPlayerAwardList)//游历奖励信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x47
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.TravelPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TravelPlayerTaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelPlayerTaskCount):
            temTravelPlayerTaskList = tagMCFeastTravelPlayerTask()
            _pos = temTravelPlayerTaskList.ReadData(_lpData, _pos)
            self.TravelPlayerTaskList.append(temTravelPlayerTaskList)
        self.TravelPlayerAwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TravelPlayerAwardCount):
            temTravelPlayerAwardList = tagMCFeastTravelPlayerAward()
            _pos = temTravelPlayerAwardList.ReadData(_lpData, _pos)
            self.TravelPlayerAwardList.append(temTravelPlayerAwardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x47
        self.TravelPoint = 0
        self.TravelPlayerTaskCount = 0
        self.TravelPlayerTaskList = list()
        self.TravelPlayerAwardCount = 0
        self.TravelPlayerAwardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.TravelPlayerTaskCount):
            length += self.TravelPlayerTaskList[i].GetLength()
        length += 1
        for i in range(self.TravelPlayerAwardCount):
            length += self.TravelPlayerAwardList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.TravelPoint)
        data = CommFunc.WriteBYTE(data, self.TravelPlayerTaskCount)
        for i in range(self.TravelPlayerTaskCount):
            data = CommFunc.WriteString(data, self.TravelPlayerTaskList[i].GetLength(), self.TravelPlayerTaskList[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TravelPlayerAwardCount)
        for i in range(self.TravelPlayerAwardCount):
            data = CommFunc.WriteString(data, self.TravelPlayerAwardList[i].GetLength(), self.TravelPlayerAwardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                TravelPoint:%d,
                                TravelPlayerTaskCount:%d,
                                TravelPlayerTaskList:%s,
                                TravelPlayerAwardCount:%d,
                                TravelPlayerAwardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.TravelPoint,
                                self.TravelPlayerTaskCount,
                                "...",
                                self.TravelPlayerAwardCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastTravelPlayerInfo=tagMCFeastTravelPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastTravelPlayerInfo.Head.Cmd,m_NAtagMCFeastTravelPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastTravelPlayerInfo
#------------------------------------------------------
# AA 20 节日巡礼活动信息 #tagMCFeastWeekPartyInfo
class  tagMCFeastWeekPartyItem(Structure):
@@ -26050,6 +28382,414 @@
m_NAtagMCFeastWeekPartyPlayerInfo=tagMCFeastWeekPartyPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWeekPartyPlayerInfo.Head.Cmd,m_NAtagMCFeastWeekPartyPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWeekPartyPlayerInfo
#------------------------------------------------------
# AA 43 节日祝福活动信息 #tagMCFeastWishInfo
class  tagMCFeastWishBottleItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RecordIndex", c_ubyte),    #物品索引,用于选择及记录是否已选择
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.RecordIndex = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastWishBottleItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 43 节日祝福活动信息 //tagMCFeastWishInfo:
                                RecordIndex:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.RecordIndex,
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCFeastWishBottleInfo(Structure):
    BottleNum = 0    #(BYTE BottleNum)//瓶子编号
    NeedWishValue = 0    #(WORD NeedWishValue)//单次领奖所需祝福值
    ChooseTimeMax = 0    #(BYTE ChooseTimeMax)//最大可领奖次数
    ChoosePrizeCount = 0    #(BYTE ChoosePrizeCount)//可选择奖励个数
    ChoosePrizeList = list()    #(vector<tagMCFeastWishBottleItem> ChoosePrizeList)// 选择奖励物品列表,已选过的无法再选
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.BottleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ChooseTimeMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ChoosePrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ChoosePrizeCount):
            temChoosePrizeList = tagMCFeastWishBottleItem()
            _pos = temChoosePrizeList.ReadData(_lpData, _pos)
            self.ChoosePrizeList.append(temChoosePrizeList)
        return _pos
    def Clear(self):
        self.BottleNum = 0
        self.NeedWishValue = 0
        self.ChooseTimeMax = 0
        self.ChoosePrizeCount = 0
        self.ChoosePrizeList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2
        length += 1
        length += 1
        for i in range(self.ChoosePrizeCount):
            length += self.ChoosePrizeList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.BottleNum)
        data = CommFunc.WriteWORD(data, self.NeedWishValue)
        data = CommFunc.WriteBYTE(data, self.ChooseTimeMax)
        data = CommFunc.WriteBYTE(data, self.ChoosePrizeCount)
        for i in range(self.ChoosePrizeCount):
            data = CommFunc.WriteString(data, self.ChoosePrizeList[i].GetLength(), self.ChoosePrizeList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                BottleNum:%d,
                                NeedWishValue:%d,
                                ChooseTimeMax:%d,
                                ChoosePrizeCount:%d,
                                ChoosePrizeList:%s
                                '''\
                                %(
                                self.BottleNum,
                                self.NeedWishValue,
                                self.ChooseTimeMax,
                                self.ChoosePrizeCount,
                                "..."
                                )
        return DumpString
class  tagMCFeastWishInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
    WishPoolShowCount = 0    #(BYTE WishPoolShowCount)//祝福池展示物品数
    WishPoolShowItemList = list()    #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
    BottleCount = 0    #(BYTE BottleCount)// 祝福瓶个数
    BottleInfoList = list()    #(vector<tagMCFeastWishBottleInfo> BottleInfoList)// 祝福瓶信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x43
        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.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.WishPoolShowCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.WishPoolShowItemList.append(value)
        self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.BottleCount):
            temBottleInfoList = tagMCFeastWishBottleInfo()
            _pos = temBottleInfoList.ReadData(_lpData, _pos)
            self.BottleInfoList.append(temBottleInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x43
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.WishPoolShowCount = 0
        self.WishPoolShowItemList = list()
        self.BottleCount = 0
        self.BottleInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 1
        length += 4 * self.WishPoolShowCount
        length += 1
        for i in range(self.BottleCount):
            length += self.BottleInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
        for i in range(self.WishPoolShowCount):
            data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
        data = CommFunc.WriteBYTE(data, self.BottleCount)
        for i in range(self.BottleCount):
            data = CommFunc.WriteString(data, self.BottleInfoList[i].GetLength(), self.BottleInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                WishPoolShowCount:%d,
                                WishPoolShowItemList:%s,
                                BottleCount:%d,
                                BottleInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.WishPoolShowCount,
                                "...",
                                self.BottleCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastWishInfo=tagMCFeastWishInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishInfo.Head.Cmd,m_NAtagMCFeastWishInfo.Head.SubCmd))] = m_NAtagMCFeastWishInfo
#------------------------------------------------------
# AA 44 节日祝福活动玩家信息 #tagMCFeastWishPlayerInfo
class  tagMCFeastWishPlayerBottle(Structure):
    _pack_ = 1
    _fields_ = [
                  ("BottleNum", c_ubyte),    #瓶子编号
                  ("WishValue", c_ushort),    #当前可用祝福值
                  ("ChooseRecord", 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.BottleNum = 0
        self.WishValue = 0
        self.ChooseRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCFeastWishPlayerBottle)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 44 节日祝福活动玩家信息 //tagMCFeastWishPlayerInfo:
                                BottleNum:%d,
                                WishValue:%d,
                                ChooseRecord:%d
                                '''\
                                %(
                                self.BottleNum,
                                self.WishValue,
                                self.ChooseRecord
                                )
        return DumpString
class  tagMCFeastWishPlayerInfo(Structure):
    Head = tagHead()
    BottleCount = 0    #(BYTE BottleCount)// 祝福瓶个数
    PlayerBottleInfo = list()    #(vector<tagMCFeastWishPlayerBottle> PlayerBottleInfo)// 祝福瓶信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x44
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.BottleCount):
            temPlayerBottleInfo = tagMCFeastWishPlayerBottle()
            _pos = temPlayerBottleInfo.ReadData(_lpData, _pos)
            self.PlayerBottleInfo.append(temPlayerBottleInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x44
        self.BottleCount = 0
        self.PlayerBottleInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.BottleCount):
            length += self.PlayerBottleInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.BottleCount)
        for i in range(self.BottleCount):
            data = CommFunc.WriteString(data, self.PlayerBottleInfo[i].GetLength(), self.PlayerBottleInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                BottleCount:%d,
                                PlayerBottleInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.BottleCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFeastWishPlayerInfo=tagMCFeastWishPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishPlayerInfo.Head.Cmd,m_NAtagMCFeastWishPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWishPlayerInfo
#------------------------------------------------------
# AA 45 节日祝福祝福结果 #tagMCFeastWishResult
class  tagMCFeastWishResult(Structure):
    Head = tagHead()
    AddWishValue = 0    #(WORD AddWishValue)// 本次增加的祝福值
    WishResultLen = 0    #(WORD WishResultLen)
    WishResult = ""    #(String WishResult)//  获得物品结果[[物品ID,个数,是否绑定], ...]
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x45
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AddWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.WishResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.WishResult,_pos = CommFunc.ReadString(_lpData, _pos,self.WishResultLen)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x45
        self.AddWishValue = 0
        self.WishResultLen = 0
        self.WishResult = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 2
        length += len(self.WishResult)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.AddWishValue)
        data = CommFunc.WriteWORD(data, self.WishResultLen)
        data = CommFunc.WriteString(data, self.WishResultLen, self.WishResult)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AddWishValue:%d,
                                WishResultLen:%d,
                                WishResult:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AddWishValue,
                                self.WishResultLen,
                                self.WishResult
                                )
        return DumpString
m_NAtagMCFeastWishResult=tagMCFeastWishResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishResult.Head.Cmd,m_NAtagMCFeastWishResult.Head.SubCmd))] = m_NAtagMCFeastWishResult
#------------------------------------------------------
@@ -28006,6 +30746,7 @@
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    #活动编号从1开始,目前支持两个累充活动同时存在且相互独立 1或2
                  ("GoldTotal", c_int),    #本次活动已累计充值仙玉数
                  ("AwardRecord", c_int),    #奖励领奖记录,按奖励索引二进制位存储是否已领取
                  ]
@@ -28024,6 +30765,7 @@
    def Clear(self):
        self.Cmd = 0xAA
        self.SubCmd = 0x1C
        self.ActNum = 0
        self.GoldTotal = 0
        self.AwardRecord = 0
        return
@@ -28038,12 +30780,14 @@
        DumpString = '''// AA 1C 累计充值玩家活动信息 //tagMCTotalRechargePlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                GoldTotal:%d,
                                AwardRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.GoldTotal,
                                self.AwardRecord
                                )