|  |  | 
 |  |  |     ClassLV = 0    #(BYTE ClassLV)//过滤阶数,0为不限制
 | 
 |  |  |     SpecItemIDCount = 0    #(BYTE SpecItemIDCount)//指定物品ID个数
 | 
 |  |  |     SpecItemIDList = list()    #(vector<DWORD> SpecItemIDList)//指定物品ID
 | 
 |  |  |     FromNum = 0    #(WORD FromNum)//查询起始数 (从1开始)
 | 
 |  |  |     FromItemGUID = ""    #(char FromItemGUID[40])//从哪个物品开始查询
 | 
 |  |  |     QueryDir = 0    #(BYTE QueryDir)//查询方向,1-往后查,2-往前查,3-定位查询
 | 
 |  |  |     QueryCount = 0    #(BYTE QueryCount)//查询个数,0为全部
 | 
 |  |  |     QueryTotalCount = 0    #(WORD QueryTotalCount)//查询条件实际总个数
 | 
 |  |  |     QueryRemainlCount = 0    #(WORD QueryRemainlCount)//查询条件对应查询方向剩余个数
 | 
 |  |  |     AuctionItemCount = 0    #(BYTE AuctionItemCount)//返回拍品数量
 | 
 |  |  |     AuctionItemList = list()    #(vector<tagGCAuctionItem> AuctionItemList)//返回拍品列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 |  |  |         for i in range(self.SpecItemIDCount):
 | 
 |  |  |             value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
 | 
 |  |  |             self.SpecItemIDList.append(value)
 | 
 |  |  |         self.FromNum,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.FromItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.QueryDir,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.QueryCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.QueryTotalCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.QueryRemainlCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AuctionItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             temAuctionItemList = tagGCAuctionItem()
 | 
 |  |  | 
 |  |  |         self.ClassLV = 0
 | 
 |  |  |         self.SpecItemIDCount = 0
 | 
 |  |  |         self.SpecItemIDList = list()
 | 
 |  |  |         self.FromNum = 0
 | 
 |  |  |         self.FromItemGUID = ""
 | 
 |  |  |         self.QueryDir = 0
 | 
 |  |  |         self.QueryCount = 0
 | 
 |  |  |         self.QueryTotalCount = 0
 | 
 |  |  |         self.QueryRemainlCount = 0
 | 
 |  |  |         self.AuctionItemCount = 0
 | 
 |  |  |         self.AuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4 * self.SpecItemIDCount
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.SpecItemIDCount)
 | 
 |  |  |         for i in range(self.SpecItemIDCount):
 | 
 |  |  |             data = CommFunc.WriteDWORD(data, self.SpecItemIDList[i])
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.FromNum)
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.FromItemGUID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.QueryDir)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.QueryCount)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.QueryTotalCount)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.QueryRemainlCount)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionItemCount)
 | 
 |  |  |         for i in range(self.AuctionItemCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.AuctionItemList[i].GetLength(), self.AuctionItemList[i].GetBuffer())
 | 
 |  |  | 
 |  |  |                                 ClassLV:%d,
 | 
 |  |  |                                 SpecItemIDCount:%d,
 | 
 |  |  |                                 SpecItemIDList:%s,
 | 
 |  |  |                                 FromNum:%d,
 | 
 |  |  |                                 FromItemGUID:%s,
 | 
 |  |  |                                 QueryDir:%d,
 | 
 |  |  |                                 QueryCount:%d,
 | 
 |  |  |                                 QueryTotalCount:%d,
 | 
 |  |  |                                 QueryRemainlCount:%d,
 | 
 |  |  |                                 AuctionItemCount:%d,
 | 
 |  |  |                                 AuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  | 
 |  |  |                                 self.ClassLV,
 | 
 |  |  |                                 self.SpecItemIDCount,
 | 
 |  |  |                                 "...",
 | 
 |  |  |                                 self.FromNum,
 | 
 |  |  |                                 self.FromItemGUID,
 | 
 |  |  |                                 self.QueryDir,
 | 
 |  |  |                                 self.QueryCount,
 | 
 |  |  |                                 self.QueryTotalCount,
 | 
 |  |  |                                 self.QueryRemainlCount,
 | 
 |  |  |                                 self.AuctionItemCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderID = 0    #(DWORD BidderID)//竞拍玩家ID,也就是当前最高竞价玩家ID
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderID = 0
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderID:%d,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderID,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     CanGetMoney = 0    #(BYTE CanGetMoney)//可否获得收益
 | 
 |  |  |     FamilyPlayerIDLen = 0    #(WORD FamilyPlayerIDLen)
 | 
 |  |  |     FamilyPlayerIDInfo = ""    #(String FamilyPlayerIDInfo)//可获得收益的仙盟玩家ID信息
 | 
 |  |  |     AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         self.CanGetMoney,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.FamilyPlayerIDLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.FamilyPlayerIDInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyPlayerIDLen)
 | 
 |  |  |         self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         self.CanGetMoney = 0
 | 
 |  |  |         self.FamilyPlayerIDLen = 0
 | 
 |  |  |         self.FamilyPlayerIDInfo = ""
 | 
 |  |  |         self.AuctionType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.FamilyPlayerIDInfo)
 | 
 |  |  |         length += 1
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.CanGetMoney)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.FamilyPlayerIDLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.FamilyPlayerIDLen, self.FamilyPlayerIDInfo)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionType)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s,
 | 
 |  |  |                                 CanGetMoney:%d
 | 
 |  |  |                                 FamilyPlayerIDLen:%d,
 | 
 |  |  |                                 FamilyPlayerIDInfo:%s,
 | 
 |  |  |                                 AuctionType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData,
 | 
 |  |  |                                 self.CanGetMoney
 | 
 |  |  |                                 self.FamilyPlayerIDLen,
 | 
 |  |  |                                 self.FamilyPlayerIDInfo,
 | 
 |  |  |                                 self.AuctionType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 |  |  | # B5 03 拍卖行玩家拍卖记录 #tagGCPlayerAuctionRecordInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCPlayerAuctionRecord(Structure):
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     RecordType = 0    #(BYTE RecordType)//记录类型 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
 | 
 |  |  |     RecordType = 0    #(BYTE RecordType)//记录类型 0-我的拍品记录 1-仙盟拍品记录 2-我的竞拍记录
 | 
 |  |  |     RecordResult = 0    #(BYTE RecordResult)//记录结果 0-流拍 1-拍卖成交 2-回收 3-竞价成功 4-竞价失败
 | 
 |  |  |     RecordTime = ""    #(char RecordTime[19])//记录时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     RecordPrice = 0    #(WORD RecordPrice)//记录价格
 | 
 |  |  |     BidderPrice = 0    #(DWORD BidderPrice)//成交价格
 | 
 |  |  |     BidderName = ""    #(char BidderName[33])//成交玩家名
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.RecordType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.RecordResult,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.RecordTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.RecordPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderName,_pos = CommFunc.ReadString(_lpData, _pos,33)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.RecordType = 0
 | 
 |  |  |         self.RecordResult = 0
 | 
 |  |  |         self.RecordTime = ""
 | 
 |  |  |         self.RecordPrice = 0
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.BidderName = ""
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 33
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RecordType)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RecordResult)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.RecordTime)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.RecordPrice)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteString(data, 33, self.BidderName)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 RecordType:%d,
 | 
 |  |  |                                 RecordResult:%d,
 | 
 |  |  |                                 RecordTime:%s,
 | 
 |  |  |                                 RecordPrice:%d,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 BidderName:%s,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.RecordType,
 | 
 |  |  |                                 self.RecordResult,
 | 
 |  |  |                                 self.RecordTime,
 | 
 |  |  |                                 self.RecordPrice,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.BidderName,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  | 
 |  |  | class  tagGCPlayerAuctionRecordInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)
 | 
 |  |  |     AuctionRecordList = list()    #(vector<tagGCPlayerAuctionRecordInfo> AuctionRecordList)
 | 
 |  |  |     AuctionRecordList = list()    #(vector<tagGCPlayerAuctionRecord> AuctionRecordList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temAuctionRecordList = tagGCPlayerAuctionRecordInfo()
 | 
 |  |  |             temAuctionRecordList = tagGCPlayerAuctionRecord()
 | 
 |  |  |             _pos = temAuctionRecordList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.AuctionRecordList.append(temAuctionRecordList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItem
 | 
 |  |  | # B5 08 拍卖行刷新拍品 #tagGCRefreshAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCRefreshAuctionItem(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     ItemGUID = ""    #(char ItemGUID[40])
 | 
 |  |  |     FamilyID = 0    #(DWORD FamilyID)//有值时为仙盟拍品
 | 
 |  |  |     ItemID = 0    #(DWORD ItemID)
 | 
 |  |  |     ItemCount = 0    #(WORD ItemCount)
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间 yyyy-MM-dd hh:mm:ss
 | 
 |  |  |     BidderPrice = 0    #(WORD BidderPrice)//竞拍玩家出价
 | 
 |  |  |     UserDataLen = 0    #(WORD UserDataLen)
 | 
 |  |  |     UserData = ""    #(String UserData)//自定义数据
 | 
 |  |  |     AuctionType = 0    #(BYTE AuctionType)//拍品类型,0-全服拍品,1-仙盟拍品
 | 
 |  |  |     AddTime = ""    #(char AddTime[19])//上架时间
 | 
 |  |  |     BidderID = 0    #(DWORD BidderID)//最高竞拍玩家ID,也就是当前最高竞价玩家ID     | 
 |  |  |     BidderPrice = 0    #(DWORD BidderPrice)//最高竞拍价格
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.AuctionType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.AuctionType = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderID = 0
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.AuctionType)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.BidderPrice)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 AuctionType:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderID:%d,
 | 
 |  |  |                                 BidderPrice:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.AuctionType,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderID,
 | 
 |  |  |                                 self.BidderPrice
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCRefreshAuctionItemInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     RefreshCount = 0    #(BYTE RefreshCount)
 | 
 |  |  |     RefreshAuctionItemList = list()    #(vector<tagGCRefreshAuctionItem> RefreshAuctionItemList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.ItemGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
 | 
 |  |  |         self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.AddTime,_pos = CommFunc.ReadString(_lpData, _pos,19)
 | 
 |  |  |         self.BidderPrice,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen)
 | 
 |  |  |         self.RefreshCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.RefreshCount):
 | 
 |  |  |             temRefreshAuctionItemList = tagGCRefreshAuctionItem()
 | 
 |  |  |             _pos = temRefreshAuctionItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.RefreshAuctionItemList.append(temRefreshAuctionItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xB5
 | 
 |  |  |         self.Head.SubCmd = 0x08
 | 
 |  |  |         self.ItemGUID = ""
 | 
 |  |  |         self.FamilyID = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.ItemCount = 0
 | 
 |  |  |         self.AddTime = ""
 | 
 |  |  |         self.BidderPrice = 0
 | 
 |  |  |         self.UserDataLen = 0
 | 
 |  |  |         self.UserData = ""
 | 
 |  |  |         self.RefreshCount = 0
 | 
 |  |  |         self.RefreshAuctionItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 40
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 19
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.UserData)
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.RefreshCount):
 | 
 |  |  |             length += self.RefreshAuctionItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteString(data, 40, self.ItemGUID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.FamilyID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ItemID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemCount)
 | 
 |  |  |         data = CommFunc.WriteString(data, 19, self.AddTime)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.BidderPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.UserDataLen)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.UserDataLen, self.UserData)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RefreshCount)
 | 
 |  |  |         for i in range(self.RefreshCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.RefreshAuctionItemList[i].GetLength(), self.RefreshAuctionItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 ItemGUID:%s,
 | 
 |  |  |                                 FamilyID:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 ItemCount:%d,
 | 
 |  |  |                                 AddTime:%s,
 | 
 |  |  |                                 BidderPrice:%d,
 | 
 |  |  |                                 UserDataLen:%d,
 | 
 |  |  |                                 UserData:%s
 | 
 |  |  |                                 RefreshCount:%d,
 | 
 |  |  |                                 RefreshAuctionItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.ItemGUID,
 | 
 |  |  |                                 self.FamilyID,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.ItemCount,
 | 
 |  |  |                                 self.AddTime,
 | 
 |  |  |                                 self.BidderPrice,
 | 
 |  |  |                                 self.UserDataLen,
 | 
 |  |  |                                 self.UserData
 | 
 |  |  |                                 self.RefreshCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCRefreshAuctionItem=tagGCRefreshAuctionItem()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItem.Head.Cmd,m_NAtagGCRefreshAuctionItem.Head.SubCmd))] = m_NAtagGCRefreshAuctionItem
 | 
 |  |  | m_NAtagGCRefreshAuctionItemInfo=tagGCRefreshAuctionItemInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRefreshAuctionItemInfo.Head.Cmd,m_NAtagGCRefreshAuctionItemInfo.Head.SubCmd))] = m_NAtagGCRefreshAuctionItemInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 09 通知玩家部位套装等级 #tagMCEquipPartSuiteLVInfo
 | 
 |  |  | # A3 B1 装备部位星数信息 #tagMCEquipPartStarInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartSuiteLV(Structure):
 | 
 |  |  |     EquipIndex = 0    #(BYTE EquipIndex)
 | 
 |  |  |     Len = 0    #(WORD Len)//长度
 | 
 |  |  |     SuiteLVInfo = ""    #(String SuiteLVInfo)//{套装类型:等级}
 | 
 |  |  |     data = None
 | 
 |  |  | class  tagMCEquipPartStar(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("EquipPackIndex", c_ushort),     | 
 |  |  |                   ("Star", c_ubyte),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |     def ReadData(self, stringData, _pos=0, _len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.EquipIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.SuiteLVInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
 | 
 |  |  |         return _pos
 | 
 |  |  |         memmove(addressof(self), stringData[_pos:], self.GetLength())
 | 
 |  |  |         return _pos + self.GetLength()
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.Len = 0
 | 
 |  |  |         self.SuiteLVInfo = ""
 | 
 |  |  |         self.EquipPackIndex = 0
 | 
 |  |  |         self.Star = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += len(self.SuiteLVInfo)
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  |         return sizeof(tagMCEquipPartStar)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.EquipIndex)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.Len)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Len, self.SuiteLVInfo)
 | 
 |  |  |         return data
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 EquipIndex:%d,
 | 
 |  |  |                                 Len:%d,
 | 
 |  |  |                                 SuiteLVInfo:%s
 | 
 |  |  |         DumpString = '''// A3 B1 装备部位星数信息 //tagMCEquipPartStarInfo:
 | 
 |  |  |                                 EquipPackIndex:%d,
 | 
 |  |  |                                 Star:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.EquipIndex,
 | 
 |  |  |                                 self.Len,
 | 
 |  |  |                                 self.SuiteLVInfo
 | 
 |  |  |                                 self.EquipPackIndex,
 | 
 |  |  |                                 self.Star
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartSuiteLVInfo(Structure):
 | 
 |  |  | class  tagMCEquipPartStarInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)// 信息个数
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartSuiteLV> InfoList)// 信息列表
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartStar> InfoList)// 信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x09
 | 
 |  |  |         self.Head.SubCmd = 0xB1
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temInfoList = tagMCEquipPartSuiteLV()
 | 
 |  |  |             temInfoList = tagMCEquipPartStar()
 | 
 |  |  |             _pos = temInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.InfoList.append(temInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x09
 | 
 |  |  |         self.Head.SubCmd = 0xB1
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.InfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCEquipPartSuiteLVInfo=tagMCEquipPartSuiteLVInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartSuiteLVInfo.Head.Cmd,m_NAtagMCEquipPartSuiteLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartSuiteLVInfo
 | 
 |  |  | m_NAtagMCEquipPartStarInfo=tagMCEquipPartStarInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarInfo.Head.Cmd,m_NAtagMCEquipPartStarInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 B3 装备部位星级信息 #tagMCEquipPartStarLVInfo
 | 
 |  |  | # A3 B3 装备部位强化信息 #tagMCEquipPartPlusInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartStarLV(Structure):
 | 
 |  |  | class  tagMCEquipPartPlusLV(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("PackType", c_ubyte),    
 | 
 |  |  |                   ("EquipIndex", c_ubyte),    
 | 
 |  |  |                   ("EquipPartStarLV", c_ushort),    
 | 
 |  |  |                   ("Proficiency", c_int),    
 | 
 |  |  |                   ("EvolveLV", c_ubyte),     | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         self.EquipIndex = 0
 | 
 |  |  |         self.EquipPartStarLV = 0
 | 
 |  |  |         self.Proficiency = 0
 | 
 |  |  |         self.EvolveLV = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCEquipPartStarLV)
 | 
 |  |  |         return sizeof(tagMCEquipPartPlusLV)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A3 B3 装备部位星级信息 //tagMCEquipPartStarLVInfo:
 | 
 |  |  |         DumpString = '''// A3 B3 装备部位强化信息 //tagMCEquipPartPlusInfo:
 | 
 |  |  |                                 PackType:%d,
 | 
 |  |  |                                 EquipIndex:%d,
 | 
 |  |  |                                 EquipPartStarLV:%d,
 | 
 |  |  |                                 Proficiency:%d
 | 
 |  |  |                                 Proficiency:%d,
 | 
 |  |  |                                 EvolveLV:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.PackType,
 | 
 |  |  |                                 self.EquipIndex,
 | 
 |  |  |                                 self.EquipPartStarLV,
 | 
 |  |  |                                 self.Proficiency
 | 
 |  |  |                                 self.Proficiency,
 | 
 |  |  |                                 self.EvolveLV
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCEquipPartStarLVInfo(Structure):
 | 
 |  |  | class  tagMCEquipPartPlusInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)// 信息个数
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartStarLV> InfoList)// 信息列表
 | 
 |  |  |     InfoList = list()    #(vector<tagMCEquipPartPlusLV> InfoList)// 信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temInfoList = tagMCEquipPartStarLV()
 | 
 |  |  |             temInfoList = tagMCEquipPartPlusLV()
 | 
 |  |  |             _pos = temInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.InfoList.append(temInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCEquipPartStarLVInfo=tagMCEquipPartStarLVInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartStarLVInfo.Head.Cmd,m_NAtagMCEquipPartStarLVInfo.Head.SubCmd))] = m_NAtagMCEquipPartStarLVInfo
 | 
 |  |  | m_NAtagMCEquipPartPlusInfo=tagMCEquipPartPlusInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEquipPartPlusInfo.Head.Cmd,m_NAtagMCEquipPartPlusInfo.Head.SubCmd))] = m_NAtagMCEquipPartPlusInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #B4 14 根据类型来决定移动的方式 #tagMCMoveByType
 | 
 |  |  | 
 | 
 |  |  | class  tagMCMoveByType(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ID", c_int),    #玩家ID
 | 
 |  |  |                   ("PosX", c_ushort),    # 目标X
 | 
 |  |  |                   ("PosY", c_ushort),    # 目标Y
 | 
 |  |  |                   ("MoveType", c_ubyte),    #移动方式
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xB4
 | 
 |  |  |         self.SubCmd = 0x14
 | 
 |  |  |         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 = 0xB4
 | 
 |  |  |         self.SubCmd = 0x14
 | 
 |  |  |         self.ID = 0
 | 
 |  |  |         self.PosX = 0
 | 
 |  |  |         self.PosY = 0
 | 
 |  |  |         self.MoveType = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCMoveByType)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''//B4 14 根据类型来决定移动的方式 //tagMCMoveByType:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ID:%d,
 | 
 |  |  |                                 PosX:%d,
 | 
 |  |  |                                 PosY:%d,
 | 
 |  |  |                                 MoveType:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ID,
 | 
 |  |  |                                 self.PosX,
 | 
 |  |  |                                 self.PosY,
 | 
 |  |  |                                 self.MoveType
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCMoveByType=tagMCMoveByType()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMoveByType.Cmd,m_NAtagMCMoveByType.SubCmd))] = m_NAtagMCMoveByType
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | #B4 07 被动技能页选择(功法) # tagMCPassivePage
 | 
 |  |  | 
 | 
 |  |  | class  tagMCPassivePage(Structure):
 |