#!/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