| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #´Ë´¦·â°üΪC++¶¨Òå·â°ü£¬ÓÃÄĸö°ü×ÔÈ¡£¬²»ÐèҪȫ²¿  | 
|   | 
| import CommFunc  | 
| import binascii  | 
| import copy  | 
| from struct import *  | 
| from ctypes import *  | 
| #²å¼þÍ·  | 
| #   | 
| #  | 
| ChNetPackDict={}  | 
| class  BString:  | 
|     NameLen = 0        # (BYTE NameLen )  | 
|     Name = ""        # (String Name )     //size = NameLen  | 
|     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)  | 
|   | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.NameLen = 0  | 
|         self.Name = ""  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += 1  | 
|         length += self.Name.Length();  | 
|         return  length;  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteBYTE(data, self.NameLen)  | 
|         data = CommFunc.WriteString(data, self.NameLen, self.Name)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = ''':  | 
|                             NameLen:%d,  | 
|                             Name:%s  | 
|                             '''\  | 
|                             %(  | 
|                             self.NameLen,  | 
|                             self.Name  | 
|                             )  | 
|   | 
|         return  DumpString  | 
|   | 
| class  tagHead:  | 
|     Cmd = 0     # (BYTE Cmd )  | 
|     SubCmd = 0      # (BYTE SubCmd )  | 
|     def __init__(self):  | 
|         self.Clear()  | 
|   | 
|         return  | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|   | 
|         self.Cmd, _pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.SubCmd, _pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|   | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Cmd = 0  | 
|         self.SubCmd = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += 1  | 
|         length += 1  | 
|         return  length;  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteBYTE(data, self.Cmd)  | 
|         data = CommFunc.WriteBYTE(data, self.SubCmd)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = ''':  | 
|                             Cmd:%d,  | 
|                             SubCmd:%d  | 
|                             '''\  | 
|                             %(  | 
|                             self.Cmd,  | 
|                             self.SubCmd  | 
|                             )  | 
|   | 
|         return  DumpString  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #02 06 ÃÜÆµ #tagTalkMi  | 
|   | 
| class  tagTalkMi(Structure):  | 
|     Head = tagHead()  | 
|     TalkType = 0    #(BYTE TalkType)//0ΪĬÈÏ, 1Ϊ1¶Ô1ÁÄÌìÓà  | 
|     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 = ""    #(String Content)//size = Len  | 
|     ExtraValue = 0    #(DWORD ExtraValue)//¸½¼ÓÖµ  | 
|     Extras = ""    #(char Extras[256])//¸½¼ÓÖµÁÐ±í  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x06  | 
|         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.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)  | 
|         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 = 0x02  | 
|         self.Head.SubCmd = 0x06  | 
|         self.TalkType = 0  | 
|         self.SrcNameLen = 0  | 
|         self.SrcName = ""  | 
|         self.PlayerID = 0  | 
|         self.ToNameLen = 0  | 
|         self.ToName = ""  | 
|         self.ToPlayerID = 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.SrcName)  | 
|         length += 4  | 
|         length += 1  | 
|         length += len(self.ToName)  | 
|         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.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)  | 
|         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,  | 
|                                 SrcNameLen:%d,  | 
|                                 SrcName:%s,  | 
|                                 PlayerID:%d,  | 
|                                 ToNameLen:%d,  | 
|                                 ToName:%s,  | 
|                                 ToPlayerID:%d,  | 
|                                 Len:%d,  | 
|                                 Content:%s,  | 
|                                 ExtraValue:%d,  | 
|                                 Extras:%s  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.TalkType,  | 
|                                 self.SrcNameLen,  | 
|                                 self.SrcName,  | 
|                                 self.PlayerID,  | 
|                                 self.ToNameLen,  | 
|                                 self.ToName,  | 
|                                 self.ToPlayerID,  | 
|                                 self.Len,  | 
|                                 self.Content,  | 
|                                 self.ExtraValue,  | 
|                                 self.Extras  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagTalkMi=tagTalkMi()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTalkMi.Head.Cmd,m_NAtagTalkMi.Head.SubCmd))] = m_NAtagTalkMi  | 
|   | 
| #------------------------------------------------------  | 
| #02 08 ¹ú¼ÒƵµÀ#tagTalkCountry  | 
|   | 
| class  tagTalkCountry(Structure):  | 
|     Head = tagHead()  | 
|     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 = 0x02  | 
|         self.Head.SubCmd = 0x08  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_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 = 0x02  | 
|         self.Head.SubCmd = 0x08  | 
|         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 += 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.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,  | 
|                                 NameLen:%d,  | 
|                                 Name:%s,  | 
|                                 PlayerID:%d,  | 
|                                 Len:%d,  | 
|                                 Content:%s,  | 
|                                 ExtraValue:%d,  | 
|                                 Extras:%s  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.NameLen,  | 
|                                 self.Name,  | 
|                                 self.PlayerID,  | 
|                                 self.Len,  | 
|                                 self.Content,  | 
|                                 self.ExtraValue,  | 
|                                 self.Extras  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagTalkCountry=tagTalkCountry()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagTalkCountry.Head.Cmd,m_NAtagTalkCountry.Head.SubCmd))] = m_NAtagTalkCountry  |