hxp
2025-05-08 6a9883b425e53e714b9a930ec70b7544999611a6
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -32149,6 +32149,58 @@
#------------------------------------------------------
# A5 21 家族变更 #tagMCFamilyChange
class  tagMCFamilyChange(Structure):
    _pack_ = 1
    _fields_ = [
                  ("Cmd", c_ubyte),
                  ("SubCmd", c_ubyte),
                  ("Type", c_ubyte),
                  ]
    def __init__(self):
        self.Clear()
        self.Cmd = 0xA5
        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 = 0xA5
        self.SubCmd = 0x21
        self.Type = 0
        return
    def GetLength(self):
        return sizeof(tagMCFamilyChange)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''// A5 21 家族变更 //tagMCFamilyChange:
                                Cmd:%s,
                                SubCmd:%s,
                                Type:%d
                                '''\
                                %(
                                self.Cmd,
                                self.SubCmd,
                                self.Type
                                )
        return DumpString
m_NAtagMCFamilyChange=tagMCFamilyChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyChange.Cmd,m_NAtagMCFamilyChange.SubCmd))] = m_NAtagMCFamilyChange
#------------------------------------------------------
# A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
class  tagMCFamilyDayAward(Structure):
@@ -32313,6 +32365,197 @@
#------------------------------------------------------
# A5 22 家族申请加入的玩家信息 #tagMCFamilyReqJoinInfo
class  tagMCFamilyReqJoinPlayer(Structure):
    PlayerID = 0    #(DWORD PlayerID)
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)//size = NameLen
    ReqTime = 0    #(DWORD ReqTime)//申请时间戳
    LV = 0    #(WORD LV)//等级
    Job = 0    #(BYTE Job)//ְҵ
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    FightPower = 0    #(DWORD FightPower)//战力,求余亿部分
    FightPowerEx = 0    #(DWORD FightPowerEx)//战力,整除亿部分
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    IsOnLine = 0    #(BYTE IsOnLine)//是否在线
    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.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.ReqTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.IsOnLine,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.NameLen = 0
        self.Name = ""
        self.ReqTime = 0
        self.LV = 0
        self.Job = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        self.ServerID = 0
        self.IsOnLine = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += len(self.Name)
        length += 4
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.ReqTime)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteBYTE(data, self.IsOnLine)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                NameLen:%d,
                                Name:%s,
                                ReqTime:%d,
                                LV:%d,
                                Job:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                FightPower:%d,
                                FightPowerEx:%d,
                                ServerID:%d,
                                IsOnLine:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.NameLen,
                                self.Name,
                                self.ReqTime,
                                self.LV,
                                self.Job,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.FightPower,
                                self.FightPowerEx,
                                self.ServerID,
                                self.IsOnLine
                                )
        return DumpString
class  tagMCFamilyReqJoinInfo(Structure):
    Head = tagHead()
    ReqCnt = 0    #(BYTE ReqCnt)
    ReqJoinList = list()    #(vector<tagMCFamilyReqJoinPlayer> ReqJoinList)
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x22
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.ReqCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.ReqCnt):
            temReqJoinList = tagMCFamilyReqJoinPlayer()
            _pos = temReqJoinList.ReadData(_lpData, _pos)
            self.ReqJoinList.append(temReqJoinList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x22
        self.ReqCnt = 0
        self.ReqJoinList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.ReqCnt):
            length += self.ReqJoinList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.ReqCnt)
        for i in range(self.ReqCnt):
            data = CommFunc.WriteString(data, self.ReqJoinList[i].GetLength(), self.ReqJoinList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                ReqCnt:%d,
                                ReqJoinList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.ReqCnt,
                                "..."
                                )
        return DumpString
m_NAtagMCFamilyReqJoinInfo=tagMCFamilyReqJoinInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyReqJoinInfo.Head.Cmd,m_NAtagMCFamilyReqJoinInfo.Head.SubCmd))] = m_NAtagMCFamilyReqJoinInfo
#------------------------------------------------------
# A5 11 打坐信息 #tagMCFamilySitInfo
class  tagMCFamilySitInfo(Structure):
@@ -32370,6 +32613,239 @@
m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
#------------------------------------------------------
# A5 23 搜索家族返回列表 #tagMCFamilyViewList
class  tagMCFamilyView(Structure):
    FamilyID = 0    #(DWORD FamilyID)//家族ID
    FamilyNameLen = 0    #(BYTE FamilyNameLen)
    FamilyName = ""    #(String FamilyName)//size = FamilyNameLen
    LeaderID = 0    #(DWORD LeaderID)//族长ID
    LeaderNameLen = 0    #(BYTE LeaderNameLen)
    LeaderName = ""    #(String LeaderName)//size = LeaderNameLen
    FamilyLV = 0    #(BYTE FamilyLV)//家族等级
    JoinReview = 0    #(BYTE JoinReview)//成员加入是否需要审核,默认0自动加入
    JoinLVMin = 0    #(WORD JoinLVMin)//限制最低可加入的玩家等级
    ServerID = 0    #(DWORD ServerID)//区服ID
    EmblemID = 0    #(DWORD EmblemID)//徽章ID
    FightPower = 0    #(DWORD FightPower)//总战力,求余亿部分
    FightPowerEx = 0    #(DWORD FightPowerEx)//总战力,整除亿部分
    MemberCount = 0    #(BYTE MemberCount)//成员人数
    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.FamilyNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyNameLen)
        self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.LeaderNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LeaderNameLen)
        self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.JoinReview,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.FamilyID = 0
        self.FamilyNameLen = 0
        self.FamilyName = ""
        self.LeaderID = 0
        self.LeaderNameLen = 0
        self.LeaderName = ""
        self.FamilyLV = 0
        self.JoinReview = 0
        self.JoinLVMin = 0
        self.ServerID = 0
        self.EmblemID = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        self.MemberCount = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += len(self.FamilyName)
        length += 4
        length += 1
        length += len(self.LeaderName)
        length += 1
        length += 1
        length += 2
        length += 4
        length += 4
        length += 4
        length += 4
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteBYTE(data, self.FamilyNameLen)
        data = CommFunc.WriteString(data, self.FamilyNameLen, self.FamilyName)
        data = CommFunc.WriteDWORD(data, self.LeaderID)
        data = CommFunc.WriteBYTE(data, self.LeaderNameLen)
        data = CommFunc.WriteString(data, self.LeaderNameLen, self.LeaderName)
        data = CommFunc.WriteBYTE(data, self.FamilyLV)
        data = CommFunc.WriteBYTE(data, self.JoinReview)
        data = CommFunc.WriteWORD(data, self.JoinLVMin)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.EmblemID)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
        data = CommFunc.WriteBYTE(data, self.MemberCount)
        return data
    def OutputString(self):
        DumpString = '''
                                FamilyID:%d,
                                FamilyNameLen:%d,
                                FamilyName:%s,
                                LeaderID:%d,
                                LeaderNameLen:%d,
                                LeaderName:%s,
                                FamilyLV:%d,
                                JoinReview:%d,
                                JoinLVMin:%d,
                                ServerID:%d,
                                EmblemID:%d,
                                FightPower:%d,
                                FightPowerEx:%d,
                                MemberCount:%d
                                '''\
                                %(
                                self.FamilyID,
                                self.FamilyNameLen,
                                self.FamilyName,
                                self.LeaderID,
                                self.LeaderNameLen,
                                self.LeaderName,
                                self.FamilyLV,
                                self.JoinReview,
                                self.JoinLVMin,
                                self.ServerID,
                                self.EmblemID,
                                self.FightPower,
                                self.FightPowerEx,
                                self.MemberCount
                                )
        return DumpString
class  tagMCFamilyViewList(Structure):
    Head = tagHead()
    MsgLen = 0    #(BYTE MsgLen)
    Msg = ""    #(String Msg)//搜索条件原值返回
    PageIndex = 0    #(BYTE PageIndex)//查询第X页索引,0~n
    ShowCount = 0    #(BYTE ShowCount)//每页数量
    TotalPage = 0    #(BYTE TotalPage)//一共有多少页
    FamilyCount = 0    #(BYTE FamilyCount)
    FamilyList = list()    #(vector<tagMCFamilyView> FamilyList)//本页家族信息列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x23
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
        self.PageIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.ShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TotalPage,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FamilyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.FamilyCount):
            temFamilyList = tagMCFamilyView()
            _pos = temFamilyList.ReadData(_lpData, _pos)
            self.FamilyList.append(temFamilyList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x23
        self.MsgLen = 0
        self.Msg = ""
        self.PageIndex = 0
        self.ShowCount = 0
        self.TotalPage = 0
        self.FamilyCount = 0
        self.FamilyList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += len(self.Msg)
        length += 1
        length += 1
        length += 1
        length += 1
        for i in range(self.FamilyCount):
            length += self.FamilyList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.MsgLen)
        data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
        data = CommFunc.WriteBYTE(data, self.PageIndex)
        data = CommFunc.WriteBYTE(data, self.ShowCount)
        data = CommFunc.WriteBYTE(data, self.TotalPage)
        data = CommFunc.WriteBYTE(data, self.FamilyCount)
        for i in range(self.FamilyCount):
            data = CommFunc.WriteString(data, self.FamilyList[i].GetLength(), self.FamilyList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                MsgLen:%d,
                                Msg:%s,
                                PageIndex:%d,
                                ShowCount:%d,
                                TotalPage:%d,
                                FamilyCount:%d,
                                FamilyList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.MsgLen,
                                self.Msg,
                                self.PageIndex,
                                self.ShowCount,
                                self.TotalPage,
                                self.FamilyCount,
                                "..."
                                )
        return DumpString
m_NAtagMCFamilyViewList=tagMCFamilyViewList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyViewList.Head.Cmd,m_NAtagMCFamilyViewList.Head.SubCmd))] = m_NAtagMCFamilyViewList
#------------------------------------------------------
@@ -32548,47 +33024,12 @@
#------------------------------------------------------
#A5 01  查看已申请加入的家族信息  #tagMCNotifyRequestJoinFamilyInfo
class  tagRequestJoinFamily(Structure):
    _pack_ = 1
    _fields_ = [
                  ("RequestFamilyID", c_int),    #申请的加入ID
                  ]
    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.RequestFamilyID = 0
        return
    def GetLength(self):
        return sizeof(tagRequestJoinFamily)
    def GetBuffer(self):
        return string_at(addressof(self), self.GetLength())
    def OutputString(self):
        DumpString = '''//A5 01  查看已申请加入的家族信息  //tagMCNotifyRequestJoinFamilyInfo:
                                RequestFamilyID:%d
                                '''\
                                %(
                                self.RequestFamilyID
                                )
        return DumpString
#A5 01 已申请加入的家族信息 #tagMCNotifyRequestJoinFamilyInfo
class  tagMCNotifyRequestJoinFamilyInfo(Structure):
    Head = tagHead()
    RequestCount = 0    #(BYTE RequestCount)//申请的数量
    RequestAddFamilyInfo = list()    #(vector<tagRequestJoinFamily> RequestAddFamilyInfo)//size = RequestCount
    RequestJoinFamilyIDList = list()    #(vector<DWORD> RequestJoinFamilyIDList)//size = RequestCount
    data = None
    def __init__(self):
@@ -32602,9 +33043,8 @@
        _pos = self.Head.ReadData(_lpData, _pos)
        self.RequestCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.RequestCount):
            temRequestAddFamilyInfo = tagRequestJoinFamily()
            _pos = temRequestAddFamilyInfo.ReadData(_lpData, _pos)
            self.RequestAddFamilyInfo.append(temRequestAddFamilyInfo)
            value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
            self.RequestJoinFamilyIDList.append(value)
        return _pos
    def Clear(self):
@@ -32613,15 +33053,14 @@
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x01
        self.RequestCount = 0
        self.RequestAddFamilyInfo = list()
        self.RequestJoinFamilyIDList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        for i in range(self.RequestCount):
            length += self.RequestAddFamilyInfo[i].GetLength()
        length += 4 * self.RequestCount
        return length
@@ -32630,14 +33069,14 @@
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.RequestCount)
        for i in range(self.RequestCount):
            data = CommFunc.WriteString(data, self.RequestAddFamilyInfo[i].GetLength(), self.RequestAddFamilyInfo[i].GetBuffer())
            data = CommFunc.WriteDWORD(data, self.RequestJoinFamilyIDList[i])
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                RequestCount:%d,
                                RequestAddFamilyInfo:%s
                                RequestJoinFamilyIDList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
@@ -32760,6 +33199,309 @@
#------------------------------------------------------
# A5 20 玩家家族信息 #tagMCRoleFamilyInfo
class  tagMCRoleFamilyMember(Structure):
    PlayerID = 0    #(DWORD PlayerID)
    NameLen = 0    #(BYTE NameLen)
    Name = ""    #(String Name)//size = NameLen
    JoinTime = 0    #(DWORD JoinTime)//加入家族时时间戳
    FmLV = 0    #(BYTE FmLV)//家族职位: 0-成员;1-精英;2-副族长;3-族长
    LV = 0    #(WORD LV)//等级
    Job = 0    #(BYTE Job)//ְҵ
    RealmLV = 0    #(BYTE RealmLV)//境界
    Face = 0    #(DWORD Face)//基本脸型
    FacePic = 0    #(DWORD FacePic)//头像框
    FightPower = 0    #(DWORD FightPower)//战力,求余亿部分
    FightPowerEx = 0    #(DWORD FightPowerEx)//战力,整除亿部分
    ServerID = 0    #(DWORD ServerID)//所属区服ID
    ContribTotal = 0    #(DWORD ContribTotal)//总贡献度
    ContribWeek = 0    #(DWORD ContribWeek)//周贡献度
    OffTime = 0    #(DWORD OffTime)// 0-在线; >0-/离线时间戳
    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.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
        self.JoinTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ContribTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.ContribWeek,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.OffTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        return _pos
    def Clear(self):
        self.PlayerID = 0
        self.NameLen = 0
        self.Name = ""
        self.JoinTime = 0
        self.FmLV = 0
        self.LV = 0
        self.Job = 0
        self.RealmLV = 0
        self.Face = 0
        self.FacePic = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        self.ServerID = 0
        self.ContribTotal = 0
        self.ContribWeek = 0
        self.OffTime = 0
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 1
        length += len(self.Name)
        length += 4
        length += 1
        length += 2
        length += 1
        length += 1
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        length += 4
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.PlayerID)
        data = CommFunc.WriteBYTE(data, self.NameLen)
        data = CommFunc.WriteString(data, self.NameLen, self.Name)
        data = CommFunc.WriteDWORD(data, self.JoinTime)
        data = CommFunc.WriteBYTE(data, self.FmLV)
        data = CommFunc.WriteWORD(data, self.LV)
        data = CommFunc.WriteBYTE(data, self.Job)
        data = CommFunc.WriteBYTE(data, self.RealmLV)
        data = CommFunc.WriteDWORD(data, self.Face)
        data = CommFunc.WriteDWORD(data, self.FacePic)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.ContribTotal)
        data = CommFunc.WriteDWORD(data, self.ContribWeek)
        data = CommFunc.WriteDWORD(data, self.OffTime)
        return data
    def OutputString(self):
        DumpString = '''
                                PlayerID:%d,
                                NameLen:%d,
                                Name:%s,
                                JoinTime:%d,
                                FmLV:%d,
                                LV:%d,
                                Job:%d,
                                RealmLV:%d,
                                Face:%d,
                                FacePic:%d,
                                FightPower:%d,
                                FightPowerEx:%d,
                                ServerID:%d,
                                ContribTotal:%d,
                                ContribWeek:%d,
                                OffTime:%d
                                '''\
                                %(
                                self.PlayerID,
                                self.NameLen,
                                self.Name,
                                self.JoinTime,
                                self.FmLV,
                                self.LV,
                                self.Job,
                                self.RealmLV,
                                self.Face,
                                self.FacePic,
                                self.FightPower,
                                self.FightPowerEx,
                                self.ServerID,
                                self.ContribTotal,
                                self.ContribWeek,
                                self.OffTime
                                )
        return DumpString
class  tagMCRoleFamilyInfo(Structure):
    Head = tagHead()
    FamilyID = 0    #(DWORD FamilyID)
    FamilyName = ""    #(char FamilyName[33])//家族名称
    FamilyLV = 0    #(BYTE FamilyLV)//家族等级
    FamilyLVExp = 0    #(DWORD FamilyLVExp)//家族等级经验
    JoinReview = 0    #(BYTE JoinReview)//成员加入是否需要审核,默认0自动加入
    JoinLVMin = 0    #(WORD JoinLVMin)//限制最低可加入的玩家等级
    ServerID = 0    #(DWORD ServerID)//区服ID,创建时以族长的区服ID赋值
    EmblemID = 0    #(DWORD EmblemID)//徽章ID
    FightPower = 0    #(DWORD FightPower)//总战力,求余亿部分
    FightPowerEx = 0    #(DWORD FightPowerEx)//总战力,整除亿部分
    BroadcastLen = 0    #(WORD BroadcastLen)//公告
    Broadcast = ""    #(String Broadcast)//size = BroadcastLen
    LeaderID = 0    #(DWORD LeaderID)//族长玩家ID
    MemberCount = 0    #(BYTE MemberCount)//人数
    MemberList = list()    #(vector<tagMCRoleFamilyMember> MemberList)//size = MemberCount
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x20
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
        self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.FamilyLVExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.JoinReview,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.BroadcastLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Broadcast,_pos = CommFunc.ReadString(_lpData, _pos,self.BroadcastLen)
        self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.MemberCount):
            temMemberList = tagMCRoleFamilyMember()
            _pos = temMemberList.ReadData(_lpData, _pos)
            self.MemberList.append(temMemberList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA5
        self.Head.SubCmd = 0x20
        self.FamilyID = 0
        self.FamilyName = ""
        self.FamilyLV = 0
        self.FamilyLVExp = 0
        self.JoinReview = 0
        self.JoinLVMin = 0
        self.ServerID = 0
        self.EmblemID = 0
        self.FightPower = 0
        self.FightPowerEx = 0
        self.BroadcastLen = 0
        self.Broadcast = ""
        self.LeaderID = 0
        self.MemberCount = 0
        self.MemberList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 4
        length += 33
        length += 1
        length += 4
        length += 1
        length += 2
        length += 4
        length += 4
        length += 4
        length += 4
        length += 2
        length += len(self.Broadcast)
        length += 4
        length += 1
        for i in range(self.MemberCount):
            length += self.MemberList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteDWORD(data, self.FamilyID)
        data = CommFunc.WriteString(data, 33, self.FamilyName)
        data = CommFunc.WriteBYTE(data, self.FamilyLV)
        data = CommFunc.WriteDWORD(data, self.FamilyLVExp)
        data = CommFunc.WriteBYTE(data, self.JoinReview)
        data = CommFunc.WriteWORD(data, self.JoinLVMin)
        data = CommFunc.WriteDWORD(data, self.ServerID)
        data = CommFunc.WriteDWORD(data, self.EmblemID)
        data = CommFunc.WriteDWORD(data, self.FightPower)
        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
        data = CommFunc.WriteWORD(data, self.BroadcastLen)
        data = CommFunc.WriteString(data, self.BroadcastLen, self.Broadcast)
        data = CommFunc.WriteDWORD(data, self.LeaderID)
        data = CommFunc.WriteBYTE(data, self.MemberCount)
        for i in range(self.MemberCount):
            data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                FamilyID:%d,
                                FamilyName:%s,
                                FamilyLV:%d,
                                FamilyLVExp:%d,
                                JoinReview:%d,
                                JoinLVMin:%d,
                                ServerID:%d,
                                EmblemID:%d,
                                FightPower:%d,
                                FightPowerEx:%d,
                                BroadcastLen:%d,
                                Broadcast:%s,
                                LeaderID:%d,
                                MemberCount:%d,
                                MemberList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.FamilyID,
                                self.FamilyName,
                                self.FamilyLV,
                                self.FamilyLVExp,
                                self.JoinReview,
                                self.JoinLVMin,
                                self.ServerID,
                                self.EmblemID,
                                self.FightPower,
                                self.FightPowerEx,
                                self.BroadcastLen,
                                self.Broadcast,
                                self.LeaderID,
                                self.MemberCount,
                                "..."
                                )
        return DumpString
m_NAtagMCRoleFamilyInfo=tagMCRoleFamilyInfo()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRoleFamilyInfo.Head.Cmd,m_NAtagMCRoleFamilyInfo.Head.SubCmd))] = m_NAtagMCRoleFamilyInfo
#------------------------------------------------------
# A6 05 VIP礼包购买记录 #tagMCVIPAwardMsg
class  tagMCVIPAwardMsg(Structure):