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