hxp
2023-10-08 a1f053eb420898b323a18b9e260aaec34af2992a
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -1243,6 +1243,66 @@
#------------------------------------------------------
# A4 0E 家族boss副本信息 #tagGCFamilyBosFBInfo
class  tagGCFamilyBosFBInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HurtTotal", c_int),    # 仙盟累计伤血,亿求余部分
                  ("HurtTotalPoint", c_int),    # 仙盟累计伤血,亿整除部分
                  ("FightMemCount", c_ubyte),    # 目前正在仙盟boss副本中的成员数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA4
        self.SubCmd = 0x0E
        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 = 0xA4
        self.SubCmd = 0x0E
        self.HurtTotal = 0
        self.HurtTotalPoint = 0
        self.FightMemCount = 0
        return
    def GetLength(self):
        return sizeof(tagGCFamilyBosFBInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A4 0E 家族boss副本信息 //tagGCFamilyBosFBInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                HurtTotal:%d,
                                HurtTotalPoint:%d,
                                FightMemCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HurtTotal,
                                self.HurtTotalPoint,
                                self.FightMemCount
                                )
        return DumpString
m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo
#------------------------------------------------------
# A4 02 家族boss副本开启及击杀信息 #tagGCFamilyBossFBInfo
class  tagGCFamilyBossFBInfo(Structure):
@@ -4880,6 +4940,215 @@
m_NAtagGCRecommendFriendsInfo=tagGCRecommendFriendsInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRecommendFriendsInfo.Head.Cmd,m_NAtagGCRecommendFriendsInfo.Head.SubCmd))] = m_NAtagGCRecommendFriendsInfo
#------------------------------------------------------
# A9 AD 通知天星塔全服奖励通关玩家信息 #tagGCSkyTowerPassPlayerInfo
class  tagGCSkyTowerPassPlayer(Structure):
    PlayerID = 0    #(DWORD PlayerID)
    PlayerName = ""    #(char PlayerName[33])
    Job = 0    #(BYTE Job)
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(WORD RealmLV)//境界
    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)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Job = 0
        self.LV = 0
        self.RealmLV = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 1
        length += 2
        length += 2
        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)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Job:%d,
                                LV:%d,
                                RealmLV:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Job,
                                self.LV,
                                self.RealmLV
                                )
        return DumpString
class  tagGCSkyTowerPassFloor(Structure):
    FloorID = 0    #(DWORD FloorID)// 层ID
    PassPlayerCount = 0    #(BYTE PassPlayerCount)// 通关记录玩家数
    PassPlayerIDList = list()    #(vector<DWORD> PassPlayerIDList)// 通关记录玩家ID列表 [第1个通过玩家ID, 第2个, ...]
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.FloorID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PassPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PassPlayerCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.PassPlayerIDList.append(value)
        return _pos
    def Clear(self):
        self.FloorID = 0
        self.PassPlayerCount = 0
        self.PassPlayerIDList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 4 * self.PassPlayerCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.FloorID)
        data = CommFunc.WriteBYTE(data, self.PassPlayerCount)
        for i in range(self.PassPlayerCount):
            data = CommFunc.WriteDWORD(data, self.PassPlayerIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                FloorID:%d,
                                PassPlayerCount:%d,
                                PassPlayerIDList:%s
                                '''\
                                %(
                                self.FloorID,
                                self.PassPlayerCount,
                                "..."
                                )
        return DumpString
class  tagGCSkyTowerPassPlayerInfo(Structure):
    Head = tagHead()
    FloorCount = 0    #(WORD FloorCount)
    PassFloorList = list()    #(vector<tagGCSkyTowerPassFloor> PassFloorList)// 通关塔层信息列表
    PlayerCount = 0    #(WORD PlayerCount)
    PassPlayerList = list()    #(vector<tagGCSkyTowerPassPlayer> PassPlayerList)// 通关玩家信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0xAD
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.FloorCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.FloorCount):
            temPassFloorList = tagGCSkyTowerPassFloor()
            _pos = temPassFloorList.ReadData(_lpData, _pos)
            self.PassFloorList.append(temPassFloorList)
        self.PlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.PlayerCount):
            temPassPlayerList = tagGCSkyTowerPassPlayer()
            _pos = temPassPlayerList.ReadData(_lpData, _pos)
            self.PassPlayerList.append(temPassPlayerList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0xAD
        self.FloorCount = 0
        self.PassFloorList = list()
        self.PlayerCount = 0
        self.PassPlayerList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.FloorCount):
            length += self.PassFloorList[i].GetLength()
        length += 2
        for i in range(self.PlayerCount):
            length += self.PassPlayerList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.FloorCount)
        for i in range(self.FloorCount):
            data = CommFunc.WriteString(data, self.PassFloorList[i].GetLength(), self.PassFloorList[i].GetBuffer())
        data = CommFunc.WriteWORD(data, self.PlayerCount)
        for i in range(self.PlayerCount):
            data = CommFunc.WriteString(data, self.PassPlayerList[i].GetLength(), self.PassPlayerList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                FloorCount:%d,
                                PassFloorList:%s,
                                PlayerCount:%d,
                                PassPlayerList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.FloorCount,
                                "...",
                                self.PlayerCount,
                                "..."
                                )
        return DumpString
m_NAtagGCSkyTowerPassPlayerInfo=tagGCSkyTowerPassPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSkyTowerPassPlayerInfo.Head.Cmd,m_NAtagGCSkyTowerPassPlayerInfo.Head.SubCmd))] = m_NAtagGCSkyTowerPassPlayerInfo
#------------------------------------------------------
@@ -15140,6 +15409,118 @@
#------------------------------------------------------
# C0 11 跨服妖魔boss玩家伤害信息 #tagGCCrossYaomoBossPlayerHurtInfo
class  tagGCCrossYaomoBossPlayerHurtInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HurtTotal", c_int),    # 总伤害值,小于亿部分
                  ("HurtTotalEx", c_int),    # 总伤害值,整除亿部分
                  ("AwardState", c_int),    # 伤害目标值领奖状态,按奖励记录索引位运算判断是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        self.SubCmd = 0x11
        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 = 0xC0
        self.SubCmd = 0x11
        self.HurtTotal = 0
        self.HurtTotalEx = 0
        self.AwardState = 0
        return
    def GetLength(self):
        return sizeof(tagGCCrossYaomoBossPlayerHurtInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C0 11 跨服妖魔boss玩家伤害信息 //tagGCCrossYaomoBossPlayerHurtInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                HurtTotal:%d,
                                HurtTotalEx:%d,
                                AwardState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HurtTotal,
                                self.HurtTotalEx,
                                self.AwardState
                                )
        return DumpString
m_NAtagGCCrossYaomoBossPlayerHurtInfo=tagGCCrossYaomoBossPlayerHurtInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossYaomoBossPlayerHurtInfo.Cmd,m_NAtagGCCrossYaomoBossPlayerHurtInfo.SubCmd))] = m_NAtagGCCrossYaomoBossPlayerHurtInfo
#------------------------------------------------------
# C0 10 跨服所属分区信息 #tagGCCrossZoneInfo
class  tagGCCrossZoneInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("CommZoneID", c_ubyte),    # 所属常规分区ID
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xC0
        self.SubCmd = 0x10
        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 = 0xC0
        self.SubCmd = 0x10
        self.CommZoneID = 0
        return
    def GetLength(self):
        return sizeof(tagGCCrossZoneInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// C0 10 跨服所属分区信息 //tagGCCrossZoneInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                CommZoneID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.CommZoneID
                                )
        return DumpString
m_NAtagGCCrossZoneInfo=tagGCCrossZoneInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossZoneInfo.Cmd,m_NAtagGCCrossZoneInfo.SubCmd))] = m_NAtagGCCrossZoneInfo
#------------------------------------------------------
# C0 14 幸运云购开奖记录 #tagGCLuckyCloudBuyLotteryRecInfo
class  tagGCLuckyCloudBuyLotteryRec(Structure):
@@ -15479,13 +15860,67 @@
        return DumpString
class  tagGCLuckyCloudBuyRoundTime(Structure):
    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
    RoundMax = 0    #(BYTE RoundMax)// 本时段最大轮次
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
        self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
        self.RoundMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.StartTime = ""
        self.EndtTime = ""
        self.RoundMax = 0
        return
    def GetLength(self):
        length = 0
        length += 5
        length += 5
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 5, self.StartTime)
        data = CommFunc.WriteString(data, 5, self.EndtTime)
        data = CommFunc.WriteBYTE(data, self.RoundMax)
        return data
    def OutputString(self):
        DumpString = '''
                                StartTime:%s,
                                EndtTime:%s,
                                RoundMax:%d
                                '''\
                                %(
                                self.StartTime,
                                self.EndtTime,
                                self.RoundMax
                                )
        return DumpString
class  tagGCLuckyCloudBuyRoundInfo(Structure):
    Head = tagHead()
    ZoneID = 0    #(BYTE ZoneID)// 所属分区ID
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    RoundTimeCount = 0    #(BYTE RoundTimeCount)
    RoundTimeList = list()    #(vector<tagGCLuckyCloudBuyRoundTime> RoundTimeList)//轮次时间段
    RoundID = 0    #(DWORD RoundID)// 轮次唯一ID标识,当收到的轮次ID变更时,前端需清空购买号码记录缓存
    RoundNum = 0    #(BYTE RoundNum)// 今日第几轮
    RoundNum = 0    #(BYTE RoundNum)// 当前时段第几轮
    SuperItemID = 0    #(DWORD SuperItemID)// 大奖物品ID
    SuperItemCount = 0    #(BYTE SuperItemCount)// 大奖物品个数
    SuperItemMoneyType = 0    #(BYTE SuperItemMoneyType)// 大奖价值货币类型
@@ -15509,6 +15944,11 @@
        self.ZoneID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.RoundTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RoundTimeCount):
            temRoundTimeList = tagGCLuckyCloudBuyRoundTime()
            _pos = temRoundTimeList.ReadData(_lpData, _pos)
            self.RoundTimeList.append(temRoundTimeList)
        self.RoundID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RoundNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SuperItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
@@ -15536,6 +15976,8 @@
        self.ZoneID = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.RoundTimeCount = 0
        self.RoundTimeList = list()
        self.RoundID = 0
        self.RoundNum = 0
        self.SuperItemID = 0
@@ -15555,6 +15997,9 @@
        length += 1
        length += 10
        length += 10
        length += 1
        for i in range(self.RoundTimeCount):
            length += self.RoundTimeList[i].GetLength()
        length += 4
        length += 1
        length += 4
@@ -15577,6 +16022,9 @@
        data = CommFunc.WriteBYTE(data, self.ZoneID)
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.RoundTimeCount)
        for i in range(self.RoundTimeCount):
            data = CommFunc.WriteString(data, self.RoundTimeList[i].GetLength(), self.RoundTimeList[i].GetBuffer())
        data = CommFunc.WriteDWORD(data, self.RoundID)
        data = CommFunc.WriteBYTE(data, self.RoundNum)
        data = CommFunc.WriteDWORD(data, self.SuperItemID)
@@ -15598,6 +16046,8 @@
                                ZoneID:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                RoundTimeCount:%d,
                                RoundTimeList:%s,
                                RoundID:%d,
                                RoundNum:%d,
                                SuperItemID:%d,
@@ -15615,6 +16065,8 @@
                                self.ZoneID,
                                self.StartDate,
                                self.EndtDate,
                                self.RoundTimeCount,
                                "...",
                                self.RoundID,
                                self.RoundNum,
                                self.SuperItemID,
@@ -15691,6 +16143,8 @@
                  ("RecordID", c_ubyte),    
                  ("TodayPayCount", c_ushort),    # 今日已购买次数
                  ("TotalPayCount", c_int),    # 累计总购买次数
                  ("WeekPayCount", c_ushort),    # 周总购买次数
                  ("MonthPayCount", c_ushort),    # 月总购买次数
                  ]
    def __init__(self):
@@ -15706,6 +16160,8 @@
        self.RecordID = 0
        self.TodayPayCount = 0
        self.TotalPayCount = 0
        self.WeekPayCount = 0
        self.MonthPayCount = 0
        return
    def GetLength(self):
@@ -15718,12 +16174,16 @@
        DumpString = '''// A1 10 充值购买次数信息 //tagMCCoinToGoldCountInfo:
                                RecordID:%d,
                                TodayPayCount:%d,
                                TotalPayCount:%d
                                TotalPayCount:%d,
                                WeekPayCount:%d,
                                MonthPayCount:%d
                                '''\
                                %(
                                self.RecordID,
                                self.TodayPayCount,
                                self.TotalPayCount
                                self.TotalPayCount,
                                self.WeekPayCount,
                                self.MonthPayCount
                                )
        return DumpString
@@ -17991,6 +18451,7 @@
                  ("KillCnt", c_int),    #击杀次数
                  ("ItemAddCnt", c_int),    #物品增加次数
                  ("BuyCnt", c_ubyte),    #购买次数
                  ("KillCntTotal", c_int),    #击杀次数 - 累计
                  ]
    def __init__(self):
@@ -18007,6 +18468,7 @@
        self.KillCnt = 0
        self.ItemAddCnt = 0
        self.BuyCnt = 0
        self.KillCntTotal = 0
        return
    def GetLength(self):
@@ -18020,13 +18482,15 @@
                                BossType:%d,
                                KillCnt:%d,
                                ItemAddCnt:%d,
                                BuyCnt:%d
                                BuyCnt:%d,
                                KillCntTotal:%d
                                '''\
                                %(
                                self.BossType,
                                self.KillCnt,
                                self.ItemAddCnt,
                                self.BuyCnt
                                self.BuyCnt,
                                self.KillCntTotal
                                )
        return DumpString
@@ -18449,6 +18913,118 @@
m_NAtagMCCollectionItemInfo=tagMCCollectionItemInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectionItemInfo.Head.Cmd,m_NAtagMCCollectionItemInfo.Head.SubCmd))] = m_NAtagMCCollectionItemInfo
#------------------------------------------------------
# A3 CC 自定义奖励信息 #tagMCCustomAwardInfo
class  tagMCCustomAwardState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("KeyNum", c_ushort),    # 奖励记录key编号,0~255,每个key存31个ID记录  0-30为编号0, 31-61为编号1..
                  ("CanGetState", c_int),    # 是否可领取;按位记录是否可领取
                  ("GetState", 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.KeyNum = 0
        self.CanGetState = 0
        self.GetState = 0
        return
    def GetLength(self):
        return sizeof(tagMCCustomAwardState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 CC 自定义奖励信息 //tagMCCustomAwardInfo:
                                KeyNum:%d,
                                CanGetState:%d,
                                GetState:%d
                                '''\
                                %(
                                self.KeyNum,
                                self.CanGetState,
                                self.GetState
                                )
        return DumpString
class  tagMCCustomAwardInfo(Structure):
    Head = tagHead()
    RecordStateCnt = 0    #(WORD RecordStateCnt)// 记录个数
    RecordStateList = list()    #(vector<tagMCCustomAwardState> RecordStateList)// 记录列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCC
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RecordStateCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.RecordStateCnt):
            temRecordStateList = tagMCCustomAwardState()
            _pos = temRecordStateList.ReadData(_lpData, _pos)
            self.RecordStateList.append(temRecordStateList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCC
        self.RecordStateCnt = 0
        self.RecordStateList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.RecordStateCnt):
            length += self.RecordStateList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.RecordStateCnt)
        for i in range(self.RecordStateCnt):
            data = CommFunc.WriteString(data, self.RecordStateList[i].GetLength(), self.RecordStateList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RecordStateCnt:%d,
                                RecordStateList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RecordStateCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCCustomAwardInfo=tagMCCustomAwardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCustomAwardInfo.Head.Cmd,m_NAtagMCCustomAwardInfo.Head.SubCmd))] = m_NAtagMCCustomAwardInfo
#------------------------------------------------------
@@ -20633,6 +21209,338 @@
#------------------------------------------------------
# A3 C7 古宝信息 #tagMCGubaoInfo
class  tagMCGubao(Structure):
    _pack_ = 1
    _fields_ = [
                  ("GubaoID", c_ushort),
                  ("GubaoStar", c_ubyte),
                  ("GubaoLV", 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.GubaoID = 0
        self.GubaoStar = 0
        self.GubaoLV = 0
        return
    def GetLength(self):
        return sizeof(tagMCGubao)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C7 古宝信息 //tagMCGubaoInfo:
                                GubaoID:%d,
                                GubaoStar:%d,
                                GubaoLV:%d
                                '''\
                                %(
                                self.GubaoID,
                                self.GubaoStar,
                                self.GubaoLV
                                )
        return DumpString
class  tagMCGubaoInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    GubaoInfoList = list()    #(vector<tagMCGubao> GubaoInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC7
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temGubaoInfoList = tagMCGubao()
            _pos = temGubaoInfoList.ReadData(_lpData, _pos)
            self.GubaoInfoList.append(temGubaoInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC7
        self.Count = 0
        self.GubaoInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.GubaoInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.GubaoInfoList[i].GetLength(), self.GubaoInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                GubaoInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCGubaoInfo=tagMCGubaoInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoInfo.Head.Cmd,m_NAtagMCGubaoInfo.Head.SubCmd))] = m_NAtagMCGubaoInfo
#------------------------------------------------------
# A3 CA 古宝物品特殊效果信息 #tagMCGubaoItemEffInfo
class  tagMCGubaoItemEff(Structure):
    _pack_ = 1
    _fields_ = [
                  ("GubaoID", c_ushort),
                  ("EffType", c_ubyte),    # 不同古宝ID允许拥有相同效果类型,进度值每个古宝ID单独统计
                  ("EffValue", 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.GubaoID = 0
        self.EffType = 0
        self.EffValue = 0
        return
    def GetLength(self):
        return sizeof(tagMCGubaoItemEff)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 CA 古宝物品特殊效果信息 //tagMCGubaoItemEffInfo:
                                GubaoID:%d,
                                EffType:%d,
                                EffValue:%d
                                '''\
                                %(
                                self.GubaoID,
                                self.EffType,
                                self.EffValue
                                )
        return DumpString
class  tagMCGubaoItemEffInfo(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    ItemEffInfoList = list()    #(vector<tagMCGubaoItemEff> ItemEffInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCA
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temItemEffInfoList = tagMCGubaoItemEff()
            _pos = temItemEffInfoList.ReadData(_lpData, _pos)
            self.ItemEffInfoList.append(temItemEffInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCA
        self.Count = 0
        self.ItemEffInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.ItemEffInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ItemEffInfoList[i].GetLength(), self.ItemEffInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ItemEffInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCGubaoItemEffInfo=tagMCGubaoItemEffInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoItemEffInfo.Head.Cmd,m_NAtagMCGubaoItemEffInfo.Head.SubCmd))] = m_NAtagMCGubaoItemEffInfo
#------------------------------------------------------
# A3 CB 古宝碎片信息 #tagMCGubaoPieceInfo
class  tagMCGubaoPiece(Structure):
    _pack_ = 1
    _fields_ = [
                  ("GubaoID", c_ushort),
                  ("PieceCount", 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.GubaoID = 0
        self.PieceCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCGubaoPiece)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 CB 古宝碎片信息 //tagMCGubaoPieceInfo:
                                GubaoID:%d,
                                PieceCount:%d
                                '''\
                                %(
                                self.GubaoID,
                                self.PieceCount
                                )
        return DumpString
class  tagMCGubaoPieceInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    PieceInfoList = list()    #(vector<tagMCGubaoPiece> PieceInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCB
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temPieceInfoList = tagMCGubaoPiece()
            _pos = temPieceInfoList.ReadData(_lpData, _pos)
            self.PieceInfoList.append(temPieceInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCB
        self.Count = 0
        self.PieceInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.PieceInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.PieceInfoList[i].GetLength(), self.PieceInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                PieceInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCGubaoPieceInfo=tagMCGubaoPieceInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGubaoPieceInfo.Head.Cmd,m_NAtagMCGubaoPieceInfo.Head.SubCmd))] = m_NAtagMCGubaoPieceInfo
#------------------------------------------------------
# A3 28 历史累积充值奖励领取记录 #tagMCHistoryReChargeAwardRecord
class  tagMCHistoryReChargeAwardRecord(Structure):
@@ -20802,6 +21710,222 @@
m_NAtagMCHorsePetSkinData=tagMCHorsePetSkinData()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorsePetSkinData.Head.Cmd,m_NAtagMCHorsePetSkinData.Head.SubCmd))] = m_NAtagMCHorsePetSkinData
#------------------------------------------------------
# A3 10 通知坐骑幻化时效信息 #tagMCHorseSkinTimeInfoList
class  tagMCHorseSkinTimeInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ID", c_int),    # 对应坐骑幻化表ID
                  ("InvalidTime", 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.ID = 0
        self.InvalidTime = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorseSkinTimeInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 10 通知坐骑幻化时效信息 //tagMCHorseSkinTimeInfoList:
                                ID:%d,
                                InvalidTime:%d
                                '''\
                                %(
                                self.ID,
                                self.InvalidTime
                                )
        return DumpString
class  tagMCHorseSkinTimeInfoList(Structure):
    Head = tagHead()
    TimeCnt = 0    #(BYTE TimeCnt)//个数
    TimeInfoList = list()    #(vector<tagMCHorseSkinTimeInfo> TimeInfoList)// 数据列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x10
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.TimeCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TimeCnt):
            temTimeInfoList = tagMCHorseSkinTimeInfo()
            _pos = temTimeInfoList.ReadData(_lpData, _pos)
            self.TimeInfoList.append(temTimeInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x10
        self.TimeCnt = 0
        self.TimeInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.TimeCnt):
            length += self.TimeInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.TimeCnt)
        for i in range(self.TimeCnt):
            data = CommFunc.WriteString(data, self.TimeInfoList[i].GetLength(), self.TimeInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                TimeCnt:%d,
                                TimeInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.TimeCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCHorseSkinTimeInfoList=tagMCHorseSkinTimeInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseSkinTimeInfoList.Head.Cmd,m_NAtagMCHorseSkinTimeInfoList.Head.SubCmd))] = m_NAtagMCHorseSkinTimeInfoList
#------------------------------------------------------
# A3 CD 坐骑星级信息 #tagMCHorseStarInfo
class  tagMCHorseStar(Structure):
    _pack_ = 1
    _fields_ = [
                  ("HorseID", c_int),    # 坐骑表ID
                  ("Star", 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.HorseID = 0
        self.Star = 0
        return
    def GetLength(self):
        return sizeof(tagMCHorseStar)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo:
                                HorseID:%d,
                                Star:%d
                                '''\
                                %(
                                self.HorseID,
                                self.Star
                                )
        return DumpString
class  tagMCHorseStarInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    HorseStarList = list()    #(vector<tagMCHorseStar> HorseStarList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCD
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temHorseStarList = tagMCHorseStar()
            _pos = temHorseStarList.ReadData(_lpData, _pos)
            self.HorseStarList.append(temHorseStarList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCD
        self.Count = 0
        self.HorseStarList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.HorseStarList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                HorseStarList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCHorseStarInfo=tagMCHorseStarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo
#------------------------------------------------------
@@ -21957,6 +23081,7 @@
    ItemAddCnt = 0    #(WORD ItemAddCnt)//物品增加次数
    PassGradeCnt = 0    #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID
    PassGrade = list()    #(vector<DWORD> PassGrade)//副本线路对应星级值列表
    EnterCntTotal = 0    #(DWORD EnterCntTotal)//累计进入次数
    data = None
    def __init__(self):
@@ -21973,6 +23098,7 @@
        for i in range(self.PassGradeCnt):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.PassGrade.append(value)
        self.EnterCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -21982,6 +23108,7 @@
        self.ItemAddCnt = 0
        self.PassGradeCnt = 0
        self.PassGrade = list()
        self.EnterCntTotal = 0
        return
    def GetLength(self):
@@ -21992,6 +23119,7 @@
        length += 2
        length += 1
        length += 4 * self.PassGradeCnt
        length += 4
        return length
@@ -22004,6 +23132,7 @@
        data = CommFunc.WriteBYTE(data, self.PassGradeCnt)
        for i in range(self.PassGradeCnt):
            data = CommFunc.WriteDWORD(data, self.PassGrade[i])
        data = CommFunc.WriteDWORD(data, self.EnterCntTotal)
        return data
    def OutputString(self):
@@ -22013,7 +23142,8 @@
                                RecoverCnt:%d,
                                ItemAddCnt:%d,
                                PassGradeCnt:%d,
                                PassGrade:%s
                                PassGrade:%s,
                                EnterCntTotal:%d
                                '''\
                                %(
                                self.FBID,
@@ -22021,7 +23151,8 @@
                                self.RecoverCnt,
                                self.ItemAddCnt,
                                self.PassGradeCnt,
                                "..."
                                "...",
                                self.EnterCntTotal
                                )
        return DumpString
@@ -22806,6 +23937,185 @@
#------------------------------------------------------
# A3 C8 神通等级信息 #tagMCShentongLVInfo
class  tagMCShentongLV(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ShentongID", c_ubyte),
                  ("ClassLV", c_ubyte),
                  ("LV", 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.ShentongID = 0
        self.ClassLV = 0
        self.LV = 0
        return
    def GetLength(self):
        return sizeof(tagMCShentongLV)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C8 神通等级信息 //tagMCShentongLVInfo:
                                ShentongID:%d,
                                ClassLV:%d,
                                LV:%d
                                '''\
                                %(
                                self.ShentongID,
                                self.ClassLV,
                                self.LV
                                )
        return DumpString
class  tagMCShentongLVInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    ShentongLVList = list()    #(vector<tagMCShentongLV> ShentongLVList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC8
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temShentongLVList = tagMCShentongLV()
            _pos = temShentongLVList.ReadData(_lpData, _pos)
            self.ShentongLVList.append(temShentongLVList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC8
        self.Count = 0
        self.ShentongLVList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.ShentongLVList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.ShentongLVList[i].GetLength(), self.ShentongLVList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                ShentongLVList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShentongLVInfo=tagMCShentongLVInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongLVInfo.Head.Cmd,m_NAtagMCShentongLVInfo.Head.SubCmd))] = m_NAtagMCShentongLVInfo
#------------------------------------------------------
# A3 C9 神通技能设置信息 #tagMCShentongSkillInfo
class  tagMCShentongSkillInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    SkillIDList = list()    #(vector<DWORD> SkillIDList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC9
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkillIDList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xC9
        self.Count = 0
        self.SkillIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4 * self.Count
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteDWORD(data, self.SkillIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                SkillIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCShentongSkillInfo=tagMCShentongSkillInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShentongSkillInfo.Head.Cmd,m_NAtagMCShentongSkillInfo.Head.SubCmd))] = m_NAtagMCShentongSkillInfo
#------------------------------------------------------
# A3 44 当日累计充值多选一礼包信息 #tagMCSingleGoldGift
class  tagMCSingleGoldGift(Structure):
@@ -23460,6 +24770,58 @@
#------------------------------------------------------
# A3 43  成就积分信息 #tagMCSuccessScoreInfo
class  tagMCSuccessScoreInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ScoreAwardState", c_int),    #成就积分领奖记录,按奖励索引位记录是否领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x43
        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 = 0x43
        self.ScoreAwardState = 0
        return
    def GetLength(self):
        return sizeof(tagMCSuccessScoreInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 43  成就积分信息 //tagMCSuccessScoreInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ScoreAwardState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ScoreAwardState
                                )
        return DumpString
m_NAtagMCSuccessScoreInfo=tagMCSuccessScoreInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuccessScoreInfo.Cmd,m_NAtagMCSuccessScoreInfo.SubCmd))] = m_NAtagMCSuccessScoreInfo
#------------------------------------------------------
#A3 14 通知各功能的祝福值  #tagMCSyncBlessValue
class  tagMCSyncSingleBlessValue(Structure):
@@ -23650,6 +25012,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("IsPass", c_ubyte),    #是否通关副本
                  ("XXZLAwardState", c_int),    #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
                  ]
    def __init__(self):
@@ -23667,6 +25030,7 @@
        self.Cmd = 0xA3
        self.SubCmd = 0x11
        self.IsPass = 0
        self.XXZLAwardState = 0
        return
    def GetLength(self):
@@ -23679,18 +25043,128 @@
        DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                IsPass:%d
                                IsPass:%d,
                                XXZLAwardState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsPass
                                self.IsPass,
                                self.XXZLAwardState
                                )
        return DumpString
m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo
#------------------------------------------------------
# A3 CE 称号星级信息 #tagMCTitleStarInfo
class  tagMCTitleStar(Structure):
    _pack_ = 1
    _fields_ = [
                  ("TitleID", c_int),    # 称号ID
                  ("Star", 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.TitleID = 0
        self.Star = 0
        return
    def GetLength(self):
        return sizeof(tagMCTitleStar)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo:
                                TitleID:%d,
                                Star:%d
                                '''\
                                %(
                                self.TitleID,
                                self.Star
                                )
        return DumpString
class  tagMCTitleStarInfo(Structure):
    Head = tagHead()
    Count = 0    #(BYTE Count)
    TitleStarList = list()    #(vector<tagMCTitleStar> TitleStarList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCE
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temTitleStarList = tagMCTitleStar()
            _pos = temTitleStarList.ReadData(_lpData, _pos)
            self.TitleStarList.append(temTitleStarList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0xCE
        self.Count = 0
        self.TitleStarList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Count):
            length += self.TitleStarList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                TitleStarList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCTitleStarInfo=tagMCTitleStarInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo
#------------------------------------------------------
@@ -23984,10 +25458,12 @@
    Head = tagHead()
    LV = 0    #(BYTE LV)//等阶
    EatItemCount = 0    #(DWORD EatItemCount)//当前阶已吃丹个数
    SkinPlusState = 0    #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位
    SkinPlusState = 0    #(DWORD SkinPlusState)//幻化激活状态,按位存储是否激活,幻化编号ID对应位,废弃,使用 SkinPlusStateList
    TrainTypes = 0    #(BYTE TrainTypes)//培养类型数
    TrainLVList = list()    #(vector<DWORD> TrainLVList)//培养等阶列表,索引为培养类型减1
    TrainItemCountList = list()    #(vector<DWORD> TrainItemCountList)//培养当前阶已吃培养丹个数列表,索引为培养类型减1
    SkinPlusStateCount = 0    #(BYTE SkinPlusStateCount)//幻化激活状态值数
    SkinPlusStateList = list()    #(vector<DWORD> SkinPlusStateList)//幻化激活状态值列表,按位存储是否激活,幻化编号ID对应位
    data = None
    def __init__(self):
@@ -24009,6 +25485,10 @@
        for i in range(self.TrainTypes):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.TrainItemCountList.append(value)
        self.SkinPlusStateCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.SkinPlusStateCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.SkinPlusStateList.append(value)
        return _pos
    def Clear(self):
@@ -24022,6 +25502,8 @@
        self.TrainTypes = 0
        self.TrainLVList = list()
        self.TrainItemCountList = list()
        self.SkinPlusStateCount = 0
        self.SkinPlusStateList = list()
        return
    def GetLength(self):
@@ -24033,6 +25515,8 @@
        length += 1
        length += 4 * self.TrainTypes
        length += 4 * self.TrainTypes
        length += 1
        length += 4 * self.SkinPlusStateCount
        return length
@@ -24047,6 +25531,9 @@
            data = CommFunc.WriteDWORD(data, self.TrainLVList[i])
        for i in range(self.TrainTypes):
            data = CommFunc.WriteDWORD(data, self.TrainItemCountList[i])
        data = CommFunc.WriteBYTE(data, self.SkinPlusStateCount)
        for i in range(self.SkinPlusStateCount):
            data = CommFunc.WriteDWORD(data, self.SkinPlusStateList[i])
        return data
    def OutputString(self):
@@ -24057,7 +25544,9 @@
                                SkinPlusState:%d,
                                TrainTypes:%d,
                                TrainLVList:%s,
                                TrainItemCountList:%s
                                TrainItemCountList:%s,
                                SkinPlusStateCount:%d,
                                SkinPlusStateList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -24066,6 +25555,8 @@
                                self.SkinPlusState,
                                self.TrainTypes,
                                "...",
                                "...",
                                self.SkinPlusStateCount,
                                "..."
                                )
        return DumpString
@@ -24752,6 +26243,74 @@
m_NAtagMCFamilyActivityExchangeResult=tagMCFamilyActivityExchangeResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActivityExchangeResult.Cmd,m_NAtagMCFamilyActivityExchangeResult.SubCmd))] = m_NAtagMCFamilyActivityExchangeResult
#------------------------------------------------------
# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo
class  tagMCFamilyBosFBPlayerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("HurtTotal", c_int),    # 累计伤血,亿求余部分
                  ("HurtTotalPoint", c_int),    # 累计伤血,亿整除部分
                  ("FightSeconds", c_int),    # 已累计战斗时长,秒
                  ("HurtAwardState", c_int),    # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取
                  ("HurtAwardStateFamily", c_int),    # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        self.SubCmd = 0x07
        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 = 0xA5
        self.SubCmd = 0x07
        self.HurtTotal = 0
        self.HurtTotalPoint = 0
        self.FightSeconds = 0
        self.HurtAwardState = 0
        self.HurtAwardStateFamily = 0
        return
    def GetLength(self):
        return sizeof(tagMCFamilyBosFBPlayerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                HurtTotal:%d,
                                HurtTotalPoint:%d,
                                FightSeconds:%d,
                                HurtAwardState:%d,
                                HurtAwardStateFamily:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.HurtTotal,
                                self.HurtTotalPoint,
                                self.FightSeconds,
                                self.HurtAwardState,
                                self.HurtAwardStateFamily
                                )
        return DumpString
m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo
#------------------------------------------------------
@@ -28448,6 +30007,348 @@
#------------------------------------------------------
# AA 65 买一送多活动信息 #tagMCActBuyOneInfo
class  tagMCActBuyOneInfoFreeItem(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(tagMCActBuyOneInfoFreeItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 65 买一送多活动信息 //tagMCActBuyOneInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCActBuyOneInfoFreeGift(Structure):
    FreeIndex = 0    #(BYTE FreeIndex)// 免费领取索引
    FreeItemCount = 0    #(BYTE FreeItemCount)// 免费礼包数
    FreeItemList = list()    #(vector<tagMCActBuyOneInfoFreeItem> FreeItemList)// 免费礼包列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.FreeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FreeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FreeItemCount):
            temFreeItemList = tagMCActBuyOneInfoFreeItem()
            _pos = temFreeItemList.ReadData(_lpData, _pos)
            self.FreeItemList.append(temFreeItemList)
        return _pos
    def Clear(self):
        self.FreeIndex = 0
        self.FreeItemCount = 0
        self.FreeItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        for i in range(self.FreeItemCount):
            length += self.FreeItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.FreeIndex)
        data = CommFunc.WriteBYTE(data, self.FreeItemCount)
        for i in range(self.FreeItemCount):
            data = CommFunc.WriteString(data, self.FreeItemList[i].GetLength(), self.FreeItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                FreeIndex:%d,
                                FreeItemCount:%d,
                                FreeItemList:%s
                                '''\
                                %(
                                self.FreeIndex,
                                self.FreeItemCount,
                                "..."
                                )
        return DumpString
class  tagMCActBuyOneInfoGiftbag(Structure):
    CTGID = 0    #(DWORD CTGID)//所需充值ID
    RecordIndex = 0    #(BYTE RecordIndex)// 记录索引
    FreeGiftCount = 0    #(BYTE FreeGiftCount)// 免费礼包数
    FreeGiftList = list()    #(vector<tagMCActBuyOneInfoFreeGift> FreeGiftList)// 免费礼包列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.CTGID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RecordIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FreeGiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FreeGiftCount):
            temFreeGiftList = tagMCActBuyOneInfoFreeGift()
            _pos = temFreeGiftList.ReadData(_lpData, _pos)
            self.FreeGiftList.append(temFreeGiftList)
        return _pos
    def Clear(self):
        self.CTGID = 0
        self.RecordIndex = 0
        self.FreeGiftCount = 0
        self.FreeGiftList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 1
        for i in range(self.FreeGiftCount):
            length += self.FreeGiftList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.CTGID)
        data = CommFunc.WriteBYTE(data, self.RecordIndex)
        data = CommFunc.WriteBYTE(data, self.FreeGiftCount)
        for i in range(self.FreeGiftCount):
            data = CommFunc.WriteString(data, self.FreeGiftList[i].GetLength(), self.FreeGiftList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                CTGID:%d,
                                RecordIndex:%d,
                                FreeGiftCount:%d,
                                FreeGiftList:%s
                                '''\
                                %(
                                self.CTGID,
                                self.RecordIndex,
                                self.FreeGiftCount,
                                "..."
                                )
        return DumpString
class  tagMCActBuyOneInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    GiftbagCount = 0    #(BYTE GiftbagCount)// 活动礼包个数
    GiftbagList = list()    #(vector<tagMCActBuyOneInfoGiftbag> GiftbagList)// 礼包列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x65
        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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GiftbagCount):
            temGiftbagList = tagMCActBuyOneInfoGiftbag()
            _pos = temGiftbagList.ReadData(_lpData, _pos)
            self.GiftbagList.append(temGiftbagList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x65
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.IsDayReset = 0
        self.LimitLV = 0
        self.GiftbagCount = 0
        self.GiftbagList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 10
        length += 10
        length += 1
        length += 2
        length += 1
        for i in range(self.GiftbagCount):
            length += self.GiftbagList[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.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
        for i in range(self.GiftbagCount):
            data = CommFunc.WriteString(data, self.GiftbagList[i].GetLength(), self.GiftbagList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                IsDayReset:%d,
                                LimitLV:%d,
                                GiftbagCount:%d,
                                GiftbagList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.IsDayReset,
                                self.LimitLV,
                                self.GiftbagCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActBuyOneInfo=tagMCActBuyOneInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyOneInfo.Head.Cmd,m_NAtagMCActBuyOneInfo.Head.SubCmd))] = m_NAtagMCActBuyOneInfo
#------------------------------------------------------
# AA 66 买一送多活动玩家信息 #tagMCActBuyOnePlayerInfo
class  tagMCActBuyOnePlayerInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    FreeRecordCount = 0    #(BYTE FreeRecordCount)// 免费礼包领奖记录个数
    FreeRecordList = list()    #(vector<DWORD> FreeRecordList)// 免费礼包领奖记录列表,按所需充值ID记录索引取记录,每个记录代表每个充值ID对应免费礼包的领取记录,按免费领取索引位运算记录是否已领取
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x66
        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.FreeRecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FreeRecordCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.FreeRecordList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x66
        self.ActNum = 0
        self.FreeRecordCount = 0
        self.FreeRecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 4 * self.FreeRecordCount
        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.FreeRecordCount)
        for i in range(self.FreeRecordCount):
            data = CommFunc.WriteDWORD(data, self.FreeRecordList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                FreeRecordCount:%d,
                                FreeRecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.FreeRecordCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActBuyOnePlayerInfo=tagMCActBuyOnePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyOnePlayerInfo.Head.Cmd,m_NAtagMCActBuyOnePlayerInfo.Head.SubCmd))] = m_NAtagMCActBuyOnePlayerInfo
#------------------------------------------------------
# AA 40 集字活动信息 #tagMCActCollectWordsInfo
class  tagMCActCollectWordsNeedItem(Structure):
@@ -29071,6 +30972,424 @@
m_NAtagMCActGarbageTaskInfo=tagMCActGarbageTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGarbageTaskInfo.Head.Cmd,m_NAtagMCActGarbageTaskInfo.Head.SubCmd))] = m_NAtagMCActGarbageTaskInfo
#------------------------------------------------------
# AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo
class  tagMCActGodGiftItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemNum", c_ubyte),    # 物品在本库中的编号
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ("CanChooseTimes", c_ubyte),    #可选择次数,0代表不限次数
                  ("ChooseTimes", c_ubyte),    #已选次数
                  ("IsChoose", 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.ItemNum = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        self.CanChooseTimes = 0
        self.ChooseTimes = 0
        self.IsChoose = 0
        return
    def GetLength(self):
        return sizeof(tagMCActGodGiftItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo:
                                ItemNum:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d,
                                CanChooseTimes:%d,
                                ChooseTimes:%d,
                                IsChoose:%d
                                '''\
                                %(
                                self.ItemNum,
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind,
                                self.CanChooseTimes,
                                self.ChooseTimes,
                                self.IsChoose
                                )
        return DumpString
class  tagMCActGodGiftItemLib(Structure):
    ItemLibType = 0    #(BYTE ItemLibType)//物品库类型
    NeedChooseCount = 0    #(BYTE NeedChooseCount)//需要选择个数
    GodGiftItemCount = 0    #(BYTE GodGiftItemCount)//可选择物品个数
    GodGiftItemList = list()    #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GodGiftItemCount):
            temGodGiftItemList = tagMCActGodGiftItem()
            _pos = temGodGiftItemList.ReadData(_lpData, _pos)
            self.GodGiftItemList.append(temGodGiftItemList)
        return _pos
    def Clear(self):
        self.ItemLibType = 0
        self.NeedChooseCount = 0
        self.GodGiftItemCount = 0
        self.GodGiftItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 1
        for i in range(self.GodGiftItemCount):
            length += self.GodGiftItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.ItemLibType)
        data = CommFunc.WriteBYTE(data, self.NeedChooseCount)
        data = CommFunc.WriteBYTE(data, self.GodGiftItemCount)
        for i in range(self.GodGiftItemCount):
            data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                ItemLibType:%d,
                                NeedChooseCount:%d,
                                GodGiftItemCount:%d,
                                GodGiftItemList:%s
                                '''\
                                %(
                                self.ItemLibType,
                                self.NeedChooseCount,
                                self.GodGiftItemCount,
                                "..."
                                )
        return DumpString
class  tagMCActGodGiftInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    IsDayReset = 0    #(BYTE IsDayReset)// 是否每日重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    CostMoneyType = 0    #(BYTE CostMoneyType)//消耗货币类型
    CostMoneyValueCount = 0    #(BYTE CostMoneyValueCount)
    CostMoneyValueList = list()    #(vector<DWORD> CostMoneyValueList)//消耗货币值列表
    PrizeMoneyType = 0    #(BYTE PrizeMoneyType)//奖励货币类型
    PrizeMoneyValueCount = 0    #(BYTE PrizeMoneyValueCount)
    PrizeMoneyValueList = list()    #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表
    ResetLimitTimes = 0    #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池
    ResetCountMax = 0    #(BYTE ResetCountMax)//最大可重置奖池次数
    IsAwardPoolOK = 0    #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖
    ItemLibCount = 0    #(BYTE ItemLibCount)//奖池库个数
    ItemLibList = list()    #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x60
        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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.CostMoneyValueCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.CostMoneyValueList.append(value)
        self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.PrizeMoneyValueCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.PrizeMoneyValueList.append(value)
        self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ItemLibCount):
            temItemLibList = tagMCActGodGiftItemLib()
            _pos = temItemLibList.ReadData(_lpData, _pos)
            self.ItemLibList.append(temItemLibList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x60
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.IsDayReset = 0
        self.LimitLV = 0
        self.CostMoneyType = 0
        self.CostMoneyValueCount = 0
        self.CostMoneyValueList = list()
        self.PrizeMoneyType = 0
        self.PrizeMoneyValueCount = 0
        self.PrizeMoneyValueList = list()
        self.ResetLimitTimes = 0
        self.ResetCountMax = 0
        self.IsAwardPoolOK = 0
        self.ItemLibCount = 0
        self.ItemLibList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 10
        length += 10
        length += 1
        length += 2
        length += 1
        length += 1
        length += 4 * self.CostMoneyValueCount
        length += 1
        length += 1
        length += 4 * self.PrizeMoneyValueCount
        length += 1
        length += 1
        length += 1
        length += 1
        for i in range(self.ItemLibCount):
            length += self.ItemLibList[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.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.CostMoneyType)
        data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount)
        for i in range(self.CostMoneyValueCount):
            data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i])
        data = CommFunc.WriteBYTE(data, self.PrizeMoneyType)
        data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount)
        for i in range(self.PrizeMoneyValueCount):
            data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i])
        data = CommFunc.WriteBYTE(data, self.ResetLimitTimes)
        data = CommFunc.WriteBYTE(data, self.ResetCountMax)
        data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK)
        data = CommFunc.WriteBYTE(data, self.ItemLibCount)
        for i in range(self.ItemLibCount):
            data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                IsDayReset:%d,
                                LimitLV:%d,
                                CostMoneyType:%d,
                                CostMoneyValueCount:%d,
                                CostMoneyValueList:%s,
                                PrizeMoneyType:%d,
                                PrizeMoneyValueCount:%d,
                                PrizeMoneyValueList:%s,
                                ResetLimitTimes:%d,
                                ResetCountMax:%d,
                                IsAwardPoolOK:%d,
                                ItemLibCount:%d,
                                ItemLibList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.IsDayReset,
                                self.LimitLV,
                                self.CostMoneyType,
                                self.CostMoneyValueCount,
                                "...",
                                self.PrizeMoneyType,
                                self.PrizeMoneyValueCount,
                                "...",
                                self.ResetLimitTimes,
                                self.ResetCountMax,
                                self.IsAwardPoolOK,
                                self.ItemLibCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo
#------------------------------------------------------
# AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo
class  tagMCActGodGiftAwardItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemLibType", c_ubyte),    #物品库类型
                  ("ItemNum", 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.ItemLibType = 0
        self.ItemNum = 0
        return
    def GetLength(self):
        return sizeof(tagMCActGodGiftAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo:
                                ItemLibType:%d,
                                ItemNum:%d
                                '''\
                                %(
                                self.ItemLibType,
                                self.ItemNum
                                )
        return DumpString
class  tagMCActGodGiftPlayerInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)// 活动编号
    ResetCount = 0    #(BYTE ResetCount)// 本次活动已重置次数
    AwardItemCount = 0    #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数
    AwardItemList = list()    #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x61
        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.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItemList = tagMCActGodGiftAwardItem()
            _pos = temAwardItemList.ReadData(_lpData, _pos)
            self.AwardItemList.append(temAwardItemList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x61
        self.ActNum = 0
        self.ResetCount = 0
        self.AwardItemCount = 0
        self.AwardItemList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItemList[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.ResetCount)
        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 = '''
                                Head:%s,
                                ActNum:%d,
                                ResetCount:%d,
                                AwardItemCount:%d,
                                AwardItemList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.ResetCount,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo
#------------------------------------------------------
@@ -30189,6 +32508,305 @@
m_NAtagMCActManyDayRechargePlayerInfo=tagMCActManyDayRechargePlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActManyDayRechargePlayerInfo.Head.Cmd,m_NAtagMCActManyDayRechargePlayerInfo.Head.SubCmd))] = m_NAtagMCActManyDayRechargePlayerInfo
#------------------------------------------------------
# AA 62 充值抵扣活动信息 #tagMCActRecharegeCouponInfo
class  tagMCActRecharegeCouponItem(Structure):
    _pack_ = 1
    _fields_ = [
                  ("ItemID", c_int),
                  ("ItemCount", c_ushort),
                  ("IsBind", c_ubyte),
                  ("IsMainItem", 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
        self.IsMainItem = 0
        return
    def GetLength(self):
        return sizeof(tagMCActRecharegeCouponItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 62 充值抵扣活动信息 //tagMCActRecharegeCouponInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d,
                                IsMainItem:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind,
                                self.IsMainItem
                                )
        return DumpString
class  tagMCActRecharegeCouponGiftbag(Structure):
    GiftID = 0    #(DWORD GiftID)//商城表的物品ID
    BuyCountLimit = 0    #(BYTE BuyCountLimit)//限购数
    MoneyType = 0    #(BYTE MoneyType)//消耗货币类型
    MoneyNumber = 0    #(DWORD MoneyNumber)//消耗货币数量
    MoneyOriginal = 0    #(DWORD MoneyOriginal)//原价
    GiftItemCount = 0    #(BYTE GiftItemCount)// 礼包物品数
    ItemInfo = list()    #(vector<tagMCActRecharegeCouponItem> ItemInfo)// 物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoneyNumber,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MoneyOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GiftItemCount):
            temItemInfo = tagMCActRecharegeCouponItem()
            _pos = temItemInfo.ReadData(_lpData, _pos)
            self.ItemInfo.append(temItemInfo)
        return _pos
    def Clear(self):
        self.GiftID = 0
        self.BuyCountLimit = 0
        self.MoneyType = 0
        self.MoneyNumber = 0
        self.MoneyOriginal = 0
        self.GiftItemCount = 0
        self.ItemInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 1
        length += 4
        length += 4
        length += 1
        for i in range(self.GiftItemCount):
            length += self.ItemInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.GiftID)
        data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
        data = CommFunc.WriteBYTE(data, self.MoneyType)
        data = CommFunc.WriteDWORD(data, self.MoneyNumber)
        data = CommFunc.WriteDWORD(data, self.MoneyOriginal)
        data = CommFunc.WriteBYTE(data, self.GiftItemCount)
        for i in range(self.GiftItemCount):
            data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                GiftID:%d,
                                BuyCountLimit:%d,
                                MoneyType:%d,
                                MoneyNumber:%d,
                                MoneyOriginal:%d,
                                GiftItemCount:%d,
                                ItemInfo:%s
                                '''\
                                %(
                                self.GiftID,
                                self.BuyCountLimit,
                                self.MoneyType,
                                self.MoneyNumber,
                                self.MoneyOriginal,
                                self.GiftItemCount,
                                "..."
                                )
        return DumpString
class  tagMCActRecharegeCouponInfo(Structure):
    Head = tagHead()
    ActNum = 0    #(BYTE ActNum)//活动编号
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    CouponMoneyType = 0    #(BYTE CouponMoneyType)//抵扣券对应货币类型
    GiftbagCount = 0    #(BYTE GiftbagCount)// 可购买礼包个数
    GiftbagList = list()    #(vector<tagMCActRecharegeCouponGiftbag> GiftbagList)// 可购买礼包顺序列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x62
        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.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.CouponMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GiftbagCount):
            temGiftbagList = tagMCActRecharegeCouponGiftbag()
            _pos = temGiftbagList.ReadData(_lpData, _pos)
            self.GiftbagList.append(temGiftbagList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x62
        self.ActNum = 0
        self.StartDate = ""
        self.EndtDate = ""
        self.IsDayReset = 0
        self.LimitLV = 0
        self.CouponMoneyType = 0
        self.GiftbagCount = 0
        self.GiftbagList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 10
        length += 10
        length += 1
        length += 2
        length += 1
        length += 1
        for i in range(self.GiftbagCount):
            length += self.GiftbagList[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.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.CouponMoneyType)
        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
        for i in range(self.GiftbagCount):
            data = CommFunc.WriteString(data, self.GiftbagList[i].GetLength(), self.GiftbagList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ActNum:%d,
                                StartDate:%s,
                                EndtDate:%s,
                                IsDayReset:%d,
                                LimitLV:%d,
                                CouponMoneyType:%d,
                                GiftbagCount:%d,
                                GiftbagList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ActNum,
                                self.StartDate,
                                self.EndtDate,
                                self.IsDayReset,
                                self.LimitLV,
                                self.CouponMoneyType,
                                self.GiftbagCount,
                                "..."
                                )
        return DumpString
m_NAtagMCActRecharegeCouponInfo=tagMCActRecharegeCouponInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRecharegeCouponInfo.Head.Cmd,m_NAtagMCActRecharegeCouponInfo.Head.SubCmd))] = m_NAtagMCActRecharegeCouponInfo
#------------------------------------------------------
# AA 63 充值抵扣活动玩家信息 #tagMCActRecharegeCouponPlayerInfo
class  tagMCActRecharegeCouponPlayerInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ActNum", c_ubyte),    # 活动编号
                  ("CouponMoney", c_int),    # 当前可用抵扣点
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xAA
        self.SubCmd = 0x63
        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 = 0x63
        self.ActNum = 0
        self.CouponMoney = 0
        return
    def GetLength(self):
        return sizeof(tagMCActRecharegeCouponPlayerInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 63 充值抵扣活动玩家信息 //tagMCActRecharegeCouponPlayerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                ActNum:%d,
                                CouponMoney:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ActNum,
                                self.CouponMoney
                                )
        return DumpString
m_NAtagMCActRecharegeCouponPlayerInfo=tagMCActRecharegeCouponPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActRecharegeCouponPlayerInfo.Cmd,m_NAtagMCActRecharegeCouponPlayerInfo.SubCmd))] = m_NAtagMCActRecharegeCouponPlayerInfo
#------------------------------------------------------
@@ -39052,6 +41670,7 @@
    TodayExpPoint = 0    #(DWORD TodayExpPoint)
    YestordayExp = 0    #(DWORD YestordayExp)
    YestordayExpPoint = 0    #(DWORD YestordayExpPoint)
    TotalCount = 0    #(DWORD TotalCount)// 累计活跃放置次数
    data = None
    def __init__(self):
@@ -39072,6 +41691,7 @@
        self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -39088,6 +41708,7 @@
        self.TodayExpPoint = 0
        self.YestordayExp = 0
        self.YestordayExpPoint = 0
        self.TotalCount = 0
        return
    def GetLength(self):
@@ -39098,6 +41719,7 @@
        length += 1
        length += 1
        length += len(self.RewardInfo)
        length += 4
        length += 4
        length += 4
        length += 4
@@ -39117,6 +41739,7 @@
        data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
        data = CommFunc.WriteDWORD(data, self.YestordayExp)
        data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
        data = CommFunc.WriteDWORD(data, self.TotalCount)
        return data
    def OutputString(self):
@@ -39130,7 +41753,8 @@
                                TodayExp:%d,
                                TodayExpPoint:%d,
                                YestordayExp:%d,
                                YestordayExpPoint:%d
                                YestordayExpPoint:%d,
                                TotalCount:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -39142,7 +41766,8 @@
                                self.TodayExp,
                                self.TodayExpPoint,
                                self.YestordayExp,
                                self.YestordayExpPoint
                                self.YestordayExpPoint,
                                self.TotalCount
                                )
        return DumpString
@@ -41333,19 +43958,15 @@
#------------------------------------------------------
# B2 13 天星塔通关层数 #tagMCSkyTowerInfo
class  tagMCSkyTowerInfo(Structure):
class  tagMCSkyTowerServerReward(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Floor", c_int),    # 已通关层
                  ("ServerRewardRecord", c_int),    #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取
                  ("Floor", c_int),    # 全服奖励层ID
                  ("ServerRewardRecord", c_int),    #该层全服领奖记录,按所需人数作为二进制位进行位运算判断是否已领取
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB2
        self.SubCmd = 0x13
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -41354,36 +43975,99 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB2
        self.SubCmd = 0x13
        self.Floor = 0
        self.ServerRewardRecord = 0
        return
    def GetLength(self):
        return sizeof(tagMCSkyTowerInfo)
        return sizeof(tagMCSkyTowerServerReward)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                Floor:%d,
                                ServerRewardRecord:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Floor,
                                self.ServerRewardRecord
                                )
        return DumpString
class  tagMCSkyTowerInfo(Structure):
    Head = tagHead()
    Floor = 0    #(DWORD Floor)// 已通关层
    ServerRewardCount = 0    #(WORD ServerRewardCount)
    ServerRewardList = list()    #(vector<tagMCSkyTowerServerReward> ServerRewardList)// 全服奖励领取记录列表,下发的层记录替换更新即可,领奖记录没有变化时服务端不会下发
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x13
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Floor,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerRewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.ServerRewardCount):
            temServerRewardList = tagMCSkyTowerServerReward()
            _pos = temServerRewardList.ReadData(_lpData, _pos)
            self.ServerRewardList.append(temServerRewardList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB2
        self.Head.SubCmd = 0x13
        self.Floor = 0
        self.ServerRewardCount = 0
        self.ServerRewardList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 2
        for i in range(self.ServerRewardCount):
            length += self.ServerRewardList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.Floor)
        data = CommFunc.WriteWORD(data, self.ServerRewardCount)
        for i in range(self.ServerRewardCount):
            data = CommFunc.WriteString(data, self.ServerRewardList[i].GetLength(), self.ServerRewardList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Floor:%d,
                                ServerRewardCount:%d,
                                ServerRewardList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Floor,
                                self.ServerRewardCount,
                                "..."
                                )
        return DumpString
m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Head.Cmd,m_NAtagMCSkyTowerInfo.Head.SubCmd))] = m_NAtagMCSkyTowerInfo
#------------------------------------------------------