ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py
@@ -7722,6 +7722,566 @@
#------------------------------------------------------
# B0 34 福地结算奖励信息 #tagGCMineAreaAwardInfo
class  tagGCMineAreaAwardInfo(Structure):
    Head = tagHead()
    AwardType = 0    #(BYTE AwardType)// 0-通知有奖励,前端下次进入福地可请求进行结算;1-结算奖励结果通知
    AwardLen = 0    #(BYTE AwardLen)
    AwardInfo = ""    #(String AwardInfo)//奖励信息 [物品ID,个数,是否拍品], ...]
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x34
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.AwardType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.AwardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x34
        self.AwardType = 0
        self.AwardLen = 0
        self.AwardInfo = ""
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 1
        length += len(self.AwardInfo)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.AwardType)
        data = CommFunc.WriteBYTE(data, self.AwardLen)
        data = CommFunc.WriteString(data, self.AwardLen, self.AwardInfo)
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                AwardType:%d,
                                AwardLen:%d,
                                AwardInfo:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.AwardType,
                                self.AwardLen,
                                self.AwardInfo
                                )
        return DumpString
m_NAtagGCMineAreaAwardInfo=tagGCMineAreaAwardInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineAreaAwardInfo.Head.Cmd,m_NAtagGCMineAreaAwardInfo.Head.SubCmd))] = m_NAtagGCMineAreaAwardInfo
#------------------------------------------------------
# B0 33 福地详细信息 #tagGCMineAreaInfo
class  tagGCMineItem(Structure):
    Index = 0    #(BYTE Index)// 矿物所在福地位置索引,0~n
    MineID = 0    #(WORD MineID)// 矿物ID,对应福地采集表中ID,0代表该索引位置没有矿物
    MineType = 0    #(BYTE MineType)// 矿物类型:0-常规;1-超级
    UpdTime = 0    #(DWORD UpdTime)// 最后一次更新时间戳
    PosLen = 0    #(BYTE PosLen)
    Position = ""    #(String Position)// 最后一次更新时所在位置百分比,0~100,支持小数,下0上100,可认为分为100格,速度为 x格/秒
    SpeedLen = 0    #(BYTE SpeedLen)
    MoveSpeed = ""    #(String MoveSpeed)// 移动速度,x格/秒,支持小数
    EndTime = 0    #(DWORD EndTime)// 拉取结束时间戳
    WorkerCount = 0    #(BYTE WorkerCount)// 工人个数,为0时代表福地玩家没有使用工人拉回
    RobPlayerID = 0    #(DWORD RobPlayerID)// 抢夺玩家ID,为0时代表没人抢夺
    RobWorkerCount = 0    #(BYTE RobWorkerCount)// 抢夺工人个数
    RobPlayerName = ""    #(char RobPlayerName[33])
    RobFace = 0    #(DWORD RobFace)
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.Index,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.MineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.UpdTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.PosLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Position,_pos = CommFunc.ReadString(_lpData, _pos,self.PosLen)
        self.SpeedLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.MoveSpeed,_pos = CommFunc.ReadString(_lpData, _pos,self.SpeedLen)
        self.EndTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.WorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RobPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RobWorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RobPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.RobFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.Index = 0
        self.MineID = 0
        self.MineType = 0
        self.UpdTime = 0
        self.PosLen = 0
        self.Position = ""
        self.SpeedLen = 0
        self.MoveSpeed = ""
        self.EndTime = 0
        self.WorkerCount = 0
        self.RobPlayerID = 0
        self.RobWorkerCount = 0
        self.RobPlayerName = ""
        self.RobFace = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 2
        length += 1
        length += 4
        length += 1
        length += len(self.Position)
        length += 1
        length += len(self.MoveSpeed)
        length += 4
        length += 1
        length += 4
        length += 1
        length += 33
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.Index)
        data = CommFunc.WriteWORD(data, self.MineID)
        data = CommFunc.WriteBYTE(data, self.MineType)
        data = CommFunc.WriteDWORD(data, self.UpdTime)
        data = CommFunc.WriteBYTE(data, self.PosLen)
        data = CommFunc.WriteString(data, self.PosLen, self.Position)
        data = CommFunc.WriteBYTE(data, self.SpeedLen)
        data = CommFunc.WriteString(data, self.SpeedLen, self.MoveSpeed)
        data = CommFunc.WriteDWORD(data, self.EndTime)
        data = CommFunc.WriteBYTE(data, self.WorkerCount)
        data = CommFunc.WriteDWORD(data, self.RobPlayerID)
        data = CommFunc.WriteBYTE(data, self.RobWorkerCount)
        data = CommFunc.WriteString(data, 33, self.RobPlayerName)
        data = CommFunc.WriteDWORD(data, self.RobFace)
        return data
    def OutputString(self):
        DumpString = '''
                                Index:%d,
                                MineID:%d,
                                MineType:%d,
                                UpdTime:%d,
                                PosLen:%d,
                                Position:%s,
                                SpeedLen:%d,
                                MoveSpeed:%s,
                                EndTime:%d,
                                WorkerCount:%d,
                                RobPlayerID:%d,
                                RobWorkerCount:%d,
                                RobPlayerName:%s,
                                RobFace:%d
                                '''\
                                %(
                                self.Index,
                                self.MineID,
                                self.MineType,
                                self.UpdTime,
                                self.PosLen,
                                self.Position,
                                self.SpeedLen,
                                self.MoveSpeed,
                                self.EndTime,
                                self.WorkerCount,
                                self.RobPlayerID,
                                self.RobWorkerCount,
                                self.RobPlayerName,
                                self.RobFace
                                )
        return DumpString
class  tagGCMineArea(Structure):
    PlayerID = 0    #(DWORD PlayerID)// 福地所属玩家ID,可能是自己或其他玩家ID,当ID小于10000时为假人
    PlayerName = ""    #(char PlayerName[33])// 可能为空,如自己或假人
    Face = 0    #(DWORD Face)
    MineCount = 0    #(BYTE MineCount)
    MineItemList = list()    #(vector<tagGCMineItem> MineItemList)// 矿物列表
    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.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MineCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MineCount):
            temMineItemList = tagGCMineItem()
            _pos = temMineItemList.ReadData(_lpData, _pos)
            self.MineItemList.append(temMineItemList)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.PlayerName = ""
        self.Face = 0
        self.MineCount = 0
        self.MineItemList = list()
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 33
        length += 4
        length += 1
        for i in range(self.MineCount):
            length += self.MineItemList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteString(data, 33, self.PlayerName)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteBYTE(data, self.MineCount)
        for i in range(self.MineCount):
            data = CommFunc.WriteString(data, self.MineItemList[i].GetLength(), self.MineItemList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                PlayerName:%s,
                                Face:%d,
                                MineCount:%d,
                                MineItemList:%s
                                '''\
                                %(
                                self.PlayerID,
                                self.PlayerName,
                                self.Face,
                                self.MineCount,
                                "..."
                                )
        return DumpString
class  tagGCMineAreaInfo(Structure):
    Head = tagHead()
    QueryType = 0    #(BYTE QueryType)// 查询同步类型:0-后端主动同步;1-查看指定福地;2-查看道友福地列表;3-查看周围随机福地列表
    QueryValue = 0    #(DWORD QueryValue)// 查询值,类型1时-发送目标玩家ID;3时-发送是否重新随机
    AreaCount = 0    #(BYTE AreaCount)
    AreaList = list()    #(vector<tagGCMineArea> AreaList)// 福地列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x33
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.QueryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.QueryValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.AreaCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.AreaCount):
            temAreaList = tagGCMineArea()
            _pos = temAreaList.ReadData(_lpData, _pos)
            self.AreaList.append(temAreaList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x33
        self.QueryType = 0
        self.QueryValue = 0
        self.AreaCount = 0
        self.AreaList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 4
        length += 1
        for i in range(self.AreaCount):
            length += self.AreaList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.QueryType)
        data = CommFunc.WriteDWORD(data, self.QueryValue)
        data = CommFunc.WriteBYTE(data, self.AreaCount)
        for i in range(self.AreaCount):
            data = CommFunc.WriteString(data, self.AreaList[i].GetLength(), self.AreaList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                QueryType:%d,
                                QueryValue:%d,
                                AreaCount:%d,
                                AreaList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.QueryType,
                                self.QueryValue,
                                self.AreaCount,
                                "..."
                                )
        return DumpString
m_NAtagGCMineAreaInfo=tagGCMineAreaInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineAreaInfo.Head.Cmd,m_NAtagGCMineAreaInfo.Head.SubCmd))] = m_NAtagGCMineAreaInfo
#------------------------------------------------------
# B0 35 福地记录信息 #tagGCMineAreaRecordInfo
class  tagGCMineAreaRecord(Structure):
    RecordType = 0    #(BYTE RecordType)// 记录类型;1-自己拉物品;2-物品被人抢
    TagPlayerID = 0    #(DWORD TagPlayerID)// 目标玩家ID,等于自己玩家ID时代表拉自己的,反之为抢别人的
    RecordTime = 0    #(DWORD RecordTime)// 记录时间戳
    MineID = 0    #(WORD MineID)// 矿物ID,对应福地采集表中ID
    TagPlayerName = ""    #(char TagPlayerName[33])
    TagFace = 0    #(DWORD TagFace)
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TagPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RecordTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.TagFace,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.RecordType = 0
        self.TagPlayerID = 0
        self.RecordTime = 0
        self.MineID = 0
        self.TagPlayerName = ""
        self.TagFace = 0
        return
    def GetLength(self):
        length = 0
        length += 1
        length += 4
        length += 4
        length += 2
        length += 33
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.RecordType)
        data = CommFunc.WriteDWORD(data, self.TagPlayerID)
        data = CommFunc.WriteDWORD(data, self.RecordTime)
        data = CommFunc.WriteWORD(data, self.MineID)
        data = CommFunc.WriteString(data, 33, self.TagPlayerName)
        data = CommFunc.WriteDWORD(data, self.TagFace)
        return data
    def OutputString(self):
        DumpString = '''
                                RecordType:%d,
                                TagPlayerID:%d,
                                RecordTime:%d,
                                MineID:%d,
                                TagPlayerName:%s,
                                TagFace:%d
                                '''\
                                %(
                                self.RecordType,
                                self.TagPlayerID,
                                self.RecordTime,
                                self.MineID,
                                self.TagPlayerName,
                                self.TagFace
                                )
        return DumpString
class  tagGCMineAreaRecordInfo(Structure):
    Head = tagHead()
    RecordCount = 0    #(BYTE RecordCount)
    AreaRecordList = list()    #(vector<tagGCMineAreaRecord> AreaRecordList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x35
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RecordCount):
            temAreaRecordList = tagGCMineAreaRecord()
            _pos = temAreaRecordList.ReadData(_lpData, _pos)
            self.AreaRecordList.append(temAreaRecordList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x35
        self.RecordCount = 0
        self.AreaRecordList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.RecordCount):
            length += self.AreaRecordList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.RecordCount)
        for i in range(self.RecordCount):
            data = CommFunc.WriteString(data, self.AreaRecordList[i].GetLength(), self.AreaRecordList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RecordCount:%d,
                                AreaRecordList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.RecordCount,
                                "..."
                                )
        return DumpString
m_NAtagGCMineAreaRecordInfo=tagGCMineAreaRecordInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineAreaRecordInfo.Head.Cmd,m_NAtagGCMineAreaRecordInfo.Head.SubCmd))] = m_NAtagGCMineAreaRecordInfo
#------------------------------------------------------
# B0 32 福地物品拉预览结果 #tagGCMineItemPullPreviewRet
class  tagGCMineItemPullPreviewRet(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("PlayerID", c_int),    # 福地所属玩家ID,0默认自己
                  ("ItemIndex", c_ubyte),    # 物品所在位置索引0~n
                  ("WorkerCount", c_ubyte),    # 上工人人数
                  ("NeedSeconds", c_int),    # 预计需要时间,秒
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB0
        self.SubCmd = 0x32
        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 = 0xB0
        self.SubCmd = 0x32
        self.PlayerID = 0
        self.ItemIndex = 0
        self.WorkerCount = 0
        self.NeedSeconds = 0
        return
    def GetLength(self):
        return sizeof(tagGCMineItemPullPreviewRet)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B0 32 福地物品拉预览结果 //tagGCMineItemPullPreviewRet:
                                Cmd:%s,
                                SubCmd:%s,
                                PlayerID:%d,
                                ItemIndex:%d,
                                WorkerCount:%d,
                                NeedSeconds:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.PlayerID,
                                self.ItemIndex,
                                self.WorkerCount,
                                self.NeedSeconds
                                )
        return DumpString
m_NAtagGCMineItemPullPreviewRet=tagGCMineItemPullPreviewRet()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMineItemPullPreviewRet.Cmd,m_NAtagGCMineItemPullPreviewRet.SubCmd))] = m_NAtagGCMineItemPullPreviewRet
#------------------------------------------------------
# B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
class  tagGCAssistPlayerInfo(Structure):
@@ -9037,6 +9597,7 @@
    OnlineType = 0    #(BYTE OnlineType)//在线状态, 0 不在线 1在线
    IsInTeam = 0    #(BYTE IsInTeam)//是否有队伍
    ServerGroupID = 0    #(DWORD ServerGroupID)//服务器组ID
    Face = 0    #(DWORD Face)//基本脸型
    data = None
    def __init__(self):
@@ -9056,6 +9617,7 @@
        self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -9071,6 +9633,7 @@
        self.OnlineType = 0
        self.IsInTeam = 0
        self.ServerGroupID = 0
        self.Face = 0
        return
    def GetLength(self):
@@ -9083,6 +9646,7 @@
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        return length
@@ -9098,6 +9662,7 @@
        data = CommFunc.WriteBYTE(data, self.OnlineType)
        data = CommFunc.WriteBYTE(data, self.IsInTeam)
        data = CommFunc.WriteDWORD(data, self.ServerGroupID)
        data = CommFunc.WriteDWORD(data, self.Face)
        return data
    def OutputString(self):
@@ -9110,7 +9675,8 @@
                                RealmLV:%d,
                                OnlineType:%d,
                                IsInTeam:%d,
                                ServerGroupID:%d
                                ServerGroupID:%d,
                                Face:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -9121,7 +9687,8 @@
                                self.RealmLV,
                                self.OnlineType,
                                self.IsInTeam,
                                self.ServerGroupID
                                self.ServerGroupID,
                                self.Face
                                )
        return DumpString
@@ -9196,6 +9763,7 @@
    LV = 0    #(WORD LV)//等级
    RealmLV = 0    #(WORD RealmLV)//境界
    OnlineType = 0    #(BYTE OnlineType)//0不在线 1在线 2脱机在线
    Face = 0    #(DWORD Face)//基本脸型
    data = None
    def __init__(self):
@@ -9210,6 +9778,7 @@
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -9219,6 +9788,7 @@
        self.LV = 0
        self.RealmLV = 0
        self.OnlineType = 0
        self.Face = 0
        return
    def GetLength(self):
@@ -9229,6 +9799,7 @@
        length += 2
        length += 2
        length += 1
        length += 4
        return length
@@ -9240,6 +9811,7 @@
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteWORD(data, self.RealmLV)
        data = CommFunc.WriteBYTE(data, self.OnlineType)
        data = CommFunc.WriteDWORD(data, self.Face)
        return data
    def OutputString(self):
@@ -9249,7 +9821,8 @@
                                Job:%d,
                                LV:%d,
                                RealmLV:%d,
                                OnlineType:%d
                                OnlineType:%d,
                                Face:%d
                                '''\
                                %(
                                self.PlayerID,
@@ -9257,7 +9830,8 @@
                                self.Job,
                                self.LV,
                                self.RealmLV,
                                self.OnlineType
                                self.OnlineType,
                                self.Face
                                )
        return DumpString
@@ -16324,7 +16898,7 @@
class  tagMCCoinToGoldCount(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RecordID", c_ubyte),
                  ("RecordID", c_ushort),
                  ("TodayPayCount", c_ushort),    # 今日已购买次数
                  ("TotalPayCount", c_int),    # 累计总购买次数
                  ("WeekPayCount", c_ushort),    # 周总购买次数
@@ -16374,7 +16948,7 @@
class  tagMCCoinToGoldCountInfo(Structure):
    Head = tagHead()
    RecordCount = 0    #(BYTE RecordCount)
    RecordCount = 0    #(WORD RecordCount)
    CTGCountInfoList = list()    #(vector<tagMCCoinToGoldCount> CTGCountInfoList)
    data = None
@@ -16387,7 +16961,7 @@
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RecordCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.RecordCount):
            temCTGCountInfoList = tagMCCoinToGoldCount()
            _pos = temCTGCountInfoList.ReadData(_lpData, _pos)
@@ -16406,7 +16980,7 @@
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        for i in range(self.RecordCount):
            length += self.CTGCountInfoList[i].GetLength()
@@ -16415,7 +16989,7 @@
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.RecordCount)
        data = CommFunc.WriteWORD(data, self.RecordCount)
        for i in range(self.RecordCount):
            data = CommFunc.WriteString(data, self.CTGCountInfoList[i].GetLength(), self.CTGCountInfoList[i].GetBuffer())
        return data
@@ -16446,7 +17020,7 @@
    OrderLen = 0    #(BYTE OrderLen)
    OrderID = ""    #(String OrderID)// 订单id
    Coin = 0    #(DWORD Coin)// 充值的点卷
    RecordID = 0    #(BYTE RecordID)// ctgID
    RecordID = 0    #(WORD RecordID)// ctgID
    OrderInfoLen = 0    #(BYTE OrderInfoLen)
    OrderInfo = ""    #(String OrderInfo)
    data = None
@@ -16463,7 +17037,7 @@
        self.OrderLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.OrderID,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderLen)
        self.Coin,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RecordID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RecordID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
        return _pos
@@ -16487,7 +17061,7 @@
        length += 1
        length += len(self.OrderID)
        length += 4
        length += 1
        length += 2
        length += 1
        length += len(self.OrderInfo)
@@ -16499,7 +17073,7 @@
        data = CommFunc.WriteBYTE(data, self.OrderLen)
        data = CommFunc.WriteString(data, self.OrderLen, self.OrderID)
        data = CommFunc.WriteDWORD(data, self.Coin)
        data = CommFunc.WriteBYTE(data, self.RecordID)
        data = CommFunc.WriteWORD(data, self.RecordID)
        data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
        data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
        return data
@@ -16630,6 +17204,8 @@
    ExAttr19 = 0    #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性
    ExAttr20 = 0    #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性
    HPEx = 0    #(DWORD HPEx)//当前血量 超过E的记录
    Face = 0    #(DWORD Face)//基本脸型
    RoleType = 0    #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分)
    data = None
    def __init__(self):
@@ -16736,6 +17312,8 @@
        self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
@@ -16838,6 +17416,8 @@
        self.ExAttr19 = 0
        self.ExAttr20 = 0
        self.HPEx = 0
        self.Face = 0
        self.RoleType = 0
        return
    def GetLength(self):
@@ -16930,6 +17510,8 @@
        length += 4
        length += 4
        length += 15
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
@@ -17039,6 +17621,8 @@
        data = CommFunc.WriteDWORD(data, self.ExAttr19)
        data = CommFunc.WriteDWORD(data, self.ExAttr20)
        data = CommFunc.WriteDWORD(data, self.HPEx)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.RoleType)
        return data
    def OutputString(self):
@@ -17138,7 +17722,9 @@
                                ExAttr18:%d,
                                ExAttr19:%d,
                                ExAttr20:%d,
                                HPEx:%d
                                HPEx:%d,
                                Face:%d,
                                RoleType:%d
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -17236,7 +17822,9 @@
                                self.ExAttr18,
                                self.ExAttr19,
                                self.ExAttr20,
                                self.HPEx
                                self.HPEx,
                                self.Face,
                                self.RoleType
                                )
        return DumpString
@@ -25218,6 +25806,8 @@
                  ("SubCmd", c_ubyte),
                  ("IsPass", c_ubyte),    #是否通关副本
                  ("XXZLAwardState", c_int),    #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取
                  ("RealmLVUpAwardState", c_int),    #渡劫条件领奖状态;按二进制位存储是否已领取,0-等级;1-副本关卡;2-仙树等级;3-砍树次数
                  ("RealmLVUpCutTreeCnt", c_int),    #渡劫条件已砍树次数
                  ]
    def __init__(self):
@@ -25236,6 +25826,8 @@
        self.SubCmd = 0x11
        self.IsPass = 0
        self.XXZLAwardState = 0
        self.RealmLVUpAwardState = 0
        self.RealmLVUpCutTreeCnt = 0
        return
    def GetLength(self):
@@ -25249,13 +25841,17 @@
                                Cmd:%s,
                                SubCmd:%s,
                                IsPass:%d,
                                XXZLAwardState:%d
                                XXZLAwardState:%d,
                                RealmLVUpAwardState:%d,
                                RealmLVUpCutTreeCnt:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.IsPass,
                                self.XXZLAwardState
                                self.XXZLAwardState,
                                self.RealmLVUpAwardState,
                                self.RealmLVUpCutTreeCnt
                                )
        return DumpString
@@ -29521,7 +30117,7 @@
class  tagRefreshType(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RefreshType", c_ubyte),
                  ("RefreshType", c_ushort),
                  ("Value", c_int),    
                  ("ValueEx", c_int),    
                  ]
@@ -32440,7 +33036,7 @@
class  tagMCActGrowupBuyCTGInfo(Structure):
    CTGID = 0    #(BYTE CTGID)// 充值表ID
    CTGID = 0    #(WORD CTGID)// 充值表ID
    GainItemCount = 0    #(BYTE GainItemCount)// 获得物品数
    GainItemList = list()    #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息
    data = None
@@ -32451,7 +33047,7 @@
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.CTGID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.GainItemCount):
            temGainItemList = tagMCActGrowupBuyCTGItem()
@@ -32467,7 +33063,7 @@
    def GetLength(self):
        length = 0
        length += 1
        length += 2
        length += 1
        for i in range(self.GainItemCount):
            length += self.GainItemList[i].GetLength()
@@ -32476,7 +33072,7 @@
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteBYTE(data, self.CTGID)
        data = CommFunc.WriteWORD(data, self.CTGID)
        data = CommFunc.WriteBYTE(data, self.GainItemCount)
        for i in range(self.GainItemCount):
            data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer())
@@ -43004,6 +43600,121 @@
#------------------------------------------------------
# B0 30 玩家福地相关信息 #tagMCPlayerMineAreaInfo
class  tagMCPlayerMineAreaInfo(Structure):
    Head = tagHead()
    WorkerCount = 0    #(BYTE WorkerCount)// 已雇佣工人数
    EnergyUsed = 0    #(WORD EnergyUsed)// 今日已消耗体力
    RefreshCount = 0    #(DWORD RefreshCount)// 今日福地刷新物品次数 - 普通刷新
    RefreshCountSuper = 0    #(BYTE RefreshCountSuper)// 今日福地刷新物品次数 - 超级刷新
    TreasureCount = 0    #(BYTE TreasureCount)// 聚宝盆类型个数,对应类型 0~n
    TreasureState = list()    #(vector<BYTE> TreasureState)// 聚宝盆是否已激活列表,[类型0是否已激活, ...]
    TreasureAward = list()    #(vector<BYTE> TreasureAward)// 聚宝盆奖励是否已领取列表,[类型0是否已领取, ...]
    TreasureProgress = list()    #(vector<BYTE> TreasureProgress)// 聚宝盆进度值列表,[类型0进度值, ...],满进度100
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x30
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.WorkerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.EnergyUsed,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.RefreshCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.RefreshCountSuper,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TreasureCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.TreasureCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.TreasureState.append(value)
        for i in range(self.TreasureCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.TreasureAward.append(value)
        for i in range(self.TreasureCount):
            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
            self.TreasureProgress.append(value)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB0
        self.Head.SubCmd = 0x30
        self.WorkerCount = 0
        self.EnergyUsed = 0
        self.RefreshCount = 0
        self.RefreshCountSuper = 0
        self.TreasureCount = 0
        self.TreasureState = list()
        self.TreasureAward = list()
        self.TreasureProgress = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        length += 4
        length += 1
        length += 1
        length += 1 * self.TreasureCount
        length += 1 * self.TreasureCount
        length += 1 * self.TreasureCount
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.WorkerCount)
        data = CommFunc.WriteWORD(data, self.EnergyUsed)
        data = CommFunc.WriteDWORD(data, self.RefreshCount)
        data = CommFunc.WriteBYTE(data, self.RefreshCountSuper)
        data = CommFunc.WriteBYTE(data, self.TreasureCount)
        for i in range(self.TreasureCount):
            data = CommFunc.WriteBYTE(data, self.TreasureState[i])
        for i in range(self.TreasureCount):
            data = CommFunc.WriteBYTE(data, self.TreasureAward[i])
        for i in range(self.TreasureCount):
            data = CommFunc.WriteBYTE(data, self.TreasureProgress[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                WorkerCount:%d,
                                EnergyUsed:%d,
                                RefreshCount:%d,
                                RefreshCountSuper:%d,
                                TreasureCount:%d,
                                TreasureState:%s,
                                TreasureAward:%s,
                                TreasureProgress:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.WorkerCount,
                                self.EnergyUsed,
                                self.RefreshCount,
                                self.RefreshCountSuper,
                                self.TreasureCount,
                                "...",
                                "...",
                                "..."
                                )
        return DumpString
m_NAtagMCPlayerMineAreaInfo=tagMCPlayerMineAreaInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerMineAreaInfo.Head.Cmd,m_NAtagMCPlayerMineAreaInfo.Head.SubCmd))] = m_NAtagMCPlayerMineAreaInfo
#------------------------------------------------------
# B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
class  tagMCTodayAssistMoneyInfo(Structure):
@@ -43937,6 +44648,62 @@
m_NAtagMCYinjiStartTime=tagMCYinjiStartTime()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCYinjiStartTime.Cmd,m_NAtagMCYinjiStartTime.SubCmd))] = m_NAtagMCYinjiStartTime
#------------------------------------------------------
# B1 10 当前任务信息 #tagMCTaskInfo
class  tagMCTaskInfo(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("TaskID", c_int),    # 任务ID
                  ("CurValue", c_int),    # 当前进度值
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB1
        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 = 0xB1
        self.SubCmd = 0x10
        self.TaskID = 0
        self.CurValue = 0
        return
    def GetLength(self):
        return sizeof(tagMCTaskInfo)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B1 10 当前任务信息 //tagMCTaskInfo:
                                Cmd:%s,
                                SubCmd:%s,
                                TaskID:%d,
                                CurValue:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TaskID,
                                self.CurValue
                                )
        return DumpString
m_NAtagMCTaskInfo=tagMCTaskInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Cmd,m_NAtagMCTaskInfo.SubCmd))] = m_NAtagMCTaskInfo
#------------------------------------------------------
@@ -47424,25 +48191,22 @@
#------------------------------------------------------
# B4 20 回合制战斗状态 #tagMCTurnFightState
# B4 21 回合战斗对象开始行动 #tagMCTurnFightObjAction
class  tagMCTurnFightState(Structure):
class  tagMCTurnFightObjAction(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("MapID", c_int),    # 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
                  ("FuncLineID", c_ushort),
                  ("PlayerID", c_int),    # 对应玩家ID,可为0,某些功能可能有用,如竞技场
                  ("State", c_ubyte),    # 0-开始;1-战斗中;2-胜利;3-失败;4-结束
                  ("TurnNum", c_ubyte),    # 当前轮次
                  ("TurnMax", c_ubyte),    # 最大轮次
                  ("ObjID", c_int),
                  ("ObjType", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x20
        self.SubCmd = 0x21
        return
    def ReadData(self, stringData, _pos=0, _len=0):
@@ -47452,47 +48216,276 @@
    def Clear(self):
        self.Cmd = 0xB4
        self.SubCmd = 0x20
        self.SubCmd = 0x21
        self.TurnNum = 0
        self.ObjID = 0
        self.ObjType = 0
        return
    def GetLength(self):
        return sizeof(tagMCTurnFightObjAction)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 21 回合战斗对象开始行动 //tagMCTurnFightObjAction:
                                Cmd:%s,
                                SubCmd:%s,
                                TurnNum:%d,
                                ObjID:%d,
                                ObjType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.TurnNum,
                                self.ObjID,
                                self.ObjType
                                )
        return DumpString
m_NAtagMCTurnFightObjAction=tagMCTurnFightObjAction()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightObjAction.Cmd,m_NAtagMCTurnFightObjAction.SubCmd))] = m_NAtagMCTurnFightObjAction
#------------------------------------------------------
# B4 22 回合战斗角色死亡 #tagMCTurnFightObjDead
class  tagMCTurnFightObjDead(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ObjID", c_int),
                  ("ObjType", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x22
        return
    def ReadData(self, stringData, _pos=0, _len=0):
        self.Clear()
        memmove(addressof(self), stringData[_pos:], self.GetLength())
        return _pos + self.GetLength()
    def Clear(self):
        self.Cmd = 0xB4
        self.SubCmd = 0x22
        self.ObjID = 0
        self.ObjType = 0
        return
    def GetLength(self):
        return sizeof(tagMCTurnFightObjDead)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 22 回合战斗角色死亡 //tagMCTurnFightObjDead:
                                Cmd:%s,
                                SubCmd:%s,
                                ObjID:%d,
                                ObjType:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ObjID,
                                self.ObjType
                                )
        return DumpString
m_NAtagMCTurnFightObjDead=tagMCTurnFightObjDead()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightObjDead.Cmd,m_NAtagMCTurnFightObjDead.SubCmd))] = m_NAtagMCTurnFightObjDead
#------------------------------------------------------
# B4 23 回合战斗角色复活 #tagMCTurnFightObjReborn
class  tagMCTurnFightObjReborn(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("ObjID", c_int),
                  ("ObjType", c_ubyte),
                  ("HP", c_int),    # 复活后血量,求余亿部分
                  ("HPEx", c_int),    # 复活后血量,整除亿部分
                  ("RebornType", c_ubyte),    # 复活方式:1-灵宠技能复活;2-待扩展
                  ("RebornValue1", c_int),    # 复活方式对应值1,由复活方式决定其值意义
                  ("RebornValue2", c_int),    # 复活方式对应值2
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xB4
        self.SubCmd = 0x23
        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 = 0xB4
        self.SubCmd = 0x23
        self.ObjID = 0
        self.ObjType = 0
        self.HP = 0
        self.HPEx = 0
        self.RebornType = 0
        self.RebornValue1 = 0
        self.RebornValue2 = 0
        return
    def GetLength(self):
        return sizeof(tagMCTurnFightObjReborn)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// B4 23 回合战斗角色复活 //tagMCTurnFightObjReborn:
                                Cmd:%s,
                                SubCmd:%s,
                                ObjID:%d,
                                ObjType:%d,
                                HP:%d,
                                HPEx:%d,
                                RebornType:%d,
                                RebornValue1:%d,
                                RebornValue2:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.ObjID,
                                self.ObjType,
                                self.HP,
                                self.HPEx,
                                self.RebornType,
                                self.RebornValue1,
                                self.RebornValue2
                                )
        return DumpString
m_NAtagMCTurnFightObjReborn=tagMCTurnFightObjReborn()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightObjReborn.Cmd,m_NAtagMCTurnFightObjReborn.SubCmd))] = m_NAtagMCTurnFightObjReborn
#------------------------------------------------------
# B4 20 回合制战斗状态 #tagMCTurnFightState
class  tagMCTurnFightState(Structure):
    Head = tagHead()
    MapID = 0    #(DWORD MapID)// 自定义地图ID,可用于绑定战斗场景功能(如野外关卡,爬塔功能,竞技场等)
    FuncLineID = 0    #(WORD FuncLineID)
    PlayerID = 0    #(DWORD PlayerID)// 对应玩家ID,可为0,某些功能可能有用,如竞技场
    State = 0    #(BYTE State)// 0-起始状态标记;1-准备完毕;2-战斗中;3-战斗结束;4-结算奖励;5-结束状态标记
    TurnNum = 0    #(BYTE TurnNum)// 当前轮次
    TurnMax = 0    #(BYTE TurnMax)// 最大轮次
    Len = 0    #(WORD Len)
    Msg = ""    #(String Msg)//size = Len
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x20
        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.FuncLineID,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.State,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TurnNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TurnMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xB4
        self.Head.SubCmd = 0x20
        self.MapID = 0
        self.FuncLineID = 0
        self.PlayerID = 0
        self.State = 0
        self.TurnNum = 0
        self.TurnMax = 0
        self.Len = 0
        self.Msg = ""
        return
    def GetLength(self):
        return sizeof(tagMCTurnFightState)
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 2
        length += 4
        length += 1
        length += 1
        length += 1
        length += 2
        length += len(self.Msg)
        return length
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.MapID)
        data = CommFunc.WriteWORD(data, self.FuncLineID)
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.State)
        data = CommFunc.WriteBYTE(data, self.TurnNum)
        data = CommFunc.WriteBYTE(data, self.TurnMax)
        data = CommFunc.WriteWORD(data, self.Len)
        data = CommFunc.WriteString(data, self.Len, self.Msg)
        return data
    def OutputString(self):
        DumpString = '''// B4 20 回合制战斗状态 //tagMCTurnFightState:
                                Cmd:%s,
                                SubCmd:%s,
        DumpString = '''
                                Head:%s,
                                MapID:%d,
                                FuncLineID:%d,
                                PlayerID:%d,
                                State:%d,
                                TurnNum:%d,
                                TurnMax:%d
                                TurnMax:%d,
                                Len:%d,
                                Msg:%s
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Head.OutputString(),
                                self.MapID,
                                self.FuncLineID,
                                self.PlayerID,
                                self.State,
                                self.TurnNum,
                                self.TurnMax
                                self.TurnMax,
                                self.Len,
                                self.Msg
                                )
        return DumpString
m_NAtagMCTurnFightState=tagMCTurnFightState()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Cmd,m_NAtagMCTurnFightState.SubCmd))] = m_NAtagMCTurnFightState
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTurnFightState.Head.Cmd,m_NAtagMCTurnFightState.Head.SubCmd))] = m_NAtagMCTurnFightState
#------------------------------------------------------