From eb2b495812782c219d963559e840d1be46c5c846 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期三, 14 五月 2025 11:46:47 +0800
Subject: [PATCH] 16 卡牌服务端(邮件功能;)

---
 ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py |  369 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 369 insertions(+), 0 deletions(-)

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 693db8a..aa30ab6 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/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):

--
Gitblit v1.8.0