From fdebf36f0d9201c6a6949a08cdfeebb718c25ce2 Mon Sep 17 00:00:00 2001
From: hxp <ale99527@vip.qq.com>
Date: 星期五, 23 五月 2025 19:35:53 +0800
Subject: [PATCH] 16 卡牌服务端(聊天、广播、通用记录、查看玩家;)

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

diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
index 3cfdf96..cabf022 100644
--- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
+++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py
@@ -11547,292 +11547,6 @@
 
 
 #------------------------------------------------------
-#B3 10 语音聊天 #tagGCVoiceChat
-
-class  tagGCVoiceChat(Structure):
-    Head = tagHead()
-    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域	
-    SrcNameLen = 0    #(BYTE SrcNameLen)
-    SrcName = ""    #(String SrcName)//size = SrcNameLen
-    PlayerID = 0    #(DWORD PlayerID)
-    ToNameLen = 0    #(BYTE ToNameLen)
-    ToName = ""    #(String ToName)//size = ToNameLen
-    ToPlayerID = 0    #(DWORD ToPlayerID)
-    Len = 0    #(WORD Len)
-    Content = list()    #(vector<BYTE> Content)//size = Len
-    ExtraValue = 0    #(DWORD ExtraValue)//附加值
-    Extras = ""    #(char Extras[256])//附加值列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB3
-        self.Head.SubCmd = 0x10
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SrcNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.SrcName,_pos = CommFunc.ReadString(_lpData, _pos,self.SrcNameLen)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ToNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.ToName,_pos = CommFunc.ReadString(_lpData, _pos,self.ToNameLen)
-        self.ToPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        for i in range(self.Len):
-            value,_pos=CommFunc.ReadBYTE(_lpData,_pos)
-            self.Content.append(value)
-        self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB3
-        self.Head.SubCmd = 0x10
-        self.ChannelType = 0
-        self.SrcNameLen = 0
-        self.SrcName = ""
-        self.PlayerID = 0
-        self.ToNameLen = 0
-        self.ToName = ""
-        self.ToPlayerID = 0
-        self.Len = 0
-        self.Content = list()
-        self.ExtraValue = 0
-        self.Extras = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += len(self.SrcName)
-        length += 4
-        length += 1
-        length += len(self.ToName)
-        length += 4
-        length += 2
-        length += 1 * self.Len
-        length += 4
-        length += 256
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.ChannelType)
-        data = CommFunc.WriteBYTE(data, self.SrcNameLen)
-        data = CommFunc.WriteString(data, self.SrcNameLen, self.SrcName)
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteBYTE(data, self.ToNameLen)
-        data = CommFunc.WriteString(data, self.ToNameLen, self.ToName)
-        data = CommFunc.WriteDWORD(data, self.ToPlayerID)
-        data = CommFunc.WriteWORD(data, self.Len)
-        for i in range(self.Len):
-            data = CommFunc.WriteBYTE(data, self.Content[i])
-        data = CommFunc.WriteDWORD(data, self.ExtraValue)
-        data = CommFunc.WriteString(data, 256, self.Extras)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                ChannelType:%d,
-                                SrcNameLen:%d,
-                                SrcName:%s,
-                                PlayerID:%d,
-                                ToNameLen:%d,
-                                ToName:%s,
-                                ToPlayerID:%d,
-                                Len:%d,
-                                Content:%s,
-                                ExtraValue:%d,
-                                Extras:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.ChannelType,
-                                self.SrcNameLen,
-                                self.SrcName,
-                                self.PlayerID,
-                                self.ToNameLen,
-                                self.ToName,
-                                self.ToPlayerID,
-                                self.Len,
-                                "...",
-                                self.ExtraValue,
-                                self.Extras
-                                )
-        return DumpString
-
-
-m_NAtagGCVoiceChat=tagGCVoiceChat()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat
-
-
-#------------------------------------------------------
-# B3 11 聊天缓存通知 #tagGCTalkCache
-
-class  tagGCTalkCacheInfo(Structure):
-    ChannelType = 0    #(BYTE ChannelType)// 1 世界 2 仙盟
-    NameLen = 0    #(BYTE NameLen)
-    Name = ""    #(String Name)//size = SrcNameLen
-    PlayerID = 0    #(DWORD PlayerID)
-    Time = 0    #(DWORD Time)
-    Len = 0    #(WORD Len)
-    Content = ""    #(String Content)//size = Len
-    Extras = ""    #(char Extras[256])//附加值列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
-        self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
-        return _pos
-
-    def Clear(self):
-        self.ChannelType = 0
-        self.NameLen = 0
-        self.Name = ""
-        self.PlayerID = 0
-        self.Time = 0
-        self.Len = 0
-        self.Content = ""
-        self.Extras = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += 1
-        length += 1
-        length += len(self.Name)
-        length += 4
-        length += 4
-        length += 2
-        length += len(self.Content)
-        length += 256
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteBYTE(data, self.ChannelType)
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.Name)
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteDWORD(data, self.Time)
-        data = CommFunc.WriteWORD(data, self.Len)
-        data = CommFunc.WriteString(data, self.Len, self.Content)
-        data = CommFunc.WriteString(data, 256, self.Extras)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                ChannelType:%d,
-                                NameLen:%d,
-                                Name:%s,
-                                PlayerID:%d,
-                                Time:%d,
-                                Len:%d,
-                                Content:%s,
-                                Extras:%s
-                                '''\
-                                %(
-                                self.ChannelType,
-                                self.NameLen,
-                                self.Name,
-                                self.PlayerID,
-                                self.Time,
-                                self.Len,
-                                self.Content,
-                                self.Extras
-                                )
-        return DumpString
-
-
-class  tagGCTalkCache(Structure):
-    Head = tagHead()
-    Count = 0    #(WORD Count)
-    InfoList = list()    #(vector<tagGCTalkCacheInfo> InfoList)//size = Count
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xB3
-        self.Head.SubCmd = 0x11
-        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):
-            temInfoList = tagGCTalkCacheInfo()
-            _pos = temInfoList.ReadData(_lpData, _pos)
-            self.InfoList.append(temInfoList)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xB3
-        self.Head.SubCmd = 0x11
-        self.Count = 0
-        self.InfoList = list()
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 2
-        for i in range(self.Count):
-            length += self.InfoList[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.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                Count:%d,
-                                InfoList:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.Count,
-                                "..."
-                                )
-        return DumpString
-
-
-m_NAtagGCTalkCache=tagGCTalkCache()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache
-
-
-#------------------------------------------------------
 # B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo
 
 class  tagGCAddAuctionItem(Structure):
@@ -36251,112 +35965,6 @@
 
 
 #------------------------------------------------------
-# A7 07 通知玩家自定义聊天 #tagMCPyTalk
-
-class  tagMCPyTalk(Structure):
-    Head = tagHead()
-    TalkType = 0    #(BYTE TalkType)// 自定义聊天类型
-    NameLen = 0    #(BYTE NameLen)
-    Name = ""    #(String Name)//size = NameLen
-    PlayerID = 0    #(DWORD PlayerID)
-    Len = 0    #(WORD Len)
-    Content = ""    #(String Content)//size = Len
-    ExtraValue = 0    #(DWORD ExtraValue)//附加值
-    Extras = ""    #(char Extras[256])//附加值列表
-    data = None
-
-    def __init__(self):
-        self.Clear()
-        self.Head.Cmd = 0xA7
-        self.Head.SubCmd = 0x07
-        return
-
-    def ReadData(self, _lpData, _pos=0, _Len=0):
-        self.Clear()
-        _pos = self.Head.ReadData(_lpData, _pos)
-        self.TalkType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
-        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
-        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
-        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
-        self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256)
-        return _pos
-
-    def Clear(self):
-        self.Head = tagHead()
-        self.Head.Clear()
-        self.Head.Cmd = 0xA7
-        self.Head.SubCmd = 0x07
-        self.TalkType = 0
-        self.NameLen = 0
-        self.Name = ""
-        self.PlayerID = 0
-        self.Len = 0
-        self.Content = ""
-        self.ExtraValue = 0
-        self.Extras = ""
-        return
-
-    def GetLength(self):
-        length = 0
-        length += self.Head.GetLength()
-        length += 1
-        length += 1
-        length += len(self.Name)
-        length += 4
-        length += 2
-        length += len(self.Content)
-        length += 4
-        length += 256
-
-        return length
-
-    def GetBuffer(self):
-        data = ''
-        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
-        data = CommFunc.WriteBYTE(data, self.TalkType)
-        data = CommFunc.WriteBYTE(data, self.NameLen)
-        data = CommFunc.WriteString(data, self.NameLen, self.Name)
-        data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteWORD(data, self.Len)
-        data = CommFunc.WriteString(data, self.Len, self.Content)
-        data = CommFunc.WriteDWORD(data, self.ExtraValue)
-        data = CommFunc.WriteString(data, 256, self.Extras)
-        return data
-
-    def OutputString(self):
-        DumpString = '''
-                                Head:%s,
-                                TalkType:%d,
-                                NameLen:%d,
-                                Name:%s,
-                                PlayerID:%d,
-                                Len:%d,
-                                Content:%s,
-                                ExtraValue:%d,
-                                Extras:%s
-                                '''\
-                                %(
-                                self.Head.OutputString(),
-                                self.TalkType,
-                                self.NameLen,
-                                self.Name,
-                                self.PlayerID,
-                                self.Len,
-                                self.Content,
-                                self.ExtraValue,
-                                self.Extras
-                                )
-        return DumpString
-
-
-m_NAtagMCPyTalk=tagMCPyTalk()
-ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPyTalk.Head.Cmd,m_NAtagMCPyTalk.Head.SubCmd))] = m_NAtagMCPyTalk
-
-
-#------------------------------------------------------
 # A7 08 通知跑环奖励记录 #tagMCRunTaskAwardInfo
 
 class  tagMCRunTaskAwardRecord(Structure):
@@ -36473,11 +36081,20 @@
 
 class  tagSCQueryPlayerCacheResult(Structure):
     Head = tagHead()
-    PlayerID = 0    #(DWORD PlayerID)//玩家ID
-    PropDataSize = 0    #(DWORD PropDataSize)
-    PropData = ""    #(String PropData)//属性记录
-    ItemDataSize = 0    #(DWORD ItemDataSize)
-    ItemData = ""    #(String ItemData)//物品记录
+    PlayerID = 0    #(DWORD PlayerID)
+    PlayerName = ""    #(char PlayerName[33])
+    LV = 0    #(WORD LV)
+    Job = 0    #(BYTE Job)
+    RealmLV = 0    #(BYTE RealmLV)
+    Face = 0    #(DWORD Face)
+    FacePic = 0    #(DWORD FacePic)
+    TitleID = 0    #(DWORD TitleID)//佩戴的称号
+    ServerID = 0    #(DWORD ServerID)
+    FightPower = 0    #(DWORD FightPower)
+    FightPowerEx = 0    #(DWORD FightPowerEx)
+    FamilyID = 0    #(DWORD FamilyID)
+    FamilyName = ""    #(char FamilyName[33])
+    FamilyEmblemID = 0    #(DWORD FamilyEmblemID)//仙盟徽章ID
     PlusDataSize = 0    #(DWORD PlusDataSize)
     PlusData = ""    #(String PlusData)//扩展记录	
     data = None
@@ -36492,10 +36109,19 @@
         self.Clear()
         _pos = self.Head.ReadData(_lpData, _pos)
         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PropDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.PropData,_pos = CommFunc.ReadString(_lpData, _pos,self.PropDataSize)
-        self.ItemDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
-        self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize)
+        self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        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.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
+        self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
         self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
         return _pos
@@ -36506,10 +36132,19 @@
         self.Head.Cmd = 0xA7
         self.Head.SubCmd = 0x05
         self.PlayerID = 0
-        self.PropDataSize = 0
-        self.PropData = ""
-        self.ItemDataSize = 0
-        self.ItemData = ""
+        self.PlayerName = ""
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
+        self.TitleID = 0
+        self.ServerID = 0
+        self.FightPower = 0
+        self.FightPowerEx = 0
+        self.FamilyID = 0
+        self.FamilyName = ""
+        self.FamilyEmblemID = 0
         self.PlusDataSize = 0
         self.PlusData = ""
         return
@@ -36518,10 +36153,19 @@
         length = 0
         length += self.Head.GetLength()
         length += 4
+        length += 33
+        length += 2
+        length += 1
+        length += 1
         length += 4
-        length += len(self.PropData)
         length += 4
-        length += len(self.ItemData)
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+        length += 33
+        length += 4
         length += 4
         length += len(self.PlusData)
 
@@ -36531,10 +36175,19 @@
         data = ''
         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
         data = CommFunc.WriteDWORD(data, self.PlayerID)
-        data = CommFunc.WriteDWORD(data, self.PropDataSize)
-        data = CommFunc.WriteString(data, self.PropDataSize, self.PropData)
-        data = CommFunc.WriteDWORD(data, self.ItemDataSize)
-        data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData)
+        data = CommFunc.WriteString(data, 33, self.PlayerName)
+        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.TitleID)
+        data = CommFunc.WriteDWORD(data, self.ServerID)
+        data = CommFunc.WriteDWORD(data, self.FightPower)
+        data = CommFunc.WriteDWORD(data, self.FightPowerEx)
+        data = CommFunc.WriteDWORD(data, self.FamilyID)
+        data = CommFunc.WriteString(data, 33, self.FamilyName)
+        data = CommFunc.WriteDWORD(data, self.FamilyEmblemID)
         data = CommFunc.WriteDWORD(data, self.PlusDataSize)
         data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
         return data
@@ -36543,20 +36196,38 @@
         DumpString = '''
                                 Head:%s,
                                 PlayerID:%d,
-                                PropDataSize:%d,
-                                PropData:%s,
-                                ItemDataSize:%d,
-                                ItemData:%s,
+                                PlayerName:%s,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
+                                TitleID:%d,
+                                ServerID:%d,
+                                FightPower:%d,
+                                FightPowerEx:%d,
+                                FamilyID:%d,
+                                FamilyName:%s,
+                                FamilyEmblemID:%d,
                                 PlusDataSize:%d,
                                 PlusData:%s
                                 '''\
                                 %(
                                 self.Head.OutputString(),
                                 self.PlayerID,
-                                self.PropDataSize,
-                                self.PropData,
-                                self.ItemDataSize,
-                                self.ItemData,
+                                self.PlayerName,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic,
+                                self.TitleID,
+                                self.ServerID,
+                                self.FightPower,
+                                self.FightPowerEx,
+                                self.FamilyID,
+                                self.FamilyName,
+                                self.FamilyEmblemID,
                                 self.PlusDataSize,
                                 self.PlusData
                                 )
@@ -58778,6 +58449,345 @@
 
 
 #------------------------------------------------------
+# B3 10 聊天信息 #tagMCTalk
+
+class  tagMCTalk(Structure):
+    Head = tagHead()
+    ChannelType = 0    #(BYTE ChannelType)// 0-世界;1-跨服;3- 仙盟	
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)//size = NameLen
+    PlayerID = 0    #(DWORD PlayerID)
+    Len = 0    #(WORD Len)
+    Content = ""    #(String Content)//size = Len
+    BubbleBox = 0    #(DWORD BubbleBox)//聊天气泡框
+    LV = 0    #(WORD LV)//等级
+    Job = 0    #(BYTE Job)//职业
+    RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
+    ServerID = 0    #(DWORD ServerID)//所属区服ID
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x10
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+        self.BubbleBox,_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.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x10
+        self.ChannelType = 0
+        self.NameLen = 0
+        self.Name = ""
+        self.PlayerID = 0
+        self.Len = 0
+        self.Content = ""
+        self.BubbleBox = 0
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
+        self.ServerID = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        length += len(self.Name)
+        length += 4
+        length += 2
+        length += len(self.Content)
+        length += 4
+        length += 2
+        length += 1
+        length += 1
+        length += 4
+        length += 4
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ChannelType)
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteWORD(data, self.Len)
+        data = CommFunc.WriteString(data, self.Len, self.Content)
+        data = CommFunc.WriteDWORD(data, self.BubbleBox)
+        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.ServerID)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ChannelType:%d,
+                                NameLen:%d,
+                                Name:%s,
+                                PlayerID:%d,
+                                Len:%d,
+                                Content:%s,
+                                BubbleBox:%d,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
+                                ServerID:%d
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ChannelType,
+                                self.NameLen,
+                                self.Name,
+                                self.PlayerID,
+                                self.Len,
+                                self.Content,
+                                self.BubbleBox,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic,
+                                self.ServerID
+                                )
+        return DumpString
+
+
+m_NAtagMCTalk=tagMCTalk()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTalk.Head.Cmd,m_NAtagMCTalk.Head.SubCmd))] = m_NAtagMCTalk
+
+
+#------------------------------------------------------
+# B3 11 聊天缓存通知 #tagMCTalkCacheList
+
+class  tagMCTalkCacheInfo(Structure):
+    NameLen = 0    #(BYTE NameLen)
+    Name = ""    #(String Name)//size = NameLen
+    PlayerID = 0    #(DWORD PlayerID)
+    Len = 0    #(WORD Len)
+    Content = ""    #(String Content)//size = Len
+    BubbleBox = 0    #(DWORD BubbleBox)//聊天气泡框
+    LV = 0    #(WORD LV)//等级
+    Job = 0    #(BYTE Job)//职业
+    RealmLV = 0    #(BYTE RealmLV)//境界
+    Face = 0    #(DWORD Face)//基本脸型
+    FacePic = 0    #(DWORD FacePic)//头像框
+    ServerID = 0    #(DWORD ServerID)//所属区服ID
+    TalkTime = 0    #(DWORD TalkTime)//该聊天发送时间戳
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
+        self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
+        self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
+        self.BubbleBox,_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.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
+        return _pos
+
+    def Clear(self):
+        self.NameLen = 0
+        self.Name = ""
+        self.PlayerID = 0
+        self.Len = 0
+        self.Content = ""
+        self.BubbleBox = 0
+        self.LV = 0
+        self.Job = 0
+        self.RealmLV = 0
+        self.Face = 0
+        self.FacePic = 0
+        self.ServerID = 0
+        self.TalkTime = 0
+        return
+
+    def GetLength(self):
+        length = 0
+        length += 1
+        length += len(self.Name)
+        length += 4
+        length += 2
+        length += len(self.Content)
+        length += 4
+        length += 2
+        length += 1
+        length += 1
+        length += 4
+        length += 4
+        length += 4
+        length += 4
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteBYTE(data, self.NameLen)
+        data = CommFunc.WriteString(data, self.NameLen, self.Name)
+        data = CommFunc.WriteDWORD(data, self.PlayerID)
+        data = CommFunc.WriteWORD(data, self.Len)
+        data = CommFunc.WriteString(data, self.Len, self.Content)
+        data = CommFunc.WriteDWORD(data, self.BubbleBox)
+        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.ServerID)
+        data = CommFunc.WriteDWORD(data, self.TalkTime)
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                NameLen:%d,
+                                Name:%s,
+                                PlayerID:%d,
+                                Len:%d,
+                                Content:%s,
+                                BubbleBox:%d,
+                                LV:%d,
+                                Job:%d,
+                                RealmLV:%d,
+                                Face:%d,
+                                FacePic:%d,
+                                ServerID:%d,
+                                TalkTime:%d
+                                '''\
+                                %(
+                                self.NameLen,
+                                self.Name,
+                                self.PlayerID,
+                                self.Len,
+                                self.Content,
+                                self.BubbleBox,
+                                self.LV,
+                                self.Job,
+                                self.RealmLV,
+                                self.Face,
+                                self.FacePic,
+                                self.ServerID,
+                                self.TalkTime
+                                )
+        return DumpString
+
+
+class  tagMCTalkCacheList(Structure):
+    Head = tagHead()
+    ChannelType = 0    #(BYTE ChannelType)// 0-世界;1-跨服;3- 仙盟	
+    Count = 0    #(BYTE Count)
+    InfoList = list()    #(vector<tagMCTalkCacheInfo> InfoList)//size = Count
+    data = None
+
+    def __init__(self):
+        self.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x11
+        return
+
+    def ReadData(self, _lpData, _pos=0, _Len=0):
+        self.Clear()
+        _pos = self.Head.ReadData(_lpData, _pos)
+        self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
+        for i in range(self.Count):
+            temInfoList = tagMCTalkCacheInfo()
+            _pos = temInfoList.ReadData(_lpData, _pos)
+            self.InfoList.append(temInfoList)
+        return _pos
+
+    def Clear(self):
+        self.Head = tagHead()
+        self.Head.Clear()
+        self.Head.Cmd = 0xB3
+        self.Head.SubCmd = 0x11
+        self.ChannelType = 0
+        self.Count = 0
+        self.InfoList = list()
+        return
+
+    def GetLength(self):
+        length = 0
+        length += self.Head.GetLength()
+        length += 1
+        length += 1
+        for i in range(self.Count):
+            length += self.InfoList[i].GetLength()
+
+        return length
+
+    def GetBuffer(self):
+        data = ''
+        data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
+        data = CommFunc.WriteBYTE(data, self.ChannelType)
+        data = CommFunc.WriteBYTE(data, self.Count)
+        for i in range(self.Count):
+            data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
+        return data
+
+    def OutputString(self):
+        DumpString = '''
+                                Head:%s,
+                                ChannelType:%d,
+                                Count:%d,
+                                InfoList:%s
+                                '''\
+                                %(
+                                self.Head.OutputString(),
+                                self.ChannelType,
+                                self.Count,
+                                "..."
+                                )
+        return DumpString
+
+
+m_NAtagMCTalkCacheList=tagMCTalkCacheList()
+ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTalkCacheList.Head.Cmd,m_NAtagMCTalkCacheList.Head.SubCmd))] = m_NAtagMCTalkCacheList
+
+
+#------------------------------------------------------
 # B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer
 
 class  tagMCAddMaliciousAtkPlayer(Structure):

--
Gitblit v1.8.0