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