|  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A9 07 定时商店刷新倒计时 #tagGCShopRefreshTimeList
 | 
 |  |  | 
 | 
 |  |  | class  tagGCShopRefreshTime(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ShopID", c_int),    # 商店ID
 | 
 |  |  |                   ("RemainSecond", c_int),    # 多少秒后刷新
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA9
 | 
 |  |  |         self.SubCmd = 0x07
 | 
 |  |  |         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 = 0xA9
 | 
 |  |  |         self.SubCmd = 0x07
 | 
 |  |  |         self.ShopID = 0
 | 
 |  |  |         self.RemainSecond = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagGCShopRefreshTime)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A9 07 定时商店刷新倒计时 //tagGCShopRefreshTimeList:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ShopID:%d,
 | 
 |  |  |                                 RemainSecond:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ShopID,
 | 
 |  |  |                                 self.RemainSecond
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCShopRefreshTimeList(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     ShopCnt = 0    #(BYTE ShopCnt)//商店信息个数
 | 
 |  |  |     ShopTimeInfoList = list()    #(vector<tagGCShopRefreshTime> ShopTimeInfoList)//商店信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA9
 | 
 |  |  |         self.Head.SubCmd = 0x07
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.ShopCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ShopCnt):
 | 
 |  |  |             temShopTimeInfoList = tagGCShopRefreshTime()
 | 
 |  |  |             _pos = temShopTimeInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ShopTimeInfoList.append(temShopTimeInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA9
 | 
 |  |  |         self.Head.SubCmd = 0x07
 | 
 |  |  |         self.ShopCnt = 0
 | 
 |  |  |         self.ShopTimeInfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.ShopCnt):
 | 
 |  |  |             length += self.ShopTimeInfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ShopCnt)
 | 
 |  |  |         for i in range(self.ShopCnt):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ShopTimeInfoList[i].GetLength(), self.ShopTimeInfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 ShopCnt:%d,
 | 
 |  |  |                                 ShopTimeInfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.ShopCnt,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCShopRefreshTimeList=tagGCShopRefreshTimeList()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCShopRefreshTimeList.Head.Cmd,m_NAtagGCShopRefreshTimeList.Head.SubCmd))] = m_NAtagGCShopRefreshTimeList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A9 06 商城全服购买次数通知 #tagGCStoreServerBuyCntInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagGCStoreServerBuyCnt(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagGCXMZZFightInfo=tagGCXMZZFightInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXMZZFightInfo.Head.Cmd,m_NAtagGCXMZZFightInfo.Head.SubCmd))] = m_NAtagGCXMZZFightInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AD 01 特惠活动信息 #tagGCTeHuiActivityInfoList
 | 
 |  |  | 
 | 
 |  |  | class  tagGCTeHuiActivityInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ActivityType", c_ubyte),    # 活动类型
 | 
 |  |  |                   ("ActivityValue", c_int),    # 活动值
 | 
 |  |  |                   ("StartDate", c_int),    # 开始时间time
 | 
 |  |  |                   ("EndDate", c_int),    # 结束时间time
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAD
 | 
 |  |  |         self.SubCmd = 0x01
 | 
 |  |  |         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 = 0xAD
 | 
 |  |  |         self.SubCmd = 0x01
 | 
 |  |  |         self.ActivityType = 0
 | 
 |  |  |         self.ActivityValue = 0
 | 
 |  |  |         self.StartDate = 0
 | 
 |  |  |         self.EndDate = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagGCTeHuiActivityInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AD 01 特惠活动信息 //tagGCTeHuiActivityInfoList:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ActivityType:%d,
 | 
 |  |  |                                 ActivityValue:%d,
 | 
 |  |  |                                 StartDate:%d,
 | 
 |  |  |                                 EndDate:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ActivityType,
 | 
 |  |  |                                 self.ActivityValue,
 | 
 |  |  |                                 self.StartDate,
 | 
 |  |  |                                 self.EndDate
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagGCTeHuiActivityInfoList(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     ActivityCount = 0    #(BYTE ActivityCount)//活动信息个数
 | 
 |  |  |     ActivityInfoList = list()    #(vector<tagGCTeHuiActivityInfo> ActivityInfoList)//活动信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAD
 | 
 |  |  |         self.Head.SubCmd = 0x01
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.ActivityCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.ActivityCount):
 | 
 |  |  |             temActivityInfoList = tagGCTeHuiActivityInfo()
 | 
 |  |  |             _pos = temActivityInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ActivityInfoList.append(temActivityInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAD
 | 
 |  |  |         self.Head.SubCmd = 0x01
 | 
 |  |  |         self.ActivityCount = 0
 | 
 |  |  |         self.ActivityInfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.ActivityCount):
 | 
 |  |  |             length += self.ActivityInfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.ActivityCount)
 | 
 |  |  |         for i in range(self.ActivityCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ActivityInfoList[i].GetLength(), self.ActivityInfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 ActivityCount:%d,
 | 
 |  |  |                                 ActivityInfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.ActivityCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagGCTeHuiActivityInfoList=tagGCTeHuiActivityInfoList()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTeHuiActivityInfoList.Head.Cmd,m_NAtagGCTeHuiActivityInfoList.Head.SubCmd))] = m_NAtagGCTeHuiActivityInfoList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 53 法宝特权数据 #tagMCMWPrivilegeDataInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCMWPrivilegeData(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("PriID", c_int),    # 特权ID
 | 
 |  |  |                   ("State", c_ubyte),    #激活状态
 | 
 |  |  |                   ("CurValue", c_int),    #当前总进度
 | 
 |  |  |                   ("GotValue", c_int),    #已领取进度
 | 
 |  |  |                   ("ItemAwardState", c_ubyte),    #物品奖励是否已领取
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         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.PriID = 0
 | 
 |  |  |         self.State = 0
 | 
 |  |  |         self.CurValue = 0
 | 
 |  |  |         self.GotValue = 0
 | 
 |  |  |         self.ItemAwardState = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCMWPrivilegeData)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A3 53 法宝特权数据 //tagMCMWPrivilegeDataInfo:
 | 
 |  |  |                                 PriID:%d,
 | 
 |  |  |                                 State:%d,
 | 
 |  |  |                                 CurValue:%d,
 | 
 |  |  |                                 GotValue:%d,
 | 
 |  |  |                                 ItemAwardState:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.PriID,
 | 
 |  |  |                                 self.State,
 | 
 |  |  |                                 self.CurValue,
 | 
 |  |  |                                 self.GotValue,
 | 
 |  |  |                                 self.ItemAwardState
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCMWPrivilegeDataInfo(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)// 信息个数
 | 
 |  |  |     InfoList = list()    #(vector<tagMCMWPrivilegeData> InfoList)// 信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x53
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temInfoList = tagMCMWPrivilegeData()
 | 
 |  |  |             _pos = temInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.InfoList.append(temInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA3
 | 
 |  |  |         self.Head.SubCmd = 0x53
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.InfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.InfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 InfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCMWPrivilegeDataInfo=tagMCMWPrivilegeDataInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMWPrivilegeDataInfo.Head.Cmd,m_NAtagMCMWPrivilegeDataInfo.Head.SubCmd))] = m_NAtagMCMWPrivilegeDataInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A3 26 NPCID已采集次数信息 #tagMCNPCIDCollectionCntInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCNPCIDCollectionCnt(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A8 04 通知商店限购物品已购买次数信息 # tagMCShopItemBuyCntInfoList
 | 
 |  |  | 
 | 
 |  |  | class  tagMCShopItemBuyCntInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("ShopID", c_int),     | 
 |  |  |                   ("ItemShopIndex", c_ushort),     | 
 |  |  |                   ("ItemID", c_int),     | 
 |  |  |                   ("BuyCnt", c_int),    # 个人已购买数
 | 
 |  |  |                   ("ServerBuyCnt", c_int),    # 全服已购买数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         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.ShopID = 0
 | 
 |  |  |         self.ItemShopIndex = 0
 | 
 |  |  |         self.ItemID = 0
 | 
 |  |  |         self.BuyCnt = 0
 | 
 |  |  |         self.ServerBuyCnt = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCShopItemBuyCntInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A8 04 通知商店限购物品已购买次数信息 // tagMCShopItemBuyCntInfoList:
 | 
 |  |  |                                 ShopID:%d,
 | 
 |  |  |                                 ItemShopIndex:%d,
 | 
 |  |  |                                 ItemID:%d,
 | 
 |  |  |                                 BuyCnt:%d,
 | 
 |  |  |                                 ServerBuyCnt:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ShopID,
 | 
 |  |  |                                 self.ItemShopIndex,
 | 
 |  |  |                                 self.ItemID,
 | 
 |  |  |                                 self.BuyCnt,
 | 
 |  |  |                                 self.ServerBuyCnt
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCShopItemBuyCntInfoList(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)//通知个数
 | 
 |  |  |     BuyCntList = list()    #(vector<tagMCShopItemBuyCntInfo> BuyCntList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA8
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temBuyCntList = tagMCShopItemBuyCntInfo()
 | 
 |  |  |             _pos = temBuyCntList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.BuyCntList.append(temBuyCntList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA8
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.BuyCntList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.BuyCntList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.BuyCntList[i].GetLength(), self.BuyCntList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 BuyCntList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCShopItemBuyCntInfoList=tagMCShopItemBuyCntInfoList()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemBuyCntInfoList.Head.Cmd,m_NAtagMCShopItemBuyCntInfoList.Head.SubCmd))] = m_NAtagMCShopItemBuyCntInfoList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A8 02 通知NPC商店物品今日已购买次数 #tagMCShopItemDayBuyCntInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCShopItemDayBuyCnt(Structure):
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagMCShopItemDayBuyCntInfo=tagMCShopItemDayBuyCntInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemDayBuyCntInfo.Head.Cmd,m_NAtagMCShopItemDayBuyCntInfo.Head.SubCmd))] = m_NAtagMCShopItemDayBuyCntInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A8 03 通知自定义商店物品信息 #tagMCShopItemInfoList
 | 
 |  |  | 
 | 
 |  |  | class  tagMCShopItemInfo(Structure):
 | 
 |  |  |     ShopID = 0    #(DWORD ShopID)
 | 
 |  |  |     ItemShopIndex = 0    #(WORD ItemShopIndex)
 | 
 |  |  |     DataSize = 0    #(DWORD DataSize)
 | 
 |  |  |     ItemList = ""    #(String ItemList)//物品列表[[物品ID,数量,是否绑定,是否定制]]
 | 
 |  |  |     PriceType = 0    #(BYTE PriceType)
 | 
 |  |  |     Price = 0    #(DWORD Price)
 | 
 |  |  |     OriginalPrice = 0    #(DWORD OriginalPrice)// 原价
 | 
 |  |  |     PlayerLVLimit = 0    #(WORD PlayerLVLimit)// 购买等级限制
 | 
 |  |  |     FamilyLVLimit = 0    #(BYTE FamilyLVLimit)// 购买战盟等级限制
 | 
 |  |  |     MaxBuyCnt = 0    #(DWORD MaxBuyCnt)// 个人限购数
 | 
 |  |  |     ServerMaxBuyCnt = 0    #(DWORD ServerMaxBuyCnt)// 全服限购数
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.ShopID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemShopIndex,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.DataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ItemList,_pos = CommFunc.ReadString(_lpData, _pos,self.DataSize)
 | 
 |  |  |         self.PriceType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.Price,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.OriginalPrice,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.PlayerLVLimit,_pos = CommFunc.ReadWORD(_lpData, _pos)
 | 
 |  |  |         self.FamilyLVLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         self.MaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.ServerMaxBuyCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.ShopID = 0
 | 
 |  |  |         self.ItemShopIndex = 0
 | 
 |  |  |         self.DataSize = 0
 | 
 |  |  |         self.ItemList = ""
 | 
 |  |  |         self.PriceType = 0
 | 
 |  |  |         self.Price = 0
 | 
 |  |  |         self.OriginalPrice = 0
 | 
 |  |  |         self.PlayerLVLimit = 0
 | 
 |  |  |         self.FamilyLVLimit = 0
 | 
 |  |  |         self.MaxBuyCnt = 0
 | 
 |  |  |         self.ServerMaxBuyCnt = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += len(self.ItemList)
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 2
 | 
 |  |  |         length += 1
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ShopID)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.ItemShopIndex)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.DataSize)
 | 
 |  |  |         data = CommFunc.WriteString(data, self.DataSize, self.ItemList)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.PriceType)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.Price)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.OriginalPrice)
 | 
 |  |  |         data = CommFunc.WriteWORD(data, self.PlayerLVLimit)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.FamilyLVLimit)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.MaxBuyCnt)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ServerMaxBuyCnt)
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 ShopID:%d,
 | 
 |  |  |                                 ItemShopIndex:%d,
 | 
 |  |  |                                 DataSize:%d,
 | 
 |  |  |                                 ItemList:%s,
 | 
 |  |  |                                 PriceType:%d,
 | 
 |  |  |                                 Price:%d,
 | 
 |  |  |                                 OriginalPrice:%d,
 | 
 |  |  |                                 PlayerLVLimit:%d,
 | 
 |  |  |                                 FamilyLVLimit:%d,
 | 
 |  |  |                                 MaxBuyCnt:%d,
 | 
 |  |  |                                 ServerMaxBuyCnt:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.ShopID,
 | 
 |  |  |                                 self.ItemShopIndex,
 | 
 |  |  |                                 self.DataSize,
 | 
 |  |  |                                 self.ItemList,
 | 
 |  |  |                                 self.PriceType,
 | 
 |  |  |                                 self.Price,
 | 
 |  |  |                                 self.OriginalPrice,
 | 
 |  |  |                                 self.PlayerLVLimit,
 | 
 |  |  |                                 self.FamilyLVLimit,
 | 
 |  |  |                                 self.MaxBuyCnt,
 | 
 |  |  |                                 self.ServerMaxBuyCnt
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCShopItemInfoList(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     Count = 0    #(BYTE Count)//通知个数
 | 
 |  |  |     ShopItemList = list()    #(vector<tagMCShopItemInfo> ShopItemList)
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA8
 | 
 |  |  |         self.Head.SubCmd = 0x03
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             temShopItemList = tagMCShopItemInfo()
 | 
 |  |  |             _pos = temShopItemList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.ShopItemList.append(temShopItemList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xA8
 | 
 |  |  |         self.Head.SubCmd = 0x03
 | 
 |  |  |         self.Count = 0
 | 
 |  |  |         self.ShopItemList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             length += self.ShopItemList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.Count)
 | 
 |  |  |         for i in range(self.Count):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.ShopItemList[i].GetLength(), self.ShopItemList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 Count:%d,
 | 
 |  |  |                                 ShopItemList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.Count,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCShopItemInfoList=tagMCShopItemInfoList()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopItemInfoList.Head.Cmd,m_NAtagMCShopItemInfoList.Head.SubCmd))] = m_NAtagMCShopItemInfoList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # A8 05 通知神秘商店刷新次数 #tagMCShopRefreshCnt
 | 
 |  |  | 
 | 
 |  |  | class  tagMCShopRefreshCnt(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ShopID", c_int),    #商店ID
 | 
 |  |  |                   ("RefreshCnt", c_ushort),    #已手动刷新次数
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xA8
 | 
 |  |  |         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 = 0xA8
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         self.ShopID = 0
 | 
 |  |  |         self.RefreshCnt = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCShopRefreshCnt)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// A8 05 通知神秘商店刷新次数 //tagMCShopRefreshCnt:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ShopID:%d,
 | 
 |  |  |                                 RefreshCnt:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ShopID,
 | 
 |  |  |                                 self.RefreshCnt
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCShopRefreshCnt=tagMCShopRefreshCnt()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCShopRefreshCnt.Cmd,m_NAtagMCShopRefreshCnt.SubCmd))] = m_NAtagMCShopRefreshCnt
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 03 升阶功能特惠奖励记录 #tagMCClassUPDayAwardRecordList
 | 
 |  |  | 
 | 
 |  |  | class  tagMCClassUPDayAwardRecord(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("DayType", c_ubyte),    # 奖励日类型
 | 
 |  |  |                   ("Record", c_int),    # 奖励记录
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x03
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x03
 | 
 |  |  |         self.DayType = 0
 | 
 |  |  |         self.Record = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCClassUPDayAwardRecord)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 03 升阶功能特惠奖励记录 //tagMCClassUPDayAwardRecordList:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 DayType:%d,
 | 
 |  |  |                                 Record:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.DayType,
 | 
 |  |  |                                 self.Record
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCClassUPDayAwardRecordList(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     RecordCount = 0    #(BYTE RecordCount)//记录个数
 | 
 |  |  |     RecordInfoList = list()    #(vector<tagMCClassUPDayAwardRecord> RecordInfoList)//记录列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x03
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.RecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.RecordCount):
 | 
 |  |  |             temRecordInfoList = tagMCClassUPDayAwardRecord()
 | 
 |  |  |             _pos = temRecordInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.RecordInfoList.append(temRecordInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x03
 | 
 |  |  |         self.RecordCount = 0
 | 
 |  |  |         self.RecordInfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.RecordCount):
 | 
 |  |  |             length += self.RecordInfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.RecordCount)
 | 
 |  |  |         for i in range(self.RecordCount):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.RecordInfoList[i].GetLength(), self.RecordInfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 RecordCount:%d,
 | 
 |  |  |                                 RecordInfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.RecordCount,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCClassUPDayAwardRecordList=tagMCClassUPDayAwardRecordList()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCClassUPDayAwardRecordList.Head.Cmd,m_NAtagMCClassUPDayAwardRecordList.Head.SubCmd))] = m_NAtagMCClassUPDayAwardRecordList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 06 消费奖励信息 #tagMCCostProfitInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCCostProfitInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ActionID", c_int),    # 活动ID
 | 
 |  |  |                   ("TotalCost", c_int),    # 总消费
 | 
 |  |  |                   ("AwardState", c_int),    # 奖励领取状态
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x06
 | 
 |  |  |         self.ActionID = 0
 | 
 |  |  |         self.TotalCost = 0
 | 
 |  |  |         self.AwardState = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCCostProfitInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 06 消费奖励信息 //tagMCCostProfitInfo:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ActionID:%d,
 | 
 |  |  |                                 TotalCost:%d,
 | 
 |  |  |                                 AwardState:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ActionID,
 | 
 |  |  |                                 self.TotalCost,
 | 
 |  |  |                                 self.AwardState
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCCostProfitInfo=tagMCCostProfitInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostProfitInfo.Cmd,m_NAtagMCCostProfitInfo.SubCmd))] = m_NAtagMCCostProfitInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 07 消费排行特惠信息 #tagMCCostRankTeHuiInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCCostRankTeHuiInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ActionID", c_int),    # 活动ID
 | 
 |  |  |                   ("TotalCost", c_int),    # 总累计消费钻石
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x07
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x07
 | 
 |  |  |         self.ActionID = 0
 | 
 |  |  |         self.TotalCost = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCCostRankTeHuiInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 07 消费排行特惠信息 //tagMCCostRankTeHuiInfo:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ActionID:%d,
 | 
 |  |  |                                 TotalCost:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ActionID,
 | 
 |  |  |                                 self.TotalCost
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCCostRankTeHuiInfo=tagMCCostRankTeHuiInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCostRankTeHuiInfo.Cmd,m_NAtagMCCostRankTeHuiInfo.SubCmd))] = m_NAtagMCCostRankTeHuiInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | 
 |  |  | 
 | 
 |  |  | m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 05 充值排行特惠信息 #tagMCRechargeRankTeHuiInfo
 | 
 |  |  | 
 | 
 |  |  | class  tagMCRechargeRankTeHuiInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("ActionID", c_int),    # 活动ID
 | 
 |  |  |                   ("TotalGold", c_int),    # 总累计充值元宝
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x05
 | 
 |  |  |         self.ActionID = 0
 | 
 |  |  |         self.TotalGold = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCRechargeRankTeHuiInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 05 充值排行特惠信息 //tagMCRechargeRankTeHuiInfo:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 ActionID:%d,
 | 
 |  |  |                                 TotalGold:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.ActionID,
 | 
 |  |  |                                 self.TotalGold
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCRechargeRankTeHuiInfo=tagMCRechargeRankTeHuiInfo()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeRankTeHuiInfo.Cmd,m_NAtagMCRechargeRankTeHuiInfo.SubCmd))] = m_NAtagMCRechargeRankTeHuiInfo
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 | 
 |  |  | # AA 04 充值特惠信息 #tagMCRechargeTeHuiInfoList
 | 
 |  |  | 
 | 
 |  |  | class  tagMCRechargeTeHuiInfo(Structure):
 | 
 |  |  |     _pack_ = 1
 | 
 |  |  |     _fields_ = [
 | 
 |  |  |                   ("Cmd", c_ubyte),
 | 
 |  |  |                   ("SubCmd", c_ubyte),
 | 
 |  |  |                   ("GotCnt", c_ubyte),    # 已领取次数
 | 
 |  |  |                   ("CanGetCnt", c_ubyte),    # 当前可领取次数
 | 
 |  |  |                   ("CurTotalGold", c_int),    # 当前规则累计充值元宝-仅针对累充规则
 | 
 |  |  |                   ]
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Cmd = 0xAA
 | 
 |  |  |         self.SubCmd = 0x04
 | 
 |  |  |         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 = 0xAA
 | 
 |  |  |         self.SubCmd = 0x04
 | 
 |  |  |         self.GotCnt = 0
 | 
 |  |  |         self.CanGetCnt = 0
 | 
 |  |  |         self.CurTotalGold = 0
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         return sizeof(tagMCRechargeTeHuiInfo)
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         return string_at(addressof(self), self.GetLength())
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''// AA 04 充值特惠信息 //tagMCRechargeTeHuiInfoList:
 | 
 |  |  |                                 Cmd:%s,
 | 
 |  |  |                                 SubCmd:%s,
 | 
 |  |  |                                 GotCnt:%d,
 | 
 |  |  |                                 CanGetCnt:%d,
 | 
 |  |  |                                 CurTotalGold:%d
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Cmd,
 | 
 |  |  |                                 self.SubCmd,
 | 
 |  |  |                                 self.GotCnt,
 | 
 |  |  |                                 self.CanGetCnt,
 | 
 |  |  |                                 self.CurTotalGold
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | class  tagMCRechargeTeHuiInfoList(Structure):
 | 
 |  |  |     Head = tagHead()
 | 
 |  |  |     ActionID = 0    #(DWORD ActionID)// 活动ID
 | 
 |  |  |     TotalGold = 0    #(DWORD TotalGold)// 总累计充值元宝
 | 
 |  |  |     InfoCnt = 0    #(BYTE InfoCnt)// 信息个数
 | 
 |  |  |     InfoList = list()    #(vector<tagMCRechargeTeHuiInfo> InfoList)// 信息列表
 | 
 |  |  |     data = None
 | 
 |  |  | 
 | 
 |  |  |     def __init__(self):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def ReadData(self, _lpData, _pos=0, _Len=0):
 | 
 |  |  |         self.Clear()
 | 
 |  |  |         _pos = self.Head.ReadData(_lpData, _pos)
 | 
 |  |  |         self.ActionID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.TotalGold,_pos = CommFunc.ReadDWORD(_lpData, _pos)
 | 
 |  |  |         self.InfoCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
 | 
 |  |  |         for i in range(self.InfoCnt):
 | 
 |  |  |             temInfoList = tagMCRechargeTeHuiInfo()
 | 
 |  |  |             _pos = temInfoList.ReadData(_lpData, _pos)
 | 
 |  |  |             self.InfoList.append(temInfoList)
 | 
 |  |  |         return _pos
 | 
 |  |  | 
 | 
 |  |  |     def Clear(self):
 | 
 |  |  |         self.Head = tagHead()
 | 
 |  |  |         self.Head.Clear()
 | 
 |  |  |         self.Head.Cmd = 0xAA
 | 
 |  |  |         self.Head.SubCmd = 0x04
 | 
 |  |  |         self.ActionID = 0
 | 
 |  |  |         self.TotalGold = 0
 | 
 |  |  |         self.InfoCnt = 0
 | 
 |  |  |         self.InfoList = list()
 | 
 |  |  |         return
 | 
 |  |  | 
 | 
 |  |  |     def GetLength(self):
 | 
 |  |  |         length = 0
 | 
 |  |  |         length += self.Head.GetLength()
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 4
 | 
 |  |  |         length += 1
 | 
 |  |  |         for i in range(self.InfoCnt):
 | 
 |  |  |             length += self.InfoList[i].GetLength()
 | 
 |  |  | 
 | 
 |  |  |         return length
 | 
 |  |  | 
 | 
 |  |  |     def GetBuffer(self):
 | 
 |  |  |         data = ''
 | 
 |  |  |         data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.ActionID)
 | 
 |  |  |         data = CommFunc.WriteDWORD(data, self.TotalGold)
 | 
 |  |  |         data = CommFunc.WriteBYTE(data, self.InfoCnt)
 | 
 |  |  |         for i in range(self.InfoCnt):
 | 
 |  |  |             data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
 | 
 |  |  |         return data
 | 
 |  |  | 
 | 
 |  |  |     def OutputString(self):
 | 
 |  |  |         DumpString = '''
 | 
 |  |  |                                 Head:%s,
 | 
 |  |  |                                 ActionID:%d,
 | 
 |  |  |                                 TotalGold:%d,
 | 
 |  |  |                                 InfoCnt:%d,
 | 
 |  |  |                                 InfoList:%s
 | 
 |  |  |                                 '''\
 | 
 |  |  |                                 %(
 | 
 |  |  |                                 self.Head.OutputString(),
 | 
 |  |  |                                 self.ActionID,
 | 
 |  |  |                                 self.TotalGold,
 | 
 |  |  |                                 self.InfoCnt,
 | 
 |  |  |                                 "..."
 | 
 |  |  |                                 )
 | 
 |  |  |         return DumpString
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | m_NAtagMCRechargeTeHuiInfoList=tagMCRechargeTeHuiInfoList()
 | 
 |  |  | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRechargeTeHuiInfoList.Head.Cmd,m_NAtagMCRechargeTeHuiInfoList.Head.SubCmd))] = m_NAtagMCRechargeTeHuiInfoList
 | 
 |  |  | 
 | 
 |  |  | 
 | 
 |  |  | #------------------------------------------------------
 |