| #!/usr/bin/python  | 
| # -*- coding: GBK -*-  | 
| #×÷Õß :   | 
|   | 
| 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 02 Íæ¼Ò½»Ò×ËùÌí¼Ó³öÊÛµÄÎïÆ·#tagMGAddPlayerSellBourseItem  | 
|   | 
| class  tagMGAddPlayerSellBourseItem(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)  | 
|     PlayerName = ""    #(char PlayerName[33])//³öÊÛÍæ¼Ò½ÇÉ«Ãû£¬size = 33  | 
|     OperateInfo = 0    #(DWORD OperateInfo)//³öÊÛÍæ¼ÒÔËÓªÉ̸½¼ÓÐÅÏ¢  | 
|     ItemGUID = ""    #(char ItemGUID[40])  | 
|     Count = 0    #(WORD Count)//³öÊÛÊýÁ¿  | 
|     PriceType = 0    #(BYTE PriceType)//³öÊÛ¼Û¸ñÀàÐÍ  | 
|     PriceCount = 0    #(DWORD PriceCount)//³öÊÛ¼Û¸ñ  | 
|     ItemTypeID = 0    #(DWORD ItemTypeID)//ÎïÆ·ID  | 
|     UserDataLen = 0    #(DWORD UserDataLen)  | 
|     UserData = ""    #(String UserData)//×Ô¶¨ÒåÊý¾Ý  | 
|     Type = 0    #(DWORD Type)//ÎïÆ·ÀàÐÍ--sys  | 
|     EquipPlace = 0    #(BYTE EquipPlace)//×°±¸Î»ÖÃ--sys  | 
|     LV = 0    #(WORD LV)//ÎïÆ·µÈ¼¶--sys  | 
|     UseLV = 0    #(WORD UseLV)//ʹÓõȼ¶--sys  | 
|     JobLimit = 0    #(DWORD JobLimit)//Ö°ÒµÏÞÖÆ,λ²Ù×÷--sys  | 
|     SuiteID = 0    #(DWORD SuiteID)//Ì××°ID--sys  | 
|     ItemQuality = 0    #(BYTE ItemQuality)//×°±¸Æ·ÖÊ--sys  | 
|     ItemColor = 0    #(BYTE ItemColor)//×°±¸ÑÕɫƷÖÊ--sys  | 
|     Pwd = ""    #(char Pwd[8])//½»Ò×ÃÜÂë  | 
|     EquipGS = 0    #(DWORD EquipGS)//×°±¸ÆÀ·Ö  | 
|     ItemName = ""    #(char ItemName[33])//ÎïÆ·Ãû(Ä£ºý²éѯ)  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x02  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)  | 
|         self.OperateInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)  | 
|         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.PriceCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemTypeID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)  | 
|         self.Type,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.EquipPlace,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.UseLV,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.JobLimit,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.SuiteID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemQuality,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.ItemColor,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.Pwd,_pos = CommFunc.ReadString(_lpData, _pos,8)  | 
|         self.EquipGS,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemName,_pos = CommFunc.ReadString(_lpData, _pos,33)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x02  | 
|         self.PlayerID = 0  | 
|         self.PlayerName = ""  | 
|         self.OperateInfo = 0  | 
|         self.ItemGUID = ""  | 
|         self.Count = 0  | 
|         self.PriceType = 0  | 
|         self.PriceCount = 0  | 
|         self.ItemTypeID = 0  | 
|         self.UserDataLen = 0  | 
|         self.UserData = ""  | 
|         self.Type = 0  | 
|         self.EquipPlace = 0  | 
|         self.LV = 0  | 
|         self.UseLV = 0  | 
|         self.JobLimit = 0  | 
|         self.SuiteID = 0  | 
|         self.ItemQuality = 0  | 
|         self.ItemColor = 0  | 
|         self.Pwd = ""  | 
|         self.EquipGS = 0  | 
|         self.ItemName = ""  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 33  | 
|         length += 4  | 
|         length += 40  | 
|         length += 2  | 
|         length += 1  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += len(self.UserData)  | 
|         length += 4  | 
|         length += 1  | 
|         length += 2  | 
|         length += 2  | 
|         length += 4  | 
|         length += 4  | 
|         length += 1  | 
|         length += 1  | 
|         length += 8  | 
|         length += 4  | 
|         length += 33  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 33, self.PlayerName)  | 
|         data = CommFunc.WriteDWORD(data, self.OperateInfo)  | 
|         data = CommFunc.WriteString(data, 40, self.ItemGUID)  | 
|         data = CommFunc.WriteWORD(data, self.Count)  | 
|         data = CommFunc.WriteBYTE(data, self.PriceType)  | 
|         data = CommFunc.WriteDWORD(data, self.PriceCount)  | 
|         data = CommFunc.WriteDWORD(data, self.ItemTypeID)  | 
|         data = CommFunc.WriteDWORD(data, self.UserDataLen)  | 
|         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)  | 
|         data = CommFunc.WriteDWORD(data, self.Type)  | 
|         data = CommFunc.WriteBYTE(data, self.EquipPlace)  | 
|         data = CommFunc.WriteWORD(data, self.LV)  | 
|         data = CommFunc.WriteWORD(data, self.UseLV)  | 
|         data = CommFunc.WriteDWORD(data, self.JobLimit)  | 
|         data = CommFunc.WriteDWORD(data, self.SuiteID)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemQuality)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemColor)  | 
|         data = CommFunc.WriteString(data, 8, self.Pwd)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipGS)  | 
|         data = CommFunc.WriteString(data, 33, self.ItemName)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 PlayerName:%s,  | 
|                                 OperateInfo:%d,  | 
|                                 ItemGUID:%s,  | 
|                                 Count:%d,  | 
|                                 PriceType:%d,  | 
|                                 PriceCount:%d,  | 
|                                 ItemTypeID:%d,  | 
|                                 UserDataLen:%d,  | 
|                                 UserData:%s,  | 
|                                 Type:%d,  | 
|                                 EquipPlace:%d,  | 
|                                 LV:%d,  | 
|                                 UseLV:%d,  | 
|                                 JobLimit:%d,  | 
|                                 SuiteID:%d,  | 
|                                 ItemQuality:%d,  | 
|                                 ItemColor:%d,  | 
|                                 Pwd:%s,  | 
|                                 EquipGS:%d,  | 
|                                 ItemName:%s  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.PlayerName,  | 
|                                 self.OperateInfo,  | 
|                                 self.ItemGUID,  | 
|                                 self.Count,  | 
|                                 self.PriceType,  | 
|                                 self.PriceCount,  | 
|                                 self.ItemTypeID,  | 
|                                 self.UserDataLen,  | 
|                                 self.UserData,  | 
|                                 self.Type,  | 
|                                 self.EquipPlace,  | 
|                                 self.LV,  | 
|                                 self.UseLV,  | 
|                                 self.JobLimit,  | 
|                                 self.SuiteID,  | 
|                                 self.ItemQuality,  | 
|                                 self.ItemColor,  | 
|                                 self.Pwd,  | 
|                                 self.EquipGS,  | 
|                                 self.ItemName  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGAddPlayerSellBourseItem=tagMGAddPlayerSellBourseItem()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGAddPlayerSellBourseItem.Head.Cmd,m_NAtagMGAddPlayerSellBourseItem.Head.SubCmd))] = m_NAtagMGAddPlayerSellBourseItem  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #02 04 Íæ¼ÒÈ·ÈϹºÂò½»Ò×ËùÎïÆ·#tagMGBuyBourseItemSure  | 
|   | 
| class  tagMGBuyBourseItemSure(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)  | 
|     PlayerName = ""    #(char PlayerName[33])//¹ºÂòÍæ¼Ò½ÇÉ«Ãû£¬size = 33  | 
|     ItemGUID = ""    #(char ItemGUID[40])  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x04  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)  | 
|         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x04  | 
|         self.PlayerID = 0  | 
|         self.PlayerName = ""  | 
|         self.ItemGUID = ""  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 33  | 
|         length += 40  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 33, self.PlayerName)  | 
|         data = CommFunc.WriteString(data, 40, self.ItemGUID)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 PlayerName:%s,  | 
|                                 ItemGUID:%s  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.PlayerName,  | 
|                                 self.ItemGUID  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGBuyBourseItemSure=tagMGBuyBourseItemSure()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGBuyBourseItemSure.Head.Cmd,m_NAtagMGBuyBourseItemSure.Head.SubCmd))] = m_NAtagMGBuyBourseItemSure  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #02 01 Ñ¯ÎÊÊÇ·ñ¿ÉÒÔÌí¼ÓÍæ¼Ò½»Ò×ËùÎïÆ·#tagMGCheckAddPlayerBourseItem  | 
|   | 
| class  tagMGCheckAddPlayerBourseItem(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)  | 
|     ItemIndex = 0    #(BYTE ItemIndex)//ÎïÆ·ÔÚ±³°üÖÐË÷Òý  | 
|     Count = 0    #(WORD Count)//³öÊÛÊýÁ¿  | 
|     PriceType = 0    #(BYTE PriceType)//³öÊÛ¼Û¸ñÀàÐÍ  | 
|     PriceCount = 0    #(DWORD PriceCount)//³öÊÛ¼Û¸ñ  | 
|     Pwd = ""    #(char Pwd[8])//½»Ò×ÃÜÂë  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x01  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.PriceCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Pwd,_pos = CommFunc.ReadString(_lpData, _pos,8)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x01  | 
|         self.PlayerID = 0  | 
|         self.ItemIndex = 0  | 
|         self.Count = 0  | 
|         self.PriceType = 0  | 
|         self.PriceCount = 0  | 
|         self.Pwd = ""  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 1  | 
|         length += 2  | 
|         length += 1  | 
|         length += 4  | 
|         length += 8  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemIndex)  | 
|         data = CommFunc.WriteWORD(data, self.Count)  | 
|         data = CommFunc.WriteBYTE(data, self.PriceType)  | 
|         data = CommFunc.WriteDWORD(data, self.PriceCount)  | 
|         data = CommFunc.WriteString(data, 8, self.Pwd)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 ItemIndex:%d,  | 
|                                 Count:%d,  | 
|                                 PriceType:%d,  | 
|                                 PriceCount:%d,  | 
|                                 Pwd:%s  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.ItemIndex,  | 
|                                 self.Count,  | 
|                                 self.PriceType,  | 
|                                 self.PriceCount,  | 
|                                 self.Pwd  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGCheckAddPlayerBourseItem=tagMGCheckAddPlayerBourseItem()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGCheckAddPlayerBourseItem.Head.Cmd,m_NAtagMGCheckAddPlayerBourseItem.Head.SubCmd))] = m_NAtagMGCheckAddPlayerBourseItem  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #02 03 Íæ¼ÒѯÎʹºÂò½»Ò×ËùÎïÆ·#tagMGCheckBuyBourseItem  | 
|   | 
| class  tagMGCheckBuyBourseItem(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)  | 
|     ItemGUID = ""    #(char ItemGUID[40])  | 
|     Pwd = ""    #(char Pwd[8])//½»Ò×ÃÜÂë  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x03  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)  | 
|         self.Pwd,_pos = CommFunc.ReadString(_lpData, _pos,8)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x03  | 
|         self.PlayerID = 0  | 
|         self.ItemGUID = ""  | 
|         self.Pwd = ""  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 40  | 
|         length += 8  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 40, self.ItemGUID)  | 
|         data = CommFunc.WriteString(data, 8, self.Pwd)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 ItemGUID:%s,  | 
|                                 Pwd:%s  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.ItemGUID,  | 
|                                 self.Pwd  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGCheckBuyBourseItem=tagMGCheckBuyBourseItem()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGCheckBuyBourseItem.Head.Cmd,m_NAtagMGCheckBuyBourseItem.Head.SubCmd))] = m_NAtagMGCheckBuyBourseItem  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #02 05 ½»Ò×ËùÍæ¼ÒÈ¡ÏÂÕýÔÚ³öÊÛµÄÎïÆ·»ò³öÊÛÊÕÒæ#tagMGPlayerRecaptureBourseItem  | 
|   | 
| class  tagMGPlayerRecaptureBourseItem(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)  | 
|     ItemGUID = ""    #(char ItemGUID[40])  | 
|     PackSpaceCount = 0    #(BYTE PackSpaceCount)//µ±Ç°±³°üÊ£Óà¿Õ¼ä  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x05  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)  | 
|         self.PackSpaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x02  | 
|         self.Head.SubCmd = 0x05  | 
|         self.PlayerID = 0  | 
|         self.ItemGUID = ""  | 
|         self.PackSpaceCount = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 40  | 
|         length += 1  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 40, self.ItemGUID)  | 
|         data = CommFunc.WriteBYTE(data, self.PackSpaceCount)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 ItemGUID:%s,  | 
|                                 PackSpaceCount:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.ItemGUID,  | 
|                                 self.PackSpaceCount  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGPlayerRecaptureBourseItem=tagMGPlayerRecaptureBourseItem()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGPlayerRecaptureBourseItem.Head.Cmd,m_NAtagMGPlayerRecaptureBourseItem.Head.SubCmd))] = m_NAtagMGPlayerRecaptureBourseItem  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #04 02 µØÍ¼²éÑ¯Íæ¼Ò»º´æÊý¾Ý#tagMGQueryPlayerCache  | 
|   | 
| class  tagMGQueryPlayerCache(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|                   ("Cmd", c_ubyte),  | 
|                   ("SubCmd", c_ubyte),  | 
|                   ("PlayerID", c_int),    #Íæ¼ÒID  | 
|                   ("FindPlayerID", c_int),    #Òª²éѯµÄÍæ¼ÒID  | 
|                   ]  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Cmd = 0x04  | 
|         self.SubCmd = 0x02  | 
|         return  | 
|   | 
|     def ReadData(self, stringData, _pos=0, _len=0):  | 
|         self.Clear()  | 
|         memmove(addressof(self), stringData[_pos:], self.GetLength())  | 
|         return _pos + self.GetLength()  | 
|   | 
|     def Clear(self):  | 
|         self.Cmd = 0x04  | 
|         self.SubCmd = 0x02  | 
|         self.PlayerID = 0  | 
|         self.FindPlayerID = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         return sizeof(tagMGQueryPlayerCache)  | 
|   | 
|     def GetBuffer(self):  | 
|         return string_at(addressof(self), self.GetLength())  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''//04 02 µØÍ¼²éÑ¯Íæ¼Ò»º´æÊý¾Ý//tagMGQueryPlayerCache:  | 
|                                 Cmd:%s,  | 
|                                 SubCmd:%s,  | 
|                                 PlayerID:%d,  | 
|                                 FindPlayerID:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Cmd,  | 
|                                 self.SubCmd,  | 
|                                 self.PlayerID,  | 
|                                 self.FindPlayerID  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGQueryPlayerCache=tagMGQueryPlayerCache()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGQueryPlayerCache.Cmd,m_NAtagMGQueryPlayerCache.SubCmd))] = m_NAtagMGQueryPlayerCache  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #04 01 µØÍ¼Í¬²½Íæ¼Ò»º´æÊý¾Ýµ½GameServer#tagMGUpdatePlayerCache  | 
|   | 
| class  tagMGUpdatePlayerCache(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)//Íæ¼ÒID  | 
|     PlayerLV = 0    #(WORD PlayerLV)//Íæ¼ÒµÈ¼¶  | 
|     PropDataSize = 0    #(DWORD PropDataSize)  | 
|     PropData = ""    #(String PropData)//ÊôÐԼǼ  | 
|     ItemDataSize = 0    #(DWORD ItemDataSize)  | 
|     ItemData = ""    #(String ItemData)//ÎïÆ·¼Ç¼  | 
|     PlusDataSize = 0    #(DWORD PlusDataSize)  | 
|     PlusData = ""    #(String PlusData)//À©Õ¹¼Ç¼  | 
|     IsLogouting = 0    #(BYTE IsLogouting)//±¾´ÎÊÇ·ñΪÏÂÏßͬ²½  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x04  | 
|         self.Head.SubCmd = 0x01  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.PlayerLV,_pos = CommFunc.ReadWORD(_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.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)  | 
|         self.IsLogouting,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x04  | 
|         self.Head.SubCmd = 0x01  | 
|         self.PlayerID = 0  | 
|         self.PlayerLV = 0  | 
|         self.PropDataSize = 0  | 
|         self.PropData = ""  | 
|         self.ItemDataSize = 0  | 
|         self.ItemData = ""  | 
|         self.PlusDataSize = 0  | 
|         self.PlusData = ""  | 
|         self.IsLogouting = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 2  | 
|         length += 4  | 
|         length += len(self.PropData)  | 
|         length += 4  | 
|         length += len(self.ItemData)  | 
|         length += 4  | 
|         length += len(self.PlusData)  | 
|         length += 1  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteWORD(data, self.PlayerLV)  | 
|         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.WriteDWORD(data, self.PlusDataSize)  | 
|         data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)  | 
|         data = CommFunc.WriteBYTE(data, self.IsLogouting)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 PlayerLV:%d,  | 
|                                 PropDataSize:%d,  | 
|                                 PropData:%s,  | 
|                                 ItemDataSize:%d,  | 
|                                 ItemData:%s,  | 
|                                 PlusDataSize:%d,  | 
|                                 PlusData:%s,  | 
|                                 IsLogouting:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.PlayerLV,  | 
|                                 self.PropDataSize,  | 
|                                 self.PropData,  | 
|                                 self.ItemDataSize,  | 
|                                 self.ItemData,  | 
|                                 self.PlusDataSize,  | 
|                                 self.PlusData,  | 
|                                 self.IsLogouting  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGUpdatePlayerCache=tagMGUpdatePlayerCache()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGUpdatePlayerCache.Head.Cmd,m_NAtagMGUpdatePlayerCache.Head.SubCmd))] = m_NAtagMGUpdatePlayerCache  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| # 03 05 Ôö¼Ó¼Ò×åÊôÐÔ#tagMGAddFamilyDetail  | 
|   | 
| class  tagMGAddFamilyDetail(Structure):  | 
|     _pack_ = 1  | 
|     _fields_ = [  | 
|                   ("Cmd", c_ubyte),  | 
|                   ("SubCmd", c_ubyte),  | 
|                   ("PlayerID", c_int),    #Íæ¼ÒID  | 
|                   ("AddFamilyHornor", c_int),    #Ôö¼Ó¼Ò×åÈÙÓþ  | 
|                   ("AddFamilyMoney", c_int),    #Ôö¼Ó¼Ò×å×ʽð  | 
|                   ("FamilyActiveValue", c_int),    #¼Ò×å»îÔ¾¶È  | 
|                   ("AddResion", c_ubyte),    #Ôö¼ÓÔÒò  | 
|                   ]  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Cmd = 0x03  | 
|         self.SubCmd = 0x05  | 
|         return  | 
|   | 
|     def ReadData(self, stringData, _pos=0, _len=0):  | 
|         self.Clear()  | 
|         memmove(addressof(self), stringData[_pos:], self.GetLength())  | 
|         return _pos + self.GetLength()  | 
|   | 
|     def Clear(self):  | 
|         self.Cmd = 0x03  | 
|         self.SubCmd = 0x05  | 
|         self.PlayerID = 0  | 
|         self.AddFamilyHornor = 0  | 
|         self.AddFamilyMoney = 0  | 
|         self.FamilyActiveValue = 0  | 
|         self.AddResion = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         return sizeof(tagMGAddFamilyDetail)  | 
|   | 
|     def GetBuffer(self):  | 
|         return string_at(addressof(self), self.GetLength())  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''// 03 05 Ôö¼Ó¼Ò×åÊôÐÔ//tagMGAddFamilyDetail:  | 
|                                 Cmd:%s,  | 
|                                 SubCmd:%s,  | 
|                                 PlayerID:%d,  | 
|                                 AddFamilyHornor:%d,  | 
|                                 AddFamilyMoney:%d,  | 
|                                 FamilyActiveValue:%d,  | 
|                                 AddResion:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Cmd,  | 
|                                 self.SubCmd,  | 
|                                 self.PlayerID,  | 
|                                 self.AddFamilyHornor,  | 
|                                 self.AddFamilyMoney,  | 
|                                 self.FamilyActiveValue,  | 
|                                 self.AddResion  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGAddFamilyDetail=tagMGAddFamilyDetail()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGAddFamilyDetail.Cmd,m_NAtagMGAddFamilyDetail.SubCmd))] = m_NAtagMGAddFamilyDetail  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #03 02 ÌìÌݾº¼¼³¡Íæ¼Ò·¢ÆðÌôÕ½#tagMGHighLadderChallenge  | 
|   | 
| class  tagHightLadderItemInfo(Structure):  | 
|     ItemTypeID = 0    #(DWORD ItemTypeID)//ÎïÆ·ID  | 
|     ItemPlaceType = 0    #(BYTE ItemPlaceType)//ÎïÆ·Î»Öõı³°üÀàÐÍ  | 
|     ItemPlaceIndex = 0    #(BYTE ItemPlaceIndex)//ÎïÆ·ËùÔÚµÄË÷Òý  | 
|     Count = 0    #(WORD Count)//µ¥×éÊýÁ¿  | 
|     ItemStarLV = 0    #(BYTE ItemStarLV)//×°±¸ÐǼ¶  | 
|     IdentifyPar = 0    #(BYTE IdentifyPar)//¼ø¶¨²ÎÊý  | 
|     CurDurg = 0    #(DWORD CurDurg)//µ±Ç°Ä;à  | 
|     MaxDurg = 0    #(DWORD MaxDurg)//×î´óÄ;à  | 
|     CanPlaceStoneCount = 0    #(BYTE CanPlaceStoneCount)//¿ÉÏâǶ±¦Ê¯Êý0±íʾ²»¿ÉÒÔÏâǶ±¦Ê¯  | 
|     ItemProperty = 0    #(BYTE ItemProperty)//×°±¸ÎåÐÐ  | 
|     SoulProperty = 0    #(WORD SoulProperty)//Áé»êÊôÐÔÊôÐÔ  | 
|     Maker = 0    #(DWORD Maker)//ÖÆ×÷ÕßID  | 
|     MakerName = ""    #(char MakerName[33])//ÖÆÔìÕßÃû×Ö  | 
|     Stone1 = 0    #(DWORD Stone1)//ÏâǶ±¦Ê¯1  | 
|     Stone2 = 0    #(DWORD Stone2)//ÏâǶ±¦Ê¯  | 
|     Stone3 = 0    #(DWORD Stone3)//ÏâǶ±¦Ê¯  | 
|     Stone4 = 0    #(DWORD Stone4)//ÏâǶ±¦Ê¯  | 
|     Stone5 = 0    #(DWORD Stone5)//ÏâǶ±¦Ê¯  | 
|     Stone6 = 0    #(DWORD Stone6)//ÏâǶ±¦Ê¯  | 
|     Stone7 = 0    #(DWORD Stone7)//ÏâǶ±¦Ê¯  | 
|     Stone8 = 0    #(DWORD Stone8)//ÏâǶ±¦Ê¯  | 
|     Stone9 = 0    #(DWORD Stone9)//ÏâǶ±¦Ê¯  | 
|     IsRenZhu = 0    #(BYTE IsRenZhu)//ÊÇ·ñÈÏÖ÷  | 
|     EquipDefenseValue = 0    #(DWORD EquipDefenseValue)//ÓÃÓڼǼװ±¸µÄ·ÀÓùÖµ  | 
|     EquipMinAtkValue = 0    #(DWORD EquipMinAtkValue)//ÓÃÓڼǼװ±¸µÄ×îСÉ˺¦Öµ  | 
|     EquipMaxAtkValue = 0    #(DWORD EquipMaxAtkValue)//ÓÃÓڼǼװ±¸µÄ×î´óÉ˺¦Öµ  | 
|     UserDataLen = 0    #(DWORD UserDataLen)  | 
|     UserData = ""    #(String UserData)//×Ô¶¨ÒåÊý¾Ý  | 
|     FitLV = 0    #(BYTE FitLV)//ÎïÆ·ÆõºÏµÈ¼¶  | 
|     Proficiency = 0    #(DWORD Proficiency)//ÊìÁ·¶È  | 
|     IsSuite = 0    #(BYTE IsSuite)//ÊÇ·ñÒѾÌ××°»¯  | 
|     BaseHP = 0    #(DWORD BaseHP)// HP»ù´¡Öµ  | 
|     BaseMagicDef = 0    #(DWORD BaseMagicDef)//ÄÚ·À»ù´¡Öµ  | 
|     MaxAddSkillCnt = 0    #(BYTE MaxAddSkillCnt)// ×î´ó¸½Ä§´ÎÊý  | 
|     PetID = 0    #(DWORD PetID)//×°±¸¸Ã×°±¸µÄ³èÎïID£¬Îª0Ôòδװ±¸  | 
|     EquipMagicDefValue = 0    #(DWORD EquipMagicDefValue)//×°±¸ÄÚ·ÀÖµ  | 
|     EquipMinMagicAtkValue = 0    #(DWORD EquipMinMagicAtkValue)//×°±¸×îСÄÚ¹¥  | 
|     EquipMaxMagicAtkValue = 0    #(DWORD EquipMaxMagicAtkValue)//×°±¸×î´óÄÚ¹¥  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         self.ItemTypeID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemPlaceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.ItemPlaceIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.ItemStarLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.IdentifyPar,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.CurDurg,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.MaxDurg,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.CanPlaceStoneCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.ItemProperty,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.SoulProperty,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.Maker,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.MakerName,_pos = CommFunc.ReadString(_lpData, _pos,33)  | 
|         self.Stone1,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone2,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone3,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone4,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone5,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone6,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone7,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone8,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.Stone9,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.IsRenZhu,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.EquipDefenseValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.EquipMinAtkValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.EquipMaxAtkValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.UserDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)  | 
|         self.FitLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.Proficiency,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.IsSuite,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.BaseHP,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.BaseMagicDef,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.MaxAddSkillCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.PetID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.EquipMagicDefValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.EquipMinMagicAtkValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.EquipMaxMagicAtkValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.ItemTypeID = 0  | 
|         self.ItemPlaceType = 0  | 
|         self.ItemPlaceIndex = 0  | 
|         self.Count = 0  | 
|         self.ItemStarLV = 0  | 
|         self.IdentifyPar = 0  | 
|         self.CurDurg = 0  | 
|         self.MaxDurg = 0  | 
|         self.CanPlaceStoneCount = 0  | 
|         self.ItemProperty = 0  | 
|         self.SoulProperty = 0  | 
|         self.Maker = 0  | 
|         self.MakerName = ""  | 
|         self.Stone1 = 0  | 
|         self.Stone2 = 0  | 
|         self.Stone3 = 0  | 
|         self.Stone4 = 0  | 
|         self.Stone5 = 0  | 
|         self.Stone6 = 0  | 
|         self.Stone7 = 0  | 
|         self.Stone8 = 0  | 
|         self.Stone9 = 0  | 
|         self.IsRenZhu = 0  | 
|         self.EquipDefenseValue = 0  | 
|         self.EquipMinAtkValue = 0  | 
|         self.EquipMaxAtkValue = 0  | 
|         self.UserDataLen = 0  | 
|         self.UserData = ""  | 
|         self.FitLV = 0  | 
|         self.Proficiency = 0  | 
|         self.IsSuite = 0  | 
|         self.BaseHP = 0  | 
|         self.BaseMagicDef = 0  | 
|         self.MaxAddSkillCnt = 0  | 
|         self.PetID = 0  | 
|         self.EquipMagicDefValue = 0  | 
|         self.EquipMinMagicAtkValue = 0  | 
|         self.EquipMaxMagicAtkValue = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += 4  | 
|         length += 1  | 
|         length += 1  | 
|         length += 2  | 
|         length += 1  | 
|         length += 1  | 
|         length += 4  | 
|         length += 4  | 
|         length += 1  | 
|         length += 1  | 
|         length += 2  | 
|         length += 4  | 
|         length += 33  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 1  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += len(self.UserData)  | 
|         length += 1  | 
|         length += 4  | 
|         length += 1  | 
|         length += 4  | 
|         length += 4  | 
|         length += 1  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|         length += 4  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteDWORD(data, self.ItemTypeID)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemPlaceType)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemPlaceIndex)  | 
|         data = CommFunc.WriteWORD(data, self.Count)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemStarLV)  | 
|         data = CommFunc.WriteBYTE(data, self.IdentifyPar)  | 
|         data = CommFunc.WriteDWORD(data, self.CurDurg)  | 
|         data = CommFunc.WriteDWORD(data, self.MaxDurg)  | 
|         data = CommFunc.WriteBYTE(data, self.CanPlaceStoneCount)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemProperty)  | 
|         data = CommFunc.WriteWORD(data, self.SoulProperty)  | 
|         data = CommFunc.WriteDWORD(data, self.Maker)  | 
|         data = CommFunc.WriteString(data, 33, self.MakerName)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone1)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone2)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone3)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone4)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone5)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone6)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone7)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone8)  | 
|         data = CommFunc.WriteDWORD(data, self.Stone9)  | 
|         data = CommFunc.WriteBYTE(data, self.IsRenZhu)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipDefenseValue)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipMinAtkValue)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipMaxAtkValue)  | 
|         data = CommFunc.WriteDWORD(data, self.UserDataLen)  | 
|         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)  | 
|         data = CommFunc.WriteBYTE(data, self.FitLV)  | 
|         data = CommFunc.WriteDWORD(data, self.Proficiency)  | 
|         data = CommFunc.WriteBYTE(data, self.IsSuite)  | 
|         data = CommFunc.WriteDWORD(data, self.BaseHP)  | 
|         data = CommFunc.WriteDWORD(data, self.BaseMagicDef)  | 
|         data = CommFunc.WriteBYTE(data, self.MaxAddSkillCnt)  | 
|         data = CommFunc.WriteDWORD(data, self.PetID)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipMagicDefValue)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipMinMagicAtkValue)  | 
|         data = CommFunc.WriteDWORD(data, self.EquipMaxMagicAtkValue)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 ItemTypeID:%d,  | 
|                                 ItemPlaceType:%d,  | 
|                                 ItemPlaceIndex:%d,  | 
|                                 Count:%d,  | 
|                                 ItemStarLV:%d,  | 
|                                 IdentifyPar:%d,  | 
|                                 CurDurg:%d,  | 
|                                 MaxDurg:%d,  | 
|                                 CanPlaceStoneCount:%d,  | 
|                                 ItemProperty:%d,  | 
|                                 SoulProperty:%d,  | 
|                                 Maker:%d,  | 
|                                 MakerName:%s,  | 
|                                 Stone1:%d,  | 
|                                 Stone2:%d,  | 
|                                 Stone3:%d,  | 
|                                 Stone4:%d,  | 
|                                 Stone5:%d,  | 
|                                 Stone6:%d,  | 
|                                 Stone7:%d,  | 
|                                 Stone8:%d,  | 
|                                 Stone9:%d,  | 
|                                 IsRenZhu:%d,  | 
|                                 EquipDefenseValue:%d,  | 
|                                 EquipMinAtkValue:%d,  | 
|                                 EquipMaxAtkValue:%d,  | 
|                                 UserDataLen:%d,  | 
|                                 UserData:%s,  | 
|                                 FitLV:%d,  | 
|                                 Proficiency:%d,  | 
|                                 IsSuite:%d,  | 
|                                 BaseHP:%d,  | 
|                                 BaseMagicDef:%d,  | 
|                                 MaxAddSkillCnt:%d,  | 
|                                 PetID:%d,  | 
|                                 EquipMagicDefValue:%d,  | 
|                                 EquipMinMagicAtkValue:%d,  | 
|                                 EquipMaxMagicAtkValue:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.ItemTypeID,  | 
|                                 self.ItemPlaceType,  | 
|                                 self.ItemPlaceIndex,  | 
|                                 self.Count,  | 
|                                 self.ItemStarLV,  | 
|                                 self.IdentifyPar,  | 
|                                 self.CurDurg,  | 
|                                 self.MaxDurg,  | 
|                                 self.CanPlaceStoneCount,  | 
|                                 self.ItemProperty,  | 
|                                 self.SoulProperty,  | 
|                                 self.Maker,  | 
|                                 self.MakerName,  | 
|                                 self.Stone1,  | 
|                                 self.Stone2,  | 
|                                 self.Stone3,  | 
|                                 self.Stone4,  | 
|                                 self.Stone5,  | 
|                                 self.Stone6,  | 
|                                 self.Stone7,  | 
|                                 self.Stone8,  | 
|                                 self.Stone9,  | 
|                                 self.IsRenZhu,  | 
|                                 self.EquipDefenseValue,  | 
|                                 self.EquipMinAtkValue,  | 
|                                 self.EquipMaxAtkValue,  | 
|                                 self.UserDataLen,  | 
|                                 self.UserData,  | 
|                                 self.FitLV,  | 
|                                 self.Proficiency,  | 
|                                 self.IsSuite,  | 
|                                 self.BaseHP,  | 
|                                 self.BaseMagicDef,  | 
|                                 self.MaxAddSkillCnt,  | 
|                                 self.PetID,  | 
|                                 self.EquipMagicDefValue,  | 
|                                 self.EquipMinMagicAtkValue,  | 
|                                 self.EquipMaxMagicAtkValue  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| class  tagMGHighLadderChallenge(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)//Íæ¼ÒID  | 
|     PlayerName = ""    #(char PlayerName[33])  | 
|     PlayerLV = 0    #(WORD PlayerLV)  | 
|     FightPower = 0    #(DWORD FightPower)  | 
|     FightPropertyDataLen = 0    #(DWORD FightPropertyDataLen)  | 
|     FightPropertyData = ""    #(String FightPropertyData)//Python×Ô¶¨ÒåÊý¾Ý  | 
|     EquipCount = 0    #(BYTE EquipCount)  | 
|     EquipList = list()    #(vector<tagHightLadderItemInfo> EquipList)//×°±¸ÐÅÏ¢ÁÐ±í  | 
|     VSOrder = 0    #(WORD VSOrder)//ÒªÌôÕ½µÄÅÅλ  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x02  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)  | 
|         self.PlayerLV,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.FightPropertyDataLen,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.FightPropertyData,_pos = CommFunc.ReadString(_lpData, _pos,self.FightPropertyDataLen)  | 
|         self.EquipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         for i in range(self.EquipCount):  | 
|             temEquipList = tagHightLadderItemInfo()  | 
|             _pos = temEquipList.ReadData(_lpData, _pos)  | 
|             self.EquipList.append(temEquipList)  | 
|         self.VSOrder,_pos = CommFunc.ReadWORD(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x02  | 
|         self.PlayerID = 0  | 
|         self.PlayerName = ""  | 
|         self.PlayerLV = 0  | 
|         self.FightPower = 0  | 
|         self.FightPropertyDataLen = 0  | 
|         self.FightPropertyData = ""  | 
|         self.EquipCount = 0  | 
|         self.EquipList = list()  | 
|         self.VSOrder = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 33  | 
|         length += 2  | 
|         length += 4  | 
|         length += 4  | 
|         length += len(self.FightPropertyData)  | 
|         length += 1  | 
|         for i in range(self.EquipCount):  | 
|             length += self.EquipList[i].GetLength()  | 
|         length += 2  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 33, self.PlayerName)  | 
|         data = CommFunc.WriteWORD(data, self.PlayerLV)  | 
|         data = CommFunc.WriteDWORD(data, self.FightPower)  | 
|         data = CommFunc.WriteDWORD(data, self.FightPropertyDataLen)  | 
|         data = CommFunc.WriteString(data, self.FightPropertyDataLen, self.FightPropertyData)  | 
|         data = CommFunc.WriteBYTE(data, self.EquipCount)  | 
|         for i in range(self.EquipCount):  | 
|             data = CommFunc.WriteString(data, self.EquipList[i].GetLength(), self.EquipList[i].GetBuffer())  | 
|         data = CommFunc.WriteWORD(data, self.VSOrder)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 PlayerName:%s,  | 
|                                 PlayerLV:%d,  | 
|                                 FightPower:%d,  | 
|                                 FightPropertyDataLen:%d,  | 
|                                 FightPropertyData:%s,  | 
|                                 EquipCount:%d,  | 
|                                 EquipList:%s,  | 
|                                 VSOrder:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.PlayerName,  | 
|                                 self.PlayerLV,  | 
|                                 self.FightPower,  | 
|                                 self.FightPropertyDataLen,  | 
|                                 self.FightPropertyData,  | 
|                                 self.EquipCount,  | 
|                                 "...",  | 
|                                 self.VSOrder  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGHighLadderChallenge=tagMGHighLadderChallenge()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGHighLadderChallenge.Head.Cmd,m_NAtagMGHighLadderChallenge.Head.SubCmd))] = m_NAtagMGHighLadderChallenge  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #03 04 Íæ¼ÒÁìÈ¡²¹³¥ÎïÆ··¢·Å½á¹û#tagMGGiveCompensationResult  | 
|   | 
| class  tagMGGiveCompensationResult(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)//Íæ¼ÒID  | 
|     CompensationType = 0    #(BYTE CompensationType)//²¹³¥ÀàÐÍ 0 È«·þ 1 ¸öÈË  | 
|     GUID = ""    #(char GUID[40])  | 
|     Result = 0    #(BYTE Result)//·¢·Å²¹³¥½á¹û 1 ³É¹¦ 0 Ê§°Ü  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x04  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.CompensationType,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)  | 
|         self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x04  | 
|         self.PlayerID = 0  | 
|         self.CompensationType = 0  | 
|         self.GUID = ""  | 
|         self.Result = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 1  | 
|         length += 40  | 
|         length += 1  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteBYTE(data, self.CompensationType)  | 
|         data = CommFunc.WriteString(data, 40, self.GUID)  | 
|         data = CommFunc.WriteBYTE(data, self.Result)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 CompensationType:%d,  | 
|                                 GUID:%s,  | 
|                                 Result:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.CompensationType,  | 
|                                 self.GUID,  | 
|                                 self.Result  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGGiveCompensationResult=tagMGGiveCompensationResult()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGGiveCompensationResult.Head.Cmd,m_NAtagMGGiveCompensationResult.Head.SubCmd))] = m_NAtagMGGiveCompensationResult  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #03 03 Íæ¼ÒÇëÇóÁìÈ¡²¹³¥#tagMGRequestCompensation  | 
|   | 
| class  tagMGRequestCompensation(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)//Íæ¼ÒID  | 
|     GUID = ""    #(char GUID[40])  | 
|     PackSpaceCount = 0    #(BYTE PackSpaceCount)//µ±Ç°±³°üÊ£Óà¿Õ¼ä  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x03  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)  | 
|         self.PackSpaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x03  | 
|         self.PlayerID = 0  | 
|         self.GUID = ""  | 
|         self.PackSpaceCount = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 40  | 
|         length += 1  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 40, self.GUID)  | 
|         data = CommFunc.WriteBYTE(data, self.PackSpaceCount)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 GUID:%s,  | 
|                                 PackSpaceCount:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.GUID,  | 
|                                 self.PackSpaceCount  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGRequestCompensation=tagMGRequestCompensation()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGRequestCompensation.Head.Cmd,m_NAtagMGRequestCompensation.Head.SubCmd))] = m_NAtagMGRequestCompensation  | 
|   | 
|   | 
| #------------------------------------------------------  | 
| #03 01 Í¨ÖªÑ°±¦»ñµÃÎïÆ· #tagMGNotifyTreasureRecord  | 
|   | 
| class  tagMGNotifyTreasureRecord(Structure):  | 
|     Head = tagHead()  | 
|     PlayerID = 0    #(DWORD PlayerID)//Íæ¼ÒID  | 
|     PlayerName = ""    #(char PlayerName[33])//Ѱ±¦Íæ¼Ò½ÇÉ«Ãû£¬size = 33  | 
|     Type = 0    #(BYTE Type)//Ѱ±¦ÀàÐÍ 1ÈËÎï×°±¸ 2ÈËÎïÊÎÆ· 3×øÆï×°±¸  | 
|     ItemID = 0    #(DWORD ItemID)//Ѱ±¦»ñµÃµÄÎïÆ·ID£¬Èç¹ûÊÇ  | 
|     ItemCount = 0    #(BYTE ItemCount)//ÎïÆ·ÊýÁ¿  | 
|     IsAppoint = 0    #(BYTE IsAppoint)//ÎïÆ·ÊÇ·ñÊǶ¨ÖÆÎïÆ·£¬0·ñ1ÊÇ  | 
|     data = None  | 
|   | 
|     def __init__(self):  | 
|         self.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x01  | 
|         return  | 
|   | 
|     def ReadData(self, _lpData, _pos=0, _Len=0):  | 
|         self.Clear()  | 
|         _pos = self.Head.ReadData(_lpData, _pos)  | 
|         self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)  | 
|         self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)  | 
|         self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         self.IsAppoint,_pos = CommFunc.ReadBYTE(_lpData, _pos)  | 
|         return _pos  | 
|   | 
|     def Clear(self):  | 
|         self.Head = tagHead()  | 
|         self.Head.Clear()  | 
|         self.Head.Cmd = 0x03  | 
|         self.Head.SubCmd = 0x01  | 
|         self.PlayerID = 0  | 
|         self.PlayerName = ""  | 
|         self.Type = 0  | 
|         self.ItemID = 0  | 
|         self.ItemCount = 0  | 
|         self.IsAppoint = 0  | 
|         return  | 
|   | 
|     def GetLength(self):  | 
|         length = 0  | 
|         length += self.Head.GetLength()  | 
|         length += 4  | 
|         length += 33  | 
|         length += 1  | 
|         length += 4  | 
|         length += 1  | 
|         length += 1  | 
|   | 
|         return length  | 
|   | 
|     def GetBuffer(self):  | 
|         data = ''  | 
|         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())  | 
|         data = CommFunc.WriteDWORD(data, self.PlayerID)  | 
|         data = CommFunc.WriteString(data, 33, self.PlayerName)  | 
|         data = CommFunc.WriteBYTE(data, self.Type)  | 
|         data = CommFunc.WriteDWORD(data, self.ItemID)  | 
|         data = CommFunc.WriteBYTE(data, self.ItemCount)  | 
|         data = CommFunc.WriteBYTE(data, self.IsAppoint)  | 
|         return data  | 
|   | 
|     def OutputString(self):  | 
|         DumpString = '''  | 
|                                 Head:%s,  | 
|                                 PlayerID:%d,  | 
|                                 PlayerName:%s,  | 
|                                 Type:%d,  | 
|                                 ItemID:%d,  | 
|                                 ItemCount:%d,  | 
|                                 IsAppoint:%d  | 
|                                 '''\  | 
|                                 %(  | 
|                                 self.Head.OutputString(),  | 
|                                 self.PlayerID,  | 
|                                 self.PlayerName,  | 
|                                 self.Type,  | 
|                                 self.ItemID,  | 
|                                 self.ItemCount,  | 
|                                 self.IsAppoint  | 
|                                 )  | 
|         return DumpString  | 
|   | 
|   | 
| m_NAtagMGNotifyTreasureRecord=tagMGNotifyTreasureRecord()  | 
| ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMGNotifyTreasureRecord.Head.Cmd,m_NAtagMGNotifyTreasureRecord.Head.SubCmd))] = m_NAtagMGNotifyTreasureRecord |