hxp
2025-05-14 eb2b495812782c219d963559e840d1be46c5c846
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -27626,6 +27626,375 @@
#------------------------------------------------------
# A3 62 邮件列表 #tagMCMailList
class  tagMCMailItem(Structure):
    ItemID = 0    #(DWORD ItemID)//物品ID
    Count = 0    #(DWORD Count)//数量
    IsBind = 0    #(BYTE IsBind)//是否绑定
    UserDataLen = 0    #(WORD UserDataLen)
    UserData = ""    #(String UserData)//自定义数据
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadDWORD(_lpData, _pos)
        self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
        return _pos
    def Clear(self):
        self.ItemID = 0
        self.Count = 0
        self.IsBind = 0
        self.UserDataLen = 0
        self.UserData = ""
        return
    def GetLength(self):
        length = 0
        length += 4
        length += 4
        length += 1
        length += 2
        length += len(self.UserData)
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteDWORD(data, self.ItemID)
        data = CommFunc.WriteDWORD(data, self.Count)
        data = CommFunc.WriteBYTE(data, self.IsBind)
        data = CommFunc.WriteWORD(data, self.UserDataLen)
        data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
        return data
    def OutputString(self):
        DumpString = '''
                                ItemID:%d,
                                Count:%d,
                                IsBind:%d,
                                UserDataLen:%d,
                                UserData:%s
                                '''\
                                %(
                                self.ItemID,
                                self.Count,
                                self.IsBind,
                                self.UserDataLen,
                                self.UserData
                                )
        return DumpString
class  tagMCMail(Structure):
    GUID = ""    #(char GUID[36])//邮件GUID
    Type = 0    #(BYTE Type)//邮件类型,暂时默认0
    CreateTime = ""    #(char CreateTime[30])//创建时间
    LimitDays = 0    #(BYTE LimitDays)//有效天数
    TitleLen = 0    #(BYTE TitleLen)
    Title = ""    #(String Title)//标题
    TextLen = 0    #(WORD TextLen)
    Text = ""    #(String Text)//内容
    MailState = 0    #(BYTE MailState)//邮件状态: 0-未知;1-未读;2-已读;3-已领;
    Count = 0    #(BYTE Count)//物品数
    Items = list()    #(vector<tagMCMailItem> Items)//物品信息
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,36)
        self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30)
        self.LimitDays,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.TitleLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Title,_pos = CommFunc.ReadString(_lpData, _pos,self.TitleLen)
        self.TextLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
        self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen)
        self.MailState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        for i in range(self.Count):
            temItems = tagMCMailItem()
            _pos = temItems.ReadData(_lpData, _pos)
            self.Items.append(temItems)
        return _pos
    def Clear(self):
        self.GUID = ""
        self.Type = 0
        self.CreateTime = ""
        self.LimitDays = 0
        self.TitleLen = 0
        self.Title = ""
        self.TextLen = 0
        self.Text = ""
        self.MailState = 0
        self.Count = 0
        self.Items = list()
        return
    def GetLength(self):
        length = 0
        length += 36
        length += 1
        length += 30
        length += 1
        length += 1
        length += len(self.Title)
        length += 2
        length += len(self.Text)
        length += 1
        length += 1
        for i in range(self.Count):
            length += self.Items[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 36, self.GUID)
        data = CommFunc.WriteBYTE(data, self.Type)
        data = CommFunc.WriteString(data, 30, self.CreateTime)
        data = CommFunc.WriteBYTE(data, self.LimitDays)
        data = CommFunc.WriteBYTE(data, self.TitleLen)
        data = CommFunc.WriteString(data, self.TitleLen, self.Title)
        data = CommFunc.WriteWORD(data, self.TextLen)
        data = CommFunc.WriteString(data, self.TextLen, self.Text)
        data = CommFunc.WriteBYTE(data, self.MailState)
        data = CommFunc.WriteBYTE(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.Items[i].GetLength(), self.Items[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                GUID:%s,
                                Type:%d,
                                CreateTime:%s,
                                LimitDays:%d,
                                TitleLen:%d,
                                Title:%s,
                                TextLen:%d,
                                Text:%s,
                                MailState:%d,
                                Count:%d,
                                Items:%s
                                '''\
                                %(
                                self.GUID,
                                self.Type,
                                self.CreateTime,
                                self.LimitDays,
                                self.TitleLen,
                                self.Title,
                                self.TextLen,
                                self.Text,
                                self.MailState,
                                self.Count,
                                "..."
                                )
        return DumpString
class  tagMCMailList(Structure):
    Head = tagHead()
    IsServerMail = 0    #(BYTE IsServerMail)//是否全服邮件,如公告、维护、更新、补偿等重要邮件
    Count = 0    #(WORD Count)
    MailList = list()    #(vector<tagMCMail> MailList)//邮件列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x62
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.IsServerMail,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temMailList = tagMCMail()
            _pos = temMailList.ReadData(_lpData, _pos)
            self.MailList.append(temMailList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x62
        self.IsServerMail = 0
        self.Count = 0
        self.MailList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 1
        length += 2
        for i in range(self.Count):
            length += self.MailList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteBYTE(data, self.IsServerMail)
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.MailList[i].GetLength(), self.MailList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                IsServerMail:%d,
                                Count:%d,
                                MailList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.IsServerMail,
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCMailList=tagMCMailList()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMailList.Head.Cmd,m_NAtagMCMailList.Head.SubCmd))] = m_NAtagMCMailList
#------------------------------------------------------
# A3 63 邮件状态变更 #tagMCMailStateChange
class  tagMCMailState(Structure):
    GUID = ""    #(char GUID[36])//邮件GUID
    MailState = 0    #(BYTE MailState)//邮件状态: 0-未知;1-未读;2-已读;3-已领;4-已删
    data = None
    def __init__(self):
        self.Clear()
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,36)
        self.MailState,_pos = CommFunc.ReadBYTE(_lpData, _pos)
        return _pos
    def Clear(self):
        self.GUID = ""
        self.MailState = 0
        return
    def GetLength(self):
        length = 0
        length += 36
        length += 1
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, 36, self.GUID)
        data = CommFunc.WriteBYTE(data, self.MailState)
        return data
    def OutputString(self):
        DumpString = '''
                                GUID:%s,
                                MailState:%d
                                '''\
                                %(
                                self.GUID,
                                self.MailState
                                )
        return DumpString
class  tagMCMailStateChange(Structure):
    Head = tagHead()
    Count = 0    #(WORD Count)
    MailList = list()    #(vector<tagMCMailState> MailList)//邮件列表
    data = None
    def __init__(self):
        self.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x63
        return
    def ReadData(self, _lpData, _pos=0, _Len=0):
        self.Clear()
        _pos = self.Head.ReadData(_lpData, _pos)
        self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
        for i in range(self.Count):
            temMailList = tagMCMailState()
            _pos = temMailList.ReadData(_lpData, _pos)
            self.MailList.append(temMailList)
        return _pos
    def Clear(self):
        self.Head = tagHead()
        self.Head.Clear()
        self.Head.Cmd = 0xA3
        self.Head.SubCmd = 0x63
        self.Count = 0
        self.MailList = list()
        return
    def GetLength(self):
        length = 0
        length += self.Head.GetLength()
        length += 2
        for i in range(self.Count):
            length += self.MailList[i].GetLength()
        return length
    def GetBuffer(self):
        data = ''
        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
        data = CommFunc.WriteWORD(data, self.Count)
        for i in range(self.Count):
            data = CommFunc.WriteString(data, self.MailList[i].GetLength(), self.MailList[i].GetBuffer())
        return data
    def OutputString(self):
        DumpString = '''
                                Head:%s,
                                Count:%d,
                                MailList:%s
                                '''\
                                %(
                                self.Head.OutputString(),
                                self.Count,
                                "..."
                                )
        return DumpString
m_NAtagMCMailStateChange=tagMCMailStateChange()
ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMailStateChange.Head.Cmd,m_NAtagMCMailStateChange.Head.SubCmd))] = m_NAtagMCMailStateChange
#------------------------------------------------------
# A3 46 大师经验信息 #tagMCGreatMasterExp
class  tagMCGreatMasterExp(Structure):