xdh
2018-10-13 fea76cc7386e6c35cfe0f4910f066d04d24061f0
ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -318,6 +318,14 @@
                  ("Day", c_ushort),    # 已开服天数,从0开始
                  ("IsMixServer", c_ubyte),    #是否是合服服务器
                  ("MixDay", c_ushort),    # 已合服天数,从0开始
                  ("OpenWeekday", c_ubyte),    #开服是周几,1代表周一
                  ("NowYear", c_ushort),    #服务器当前时间 - 年
                  ("NowMonth", c_ubyte),
                  ("NowDay", c_ubyte),
                  ("NowHour", c_ubyte),
                  ("NowMinute", c_ubyte),
                  ("NowSecond", c_ubyte),
                  ("NowMicSecond", c_int),
                  ]
    def __init__(self):
@@ -337,6 +345,14 @@
        self.Day = 0
        self.IsMixServer = 0
        self.MixDay = 0
        self.OpenWeekday = 0
        self.NowYear = 0
        self.NowMonth = 0
        self.NowDay = 0
        self.NowHour = 0
        self.NowMinute = 0
        self.NowSecond = 0
        self.NowMicSecond = 0
        return
    def GetLength(self):
@@ -351,14 +367,30 @@
                                SubCmd:%s,
                                Day:%d,
                                IsMixServer:%d,
                                MixDay:%d
                                MixDay:%d,
                                OpenWeekday:%d,
                                NowYear:%d,
                                NowMonth:%d,
                                NowDay:%d,
                                NowHour:%d,
                                NowMinute:%d,
                                NowSecond:%d,
                                NowMicSecond:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Day,
                                self.IsMixServer,
                                self.MixDay
                                self.MixDay,
                                self.OpenWeekday,
                                self.NowYear,
                                self.NowMonth,
                                self.NowDay,
                                self.NowHour,
                                self.NowMinute,
                                self.NowSecond,
                                self.NowMicSecond
                                )
        return DumpString
@@ -2285,8 +2317,9 @@
class  tagGCBossShuntLineState(Structure):
    BossID = 0    #(DWORD BossID)// bossID
    DeadLineCount = 0    #(BYTE DeadLineCount)
    DeadLineList = list()    #(vector<BYTE> DeadLineList)// 已死亡的线路列表
    LineCount = 0    #(BYTE LineCount)
    LineIDList = list()    #(vector<BYTE> LineIDList)// 线路ID列表
    StateList = list()    #(vector<BYTE> StateList)// 对应状态列表, 0-被击杀,1-活着
    data = None
    def __init__(self):
@@ -2296,43 +2329,52 @@
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.BossID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.DeadLineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.DeadLineCount):
        self.LineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.LineCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.DeadLineList.append(value)
            self.LineIDList.append(value)
        for i in range(self.LineCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.StateList.append(value)
        return _pos
    def Clear(self):
        self.BossID = 0
        self.DeadLineCount = 0
        self.DeadLineList = list()
        self.LineCount = 0
        self.LineIDList = list()
        self.StateList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += 1 * self.DeadLineCount
        length += 1 * self.LineCount
        length += 1 * self.LineCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.BossID)
        data = CommFunc.WriteBYTE(data, self.DeadLineCount)
        for i in range(self.DeadLineCount):
            data = CommFunc.WriteBYTE(data, self.DeadLineList[i])
        data = CommFunc.WriteBYTE(data, self.LineCount)
        for i in range(self.LineCount):
            data = CommFunc.WriteBYTE(data, self.LineIDList[i])
        for i in range(self.LineCount):
            data = CommFunc.WriteBYTE(data, self.StateList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                BossID:%d,
                                DeadLineCount:%d,
                                DeadLineList:%s
                                LineCount:%d,
                                LineIDList:%s,
                                StateList:%s
                                '''\
                                %(
                                self.BossID,
                                self.DeadLineCount,
                                self.LineCount,
                                "...",
                                "..."
                                )
        return DumpString
@@ -2667,6 +2709,114 @@
#------------------------------------------------------
# A9 04 通知神兽副本NPC刷新时间 #tagGCDogzNPCRefreshTime
class  tagDogzTimeInfoObj(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),    # npcid
                  ("RefreshSecond", 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.NPCID = 0
        self.RefreshSecond = 0
        return
    def GetLength(self):
        return sizeof(tagDogzTimeInfoObj)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A9 04 通知神兽副本NPC刷新时间 //tagGCDogzNPCRefreshTime:
                                NPCID:%d,
                                RefreshSecond:%d
                                '''\
                                %(
                                self.NPCID,
                                self.RefreshSecond
                                )
        return DumpString
class  tagGCDogzNPCRefreshTime(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//信息个数
    InfoList = list()    #(vector<tagDogzTimeInfoObj> InfoList)//信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temInfoList = tagDogzTimeInfoObj()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA9
        self.Head.SubCmd = 0x04
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagGCDogzNPCRefreshTime=tagGCDogzNPCRefreshTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCDogzNPCRefreshTime.Head.Cmd,m_NAtagGCDogzNPCRefreshTime.Head.SubCmd))] = m_NAtagGCDogzNPCRefreshTime
#------------------------------------------------------
# A9 A9 通知好友互赠精力信息 #tagGCFriendSendEnergyInfo
class  tagGCFriendSendEnergyInfo(Structure):
@@ -2760,6 +2910,7 @@
    RecordLen = 0    #(WORD RecordLen)// 长度
    KillRecord = ""    #(String KillRecord)// 最近击杀记录时间玩家名size = RecordLen
    RefreshSecond = 0    #(DWORD RefreshSecond)// 刷新倒计时, 秒    
    RefreshCD = 0    #(DWORD RefreshCD)// 刷新总CD时, 秒
    data = None
    def __init__(self):
@@ -2773,6 +2924,7 @@
        self.RecordLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.KillRecord,_pos = CommFunc.ReadString(_lpData, _pos,self.RecordLen)
        self.RefreshSecond,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RefreshCD,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -2781,6 +2933,7 @@
        self.RecordLen = 0
        self.KillRecord = ""
        self.RefreshSecond = 0
        self.RefreshCD = 0
        return
    def GetLength(self):
@@ -2789,6 +2942,7 @@
        length += 1
        length += 2
        length += len(self.KillRecord)
        length += 4
        length += 4
        return length
@@ -2800,6 +2954,7 @@
        data = CommFunc.WriteWORD(data, self.RecordLen)
        data = CommFunc.WriteString(data, self.RecordLen, self.KillRecord)
        data = CommFunc.WriteDWORD(data, self.RefreshSecond)
        data = CommFunc.WriteDWORD(data, self.RefreshCD)
        return data
    def OutputString(self):
@@ -2808,14 +2963,16 @@
                                IsAlive:%d,
                                RecordLen:%d,
                                KillRecord:%s,
                                RefreshSecond:%d
                                RefreshSecond:%d,
                                RefreshCD:%d
                                '''\
                                %(
                                self.BossID,
                                self.IsAlive,
                                self.RecordLen,
                                self.KillRecord,
                                self.RefreshSecond
                                self.RefreshSecond,
                                self.RefreshCD
                                )
        return DumpString
@@ -4129,81 +4286,159 @@
#------------------------------------------------------
# AC 07 BOSS复活活动信息 #tagGCBossRebornInfo
# AC 10 仙盟抢Boss所有Boss伤血进度信息 #tagGCAllFamilyBossHurtInfoList
class  tagGCBossRebornInfo(Structure):
class  tagGCFamilyBossHurtInfo(Structure):
    NPCID = 0    #(DWORD NPCID)
    CurHP = 0    #(DWORD CurHP)
    CurHPEx = 0    #(DWORD CurHPEx)
    MaxHP = 0    #(DWORD MaxHP)
    MaxHPEx = 0    #(DWORD MaxHPEx)
    FamilyID = 0    #(DWORD FamilyID)// 最大实时伤血仙盟
    NameLen = 0    #(BYTE NameLen)
    FamilyName = ""    #(String FamilyName)
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CurHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.CurHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MaxHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MaxHPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        return _pos
    def Clear(self):
        self.NPCID = 0
        self.CurHP = 0
        self.CurHPEx = 0
        self.MaxHP = 0
        self.MaxHPEx = 0
        self.FamilyID = 0
        self.NameLen = 0
        self.FamilyName = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        length += len(self.FamilyName)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteDWORD(data, self.CurHP)
        data = CommFunc.WriteDWORD(data, self.CurHPEx)
        data = CommFunc.WriteDWORD(data, self.MaxHP)
        data = CommFunc.WriteDWORD(data, self.MaxHPEx)
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.FamilyName)
        return data
    def OutputString(self):
        DumpString = '''
                                NPCID:%d,
                                CurHP:%d,
                                CurHPEx:%d,
                                MaxHP:%d,
                                MaxHPEx:%d,
                                FamilyID:%d,
                                NameLen:%d,
                                FamilyName:%s
                                '''\
                                %(
                                self.NPCID,
                                self.CurHP,
                                self.CurHPEx,
                                self.MaxHP,
                                self.MaxHPEx,
                                self.FamilyID,
                                self.NameLen,
                                self.FamilyName
                                )
        return DumpString
class  tagGCAllFamilyBossHurtInfoList(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    WorldLV = 0    #(WORD WorldLV)// 世界等级
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    NPCCount = 0    #(BYTE NPCCount)// 个数
    NPCHurtInfo = list()    #(vector<tagGCFamilyBossHurtInfo> NPCHurtInfo)// NPC伤血信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x07
        self.Head.SubCmd = 0x10
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.NPCCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NPCCount):
            temNPCHurtInfo = tagGCFamilyBossHurtInfo()
            _pos = temNPCHurtInfo.ReadData(_lpData, _pos)
            self.NPCHurtInfo.append(temNPCHurtInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAC
        self.Head.SubCmd = 0x07
        self.StartDate = ""
        self.EndtDate = ""
        self.WorldLV = 0
        self.LimitLV = 0
        self.Head.SubCmd = 0x10
        self.NPCCount = 0
        self.NPCHurtInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 2
        length += 1
        for i in range(self.NPCCount):
            length += self.NPCHurtInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.WorldLV)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.NPCCount)
        for i in range(self.NPCCount):
            data = CommFunc.WriteString(data, self.NPCHurtInfo[i].GetLength(), self.NPCHurtInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                WorldLV:%d,
                                LimitLV:%d
                                NPCCount:%d,
                                NPCHurtInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.WorldLV,
                                self.LimitLV
                                self.NPCCount,
                                "..."
                                )
        return DumpString
m_NAtagGCBossRebornInfo=tagGCBossRebornInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornInfo.Head.Cmd,m_NAtagGCBossRebornInfo.Head.SubCmd))] = m_NAtagGCBossRebornInfo
m_NAtagGCAllFamilyBossHurtInfoList=tagGCAllFamilyBossHurtInfoList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAllFamilyBossHurtInfoList.Head.Cmd,m_NAtagGCAllFamilyBossHurtInfoList.Head.SubCmd))] = m_NAtagGCAllFamilyBossHurtInfoList
#------------------------------------------------------
@@ -4215,6 +4450,8 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Point", c_int),    # 复活点数
                  ("TotalPoint", c_int),    # 复活总点数
                  ("RebornCnt", c_ushort),    # 复活次数
                  ]
    def __init__(self):
@@ -4232,6 +4469,8 @@
        self.Cmd = 0xAC
        self.SubCmd = 0x08
        self.Point = 0
        self.TotalPoint = 0
        self.RebornCnt = 0
        return
    def GetLength(self):
@@ -4244,12 +4483,16 @@
        DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
                                Cmd:%s,
                                SubCmd:%s,
                                Point:%d
                                Point:%d,
                                TotalPoint:%d,
                                RebornCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Point
                                self.Point,
                                self.TotalPoint,
                                self.RebornCnt
                                )
        return DumpString
@@ -4267,6 +4510,7 @@
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    WorldLV = 0    #(WORD WorldLV)// 世界等级
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ResetType = 0    #(BYTE ResetType)// 重置类型 0-0点重置 1-5点重置
    data = None
    def __init__(self):
@@ -4282,6 +4526,7 @@
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -4293,6 +4538,7 @@
        self.EndtDate = ""
        self.WorldLV = 0
        self.LimitLV = 0
        self.ResetType = 0
        return
    def GetLength(self):
@@ -4302,6 +4548,7 @@
        length += 10
        length += 2
        length += 2
        length += 1
        return length
@@ -4312,6 +4559,7 @@
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.WorldLV)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        return data
    def OutputString(self):
@@ -4320,14 +4568,16 @@
                                StartDate:%s,
                                EndtDate:%s,
                                WorldLV:%d,
                                LimitLV:%d
                                LimitLV:%d,
                                ResetType:%d
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.WorldLV,
                                self.LimitLV
                                self.LimitLV,
                                self.ResetType
                                )
        return DumpString
@@ -10026,6 +10276,62 @@
#------------------------------------------------------
# A3 24 通知绑玉转盘结果 #tagMCBindJadeWheelResult
class  tagMCBindJadeWheelResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Index", c_ubyte),    # 格子
                  ("Cnt", c_ubyte),    #今日已转次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x24
        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 = 0x24
        self.Index = 0
        self.Cnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCBindJadeWheelResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 24 通知绑玉转盘结果 //tagMCBindJadeWheelResult:
                                Cmd:%s,
                                SubCmd:%s,
                                Index:%d,
                                Cnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Index,
                                self.Cnt
                                )
        return DumpString
m_NAtagMCBindJadeWheelResult=tagMCBindJadeWheelResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBindJadeWheelResult.Cmd,m_NAtagMCBindJadeWheelResult.SubCmd))] = m_NAtagMCBindJadeWheelResult
#------------------------------------------------------
#A3 B7 当日累计攻击boss次数 #tagMCBOSSAttactCnt
class  tagMCBossCntInfo(Structure):
@@ -10736,6 +11042,114 @@
#------------------------------------------------------
# A3 C1 神兽助战状态刷新 #tagMCDogzHelpbattleState
class  tagMCDogzHelpbattleState(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("DogzID", c_ubyte),    # 神兽ID
                  ("BatteState", c_ubyte),    #是否已助战, 0否1是
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xC1
        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 = 0xC1
        self.DogzID = 0
        self.BatteState = 0
        return
    def GetLength(self):
        return sizeof(tagMCDogzHelpbattleState)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C1 神兽助战状态刷新 //tagMCDogzHelpbattleState:
                                Cmd:%s,
                                SubCmd:%s,
                                DogzID:%d,
                                BatteState:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.DogzID,
                                self.BatteState
                                )
        return DumpString
m_NAtagMCDogzHelpbattleState=tagMCDogzHelpbattleState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzHelpbattleState.Cmd,m_NAtagMCDogzHelpbattleState.SubCmd))] = m_NAtagMCDogzHelpbattleState
#------------------------------------------------------
# A3 C0 神兽信息 #tagMCDogzInfo
class  tagMCDogzInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("BuyHelpbattleCount", c_ubyte),    #额外购买的助战数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0xC0
        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 = 0xC0
        self.BuyHelpbattleCount = 0
        return
    def GetLength(self):
        return sizeof(tagMCDogzInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 C0 神兽信息 //tagMCDogzInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                BuyHelpbattleCount:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.BuyHelpbattleCount
                                )
        return DumpString
m_NAtagMCDogzInfo=tagMCDogzInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDogzInfo.Cmd,m_NAtagMCDogzInfo.SubCmd))] = m_NAtagMCDogzInfo
#------------------------------------------------------
# A3 1C 通知装备分解信息 #tagMCEquipDecomposeInfo
class  tagMCEquipDecomposeInfo(Structure):
@@ -11238,19 +11652,15 @@
#------------------------------------------------------
#A3 0A 副本鼓舞信息通知 #tagMCFBEncourageInfo
class  tagMCFBEncourageInfo(Structure):
class  tagMCFBEncourageCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Cnt1", c_ubyte),    # 当前铜钱鼓舞次数
                  ("Cnt2", c_ubyte),    # 当前仙玉鼓舞次数
                  ("MoneyType", c_ubyte),    # 金钱类型
                  ("EncourageCnt", c_ubyte),    # 当前鼓舞次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x0A
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -11259,36 +11669,92 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x0A
        self.Cnt1 = 0
        self.Cnt2 = 0
        self.MoneyType = 0
        self.EncourageCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCFBEncourageInfo)
        return sizeof(tagMCFBEncourageCnt)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A3 0A 副本鼓舞信息通知 //tagMCFBEncourageInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                Cnt1:%d,
                                Cnt2:%d
                                MoneyType:%d,
                                EncourageCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Cnt1,
                                self.Cnt2
                                self.MoneyType,
                                self.EncourageCnt
                                )
        return DumpString
class  tagMCFBEncourageInfo(Structure):
    Head = tagHead()
    Cnt = 0    #(BYTE Cnt)//
    InfoList = list()    #(vector<tagMCFBEncourageCnt> InfoList)// 次数信息
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x0A
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Cnt):
            temInfoList = tagMCFBEncourageCnt()
            _pos = temInfoList.ReadData(_lpData, _pos)
            self.InfoList.append(temInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x0A
        self.Cnt = 0
        self.InfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.Cnt):
            length += self.InfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.Cnt)
        for i in range(self.Cnt):
            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Cnt:%d,
                                InfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Cnt,
                                "..."
                                )
        return DumpString
m_NAtagMCFBEncourageInfo=tagMCFBEncourageInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Cmd,m_NAtagMCFBEncourageInfo.SubCmd))] = m_NAtagMCFBEncourageInfo
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFBEncourageInfo.Head.Cmd,m_NAtagMCFBEncourageInfo.Head.SubCmd))] = m_NAtagMCFBEncourageInfo
#------------------------------------------------------
@@ -12703,6 +13169,7 @@
    _pack_ = 1
    _fields_ = [
                  ("PriID", c_int),    # 特权ID
                  ("State", c_ubyte),    #激活状态
                  ("CurValue", c_int),    #当前总进度
                  ("GotValue", c_int),    #已领取进度
                  ("ItemAwardState", c_ubyte),    #物品奖励是否已领取
@@ -12719,6 +13186,7 @@
    def Clear(self):
        self.PriID = 0
        self.State = 0
        self.CurValue = 0
        self.GotValue = 0
        self.ItemAwardState = 0
@@ -12733,12 +13201,14 @@
    def OutputString(self):
        DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
                                PriID:%d,
                                State:%d,
                                CurValue:%d,
                                GotValue:%d,
                                ItemAwardState:%d
                                '''\
                                %(
                                self.PriID,
                                self.State,
                                self.CurValue,
                                self.GotValue,
                                self.ItemAwardState
@@ -12818,16 +13288,12 @@
class  tagMCNPCIDCollectionCnt(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("NPCID", c_int),    #NPCID
                  ("CollectionCnt", c_ubyte),    #已采集次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x26
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -12836,8 +13302,6 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA3
        self.SubCmd = 0x26
        self.NPCID = 0
        self.CollectionCnt = 0
        return
@@ -12850,14 +13314,10 @@
    def OutputString(self):
        DumpString = '''// A3 26 NPCID已采集次数信息 //tagMCNPCIDCollectionCntInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                NPCID:%d,
                                CollectionCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.NPCID,
                                self.CollectionCnt
                                )
@@ -13513,6 +13973,62 @@
#------------------------------------------------------
# A3 21 祈福丹药结果 #tagMCPrayElixirResult
class  tagMCPrayElixirResult(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ItemID", c_int),    # 物品ID
                  ("PrayCnt", c_ubyte),    # 今日祈福次数
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA3
        self.SubCmd = 0x21
        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 = 0x21
        self.ItemID = 0
        self.PrayCnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCPrayElixirResult)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A3 21 祈福丹药结果 //tagMCPrayElixirResult:
                                Cmd:%s,
                                SubCmd:%s,
                                ItemID:%d,
                                PrayCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ItemID,
                                self.PrayCnt
                                )
        return DumpString
m_NAtagMCPrayElixirResult=tagMCPrayElixirResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPrayElixirResult.Cmd,m_NAtagMCPrayElixirResult.SubCmd))] = m_NAtagMCPrayElixirResult
#------------------------------------------------------
# A3 49 资源找回次数 #tagMCRecoverNum
class  tagMCRecoverNumInfo(Structure):
@@ -13521,7 +14037,8 @@
                  ("Index", c_ubyte),    # 找回项索引
                  ("RecoverCnt", c_ubyte),    # 可找回次数
                  ("ExtraCnt", c_ubyte),    # VIP额外次数
                  ("ExtraData", c_ubyte),    # 额外参数
                  ("ExtraData", c_ubyte),    # 额外参数1
                  ("ExtraData2", c_ubyte),    # 额外参数2
                  ]
    def __init__(self):
@@ -13538,6 +14055,7 @@
        self.RecoverCnt = 0
        self.ExtraCnt = 0
        self.ExtraData = 0
        self.ExtraData2 = 0
        return
    def GetLength(self):
@@ -13551,13 +14069,15 @@
                                Index:%d,
                                RecoverCnt:%d,
                                ExtraCnt:%d,
                                ExtraData:%d
                                ExtraData:%d,
                                ExtraData2:%d
                                '''\
                                %(
                                self.Index,
                                self.RecoverCnt,
                                self.ExtraCnt,
                                self.ExtraData
                                self.ExtraData,
                                self.ExtraData2
                                )
        return DumpString
@@ -16209,6 +16729,183 @@
#------------------------------------------------------
# A7 15 通知仙盟抢Boss伤血信息 #tagMCFamilyBossHurtList
class  tagMCFamilyBossHurt(Structure):
    FamilyID = 0    #(DWORD FamilyID)// 所属仙盟ID
    HurtID = 0    #(DWORD HurtID)// 伤血的ID, 根据伤血类型表示不同的ID, 如仙盟ID或玩家ID
    NameLen = 0    #(BYTE NameLen)
    HurtName = ""    #(String HurtName)
    HurtValue = 0    #(DWORD HurtValue)// 累计伤血,求余1亿的值
    HurtValueEx = 0    #(DWORD HurtValueEx)// 累计伤血,整除1亿的值
    InitTick = 0    #(DWORD InitTick)// 伤血初始tick,用于排序,先按伤血倒序排,再按tick正序排
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.HurtName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.HurtValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtValueEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.InitTick,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.FamilyID = 0
        self.HurtID = 0
        self.NameLen = 0
        self.HurtName = ""
        self.HurtValue = 0
        self.HurtValueEx = 0
        self.InitTick = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 1
        length += len(self.HurtName)
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteDWORD(data, self.HurtID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.HurtName)
        data = CommFunc.WriteDWORD(data, self.HurtValue)
        data = CommFunc.WriteDWORD(data, self.HurtValueEx)
        data = CommFunc.WriteDWORD(data, self.InitTick)
        return data
    def OutputString(self):
        DumpString = '''
                                FamilyID:%d,
                                HurtID:%d,
                                NameLen:%d,
                                HurtName:%s,
                                HurtValue:%d,
                                HurtValueEx:%d,
                                InitTick:%d
                                '''\
                                %(
                                self.FamilyID,
                                self.HurtID,
                                self.NameLen,
                                self.HurtName,
                                self.HurtValue,
                                self.HurtValueEx,
                                self.InitTick
                                )
        return DumpString
class  tagMCFamilyBossHurtList(Structure):
    Head = tagHead()
    ObjID = 0    #(DWORD ObjID)
    NPCID = 0    #(DWORD NPCID)
    HurtType = 0    #(BYTE HurtType)// 0-实时仙盟伤血,1-历史仙盟伤血,2-实时玩家伤血,3-历史玩家伤血
    IsSort = 0    #(BYTE IsSort)// 是否排序过的,一般boss被击杀后会统一同步一次排序过的最终结果,其他情况下客户端自己排序
    HurtCount = 0    #(WORD HurtCount)// 伤血个数
    HurtList = list()    #(vector<tagMCFamilyBossHurt> HurtList)// 伤血列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x15
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ObjID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HurtType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsSort,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.HurtCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.HurtCount):
            temHurtList = tagMCFamilyBossHurt()
            _pos = temHurtList.ReadData(_lpData, _pos)
            self.HurtList.append(temHurtList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x15
        self.ObjID = 0
        self.NPCID = 0
        self.HurtType = 0
        self.IsSort = 0
        self.HurtCount = 0
        self.HurtList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 4
        length += 1
        length += 1
        length += 2
        for i in range(self.HurtCount):
            length += self.HurtList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.ObjID)
        data = CommFunc.WriteDWORD(data, self.NPCID)
        data = CommFunc.WriteBYTE(data, self.HurtType)
        data = CommFunc.WriteBYTE(data, self.IsSort)
        data = CommFunc.WriteWORD(data, self.HurtCount)
        for i in range(self.HurtCount):
            data = CommFunc.WriteString(data, self.HurtList[i].GetLength(), self.HurtList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ObjID:%d,
                                NPCID:%d,
                                HurtType:%d,
                                IsSort:%d,
                                HurtCount:%d,
                                HurtList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ObjID,
                                self.NPCID,
                                self.HurtType,
                                self.IsSort,
                                self.HurtCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFamilyBossHurtList=tagMCFamilyBossHurtList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBossHurtList.Head.Cmd,m_NAtagMCFamilyBossHurtList.Head.SubCmd))] = m_NAtagMCFamilyBossHurtList
#------------------------------------------------------
# A7 03 通知进入副本时间 #tagMCFBEnterTickList
class  tagMCFBEnterTick(Structure):
@@ -16384,6 +17081,121 @@
#------------------------------------------------------
# A7 14 通知查询的NPC数量 #tagMCNPCCntList
class  tagMCNPCCntInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("NPCID", c_int),
                  ("Cnt", 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.NPCID = 0
        self.Cnt = 0
        return
    def GetLength(self):
        return sizeof(tagMCNPCCntInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A7 14 通知查询的NPC数量 //tagMCNPCCntList:
                                NPCID:%d,
                                Cnt:%d
                                '''\
                                %(
                                self.NPCID,
                                self.Cnt
                                )
        return DumpString
class  tagMCNPCCntList(Structure):
    Head = tagHead()
    MapID = 0    #(DWORD MapID)
    NPCInfoCnt = 0    #(BYTE NPCInfoCnt)
    NPCInfoList = list()    #(vector<tagMCNPCCntInfo> NPCInfoList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x14
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.NPCInfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.NPCInfoCnt):
            temNPCInfoList = tagMCNPCCntInfo()
            _pos = temNPCInfoList.ReadData(_lpData, _pos)
            self.NPCInfoList.append(temNPCInfoList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA7
        self.Head.SubCmd = 0x14
        self.MapID = 0
        self.NPCInfoCnt = 0
        self.NPCInfoList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 1
        for i in range(self.NPCInfoCnt):
            length += self.NPCInfoList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteBYTE(data, self.NPCInfoCnt)
        for i in range(self.NPCInfoCnt):
            data = CommFunc.WriteString(data, self.NPCInfoList[i].GetLength(), self.NPCInfoList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                MapID:%d,
                                NPCInfoCnt:%d,
                                NPCInfoList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.MapID,
                                self.NPCInfoCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCNPCCntList=tagMCNPCCntList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNPCCntList.Head.Cmd,m_NAtagMCNPCCntList.Head.SubCmd))] = m_NAtagMCNPCCntList
#------------------------------------------------------
#A7 01 通知选中对象 # tagMCNotifySelectObj
class  tagMCNotifySelectObj(Structure):
@@ -16449,8 +17261,6 @@
class  tagMCNPCInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ObjID", c_int),    
                  ("NPCID", c_int),    
                  ("NPCHP", c_int),    
@@ -16463,8 +17273,6 @@
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA7
        self.SubCmd = 0x06
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -16473,8 +17281,6 @@
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xA7
        self.SubCmd = 0x06
        self.ObjID = 0
        self.NPCID = 0
        self.NPCHP = 0
@@ -16493,8 +17299,6 @@
    def OutputString(self):
        DumpString = '''// A7 06 通知查询的NPC信息 //tagMCNPCInfoList:
                                Cmd:%s,
                                SubCmd:%s,
                                ObjID:%d,
                                NPCID:%d,
                                NPCHP:%d,
@@ -16505,8 +17309,6 @@
                                RefreshSecond:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ObjID,
                                self.NPCID,
                                self.NPCHP,
@@ -18810,6 +19612,7 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FirstGoldRewardState", c_ubyte),    #首充奖励是否已领奖
                  ("FirstGoldTry", c_ubyte),    #首充试用状态0-不可试用 1-可试用 2-已试用
                  ]
    def __init__(self):
@@ -18827,6 +19630,7 @@
        self.Cmd = 0xAA
        self.SubCmd = 0x02
        self.FirstGoldRewardState = 0
        self.FirstGoldTry = 0
        return
    def GetLength(self):
@@ -18839,12 +19643,14 @@
        DumpString = '''// AA 02 首充信息 //tagMCFirstGoldInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                FirstGoldRewardState:%d
                                FirstGoldRewardState:%d,
                                FirstGoldTry:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FirstGoldRewardState
                                self.FirstGoldRewardState,
                                self.FirstGoldTry
                                )
        return DumpString
@@ -18862,7 +19668,6 @@
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("FirstGoldRemainTime", c_int),    #首充提示剩余时间
                  ("FirstGoldTry", c_ubyte),    #首充试用状态0-不可试用 1-可试用 2-已试用
                  ]
    def __init__(self):
@@ -18880,7 +19685,6 @@
        self.Cmd = 0xAA
        self.SubCmd = 0x08
        self.FirstGoldRemainTime = 0
        self.FirstGoldTry = 0
        return
    def GetLength(self):
@@ -18893,14 +19697,12 @@
        DumpString = '''// AA 08 首充提示剩余时间 //tagMCFirstGoldTime:
                                Cmd:%s,
                                SubCmd:%s,
                                FirstGoldRemainTime:%d,
                                FirstGoldTry:%d
                                FirstGoldRemainTime:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.FirstGoldRemainTime,
                                self.FirstGoldTry
                                self.FirstGoldRemainTime
                                )
        return DumpString
@@ -19150,6 +19952,7 @@
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
    ActivityTime = list()    #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
@@ -19169,6 +19972,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivityTimeCount):
            temActivityTime = tagMCFlashGiftbagTime()
@@ -19190,6 +19994,7 @@
        self.Head.SubCmd = 0x12
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.ActivityTimeCount = 0
        self.ActivityTime = list()
        self.IsDayReset = 0
@@ -19203,6 +20008,7 @@
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        for i in range(self.ActivityTimeCount):
            length += self.ActivityTime[i].GetLength()
@@ -19219,6 +20025,7 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
        for i in range(self.ActivityTimeCount):
            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -19234,6 +20041,7 @@
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                ActivityTimeCount:%d,
                                ActivityTime:%s,
                                IsDayReset:%d,
@@ -19245,6 +20053,7 @@
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.ActivityTimeCount,
                                "...",
                                self.IsDayReset,
@@ -19365,6 +20174,372 @@
m_NAtagMCFlashGiftbagPlayerInfo=tagMCFlashGiftbagPlayerInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagPlayerInfo.Head.Cmd,m_NAtagMCFlashGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagPlayerInfo
#------------------------------------------------------
# AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
class  tagMCFlashSaleAppointmentInfo(Structure):
    Head = tagHead()
    GoodsCount = 0    #(WORD GoodsCount)// 商品数
    GoodsList = list()    #(vector<DWORD> GoodsList)// 预约的商品
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x18
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.GoodsCount):
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.GoodsList.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x18
        self.GoodsCount = 0
        self.GoodsList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        length += 4 * self.GoodsCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.GoodsCount)
        for i in range(self.GoodsCount):
            data = CommFunc.WriteDWORD(data, self.GoodsList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                GoodsCount:%d,
                                GoodsList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.GoodsCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFlashSaleAppointmentInfo=tagMCFlashSaleAppointmentInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleAppointmentInfo.Head.Cmd,m_NAtagMCFlashSaleAppointmentInfo.Head.SubCmd))] = m_NAtagMCFlashSaleAppointmentInfo
#------------------------------------------------------
# AA 17 限时抢购活动信息 #tagMCFlashSaleInfo
class  tagMCFlashSaleGiftbag(Structure):
    _pack_ = 1
    _fields_ = [
                  ("GiftID", c_int),    #商城表的物品ID
                  ("BuyCountLimit", c_ubyte),    #限购数
                  ("ServerBuyCountLimit", c_ushort),    #全服限购数
                  ("MoneyType", c_ubyte),    #消耗货币类型
                  ("MoneyNumber", c_int),    #消耗货币数量
                  ("MoneyOriginal", c_int),    #原价
                  ("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.GiftID = 0
        self.BuyCountLimit = 0
        self.ServerBuyCountLimit = 0
        self.MoneyType = 0
        self.MoneyNumber = 0
        self.MoneyOriginal = 0
        self.ItemID = 0
        self.ItemCount = 0
        self.IsBind = 0
        return
    def GetLength(self):
        return sizeof(tagMCFlashSaleGiftbag)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AA 17 限时抢购活动信息 //tagMCFlashSaleInfo:
                                GiftID:%d,
                                BuyCountLimit:%d,
                                ServerBuyCountLimit:%d,
                                MoneyType:%d,
                                MoneyNumber:%d,
                                MoneyOriginal:%d,
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.GiftID,
                                self.BuyCountLimit,
                                self.ServerBuyCountLimit,
                                self.MoneyType,
                                self.MoneyNumber,
                                self.MoneyOriginal,
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCFlashSaleShop(Structure):
    DayIndex = 0    #(BYTE DayIndex)// 活动第几天
    TimeIndex = 0    #(BYTE TimeIndex)// 第几个时间段
    GiftbagCount = 0    #(BYTE GiftbagCount)// 商店礼包数
    GiftbagInfo = list()    #(vector<tagMCFlashSaleGiftbag> GiftbagInfo)// 礼包信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.DayIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TimeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GiftbagCount):
            temGiftbagInfo = tagMCFlashSaleGiftbag()
            _pos = temGiftbagInfo.ReadData(_lpData, _pos)
            self.GiftbagInfo.append(temGiftbagInfo)
        return _pos
    def Clear(self):
        self.DayIndex = 0
        self.TimeIndex = 0
        self.GiftbagCount = 0
        self.GiftbagInfo = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 1
        for i in range(self.GiftbagCount):
            length += self.GiftbagInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.DayIndex)
        data = CommFunc.WriteBYTE(data, self.TimeIndex)
        data = CommFunc.WriteBYTE(data, self.GiftbagCount)
        for i in range(self.GiftbagCount):
            data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                DayIndex:%d,
                                TimeIndex:%d,
                                GiftbagCount:%d,
                                GiftbagInfo:%s
                                '''\
                                %(
                                self.DayIndex,
                                self.TimeIndex,
                                self.GiftbagCount,
                                "..."
                                )
        return DumpString
class  tagMCFlashSaleTime(Structure):
    StartTime = ""    #(char StartTime[5])// 开始时间 H:M
    EndtTime = ""    #(char EndtTime[5])// 结束时间 H:M
    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)
        return _pos
    def Clear(self):
        self.StartTime = ""
        self.EndtTime = ""
        return
    def GetLength(self):
        length = 0
        length += 5
        length += 5
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 5, self.StartTime)
        data = CommFunc.WriteString(data, 5, self.EndtTime)
        return data
    def OutputString(self):
        DumpString = '''
                                StartTime:%s,
                                EndtTime:%s
                                '''\
                                %(
                                self.StartTime,
                                self.EndtTime
                                )
        return DumpString
class  tagMCFlashSaleInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
    ActivityTime = list()    #(vector<tagMCFlashSaleTime> ActivityTime)//活动时间
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    ShopCount = 0    #(BYTE ShopCount)// 商店数
    ShopInfo = list()    #(vector<tagMCFlashSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x17
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivityTimeCount):
            temActivityTime = tagMCFlashSaleTime()
            _pos = temActivityTime.ReadData(_lpData, _pos)
            self.ActivityTime.append(temActivityTime)
        self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ShopCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ShopCount):
            temShopInfo = tagMCFlashSaleShop()
            _pos = temShopInfo.ReadData(_lpData, _pos)
            self.ShopInfo.append(temShopInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x17
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.ActivityTimeCount = 0
        self.ActivityTime = list()
        self.IsDayReset = 0
        self.LimitLV = 0
        self.ShopCount = 0
        self.ShopInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        for i in range(self.ActivityTimeCount):
            length += self.ActivityTime[i].GetLength()
        length += 1
        length += 2
        length += 1
        for i in range(self.ShopCount):
            length += self.ShopInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
        for i in range(self.ActivityTimeCount):
            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
        data = CommFunc.WriteBYTE(data, self.IsDayReset)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.ShopCount)
        for i in range(self.ShopCount):
            data = CommFunc.WriteString(data, self.ShopInfo[i].GetLength(), self.ShopInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                ActivityTimeCount:%d,
                                ActivityTime:%s,
                                IsDayReset:%d,
                                LimitLV:%d,
                                ShopCount:%d,
                                ShopInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.ActivityTimeCount,
                                "...",
                                self.IsDayReset,
                                self.LimitLV,
                                self.ShopCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFlashSaleInfo=tagMCFlashSaleInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleInfo.Head.Cmd,m_NAtagMCFlashSaleInfo.Head.SubCmd))] = m_NAtagMCFlashSaleInfo
#------------------------------------------------------
@@ -19793,6 +20968,7 @@
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    AdvanceMinutes = 0    #(WORD AdvanceMinutes)// 提前显示分钟
    ActivityTimeCount = 0    #(BYTE ActivityTimeCount)
    ActivityTime = list()    #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
    IsDayReset = 0    #(BYTE IsDayReset)//是否每天重置
@@ -19812,6 +20988,7 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ActivityTimeCount):
            temActivityTime = tagMCSpringSaleTime()
@@ -19833,6 +21010,7 @@
        self.Head.SubCmd = 0x11
        self.StartDate = ""
        self.EndtDate = ""
        self.AdvanceMinutes = 0
        self.ActivityTimeCount = 0
        self.ActivityTime = list()
        self.IsDayReset = 0
@@ -19846,6 +21024,7 @@
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 2
        length += 1
        for i in range(self.ActivityTimeCount):
            length += self.ActivityTime[i].GetLength()
@@ -19862,6 +21041,7 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
        data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
        for i in range(self.ActivityTimeCount):
            data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
@@ -19877,6 +21057,7 @@
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                AdvanceMinutes:%d,
                                ActivityTimeCount:%d,
                                ActivityTime:%s,
                                IsDayReset:%d,
@@ -19888,6 +21069,7 @@
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.AdvanceMinutes,
                                self.ActivityTimeCount,
                                "...",
                                self.IsDayReset,
@@ -19900,6 +21082,70 @@
m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo
#------------------------------------------------------
# AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
class  tagMCSuperGiftInfo(Structure):
    Head = tagHead()
    GiftID = 0    #(DWORD GiftID)//商品ID
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x16
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAA
        self.Head.SubCmd = 0x16
        self.GiftID = 0
        self.EndtDate = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 10
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.GiftID)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                GiftID:%d,
                                EndtDate:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.GiftID,
                                self.EndtDate
                                )
        return DumpString
m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Head.Cmd,m_NAtagMCSuperGiftInfo.Head.SubCmd))] = m_NAtagMCSuperGiftInfo
#------------------------------------------------------
@@ -20424,6 +21670,217 @@
m_NAtagMCManorWarResult=tagMCManorWarResult()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCManorWarResult.Cmd,m_NAtagMCManorWarResult.SubCmd))] = m_NAtagMCManorWarResult
#------------------------------------------------------
# AB 04 Boss复活活动信息 #tagMCBossRebornInfo
class  tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
                                ItemID:%d,
                                ItemCount:%d,
                                IsBind:%d
                                '''\
                                %(
                                self.ItemID,
                                self.ItemCount,
                                self.IsBind
                                )
        return DumpString
class  tagMCBossRebornTaskInfo(Structure):
    TaskID = 0    #(BYTE TaskID)// id
    TotalTimes = 0    #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
    SingleTimes = 0    #(BYTE SingleTimes)// 单次领奖需要次数
    AwardItemCount = 0    #(BYTE AwardItemCount)// 奖励物品数
    AwardItem = list()    #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AwardItemCount):
            temAwardItem = tagMCBossRebornAwardItem()
            _pos = temAwardItem.ReadData(_lpData, _pos)
            self.AwardItem.append(temAwardItem)
        return _pos
    def Clear(self):
        self.TaskID = 0
        self.TotalTimes = 0
        self.SingleTimes = 0
        self.AwardItemCount = 0
        self.AwardItem = list()
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 1
        length += 1
        length += 1
        for i in range(self.AwardItemCount):
            length += self.AwardItem[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.TaskID)
        data = CommFunc.WriteBYTE(data, self.TotalTimes)
        data = CommFunc.WriteBYTE(data, self.SingleTimes)
        data = CommFunc.WriteBYTE(data, self.AwardItemCount)
        for i in range(self.AwardItemCount):
            data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                TaskID:%d,
                                TotalTimes:%d,
                                SingleTimes:%d,
                                AwardItemCount:%d,
                                AwardItem:%s
                                '''\
                                %(
                                self.TaskID,
                                self.TotalTimes,
                                self.SingleTimes,
                                self.AwardItemCount,
                                "..."
                                )
        return DumpString
class  tagMCBossRebornInfo(Structure):
    Head = tagHead()
    StartDate = ""    #(char StartDate[10])// 开始日期 y-m-d
    EndtDate = ""    #(char EndtDate[10])// 结束日期 y-m-d
    ResetType = 0    #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
    LimitLV = 0    #(WORD LimitLV)// 限制等级
    TaskCnt = 0    #(BYTE TaskCnt)
    TaskInfo = list()    #(vector<tagMCBossRebornTaskInfo> TaskInfo)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x04
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
        self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TaskCnt):
            temTaskInfo = tagMCBossRebornTaskInfo()
            _pos = temTaskInfo.ReadData(_lpData, _pos)
            self.TaskInfo.append(temTaskInfo)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xAB
        self.Head.SubCmd = 0x04
        self.StartDate = ""
        self.EndtDate = ""
        self.ResetType = 0
        self.LimitLV = 0
        self.TaskCnt = 0
        self.TaskInfo = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 10
        length += 10
        length += 1
        length += 2
        length += 1
        for i in range(self.TaskCnt):
            length += self.TaskInfo[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteString(data, 10, self.StartDate)
        data = CommFunc.WriteString(data, 10, self.EndtDate)
        data = CommFunc.WriteBYTE(data, self.ResetType)
        data = CommFunc.WriteWORD(data, self.LimitLV)
        data = CommFunc.WriteBYTE(data, self.TaskCnt)
        for i in range(self.TaskCnt):
            data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                StartDate:%s,
                                EndtDate:%s,
                                ResetType:%d,
                                LimitLV:%d,
                                TaskCnt:%d,
                                TaskInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.StartDate,
                                self.EndtDate,
                                self.ResetType,
                                self.LimitLV,
                                self.TaskCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
#------------------------------------------------------
@@ -21424,6 +22881,66 @@
#------------------------------------------------------
# B1 06 通知玩家向目标点移动 #tagMCNotifyPlayerMove
class  tagMCNotifyPlayerMove(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PosX", c_int),
                  ("PosY", c_int),
                  ("NPCID", c_int),    #目标点寻路NPCID, 可能为0
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        self.SubCmd = 0x06
        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 = 0xB1
        self.SubCmd = 0x06
        self.PosX = 0
        self.PosY = 0
        self.NPCID = 0
        return
    def GetLength(self):
        return sizeof(tagMCNotifyPlayerMove)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 06 通知玩家向目标点移动 //tagMCNotifyPlayerMove:
                                Cmd:%s,
                                SubCmd:%s,
                                PosX:%d,
                                PosY:%d,
                                NPCID:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PosX,
                                self.PosY,
                                self.NPCID
                                )
        return DumpString
m_NAtagMCNotifyPlayerMove=tagMCNotifyPlayerMove()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNotifyPlayerMove.Cmd,m_NAtagMCNotifyPlayerMove.SubCmd))] = m_NAtagMCNotifyPlayerMove
#------------------------------------------------------
# B1 03 通知玩家死亡时间 #tagMCPlayerDeadTime
class  tagMCPlayerDeadTime(Structure):