hxp
2025-05-23 fdebf36f0d9201c6a6949a08cdfeebb718c25ce2
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):