| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A1 31 前端自定义保存的设置内容信息 #tagSCSettingDataInfo
|
| | |
|
| | | class tagSCSettingData(Structure):
|
| | | KeyNum = 0 #(BYTE KeyNum)// 自定义key编号,后端使用数字key存储,前端自行进行转换定义,限制100个
|
| | | DataLen = 0 #(BYTE DataLen)
|
| | | SetData = "" #(String SetData)//自定义保存的内容
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.KeyNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.DataLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SetData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.KeyNum = 0
|
| | | self.DataLen = 0
|
| | | self.SetData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.SetData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.KeyNum)
|
| | | data = CommFunc.WriteBYTE(data, self.DataLen)
|
| | | data = CommFunc.WriteString(data, self.DataLen, self.SetData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | KeyNum:%d,
|
| | | DataLen:%d,
|
| | | SetData:%s
|
| | | '''\
|
| | | %(
|
| | | self.KeyNum,
|
| | | self.DataLen,
|
| | | self.SetData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCSettingDataInfo(Structure):
|
| | | Head = tagHead()
|
| | | DataCnt = 0 #(WORD DataCnt)
|
| | | SettingDataList = list() #(vector<tagSCSettingData> SettingDataList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA1
|
| | | self.Head.SubCmd = 0x31
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.DataCnt,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.DataCnt):
|
| | | temSettingDataList = tagSCSettingData()
|
| | | _pos = temSettingDataList.ReadData(_lpData, _pos)
|
| | | self.SettingDataList.append(temSettingDataList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA1
|
| | | self.Head.SubCmd = 0x31
|
| | | self.DataCnt = 0
|
| | | self.SettingDataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.DataCnt):
|
| | | length += self.SettingDataList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.DataCnt)
|
| | | for i in range(self.DataCnt):
|
| | | data = CommFunc.WriteString(data, self.SettingDataList[i].GetLength(), self.SettingDataList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | DataCnt:%d,
|
| | | SettingDataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.DataCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCSettingDataInfo=tagSCSettingDataInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCSettingDataInfo.Head.Cmd,m_NAtagSCSettingDataInfo.Head.SubCmd))] = m_NAtagSCSettingDataInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A1 26 准备切换地图 #tagMCPrepareChangeMap
|
| | |
|
| | | class tagMCPrepareChangeMap(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 18 极品白拿信息 #tagMCFreeGoodsInfo
|
| | |
|
| | | class tagMCFreeGoods(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ID", c_ubyte), # 礼包ID
|
| | | ("BuyState", c_int), # 购买状态 0-未购买 1-已领返还 time值-购买时间
|
| | | ]
|
| | |
|
| | | 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.ID = 0
|
| | | self.BuyState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFreeGoods)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 18 极品白拿信息 //tagMCFreeGoodsInfo:
|
| | | ID:%d,
|
| | | BuyState:%d
|
| | | '''\
|
| | | %(
|
| | | self.ID,
|
| | | self.BuyState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFreeGoodsInfo(Structure):
|
| | | Head = tagHead()
|
| | | OpenTime = 0 #(DWORD OpenTime)// 活动开启时间
|
| | | Count = 0 #(BYTE Count)// 个数
|
| | | FreeGoodsList = list() #(vector<tagMCFreeGoods> FreeGoodsList)// 信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x18
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.OpenTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temFreeGoodsList = tagMCFreeGoods()
|
| | | _pos = temFreeGoodsList.ReadData(_lpData, _pos)
|
| | | self.FreeGoodsList.append(temFreeGoodsList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA3
|
| | | self.Head.SubCmd = 0x18
|
| | | self.OpenTime = 0
|
| | | self.Count = 0
|
| | | self.FreeGoodsList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.FreeGoodsList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.OpenTime)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.FreeGoodsList[i].GetLength(), self.FreeGoodsList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | OpenTime:%d,
|
| | | Count:%d,
|
| | | FreeGoodsList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.OpenTime,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFreeGoodsInfo=tagMCFreeGoodsInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFreeGoodsInfo.Head.Cmd,m_NAtagMCFreeGoodsInfo.Head.SubCmd))] = m_NAtagMCFreeGoodsInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 22 功能NPC已采集次数 #tagMCFuncNPCCollectionCnt
|
| | |
|
| | | class tagMCFuncNPCCollectionCnt(Structure):
|
| | |
| | |
|
| | | m_NAtagMCPackDownloadRecord=tagMCPackDownloadRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPackDownloadRecord.Cmd,m_NAtagMCPackDownloadRecord.SubCmd))] = m_NAtagMCPackDownloadRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
|
| | |
|
| | | class tagMCPlayerLVAwardGetRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LVAwardGetRecord", c_int), # 按二进制位标示领取记录,每位对应的等级在配表中配置,服务端客户端对应
|
| | | ("VIPAwardRecord", c_int), # 按二进制位标示vip领取记录,每位对应的等级在配表中配置,服务端客户端对应
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x0B
|
| | | 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 = 0xA3
|
| | | self.SubCmd = 0x0B
|
| | | self.LVAwardGetRecord = 0
|
| | | self.VIPAwardRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPlayerLVAwardGetRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A3 0B 玩家等级奖励领取记录信息 //tagMCPlayerLVAwardGetRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | LVAwardGetRecord:%d,
|
| | | VIPAwardRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.LVAwardGetRecord,
|
| | | self.VIPAwardRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCPlayerLVAwardGetRecord=tagMCPlayerLVAwardGetRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPlayerLVAwardGetRecord.Cmd,m_NAtagMCPlayerLVAwardGetRecord.SubCmd))] = m_NAtagMCPlayerLVAwardGetRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | FamilyName = "" #(char FamilyName[33])
|
| | | FamilyEmblemID = 0 #(DWORD FamilyEmblemID)//仙盟徽章ID
|
| | | FamilyEmblemWord = "" #(char FamilyEmblemWord[3])//徽章文字
|
| | | FamilyDataServerID = 0 #(DWORD FamilyDataServerID)//公会数据所在服务器ID,A619查看公会用
|
| | | PlusDataSize = 0 #(DWORD PlusDataSize)
|
| | | PlusData = "" #(String PlusData)//扩展记录
|
| | | data = None
|
| | |
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyEmblemWord,_pos = CommFunc.ReadString(_lpData, _pos,3)
|
| | | self.FamilyDataServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize)
|
| | | return _pos
|
| | |
| | | self.FamilyName = ""
|
| | | self.FamilyEmblemID = 0
|
| | | self.FamilyEmblemWord = ""
|
| | | self.FamilyDataServerID = 0
|
| | | self.PlusDataSize = 0
|
| | | self.PlusData = ""
|
| | | return
|
| | |
| | | length += 4
|
| | | length += 3
|
| | | length += 4
|
| | | length += 4
|
| | | length += len(self.PlusData)
|
| | |
|
| | | return length
|
| | |
| | | data = CommFunc.WriteString(data, 33, self.FamilyName)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyEmblemID)
|
| | | data = CommFunc.WriteString(data, 3, self.FamilyEmblemWord)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyDataServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlusDataSize)
|
| | | data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData)
|
| | | return data
|
| | |
| | | FamilyName:%s,
|
| | | FamilyEmblemID:%d,
|
| | | FamilyEmblemWord:%s,
|
| | | FamilyDataServerID:%d,
|
| | | PlusDataSize:%d,
|
| | | PlusData:%s
|
| | | '''\
|
| | |
| | | self.FamilyName,
|
| | | self.FamilyEmblemID,
|
| | | self.FamilyEmblemWord,
|
| | | self.FamilyDataServerID,
|
| | | self.PlusDataSize,
|
| | | self.PlusData
|
| | | )
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 60 天帝礼包活动信息 #tagMCActGodGiftInfo
|
| | |
|
| | | class tagMCActGodGiftItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemNum", c_ubyte), # 物品在本库中的编号
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", c_ubyte), |
| | | ("CanChooseTimes", c_ubyte), #可选择次数,0代表不限次数
|
| | | ("ChooseTimes", c_ubyte), #已选次数
|
| | | ("IsChoose", 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.ItemNum = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | self.CanChooseTimes = 0
|
| | | self.ChooseTimes = 0
|
| | | self.IsChoose = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActGodGiftItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 60 天帝礼包活动信息 //tagMCActGodGiftInfo:
|
| | | ItemNum:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d,
|
| | | CanChooseTimes:%d,
|
| | | ChooseTimes:%d,
|
| | | IsChoose:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemNum,
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind,
|
| | | self.CanChooseTimes,
|
| | | self.ChooseTimes,
|
| | | self.IsChoose
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGodGiftItemLib(Structure):
|
| | | ItemLibType = 0 #(BYTE ItemLibType)//物品库类型
|
| | | NeedChooseCount = 0 #(BYTE NeedChooseCount)//需要选择个数
|
| | | GodGiftItemCount = 0 #(BYTE GodGiftItemCount)//可选择物品个数
|
| | | GodGiftItemList = list() #(vector<tagMCActGodGiftItem> GodGiftItemList)//可选物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ItemLibType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GodGiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GodGiftItemCount):
|
| | | temGodGiftItemList = tagMCActGodGiftItem()
|
| | | _pos = temGodGiftItemList.ReadData(_lpData, _pos)
|
| | | self.GodGiftItemList.append(temGodGiftItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ItemLibType = 0
|
| | | self.NeedChooseCount = 0
|
| | | self.GodGiftItemCount = 0
|
| | | self.GodGiftItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.GodGiftItemCount):
|
| | | length += self.GodGiftItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ItemLibType)
|
| | | data = CommFunc.WriteBYTE(data, self.NeedChooseCount)
|
| | | data = CommFunc.WriteBYTE(data, self.GodGiftItemCount)
|
| | | for i in range(self.GodGiftItemCount):
|
| | | data = CommFunc.WriteString(data, self.GodGiftItemList[i].GetLength(), self.GodGiftItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ItemLibType:%d,
|
| | | NeedChooseCount:%d,
|
| | | GodGiftItemCount:%d,
|
| | | GodGiftItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.ItemLibType,
|
| | | self.NeedChooseCount,
|
| | | self.GodGiftItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGodGiftInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每日重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | CostMoneyType = 0 #(BYTE CostMoneyType)//消耗货币类型
|
| | | CostMoneyValueCount = 0 #(BYTE CostMoneyValueCount)
|
| | | CostMoneyValueList = list() #(vector<DWORD> CostMoneyValueList)//消耗货币值列表
|
| | | PrizeMoneyType = 0 #(BYTE PrizeMoneyType)//奖励货币类型
|
| | | PrizeMoneyValueCount = 0 #(BYTE PrizeMoneyValueCount)
|
| | | PrizeMoneyValueList = list() #(vector<DWORD> PrizeMoneyValueList)//奖励货币值列表
|
| | | ResetLimitTimes = 0 #(BYTE ResetLimitTimes)//至少抽几次才可重置奖池
|
| | | ResetCountMax = 0 #(BYTE ResetCountMax)//最大可重置奖池次数
|
| | | IsAwardPoolOK = 0 #(BYTE IsAwardPoolOK)//奖池是否选择完毕,否的话需要先选择奖池才可抽奖
|
| | | ItemLibCount = 0 #(BYTE ItemLibCount)//奖池库个数 |
| | | ItemLibList = list() #(vector<tagMCActGodGiftItemLib> ItemLibList)//奖池库信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x60
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.CostMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CostMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CostMoneyValueCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CostMoneyValueList.append(value)
|
| | | self.PrizeMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PrizeMoneyValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.PrizeMoneyValueCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.PrizeMoneyValueList.append(value)
|
| | | self.ResetLimitTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetCountMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsAwardPoolOK,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ItemLibCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ItemLibCount):
|
| | | temItemLibList = tagMCActGodGiftItemLib()
|
| | | _pos = temItemLibList.ReadData(_lpData, _pos)
|
| | | self.ItemLibList.append(temItemLibList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x60
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.CostMoneyType = 0
|
| | | self.CostMoneyValueCount = 0
|
| | | self.CostMoneyValueList = list()
|
| | | self.PrizeMoneyType = 0
|
| | | self.PrizeMoneyValueCount = 0
|
| | | self.PrizeMoneyValueList = list()
|
| | | self.ResetLimitTimes = 0
|
| | | self.ResetCountMax = 0
|
| | | self.IsAwardPoolOK = 0
|
| | | self.ItemLibCount = 0
|
| | | self.ItemLibList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.CostMoneyValueCount
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.PrizeMoneyValueCount
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.ItemLibCount):
|
| | | length += self.ItemLibList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.CostMoneyType)
|
| | | data = CommFunc.WriteBYTE(data, self.CostMoneyValueCount)
|
| | | for i in range(self.CostMoneyValueCount):
|
| | | data = CommFunc.WriteDWORD(data, self.CostMoneyValueList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.PrizeMoneyType)
|
| | | data = CommFunc.WriteBYTE(data, self.PrizeMoneyValueCount)
|
| | | for i in range(self.PrizeMoneyValueCount):
|
| | | data = CommFunc.WriteDWORD(data, self.PrizeMoneyValueList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.ResetLimitTimes)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetCountMax)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAwardPoolOK)
|
| | | data = CommFunc.WriteBYTE(data, self.ItemLibCount)
|
| | | for i in range(self.ItemLibCount):
|
| | | data = CommFunc.WriteString(data, self.ItemLibList[i].GetLength(), self.ItemLibList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | CostMoneyType:%d,
|
| | | CostMoneyValueCount:%d,
|
| | | CostMoneyValueList:%s,
|
| | | PrizeMoneyType:%d,
|
| | | PrizeMoneyValueCount:%d,
|
| | | PrizeMoneyValueList:%s,
|
| | | ResetLimitTimes:%d,
|
| | | ResetCountMax:%d,
|
| | | IsAwardPoolOK:%d,
|
| | | ItemLibCount:%d,
|
| | | ItemLibList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.CostMoneyType,
|
| | | self.CostMoneyValueCount,
|
| | | "...",
|
| | | self.PrizeMoneyType,
|
| | | self.PrizeMoneyValueCount,
|
| | | "...",
|
| | | self.ResetLimitTimes,
|
| | | self.ResetCountMax,
|
| | | self.IsAwardPoolOK,
|
| | | self.ItemLibCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGodGiftInfo=tagMCActGodGiftInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftInfo.Head.Cmd,m_NAtagMCActGodGiftInfo.Head.SubCmd))] = m_NAtagMCActGodGiftInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 61 天帝礼包活动玩家信息 #tagMCActGodGiftPlayerInfo
|
| | |
|
| | | class tagMCActGodGiftAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemLibType", c_ubyte), #物品库类型
|
| | | ("ItemNum", 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.ItemLibType = 0
|
| | | self.ItemNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActGodGiftAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 61 天帝礼包活动玩家信息 //tagMCActGodGiftPlayerInfo:
|
| | | ItemLibType:%d,
|
| | | ItemNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemLibType,
|
| | | self.ItemNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGodGiftPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | ResetCount = 0 #(BYTE ResetCount)// 本次活动已重置次数
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 本次奖池已抽中奖品个数,也代表本次奖池已抽奖次数
|
| | | AwardItemList = list() #(vector<tagMCActGodGiftAwardItem> AwardItemList)// 本次奖池已抽中物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x61
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItemList = tagMCActGodGiftAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x61
|
| | | self.ActNum = 0
|
| | | self.ResetCount = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetCount)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | ResetCount:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.ResetCount,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGodGiftPlayerInfo=tagMCActGodGiftPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGodGiftPlayerInfo.Head.Cmd,m_NAtagMCActGodGiftPlayerInfo.Head.SubCmd))] = m_NAtagMCActGodGiftPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 31 成长必买活动信息 #tagMCActGrowupBuyInfo
|
| | |
|
| | | class tagMCActGrowupBuyCTGItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", 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.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActGrowupBuyCTGItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 31 成长必买活动信息 //tagMCActGrowupBuyInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGrowupBuyCTGInfo(Structure):
|
| | | CTGID = 0 #(WORD CTGID)// 充值表ID
|
| | | GainItemCount = 0 #(BYTE GainItemCount)// 获得物品数
|
| | | GainItemList = list() #(vector<tagMCActGrowupBuyCTGItem> GainItemList)// 获得物品列表,替换充值表中的 GainItemList 字段信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.CTGID,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GainItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GainItemCount):
|
| | | temGainItemList = tagMCActGrowupBuyCTGItem()
|
| | | _pos = temGainItemList.ReadData(_lpData, _pos)
|
| | | self.GainItemList.append(temGainItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.CTGID = 0
|
| | | self.GainItemCount = 0
|
| | | self.GainItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.GainItemCount):
|
| | | length += self.GainItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteWORD(data, self.CTGID)
|
| | | data = CommFunc.WriteBYTE(data, self.GainItemCount)
|
| | | for i in range(self.GainItemCount):
|
| | | data = CommFunc.WriteString(data, self.GainItemList[i].GetLength(), self.GainItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | CTGID:%d,
|
| | | GainItemCount:%d,
|
| | | GainItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.CTGID,
|
| | | self.GainItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGrowupBuyGroup(Structure):
|
| | | BuyCount = 0 #(BYTE BuyCount)// 循环购买礼包数
|
| | | BuyCTGIDList = list() #(vector<tagMCActGrowupBuyCTGInfo> BuyCTGIDList)// 循环购买礼包充值ID信息列表
|
| | | PlayerBuyIndex = 0 #(BYTE PlayerBuyIndex)// 玩家当前可购买的礼包充值ID在列表中索引
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.BuyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BuyCount):
|
| | | temBuyCTGIDList = tagMCActGrowupBuyCTGInfo()
|
| | | _pos = temBuyCTGIDList.ReadData(_lpData, _pos)
|
| | | self.BuyCTGIDList.append(temBuyCTGIDList)
|
| | | self.PlayerBuyIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.BuyCount = 0
|
| | | self.BuyCTGIDList = list()
|
| | | self.PlayerBuyIndex = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | for i in range(self.BuyCount):
|
| | | length += self.BuyCTGIDList[i].GetLength()
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.BuyCount)
|
| | | for i in range(self.BuyCount):
|
| | | data = CommFunc.WriteString(data, self.BuyCTGIDList[i].GetLength(), self.BuyCTGIDList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.PlayerBuyIndex)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | BuyCount:%d,
|
| | | BuyCTGIDList:%s,
|
| | | PlayerBuyIndex:%d
|
| | | '''\
|
| | | %(
|
| | | self.BuyCount,
|
| | | "...",
|
| | | self.PlayerBuyIndex
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActGrowupBuyInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | GroupCount = 0 #(BYTE GroupCount)// 循环购买礼包组数
|
| | | GroupList = list() #(vector<tagMCActGrowupBuyGroup> GroupList)//循环购买礼包组列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x31
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GroupCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GroupCount):
|
| | | temGroupList = tagMCActGrowupBuyGroup()
|
| | | _pos = temGroupList.ReadData(_lpData, _pos)
|
| | | self.GroupList.append(temGroupList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x31
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.GroupCount = 0
|
| | | self.GroupList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.GroupCount):
|
| | | length += self.GroupList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.GroupCount)
|
| | | for i in range(self.GroupCount):
|
| | | data = CommFunc.WriteString(data, self.GroupList[i].GetLength(), self.GroupList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | GroupCount:%d,
|
| | | GroupList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.GroupCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActGrowupBuyInfo=tagMCActGrowupBuyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActGrowupBuyInfo.Head.Cmd,m_NAtagMCActGrowupBuyInfo.Head.SubCmd))] = m_NAtagMCActGrowupBuyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0C 登录奖励活动信息 #tagMCActLoginAwardInfo
|
| | |
|
| | | class tagMCActLoginAwardAction(Structure):
|
| | | TemplateID = 0 #(DWORD TemplateID)// 模板ID
|
| | | ActionType = 0 #(WORD ActionType)// 活动类别
|
| | | TotalTimes = 0 #(DWORD TotalTimes)// 可完成的总次数,0表示不限次数
|
| | | SingleTimes = 0 #(DWORD SingleTimes)// 单次领奖需要的次数
|
| | | Count = 0 #(WORD Count)// 物品配置长度
|
| | | ItemInfo = "" #(String ItemInfo)// 物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TemplateID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ActionType,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SingleTimes,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ItemInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.Count)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TemplateID = 0
|
| | | self.ActionType = 0
|
| | | self.TotalTimes = 0
|
| | | self.SingleTimes = 0
|
| | | self.Count = 0
|
| | | self.ItemInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ItemInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.TemplateID)
|
| | | data = CommFunc.WriteWORD(data, self.ActionType)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalTimes)
|
| | | data = CommFunc.WriteDWORD(data, self.SingleTimes)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | data = CommFunc.WriteString(data, self.Count, self.ItemInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | TemplateID:%d,
|
| | | ActionType:%d,
|
| | | TotalTimes:%d,
|
| | | SingleTimes:%d,
|
| | | Count:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.ActionType,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.Count,
|
| | | self.ItemInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardDayInfo(Structure):
|
| | | ActCnt = 0 #(BYTE ActCnt)// 数量
|
| | | TemplateList = list() #(vector<WORD> TemplateList)// 模板列表
|
| | | WorldLV = 0 #(WORD WorldLV)// 世界等级
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ActCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActCnt):
|
| | | value,_pos=CommFunc.ReadWORD(_lpData,_pos)
|
| | | self.TemplateList.append(value)
|
| | | self.WorldLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ActCnt = 0
|
| | | self.TemplateList = list()
|
| | | self.WorldLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2 * self.ActCnt
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.ActCnt)
|
| | | for i in range(self.ActCnt):
|
| | | data = CommFunc.WriteWORD(data, self.TemplateList[i])
|
| | | data = CommFunc.WriteWORD(data, self.WorldLV)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ActCnt:%d,
|
| | | TemplateList:%s,
|
| | | WorldLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActCnt,
|
| | | "...",
|
| | | self.WorldLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | DayCnt = 0 #(BYTE DayCnt)// 天数
|
| | | DayInfoList = list() #(vector<tagMCActLoginAwardDayInfo> DayInfoList)// 每天模板
|
| | | TCount = 0 #(BYTE TCount)// 模板数
|
| | | ActionInfo = list() #(vector<tagMCActLoginAwardAction> ActionInfo)// 活动模板信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0C
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.DayCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DayCnt):
|
| | | temDayInfoList = tagMCActLoginAwardDayInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | self.TCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TCount):
|
| | | temActionInfo = tagMCActLoginAwardAction()
|
| | | _pos = temActionInfo.ReadData(_lpData, _pos)
|
| | | self.ActionInfo.append(temActionInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0C
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.DayCnt = 0
|
| | | self.DayInfoList = list()
|
| | | self.TCount = 0
|
| | | self.ActionInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.DayCnt):
|
| | | length += self.DayInfoList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.TCount):
|
| | | length += self.ActionInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.DayCnt)
|
| | | for i in range(self.DayCnt):
|
| | | data = CommFunc.WriteString(data, self.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.TCount)
|
| | | for i in range(self.TCount):
|
| | | data = CommFunc.WriteString(data, self.ActionInfo[i].GetLength(), self.ActionInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | DayCnt:%d,
|
| | | DayInfoList:%s,
|
| | | TCount:%d,
|
| | | ActionInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.DayCnt,
|
| | | "...",
|
| | | self.TCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginAwardInfo=tagMCActLoginAwardInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardInfo.Head.Cmd,m_NAtagMCActLoginAwardInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 0D 登录奖励玩家活动信息 #tagMCActLoginAwardPlayerInfo
|
| | |
|
| | | class tagMCActLoginAwardTaskInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("TemplateID", c_ushort), # 模板ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ("GotTimes", c_ushort), #已领取次数
|
| | | ]
|
| | |
|
| | | 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.TemplateID = 0
|
| | | self.CurTimes = 0
|
| | | self.GotTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActLoginAwardTaskInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 0D 登录奖励玩家活动信息 //tagMCActLoginAwardPlayerInfo:
|
| | | TemplateID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.TemplateID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardDayPlayerInfo(Structure):
|
| | | DayIndex = 0 #(DWORD DayIndex)//第X天
|
| | | ACount = 0 #(DWORD ACount)//任务条目数
|
| | | TaskList = list() #(vector<tagMCActLoginAwardTaskInfo> TaskList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.DayIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ACount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | for i in range(self.ACount):
|
| | | temTaskList = tagMCActLoginAwardTaskInfo()
|
| | | _pos = temTaskList.ReadData(_lpData, _pos)
|
| | | self.TaskList.append(temTaskList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayIndex = 0
|
| | | self.ACount = 0
|
| | | self.TaskList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 4
|
| | | for i in range(self.ACount):
|
| | | length += self.TaskList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.DayIndex)
|
| | | data = CommFunc.WriteDWORD(data, self.ACount)
|
| | | for i in range(self.ACount):
|
| | | data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | DayIndex:%d,
|
| | | ACount:%d,
|
| | | TaskList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayIndex,
|
| | | self.ACount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActLoginAwardPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | DayInfoList = list() #(vector<tagMCActLoginAwardDayPlayerInfo> DayInfoList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0D
|
| | | 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):
|
| | | temDayInfoList = tagMCActLoginAwardDayPlayerInfo()
|
| | | _pos = temDayInfoList.ReadData(_lpData, _pos)
|
| | | self.DayInfoList.append(temDayInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x0D
|
| | | self.Count = 0
|
| | | self.DayInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.DayInfoList[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.DayInfoList[i].GetLength(), self.DayInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DayInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActLoginAwardPlayerInfo=tagMCActLoginAwardPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActLoginAwardPlayerInfo.Head.Cmd,m_NAtagMCActLoginAwardPlayerInfo.Head.SubCmd))] = m_NAtagMCActLoginAwardPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 69 登录活动信息新 #tagMCActLoginNew
|
| | |
|
| | | class tagMCActLoginNewItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 52 转盘活动信息 #tagMCActTurntableInfo
|
| | |
|
| | | class tagMCActTurntableItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemNum", c_ubyte), #物品编号 1~n;注意转盘已确定物品编号 与 极品终极物品待选择库编号可能相同,但并不代表同一物品
|
| | | ("ItemLibType", c_ubyte), #物品库类型;1-常规,2-极品,3-终极
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ]
|
| | |
|
| | | 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.ItemNum = 0
|
| | | self.ItemLibType = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActTurntableItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 52 转盘活动信息 //tagMCActTurntableInfo:
|
| | | ItemNum:%d,
|
| | | ItemLibType:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemNum,
|
| | | self.ItemLibType,
|
| | | self.ItemID,
|
| | | self.ItemCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActTurntableInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | CTGPrizeCount = 0 #(BYTE CTGPrizeCount)
|
| | | CTGPrizeList = list() #(vector<DWORD> CTGPrizeList)// 累计充值额度奖励次数列表 [奖励第1次所需累计充值额度, 第2次, ...]
|
| | | UseMoneyType = 0 #(BYTE UseMoneyType)// 累计消费货币类型
|
| | | UseMoneyPrizeCount = 0 #(BYTE UseMoneyPrizeCount)
|
| | | UseMoneyPrizeList = list() #(vector<DWORD> UseMoneyPrizeList)// 累计消费货币奖励次数列表 [奖励第1次所需累计消费货币, 第2次, ...]
|
| | | TurnItemCount = 0 #(BYTE TurnItemCount)
|
| | | TurnItemList = list() #(vector<tagMCActTurntableItem> TurnItemList)// 转盘已确定的物品列表,包含常规物品+极品物品+终极物品,活动开始时,后端直接随机生成常规物品,已确定的物品不包含极品、终极物品时需要先选择才能使用转盘;
|
| | | GoodItemCount = 0 #(BYTE GoodItemCount)
|
| | | GoodItemList = list() #(vector<tagMCActTurntableItem> GoodItemList)// 极品物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
|
| | | GoodItemCanChooseCount = 0 #(BYTE GoodItemCanChooseCount)// 极品物品可选择个数
|
| | | SuperItemCount = 0 #(BYTE SuperItemCount)
|
| | | SuperItemList = list() #(vector<tagMCActTurntableItem> SuperItemList)// 终极物品待选择库,由玩家从库中选择放入转盘的物品;注意此库中的物品编号仅表示在该库中的编号,可能与转盘已确定的物品编号重复,但并不代表同一物品;
|
| | | SuperItemCanChooseCount = 0 #(BYTE SuperItemCanChooseCount)// 终极物品可选择个数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x52
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.CTGPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CTGPrizeCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.CTGPrizeList.append(value)
|
| | | self.UseMoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.UseMoneyPrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.UseMoneyPrizeCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.UseMoneyPrizeList.append(value)
|
| | | self.TurnItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TurnItemCount):
|
| | | temTurnItemList = tagMCActTurntableItem()
|
| | | _pos = temTurnItemList.ReadData(_lpData, _pos)
|
| | | self.TurnItemList.append(temTurnItemList)
|
| | | self.GoodItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GoodItemCount):
|
| | | temGoodItemList = tagMCActTurntableItem()
|
| | | _pos = temGoodItemList.ReadData(_lpData, _pos)
|
| | | self.GoodItemList.append(temGoodItemList)
|
| | | self.GoodItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SuperItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.SuperItemCount):
|
| | | temSuperItemList = tagMCActTurntableItem()
|
| | | _pos = temSuperItemList.ReadData(_lpData, _pos)
|
| | | self.SuperItemList.append(temSuperItemList)
|
| | | self.SuperItemCanChooseCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x52
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.CTGPrizeCount = 0
|
| | | self.CTGPrizeList = list()
|
| | | self.UseMoneyType = 0
|
| | | self.UseMoneyPrizeCount = 0
|
| | | self.UseMoneyPrizeList = list()
|
| | | self.TurnItemCount = 0
|
| | | self.TurnItemList = list()
|
| | | self.GoodItemCount = 0
|
| | | self.GoodItemList = list()
|
| | | self.GoodItemCanChooseCount = 0
|
| | | self.SuperItemCount = 0
|
| | | self.SuperItemList = list()
|
| | | self.SuperItemCanChooseCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4 * self.CTGPrizeCount
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.UseMoneyPrizeCount
|
| | | length += 1
|
| | | for i in range(self.TurnItemCount):
|
| | | length += self.TurnItemList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.GoodItemCount):
|
| | | length += self.GoodItemList[i].GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.SuperItemCount):
|
| | | length += self.SuperItemList[i].GetLength()
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.CTGPrizeCount)
|
| | | for i in range(self.CTGPrizeCount):
|
| | | data = CommFunc.WriteDWORD(data, self.CTGPrizeList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.UseMoneyType)
|
| | | data = CommFunc.WriteBYTE(data, self.UseMoneyPrizeCount)
|
| | | for i in range(self.UseMoneyPrizeCount):
|
| | | data = CommFunc.WriteDWORD(data, self.UseMoneyPrizeList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.TurnItemCount)
|
| | | for i in range(self.TurnItemCount):
|
| | | data = CommFunc.WriteString(data, self.TurnItemList[i].GetLength(), self.TurnItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.GoodItemCount)
|
| | | for i in range(self.GoodItemCount):
|
| | | data = CommFunc.WriteString(data, self.GoodItemList[i].GetLength(), self.GoodItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.GoodItemCanChooseCount)
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCount)
|
| | | for i in range(self.SuperItemCount):
|
| | | data = CommFunc.WriteString(data, self.SuperItemList[i].GetLength(), self.SuperItemList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.SuperItemCanChooseCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | CTGPrizeCount:%d,
|
| | | CTGPrizeList:%s,
|
| | | UseMoneyType:%d,
|
| | | UseMoneyPrizeCount:%d,
|
| | | UseMoneyPrizeList:%s,
|
| | | TurnItemCount:%d,
|
| | | TurnItemList:%s,
|
| | | GoodItemCount:%d,
|
| | | GoodItemList:%s,
|
| | | GoodItemCanChooseCount:%d,
|
| | | SuperItemCount:%d,
|
| | | SuperItemList:%s,
|
| | | SuperItemCanChooseCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.CTGPrizeCount,
|
| | | "...",
|
| | | self.UseMoneyType,
|
| | | self.UseMoneyPrizeCount,
|
| | | "...",
|
| | | self.TurnItemCount,
|
| | | "...",
|
| | | self.GoodItemCount,
|
| | | "...",
|
| | | self.GoodItemCanChooseCount,
|
| | | self.SuperItemCount,
|
| | | "...",
|
| | | self.SuperItemCanChooseCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTurntableInfo=tagMCActTurntableInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntableInfo.Head.Cmd,m_NAtagMCActTurntableInfo.Head.SubCmd))] = m_NAtagMCActTurntableInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 53 转盘活动玩家信息 #tagMCActTurntablePlayerInfo
|
| | |
|
| | | class tagMCActTurntablePlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ActNum", c_ubyte), #活动编号
|
| | | ("CanUseCount", c_ubyte), #可转盘次数
|
| | | ("CTGTotal", c_int), #累计充值额度
|
| | | ("UseMoneyTotal", c_int), #累计消费货币额度
|
| | | ("TurnItemState", c_int), #转盘物品已抽中记录,按转盘物品编号二进制位代表是否已抽中
|
| | | ("GetItemNum", c_ubyte), #本次抽中的物品编号,非转盘结果时为0,大于0时为通知本次转到的物品编号
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x53
|
| | | 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 = 0x53
|
| | | self.ActNum = 0
|
| | | self.CanUseCount = 0
|
| | | self.CTGTotal = 0
|
| | | self.UseMoneyTotal = 0
|
| | | self.TurnItemState = 0
|
| | | self.GetItemNum = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCActTurntablePlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 53 转盘活动玩家信息 //tagMCActTurntablePlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ActNum:%d,
|
| | | CanUseCount:%d,
|
| | | CTGTotal:%d,
|
| | | UseMoneyTotal:%d,
|
| | | TurnItemState:%d,
|
| | | GetItemNum:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ActNum,
|
| | | self.CanUseCount,
|
| | | self.CTGTotal,
|
| | | self.UseMoneyTotal,
|
| | | self.TurnItemState,
|
| | | self.GetItemNum
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActTurntablePlayerInfo=tagMCActTurntablePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActTurntablePlayerInfo.Cmd,m_NAtagMCActTurntablePlayerInfo.SubCmd))] = m_NAtagMCActTurntablePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1B 许愿池拖动结果 #tagMCActWishingDragResult
|
| | |
|
| | | class tagMCPlayerWishingDragInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("WellType", c_ubyte), # 库 0-可选库 1-结果库
|
| | | ("Index", c_ubyte), # 索引
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ("IsSpecial", 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.WellType = 0
|
| | | self.Index = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | self.IsSpecial = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPlayerWishingDragInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 1B 许愿池拖动结果 //tagMCActWishingDragResult:
|
| | | WellType:%d,
|
| | | Index:%d,
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d,
|
| | | IsSpecial:%d
|
| | | '''\
|
| | | %(
|
| | | self.WellType,
|
| | | self.Index,
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind,
|
| | | self.IsSpecial
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActWishingDragResult(Structure):
|
| | | Head = tagHead()
|
| | | Cnt = 0 #(BYTE Cnt)
|
| | | InfoList = list() #(vector<tagMCPlayerWishingDragInfo> InfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x1B
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Cnt):
|
| | | temInfoList = tagMCPlayerWishingDragInfo()
|
| | | _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 = 0x1B
|
| | | self.Cnt = 0
|
| | | self.InfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Cnt):
|
| | | 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.Cnt)
|
| | | for i in range(self.Cnt):
|
| | | data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Cnt:%d,
|
| | | InfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Cnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActWishingDragResult=tagMCActWishingDragResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingDragResult.Head.Cmd,m_NAtagMCActWishingDragResult.Head.SubCmd))] = m_NAtagMCActWishingDragResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 19 许愿池活动信息 #tagMCActWishingWellInfo
|
| | |
|
| | | class tagMCWishingWellItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ("Mark", c_int), # 排序标识
|
| | | ("Rare", 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.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | self.Mark = 0
|
| | | self.Rare = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCWishingWellItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 19 许愿池活动信息 //tagMCActWishingWellInfo:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d,
|
| | | Mark:%d,
|
| | | Rare:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind,
|
| | | self.Mark,
|
| | | self.Rare
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActWishingWellInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | Count = 0 #(WORD Count)// 物品数
|
| | | WellItemInfo = list() #(vector<tagMCWishingWellItem> WellItemInfo)// 随机库物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x19
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temWellItemInfo = tagMCWishingWellItem()
|
| | | _pos = temWellItemInfo.ReadData(_lpData, _pos)
|
| | | self.WellItemInfo.append(temWellItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x19
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.IsDayReset = 0
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.Count = 0
|
| | | self.WellItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.WellItemInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | IsDayReset:%d,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | Count:%d,
|
| | | WellItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.IsDayReset,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActWishingWellInfo=tagMCActWishingWellInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellInfo.Head.Cmd,m_NAtagMCActWishingWellInfo.Head.SubCmd))] = m_NAtagMCActWishingWellInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1A 许愿池活动玩家信息 #tagMCActWishingWellPlayerInfo
|
| | |
|
| | | class tagMCPlayerWishingWellItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ("IsSpecial", 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.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | self.IsSpecial = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPlayerWishingWellItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 1A 许愿池活动玩家信息 //tagMCActWishingWellPlayerInfo:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d,
|
| | | IsSpecial:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind,
|
| | | self.IsSpecial
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCActWishingWellPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | FreeStartTime = 0 #(DWORD FreeStartTime)// 免费开始倒计时时间
|
| | | WishCnt = 0 #(DWORD WishCnt)// 许愿付费刷新次数
|
| | | WellItemCnt = 0 #(BYTE WellItemCnt)//许愿池物品数量
|
| | | WellItemInfo = list() #(vector<tagMCPlayerWishingWellItem> WellItemInfo)// 随机库物品信息
|
| | | CurAwardCnt = 0 #(BYTE CurAwardCnt)// 当前奖励物品数量
|
| | | CurAwardItemInfo = list() #(vector<tagMCPlayerWishingWellItem> CurAwardItemInfo)// 当前奖励物品
|
| | | LastAwardCnt = 0 #(BYTE LastAwardCnt)// 可领取奖励物品数量
|
| | | LastAwardItemInfo = list() #(vector<tagMCPlayerWishingWellItem> LastAwardItemInfo)// 可领取奖励物品
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x1A
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FreeStartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WishCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WellItemCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WellItemCnt):
|
| | | temWellItemInfo = tagMCPlayerWishingWellItem()
|
| | | _pos = temWellItemInfo.ReadData(_lpData, _pos)
|
| | | self.WellItemInfo.append(temWellItemInfo)
|
| | | self.CurAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.CurAwardCnt):
|
| | | temCurAwardItemInfo = tagMCPlayerWishingWellItem()
|
| | | _pos = temCurAwardItemInfo.ReadData(_lpData, _pos)
|
| | | self.CurAwardItemInfo.append(temCurAwardItemInfo)
|
| | | self.LastAwardCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.LastAwardCnt):
|
| | | temLastAwardItemInfo = tagMCPlayerWishingWellItem()
|
| | | _pos = temLastAwardItemInfo.ReadData(_lpData, _pos)
|
| | | self.LastAwardItemInfo.append(temLastAwardItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x1A
|
| | | self.FreeStartTime = 0
|
| | | self.WishCnt = 0
|
| | | self.WellItemCnt = 0
|
| | | self.WellItemInfo = list()
|
| | | self.CurAwardCnt = 0
|
| | | self.CurAwardItemInfo = list()
|
| | | self.LastAwardCnt = 0
|
| | | self.LastAwardItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.WellItemCnt):
|
| | | length += self.WellItemInfo[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.CurAwardCnt):
|
| | | length += self.CurAwardItemInfo[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.LastAwardCnt):
|
| | | length += self.LastAwardItemInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FreeStartTime)
|
| | | data = CommFunc.WriteDWORD(data, self.WishCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.WellItemCnt)
|
| | | for i in range(self.WellItemCnt):
|
| | | data = CommFunc.WriteString(data, self.WellItemInfo[i].GetLength(), self.WellItemInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.CurAwardCnt)
|
| | | for i in range(self.CurAwardCnt):
|
| | | data = CommFunc.WriteString(data, self.CurAwardItemInfo[i].GetLength(), self.CurAwardItemInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.LastAwardCnt)
|
| | | for i in range(self.LastAwardCnt):
|
| | | data = CommFunc.WriteString(data, self.LastAwardItemInfo[i].GetLength(), self.LastAwardItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FreeStartTime:%d,
|
| | | WishCnt:%d,
|
| | | WellItemCnt:%d,
|
| | | WellItemInfo:%s,
|
| | | CurAwardCnt:%d,
|
| | | CurAwardItemInfo:%s,
|
| | | LastAwardCnt:%d,
|
| | | LastAwardItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FreeStartTime,
|
| | | self.WishCnt,
|
| | | self.WellItemCnt,
|
| | | "...",
|
| | | self.CurAwardCnt,
|
| | | "...",
|
| | | self.LastAwardCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActWishingWellPlayerInfo=tagMCActWishingWellPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActWishingWellPlayerInfo.Head.Cmd,m_NAtagMCActWishingWellPlayerInfo.Head.SubCmd))] = m_NAtagMCActWishingWellPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 87 运势活动信息 #tagMCActYunshiInfo
|
| | |
|
| | | class tagMCActYunshiInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)// 活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | TreasureType = 0 #(BYTE TreasureType)// 活动寻宝类型
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x87
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.TreasureType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x87
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.TreasureType = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.TreasureType)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | TreasureType:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.TreasureType
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActYunshiInfo=tagMCActYunshiInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActYunshiInfo.Head.Cmd,m_NAtagMCActYunshiInfo.Head.SubCmd))] = m_NAtagMCActYunshiInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 15 仙界盛典全民来嗨玩家信息 #tagMCAllPeoplePartyInfo
|
| | |
|
| | | class tagMCAllPeoplePartyCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ActID", c_int), #活动ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ]
|
| | |
|
| | | 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.ActID = 0
|
| | | self.CurTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCAllPeoplePartyCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 15 仙界盛典全民来嗨玩家信息 //tagMCAllPeoplePartyInfo:
|
| | | ActID:%d,
|
| | | CurTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActID,
|
| | | self.CurTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCAllPeoplePartyInfo(Structure):
|
| | | Head = tagHead()
|
| | | CurPoint = 0 #(DWORD CurPoint)//当前总点数
|
| | | AwardRecord = 0 #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
|
| | | Count = 0 #(BYTE Count)
|
| | | BuyCountList = list() #(vector<tagMCAllPeoplePartyCount> BuyCountList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x15
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temBuyCountList = tagMCAllPeoplePartyCount()
|
| | | _pos = temBuyCountList.ReadData(_lpData, _pos)
|
| | | self.BuyCountList.append(temBuyCountList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x15
|
| | | self.CurPoint = 0
|
| | | self.AwardRecord = 0
|
| | | self.Count = 0
|
| | | self.BuyCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BuyCountList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.CurPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | CurPoint:%d,
|
| | | AwardRecord:%d,
|
| | | Count:%d,
|
| | | BuyCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.CurPoint,
|
| | | self.AwardRecord,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCAllPeoplePartyInfo=tagMCAllPeoplePartyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCAllPeoplePartyInfo.Head.Cmd,m_NAtagMCAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCAllPeoplePartyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 90 炼器跨服活动信息 #tagMCCrossActLianqiInfo
|
| | |
|
| | | class tagMCCrossActLianqiItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 25 每日礼包活动信息 #tagMCDailyGiftbagInfo
|
| | |
|
| | | class tagMCDailyGiftbagItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ]
|
| | |
|
| | | 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.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCDailyGiftbagItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 25 每日礼包活动信息 //tagMCDailyGiftbagInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCDailyGiftbag(Structure):
|
| | | GiftID = 0 #(DWORD GiftID)//礼包ID,0为免费
|
| | | OrderInfoLen = 0 #(BYTE OrderInfoLen)
|
| | | OrderInfo = "" #(String OrderInfo)//商品编号
|
| | | BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
|
| | | RMB = 0 #(DWORD RMB)//所需RMB,元
|
| | | GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
|
| | | ItemInfo = list() #(vector<tagMCDailyGiftbagItem> ItemInfo)// 物品信息
|
| | | Discount = 0 #(WORD Discount)// 折扣力度百分比
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
|
| | | self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftItemCount):
|
| | | temItemInfo = tagMCDailyGiftbagItem()
|
| | | _pos = temItemInfo.ReadData(_lpData, _pos)
|
| | | self.ItemInfo.append(temItemInfo)
|
| | | self.Discount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.GiftID = 0
|
| | | self.OrderInfoLen = 0
|
| | | self.OrderInfo = ""
|
| | | self.BuyCountLimit = 0
|
| | | self.RMB = 0
|
| | | self.GiftItemCount = 0
|
| | | self.ItemInfo = list()
|
| | | self.Discount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.OrderInfo)
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.GiftItemCount):
|
| | | length += self.ItemInfo[i].GetLength()
|
| | | length += 2
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.GiftID)
|
| | | data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
|
| | | data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
|
| | | data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
|
| | | data = CommFunc.WriteDWORD(data, self.RMB)
|
| | | data = CommFunc.WriteBYTE(data, self.GiftItemCount)
|
| | | for i in range(self.GiftItemCount):
|
| | | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Discount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | GiftID:%d,
|
| | | OrderInfoLen:%d,
|
| | | OrderInfo:%s,
|
| | | BuyCountLimit:%d,
|
| | | RMB:%d,
|
| | | GiftItemCount:%d,
|
| | | ItemInfo:%s,
|
| | | Discount:%d
|
| | | '''\
|
| | | %(
|
| | | self.GiftID,
|
| | | self.OrderInfoLen,
|
| | | self.OrderInfo,
|
| | | self.BuyCountLimit,
|
| | | self.RMB,
|
| | | self.GiftItemCount,
|
| | | "...",
|
| | | self.Discount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCDailyGiftbagInfo(Structure):
|
| | | Head = tagHead()
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | GiftbagCount = 0 #(BYTE GiftbagCount)// 礼包数
|
| | | GiftbagInfo = list() #(vector<tagMCDailyGiftbag> GiftbagInfo)// 礼包信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x25
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftbagCount):
|
| | | temGiftbagInfo = tagMCDailyGiftbag()
|
| | | _pos = temGiftbagInfo.ReadData(_lpData, _pos)
|
| | | self.GiftbagInfo.append(temGiftbagInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x25
|
| | | self.LimitLV = 0
|
| | | self.GiftbagCount = 0
|
| | | self.GiftbagInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.GiftbagCount):
|
| | | length += self.GiftbagInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.GiftbagCount)
|
| | | for i in range(self.GiftbagCount):
|
| | | data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | LimitLV:%d,
|
| | | GiftbagCount:%d,
|
| | | GiftbagInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.LimitLV,
|
| | | self.GiftbagCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCDailyGiftbagInfo=tagMCDailyGiftbagInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagInfo.Head.Cmd,m_NAtagMCDailyGiftbagInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 26 每日礼包玩家活动信息 #tagMCDailyGiftbagPlayerInfo
|
| | |
|
| | | class tagMCDailyGiftbagBuyCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GiftbagID", c_int), #礼包ID
|
| | | ("BuyCount", c_ushort), #本次活动已购买次数
|
| | | ]
|
| | |
|
| | | 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.GiftbagID = 0
|
| | | self.BuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCDailyGiftbagBuyCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 26 每日礼包玩家活动信息 //tagMCDailyGiftbagPlayerInfo:
|
| | | GiftbagID:%d,
|
| | | BuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.GiftbagID,
|
| | | self.BuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCDailyGiftbagPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | BuyCountList = list() #(vector<tagMCDailyGiftbagBuyCount> BuyCountList)//礼包购买次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x26
|
| | | 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):
|
| | | temBuyCountList = tagMCDailyGiftbagBuyCount()
|
| | | _pos = temBuyCountList.ReadData(_lpData, _pos)
|
| | | self.BuyCountList.append(temBuyCountList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x26
|
| | | self.Count = 0
|
| | | self.BuyCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BuyCountList[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.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | BuyCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCDailyGiftbagPlayerInfo=tagMCDailyGiftbagPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyGiftbagPlayerInfo.Head.Cmd,m_NAtagMCDailyGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCDailyGiftbagPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 03 每日打包直购礼包 #tagMCDailyPackBuyGiftInfo
|
| | |
|
| | | class tagMCDailyPackBuyGiftInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCDailyPackBuyGiftInfo=tagMCDailyPackBuyGiftInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDailyPackBuyGiftInfo.Cmd,m_NAtagMCDailyPackBuyGiftInfo.SubCmd))] = m_NAtagMCDailyPackBuyGiftInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
|
| | |
|
| | | class tagMCFeastLoginDayAwardItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", 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.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastLoginDayAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 42 节日登录奖励活动信息 //tagMCFeastLoginInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastLoginDayAward(Structure):
|
| | | DayNum = 0 #(BYTE DayNum)//天编号,从1开始,活动第X天只能领对应第X天的奖励
|
| | | AwardCount = 0 #(BYTE AwardCount)
|
| | | AwardItemList = list() #(vector<tagMCFeastLoginDayAwardItem> AwardItemList)// 奖励物品列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.DayNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardCount):
|
| | | temAwardItemList = tagMCFeastLoginDayAwardItem()
|
| | | _pos = temAwardItemList.ReadData(_lpData, _pos)
|
| | | self.AwardItemList.append(temAwardItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayNum = 0
|
| | | self.AwardCount = 0
|
| | | self.AwardItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardCount):
|
| | | length += self.AwardItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.DayNum)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardCount)
|
| | | for i in range(self.AwardCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | DayNum:%d,
|
| | | AwardCount:%d,
|
| | | AwardItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayNum,
|
| | | self.AwardCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastLoginInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | DayCount = 0 #(BYTE DayCount)// 总共几天
|
| | | DayAwardList = list() #(vector<tagMCFeastLoginDayAward> DayAwardList)//登录天奖励列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x42
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.DayCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.DayCount):
|
| | | temDayAwardList = tagMCFeastLoginDayAward()
|
| | | _pos = temDayAwardList.ReadData(_lpData, _pos)
|
| | | self.DayAwardList.append(temDayAwardList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x42
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.DayCount = 0
|
| | | self.DayAwardList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.DayCount):
|
| | | length += self.DayAwardList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.DayCount)
|
| | | for i in range(self.DayCount):
|
| | | data = CommFunc.WriteString(data, self.DayAwardList[i].GetLength(), self.DayAwardList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | DayCount:%d,
|
| | | DayAwardList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.DayCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastLoginInfo=tagMCFeastLoginInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginInfo.Head.Cmd,m_NAtagMCFeastLoginInfo.Head.SubCmd))] = m_NAtagMCFeastLoginInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 39 节日登录奖励活动玩家信息 #tagMCFeastLoginPlayerInfo
|
| | |
|
| | | class tagMCFeastLoginPlayerInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LoginState", c_int), # 是否已登录,按天索引0代表第1天记录当天是否已登录
|
| | | ("LoginAward", c_int), # 是否已领取,按天索引0代表第1天记录当天是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x39
|
| | | 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 = 0x39
|
| | | self.LoginState = 0
|
| | | self.LoginAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastLoginPlayerInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 39 节日登录奖励活动玩家信息 //tagMCFeastLoginPlayerInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | LoginState:%d,
|
| | | LoginAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.LoginState,
|
| | | self.LoginAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastLoginPlayerInfo=tagMCFeastLoginPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastLoginPlayerInfo.Cmd,m_NAtagMCFeastLoginPlayerInfo.SubCmd))] = m_NAtagMCFeastLoginPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 43 节日祝福活动信息 #tagMCFeastWishInfo
|
| | |
|
| | | class tagMCFeastWishBottleItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RecordIndex", c_ubyte), #物品索引,用于选择及记录是否已选择
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", 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.RecordIndex = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastWishBottleItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 43 节日祝福活动信息 //tagMCFeastWishInfo:
|
| | | RecordIndex:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.RecordIndex,
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWishBottleInfo(Structure):
|
| | | BottleNum = 0 #(BYTE BottleNum)//瓶子编号
|
| | | NeedWishValue = 0 #(WORD NeedWishValue)//单次领奖所需祝福值
|
| | | ChooseTimeMax = 0 #(BYTE ChooseTimeMax)//最大可领奖次数
|
| | | ChoosePrizeCount = 0 #(BYTE ChoosePrizeCount)//可选择奖励个数
|
| | | ChoosePrizeList = list() #(vector<tagMCFeastWishBottleItem> ChoosePrizeList)// 选择奖励物品列表,已选过的无法再选
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.BottleNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.NeedWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ChooseTimeMax,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ChoosePrizeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ChoosePrizeCount):
|
| | | temChoosePrizeList = tagMCFeastWishBottleItem()
|
| | | _pos = temChoosePrizeList.ReadData(_lpData, _pos)
|
| | | self.ChoosePrizeList.append(temChoosePrizeList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.BottleNum = 0
|
| | | self.NeedWishValue = 0
|
| | | self.ChooseTimeMax = 0
|
| | | self.ChoosePrizeCount = 0
|
| | | self.ChoosePrizeList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.ChoosePrizeCount):
|
| | | length += self.ChoosePrizeList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.BottleNum)
|
| | | data = CommFunc.WriteWORD(data, self.NeedWishValue)
|
| | | data = CommFunc.WriteBYTE(data, self.ChooseTimeMax)
|
| | | data = CommFunc.WriteBYTE(data, self.ChoosePrizeCount)
|
| | | for i in range(self.ChoosePrizeCount):
|
| | | data = CommFunc.WriteString(data, self.ChoosePrizeList[i].GetLength(), self.ChoosePrizeList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | BottleNum:%d,
|
| | | NeedWishValue:%d,
|
| | | ChooseTimeMax:%d,
|
| | | ChoosePrizeCount:%d,
|
| | | ChoosePrizeList:%s
|
| | | '''\
|
| | | %(
|
| | | self.BottleNum,
|
| | | self.NeedWishValue,
|
| | | self.ChooseTimeMax,
|
| | | self.ChoosePrizeCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWishInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点开,5点重置;2-5点开,0点重置
|
| | | WishPoolShowCount = 0 #(BYTE WishPoolShowCount)//祝福池展示物品数
|
| | | WishPoolShowItemList = list() #(vector<DWORD> WishPoolShowItemList)//祝福池展示物品ID列表
|
| | | BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
|
| | | BottleInfoList = list() #(vector<tagMCFeastWishBottleInfo> BottleInfoList)// 祝福瓶信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x43
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WishPoolShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishPoolShowCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.WishPoolShowItemList.append(value)
|
| | | self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BottleCount):
|
| | | temBottleInfoList = tagMCFeastWishBottleInfo()
|
| | | _pos = temBottleInfoList.ReadData(_lpData, _pos)
|
| | | self.BottleInfoList.append(temBottleInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x43
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.LimitLV = 0
|
| | | self.ResetType = 0
|
| | | self.WishPoolShowCount = 0
|
| | | self.WishPoolShowItemList = list()
|
| | | self.BottleCount = 0
|
| | | self.BottleInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4 * self.WishPoolShowCount
|
| | | length += 1
|
| | | for i in range(self.BottleCount):
|
| | | length += self.BottleInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteBYTE(data, self.WishPoolShowCount)
|
| | | for i in range(self.WishPoolShowCount):
|
| | | data = CommFunc.WriteDWORD(data, self.WishPoolShowItemList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.BottleCount)
|
| | | for i in range(self.BottleCount):
|
| | | data = CommFunc.WriteString(data, self.BottleInfoList[i].GetLength(), self.BottleInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | LimitLV:%d,
|
| | | ResetType:%d,
|
| | | WishPoolShowCount:%d,
|
| | | WishPoolShowItemList:%s,
|
| | | BottleCount:%d,
|
| | | BottleInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.LimitLV,
|
| | | self.ResetType,
|
| | | self.WishPoolShowCount,
|
| | | "...",
|
| | | self.BottleCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastWishInfo=tagMCFeastWishInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishInfo.Head.Cmd,m_NAtagMCFeastWishInfo.Head.SubCmd))] = m_NAtagMCFeastWishInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 44 节日祝福活动玩家信息 #tagMCFeastWishPlayerInfo
|
| | |
|
| | | class tagMCFeastWishPlayerBottle(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("BottleNum", c_ubyte), #瓶子编号
|
| | | ("WishValue", c_ushort), #当前可用祝福值
|
| | | ("ChooseRecord", 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.BottleNum = 0
|
| | | self.WishValue = 0
|
| | | self.ChooseRecord = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFeastWishPlayerBottle)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 44 节日祝福活动玩家信息 //tagMCFeastWishPlayerInfo:
|
| | | BottleNum:%d,
|
| | | WishValue:%d,
|
| | | ChooseRecord:%d
|
| | | '''\
|
| | | %(
|
| | | self.BottleNum,
|
| | | self.WishValue,
|
| | | self.ChooseRecord
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFeastWishPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | BottleCount = 0 #(BYTE BottleCount)// 祝福瓶个数
|
| | | PlayerBottleInfo = list() #(vector<tagMCFeastWishPlayerBottle> PlayerBottleInfo)// 祝福瓶信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x44
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.BottleCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BottleCount):
|
| | | temPlayerBottleInfo = tagMCFeastWishPlayerBottle()
|
| | | _pos = temPlayerBottleInfo.ReadData(_lpData, _pos)
|
| | | self.PlayerBottleInfo.append(temPlayerBottleInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x44
|
| | | self.BottleCount = 0
|
| | | self.PlayerBottleInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.BottleCount):
|
| | | length += self.PlayerBottleInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.BottleCount)
|
| | | for i in range(self.BottleCount):
|
| | | data = CommFunc.WriteString(data, self.PlayerBottleInfo[i].GetLength(), self.PlayerBottleInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | BottleCount:%d,
|
| | | PlayerBottleInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.BottleCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastWishPlayerInfo=tagMCFeastWishPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishPlayerInfo.Head.Cmd,m_NAtagMCFeastWishPlayerInfo.Head.SubCmd))] = m_NAtagMCFeastWishPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 45 节日祝福祝福结果 #tagMCFeastWishResult
|
| | |
|
| | | class tagMCFeastWishResult(Structure):
|
| | | Head = tagHead()
|
| | | AddWishValue = 0 #(WORD AddWishValue)// 本次增加的祝福值
|
| | | WishResultLen = 0 #(WORD WishResultLen)
|
| | | WishResult = "" #(String WishResult)// 获得物品结果[[物品ID,个数,是否绑定], ...]
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x45
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AddWishValue,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.WishResultLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.WishResult,_pos = CommFunc.ReadString(_lpData, _pos,self.WishResultLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x45
|
| | | self.AddWishValue = 0
|
| | | self.WishResultLen = 0
|
| | | self.WishResult = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | length += 2
|
| | | length += len(self.WishResult)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.AddWishValue)
|
| | | data = CommFunc.WriteWORD(data, self.WishResultLen)
|
| | | data = CommFunc.WriteString(data, self.WishResultLen, self.WishResult)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AddWishValue:%d,
|
| | | WishResultLen:%d,
|
| | | WishResult:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AddWishValue,
|
| | | self.WishResultLen,
|
| | | self.WishResult
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFeastWishResult=tagMCFeastWishResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFeastWishResult.Head.Cmd,m_NAtagMCFeastWishResult.Head.SubCmd))] = m_NAtagMCFeastWishResult
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 12 限时礼包活动信息 #tagMCFlashGiftbagInfo
|
| | |
|
| | | class tagMCFlashGiftbagItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", c_ubyte), |
| | | ("IsMainItem", 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.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | self.IsMainItem = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFlashGiftbagItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 12 限时礼包活动信息 //tagMCFlashGiftbagInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d,
|
| | | IsMainItem:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind,
|
| | | self.IsMainItem
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashGiftbag(Structure):
|
| | | GiftID = 0 #(DWORD GiftID)//礼包ID
|
| | | OrderInfoLen = 0 #(BYTE OrderInfoLen)
|
| | | OrderInfo = "" #(String OrderInfo)//商品编号
|
| | | BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
|
| | | RMB = 0 #(DWORD RMB)//所需RMB,元
|
| | | RMBOriginal = 0 #(DWORD RMBOriginal)//原价
|
| | | GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
|
| | | ItemInfo = list() #(vector<tagMCFlashGiftbagItem> ItemInfo)// 物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.OrderInfoLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.OrderInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.OrderInfoLen)
|
| | | self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RMB,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.RMBOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftItemCount):
|
| | | temItemInfo = tagMCFlashGiftbagItem()
|
| | | _pos = temItemInfo.ReadData(_lpData, _pos)
|
| | | self.ItemInfo.append(temItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.GiftID = 0
|
| | | self.OrderInfoLen = 0
|
| | | self.OrderInfo = ""
|
| | | self.BuyCountLimit = 0
|
| | | self.RMB = 0
|
| | | self.RMBOriginal = 0
|
| | | self.GiftItemCount = 0
|
| | | self.ItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.OrderInfo)
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.GiftItemCount):
|
| | | length += self.ItemInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.GiftID)
|
| | | data = CommFunc.WriteBYTE(data, self.OrderInfoLen)
|
| | | data = CommFunc.WriteString(data, self.OrderInfoLen, self.OrderInfo)
|
| | | data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
|
| | | data = CommFunc.WriteDWORD(data, self.RMB)
|
| | | data = CommFunc.WriteDWORD(data, self.RMBOriginal)
|
| | | data = CommFunc.WriteBYTE(data, self.GiftItemCount)
|
| | | for i in range(self.GiftItemCount):
|
| | | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | GiftID:%d,
|
| | | OrderInfoLen:%d,
|
| | | OrderInfo:%s,
|
| | | BuyCountLimit:%d,
|
| | | RMB:%d,
|
| | | RMBOriginal:%d,
|
| | | GiftItemCount:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.GiftID,
|
| | | self.OrderInfoLen,
|
| | | self.OrderInfo,
|
| | | self.BuyCountLimit,
|
| | | self.RMB,
|
| | | self.RMBOriginal,
|
| | | self.GiftItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashGiftbagType(Structure):
|
| | | GiftbagCount = 0 #(BYTE GiftbagCount)// 礼包数
|
| | | GiftbagInfo = list() #(vector<tagMCFlashGiftbag> GiftbagInfo)// 礼包信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftbagCount):
|
| | | temGiftbagInfo = tagMCFlashGiftbag()
|
| | | _pos = temGiftbagInfo.ReadData(_lpData, _pos)
|
| | | self.GiftbagInfo.append(temGiftbagInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.GiftbagCount = 0
|
| | | self.GiftbagInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | for i in range(self.GiftbagCount):
|
| | | length += self.GiftbagInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.GiftbagCount)
|
| | | for i in range(self.GiftbagCount):
|
| | | data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | GiftbagCount:%d,
|
| | | GiftbagInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.GiftbagCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashGiftbagTime(Structure):
|
| | | StartTime = "" #(char StartTime[5])// 开始时间 H:M
|
| | | EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.StartTime = ""
|
| | | self.EndtTime = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 5
|
| | | length += 5
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 5, self.StartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.EndtTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | StartTime:%s,
|
| | | EndtTime:%s
|
| | | '''\
|
| | | %(
|
| | | self.StartTime,
|
| | | self.EndtTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashGiftbagInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCFlashGiftbagTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | GiftbagTypeCount = 0 #(BYTE GiftbagTypeCount)// 礼包类型数
|
| | | GiftbagTypeInfo = list() #(vector<tagMCFlashGiftbagType> GiftbagTypeInfo)// 礼包类型信息, 当有多个且有多个活动时间段时则每个时间段对应一个礼包类型;
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x12
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCFlashGiftbagTime()
|
| | | _pos = temActivityTime.ReadData(_lpData, _pos)
|
| | | self.ActivityTime.append(temActivityTime)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.GiftbagTypeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftbagTypeCount):
|
| | | temGiftbagTypeInfo = tagMCFlashGiftbagType()
|
| | | _pos = temGiftbagTypeInfo.ReadData(_lpData, _pos)
|
| | | self.GiftbagTypeInfo.append(temGiftbagTypeInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x12
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.GiftbagTypeCount = 0
|
| | | self.GiftbagTypeInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.GiftbagTypeCount):
|
| | | length += self.GiftbagTypeInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.GiftbagTypeCount)
|
| | | for i in range(self.GiftbagTypeCount):
|
| | | data = CommFunc.WriteString(data, self.GiftbagTypeInfo[i].GetLength(), self.GiftbagTypeInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | GiftbagTypeCount:%d,
|
| | | GiftbagTypeInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.GiftbagTypeCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFlashGiftbagInfo=tagMCFlashGiftbagInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagInfo.Head.Cmd,m_NAtagMCFlashGiftbagInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 13 限时礼包玩家活动信息 #tagMCFlashGiftbagPlayerInfo
|
| | |
|
| | | class tagMCFlashGiftbagBuyCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GiftbagID", c_int), #礼包ID
|
| | | ("BuyCount", c_ushort), #本次活动已购买次数
|
| | | ]
|
| | |
|
| | | 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.GiftbagID = 0
|
| | | self.BuyCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFlashGiftbagBuyCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 13 限时礼包玩家活动信息 //tagMCFlashGiftbagPlayerInfo:
|
| | | GiftbagID:%d,
|
| | | BuyCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.GiftbagID,
|
| | | self.BuyCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashGiftbagPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | Count = 0 #(BYTE Count)
|
| | | BuyCountList = list() #(vector<tagMCFlashGiftbagBuyCount> BuyCountList)//礼包购买次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x13
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temBuyCountList = tagMCFlashGiftbagBuyCount()
|
| | | _pos = temBuyCountList.ReadData(_lpData, _pos)
|
| | | self.BuyCountList.append(temBuyCountList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x13
|
| | | self.ActNum = 0
|
| | | self.Count = 0
|
| | | self.BuyCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BuyCountList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | Count:%d,
|
| | | BuyCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFlashGiftbagPlayerInfo=tagMCFlashGiftbagPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashGiftbagPlayerInfo.Head.Cmd,m_NAtagMCFlashGiftbagPlayerInfo.Head.SubCmd))] = m_NAtagMCFlashGiftbagPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 18 限时抢购活动玩家预约信息 #tagMCFlashSaleAppointmentInfo
|
| | |
|
| | | class tagMCFlashSaleAppointmentState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GoodsMark", c_int), # 商品标识
|
| | | ("State", 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.GoodsMark = 0
|
| | | self.State = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFlashSaleAppointmentState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 18 限时抢购活动玩家预约信息 //tagMCFlashSaleAppointmentInfo:
|
| | | GoodsMark:%d,
|
| | | State:%d
|
| | | '''\
|
| | | %(
|
| | | self.GoodsMark,
|
| | | self.State
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashSaleAppointmentInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | IsAll = 0 #(BYTE IsAll)// 是否全部
|
| | | GoodsCount = 0 #(WORD GoodsCount)// 商品数
|
| | | GoodsList = list() #(vector<tagMCFlashSaleAppointmentState> GoodsList)// 预约的商品
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x18
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.IsAll,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GoodsCount,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.GoodsCount):
|
| | | temGoodsList = tagMCFlashSaleAppointmentState()
|
| | | _pos = temGoodsList.ReadData(_lpData, _pos)
|
| | | self.GoodsList.append(temGoodsList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x18
|
| | | self.ActNum = 0
|
| | | self.IsAll = 0
|
| | | self.GoodsCount = 0
|
| | | self.GoodsList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | for i in range(self.GoodsCount):
|
| | | length += self.GoodsList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteBYTE(data, self.IsAll)
|
| | | data = CommFunc.WriteWORD(data, self.GoodsCount)
|
| | | for i in range(self.GoodsCount):
|
| | | data = CommFunc.WriteString(data, self.GoodsList[i].GetLength(), self.GoodsList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | IsAll:%d,
|
| | | GoodsCount:%d,
|
| | | GoodsList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.IsAll,
|
| | | self.GoodsCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFlashSaleAppointmentInfo=tagMCFlashSaleAppointmentInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleAppointmentInfo.Head.Cmd,m_NAtagMCFlashSaleAppointmentInfo.Head.SubCmd))] = m_NAtagMCFlashSaleAppointmentInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 17 限时抢购活动信息 #tagMCFlashSaleInfo
|
| | |
|
| | | class tagMCFlashSaleGiftbag(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("GiftID", c_int), #商城表的物品ID
|
| | | ("BuyCountLimit", c_ubyte), #限购数
|
| | | ("ServerBuyCountLimit", c_ushort), #全服限购数
|
| | | ("MoneyType", c_ubyte), #消耗货币类型
|
| | | ("MoneyNumber", c_int), #消耗货币数量
|
| | | ("MoneyOriginal", c_int), #原价
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", 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.GiftID = 0
|
| | | self.BuyCountLimit = 0
|
| | | self.ServerBuyCountLimit = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyNumber = 0
|
| | | self.MoneyOriginal = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFlashSaleGiftbag)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 17 限时抢购活动信息 //tagMCFlashSaleInfo:
|
| | | GiftID:%d,
|
| | | BuyCountLimit:%d,
|
| | | ServerBuyCountLimit:%d,
|
| | | MoneyType:%d,
|
| | | MoneyNumber:%d,
|
| | | MoneyOriginal:%d,
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.GiftID,
|
| | | self.BuyCountLimit,
|
| | | self.ServerBuyCountLimit,
|
| | | self.MoneyType,
|
| | | self.MoneyNumber,
|
| | | self.MoneyOriginal,
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashSaleShop(Structure):
|
| | | DayIndex = 0 #(BYTE DayIndex)// 活动第几天
|
| | | TimeIndex = 0 #(BYTE TimeIndex)// 第几个时间段
|
| | | GiftbagCount = 0 #(BYTE GiftbagCount)// 商店礼包数
|
| | | GiftbagInfo = list() #(vector<tagMCFlashSaleGiftbag> GiftbagInfo)// 礼包信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.DayIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TimeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftbagCount):
|
| | | temGiftbagInfo = tagMCFlashSaleGiftbag()
|
| | | _pos = temGiftbagInfo.ReadData(_lpData, _pos)
|
| | | self.GiftbagInfo.append(temGiftbagInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.DayIndex = 0
|
| | | self.TimeIndex = 0
|
| | | self.GiftbagCount = 0
|
| | | self.GiftbagInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.GiftbagCount):
|
| | | length += self.GiftbagInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.DayIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.TimeIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.GiftbagCount)
|
| | | for i in range(self.GiftbagCount):
|
| | | data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | DayIndex:%d,
|
| | | TimeIndex:%d,
|
| | | GiftbagCount:%d,
|
| | | GiftbagInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.DayIndex,
|
| | | self.TimeIndex,
|
| | | self.GiftbagCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashSaleTime(Structure):
|
| | | StartTime = "" #(char StartTime[5])// 开始时间 H:M
|
| | | EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.StartTime = ""
|
| | | self.EndtTime = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 5
|
| | | length += 5
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 5, self.StartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.EndtTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | StartTime:%s,
|
| | | EndtTime:%s
|
| | | '''\
|
| | | %(
|
| | | self.StartTime,
|
| | | self.EndtTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFlashSaleInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCFlashSaleTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ShopCount = 0 #(BYTE ShopCount)// 商店数
|
| | | ShopInfo = list() #(vector<tagMCFlashSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x17
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCFlashSaleTime()
|
| | | _pos = temActivityTime.ReadData(_lpData, _pos)
|
| | | self.ActivityTime.append(temActivityTime)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ShopCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ShopCount):
|
| | | temShopInfo = tagMCFlashSaleShop()
|
| | | _pos = temShopInfo.ReadData(_lpData, _pos)
|
| | | self.ShopInfo.append(temShopInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x17
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.ShopCount = 0
|
| | | self.ShopInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ShopCount):
|
| | | length += self.ShopInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ShopCount)
|
| | | for i in range(self.ShopCount):
|
| | | data = CommFunc.WriteString(data, self.ShopInfo[i].GetLength(), self.ShopInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | ShopCount:%d,
|
| | | ShopInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.ShopCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFlashSaleInfo=tagMCFlashSaleInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFlashSaleInfo.Head.Cmd,m_NAtagMCFlashSaleInfo.Head.SubCmd))] = m_NAtagMCFlashSaleInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1F 幸运鉴宝活动信息 #tagMCLuckyTreasureInfo
|
| | |
|
| | | class tagMCLuckyTreasureItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), # 物品数量
|
| | | ("IsBind", 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.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCLuckyTreasureItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 1F 幸运鉴宝活动信息 //tagMCLuckyTreasureInfo:
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCLuckyTreasureInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | LuckyPoint = 0 #(WORD LuckyPoint)// 总幸运值
|
| | | Count = 0 #(WORD Count)// 物品数
|
| | | ItemList = list() #(vector<tagMCLuckyTreasureItem> ItemList)// 随机库物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x1F
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LuckyPoint,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temItemList = tagMCLuckyTreasureItem()
|
| | | _pos = temItemList.ReadData(_lpData, _pos)
|
| | | self.ItemList.append(temItemList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x1F
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.LuckyPoint = 0
|
| | | self.Count = 0
|
| | | self.ItemList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 2
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ItemList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ResetType)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteWORD(data, self.LuckyPoint)
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ItemList[i].GetLength(), self.ItemList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | LuckyPoint:%d,
|
| | | Count:%d,
|
| | | ItemList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.LuckyPoint,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCLuckyTreasureInfo=tagMCLuckyTreasureInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureInfo.Head.Cmd,m_NAtagMCLuckyTreasureInfo.Head.SubCmd))] = m_NAtagMCLuckyTreasureInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 1E 幸运鉴宝结果信息 #tagMCLuckyTreasureResultInfo
|
| | |
|
| | | class tagMCLuckyTreasureResultInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("LuckyPoint", c_ushort), # 当前幸运点
|
| | | ("HasFree", c_ubyte), # 是否免费过
|
| | | ("ItemID", c_int), # 物品ID
|
| | | ("ItemCnt", c_ushort), #物品数量
|
| | | ("IsBind", c_ubyte), # 是否绑定
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x1E
|
| | | 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 = 0x1E
|
| | | self.LuckyPoint = 0
|
| | | self.HasFree = 0
|
| | | self.ItemID = 0
|
| | | self.ItemCnt = 0
|
| | | self.IsBind = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCLuckyTreasureResultInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 1E 幸运鉴宝结果信息 //tagMCLuckyTreasureResultInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | LuckyPoint:%d,
|
| | | HasFree:%d,
|
| | | ItemID:%d,
|
| | | ItemCnt:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.LuckyPoint,
|
| | | self.HasFree,
|
| | | self.ItemID,
|
| | | self.ItemCnt,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCLuckyTreasureResultInfo=tagMCLuckyTreasureResultInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLuckyTreasureResultInfo.Cmd,m_NAtagMCLuckyTreasureResultInfo.SubCmd))] = m_NAtagMCLuckyTreasureResultInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 23 新仙界盛典全民来嗨玩家信息 #tagMCNewAllPeoplePartyInfo
|
| | |
|
| | | class tagMCNewAllPeoplePartyCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ActID", c_int), #活动ID
|
| | | ("CurTimes", c_ushort), #已完成次数
|
| | | ]
|
| | |
|
| | | 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.ActID = 0
|
| | | self.CurTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCNewAllPeoplePartyCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 23 新仙界盛典全民来嗨玩家信息 //tagMCNewAllPeoplePartyInfo:
|
| | | ActID:%d,
|
| | | CurTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActID,
|
| | | self.CurTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCNewAllPeoplePartyInfo(Structure):
|
| | | Head = tagHead()
|
| | | CurPoint = 0 #(DWORD CurPoint)//当前总点数
|
| | | AwardRecord = 0 #(DWORD AwardRecord)//领奖记录 按奖励索引二进制位存储是否已领取
|
| | | Count = 0 #(BYTE Count)
|
| | | BuyCountList = list() #(vector<tagMCNewAllPeoplePartyCount> BuyCountList)//活动完成次数信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x23
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.CurPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.AwardRecord,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temBuyCountList = tagMCNewAllPeoplePartyCount()
|
| | | _pos = temBuyCountList.ReadData(_lpData, _pos)
|
| | | self.BuyCountList.append(temBuyCountList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x23
|
| | | self.CurPoint = 0
|
| | | self.AwardRecord = 0
|
| | | self.Count = 0
|
| | | self.BuyCountList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.BuyCountList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.CurPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.AwardRecord)
|
| | | data = CommFunc.WriteBYTE(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.BuyCountList[i].GetLength(), self.BuyCountList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | CurPoint:%d,
|
| | | AwardRecord:%d,
|
| | | Count:%d,
|
| | | BuyCountList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.CurPoint,
|
| | | self.AwardRecord,
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCNewAllPeoplePartyInfo=tagMCNewAllPeoplePartyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewAllPeoplePartyInfo.Head.Cmd,m_NAtagMCNewAllPeoplePartyInfo.Head.SubCmd))] = m_NAtagMCNewAllPeoplePartyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 22 新仙界盛典充值大礼 #tagMCNewXJSDRecharge
|
| | |
|
| | | class tagMCNewXJSDRecharge(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("State", c_ubyte), #0-不可领 1-可领 2-已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x22
|
| | | 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 = 0x22
|
| | | self.State = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCNewXJSDRecharge)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 22 新仙界盛典充值大礼 //tagMCNewXJSDRecharge:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | State:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.State
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCNewXJSDRecharge=tagMCNewXJSDRecharge()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCNewXJSDRecharge.Cmd,m_NAtagMCNewXJSDRecharge.SubCmd))] = m_NAtagMCNewXJSDRecharge
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 11 限时特惠活动信息 #tagMCSpringSaleInfo
|
| | |
|
| | | class tagMCSpringSaleItem(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ItemID", c_int), |
| | | ("ItemCount", c_ushort), |
| | | ("IsBind", c_ubyte), |
| | | ("IsMainItem", 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.ItemID = 0
|
| | | self.ItemCount = 0
|
| | | self.IsBind = 0
|
| | | self.IsMainItem = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCSpringSaleItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 11 限时特惠活动信息 //tagMCSpringSaleInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d,
|
| | | IsMainItem:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind,
|
| | | self.IsMainItem
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSpringSaleGiftbag(Structure):
|
| | | GiftID = 0 #(DWORD GiftID)//商城表的物品ID
|
| | | BuyCountLimit = 0 #(BYTE BuyCountLimit)//限购数
|
| | | MoneyType = 0 #(BYTE MoneyType)//消耗货币类型
|
| | | MoneyNumber = 0 #(DWORD MoneyNumber)//消耗货币数量
|
| | | MoneyOriginal = 0 #(DWORD MoneyOriginal)//原价
|
| | | GiftItemCount = 0 #(BYTE GiftItemCount)// 礼包物品数
|
| | | ItemInfo = list() #(vector<tagMCSpringSaleItem> ItemInfo)// 物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.GiftID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BuyCountLimit,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MoneyNumber,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MoneyOriginal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GiftItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftItemCount):
|
| | | temItemInfo = tagMCSpringSaleItem()
|
| | | _pos = temItemInfo.ReadData(_lpData, _pos)
|
| | | self.ItemInfo.append(temItemInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.GiftID = 0
|
| | | self.BuyCountLimit = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyNumber = 0
|
| | | self.MoneyOriginal = 0
|
| | | self.GiftItemCount = 0
|
| | | self.ItemInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.GiftItemCount):
|
| | | length += self.ItemInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.GiftID)
|
| | | data = CommFunc.WriteBYTE(data, self.BuyCountLimit)
|
| | | data = CommFunc.WriteBYTE(data, self.MoneyType)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyNumber)
|
| | | data = CommFunc.WriteDWORD(data, self.MoneyOriginal)
|
| | | data = CommFunc.WriteBYTE(data, self.GiftItemCount)
|
| | | for i in range(self.GiftItemCount):
|
| | | data = CommFunc.WriteString(data, self.ItemInfo[i].GetLength(), self.ItemInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | GiftID:%d,
|
| | | BuyCountLimit:%d,
|
| | | MoneyType:%d,
|
| | | MoneyNumber:%d,
|
| | | MoneyOriginal:%d,
|
| | | GiftItemCount:%d,
|
| | | ItemInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.GiftID,
|
| | | self.BuyCountLimit,
|
| | | self.MoneyType,
|
| | | self.MoneyNumber,
|
| | | self.MoneyOriginal,
|
| | | self.GiftItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSpringSaleShop(Structure):
|
| | | GiftbagCount = 0 #(BYTE GiftbagCount)// 商店礼包数
|
| | | GiftbagInfo = list() #(vector<tagMCSpringSaleGiftbag> GiftbagInfo)// 礼包信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GiftbagCount):
|
| | | temGiftbagInfo = tagMCSpringSaleGiftbag()
|
| | | _pos = temGiftbagInfo.ReadData(_lpData, _pos)
|
| | | self.GiftbagInfo.append(temGiftbagInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.GiftbagCount = 0
|
| | | self.GiftbagInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | for i in range(self.GiftbagCount):
|
| | | length += self.GiftbagInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.GiftbagCount)
|
| | | for i in range(self.GiftbagCount):
|
| | | data = CommFunc.WriteString(data, self.GiftbagInfo[i].GetLength(), self.GiftbagInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | GiftbagCount:%d,
|
| | | GiftbagInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.GiftbagCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSpringSaleTime(Structure):
|
| | | StartTime = "" #(char StartTime[5])// 开始时间 H:M
|
| | | EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.StartTime = ""
|
| | | self.EndtTime = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 5
|
| | | length += 5
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 5, self.StartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.EndtTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | StartTime:%s,
|
| | | EndtTime:%s
|
| | | '''\
|
| | | %(
|
| | | self.StartTime,
|
| | | self.EndtTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCSpringSaleInfo(Structure):
|
| | | Head = tagHead()
|
| | | ActNum = 0 #(BYTE ActNum)//活动编号
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | AdvanceMinutes = 0 #(WORD AdvanceMinutes)// 提前显示分钟
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagMCSpringSaleTime> ActivityTime)//活动时间
|
| | | IsDayReset = 0 #(BYTE IsDayReset)//是否每天重置
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | ShopCount = 0 #(BYTE ShopCount)// 商店数
|
| | | ShopInfo = list() #(vector<tagMCSpringSaleShop> ShopInfo)// 商店信息, 当有多个商店且有多个活动时间段时则每个时间段对应一个商店;
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x11
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ActNum,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.AdvanceMinutes,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagMCSpringSaleTime()
|
| | | _pos = temActivityTime.ReadData(_lpData, _pos)
|
| | | self.ActivityTime.append(temActivityTime)
|
| | | self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ShopCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ShopCount):
|
| | | temShopInfo = tagMCSpringSaleShop()
|
| | | _pos = temShopInfo.ReadData(_lpData, _pos)
|
| | | self.ShopInfo.append(temShopInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAA
|
| | | self.Head.SubCmd = 0x11
|
| | | self.ActNum = 0
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.AdvanceMinutes = 0
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.IsDayReset = 0
|
| | | self.LimitLV = 0
|
| | | self.ShopCount = 0
|
| | | self.ShopInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 10
|
| | | length += 10
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.ShopCount):
|
| | | length += self.ShopInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ActNum)
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteWORD(data, self.AdvanceMinutes)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsDayReset)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteBYTE(data, self.ShopCount)
|
| | | for i in range(self.ShopCount):
|
| | | data = CommFunc.WriteString(data, self.ShopInfo[i].GetLength(), self.ShopInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ActNum:%d,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | AdvanceMinutes:%d,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | IsDayReset:%d,
|
| | | LimitLV:%d,
|
| | | ShopCount:%d,
|
| | | ShopInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ActNum,
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.AdvanceMinutes,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.IsDayReset,
|
| | | self.LimitLV,
|
| | | self.ShopCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCSpringSaleInfo=tagMCSpringSaleInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSpringSaleInfo.Head.Cmd,m_NAtagMCSpringSaleInfo.Head.SubCmd))] = m_NAtagMCSpringSaleInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 16 通知超值礼包信息 #tagMCSuperGiftInfo
|
| | |
|
| | | class tagMCSuperGiftInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCSuperGiftInfo=tagMCSuperGiftInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSuperGiftInfo.Cmd,m_NAtagMCSuperGiftInfo.SubCmd))] = m_NAtagMCSuperGiftInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #AA 01 累计登陆天数信息 #tagMCTotalLoginDayCntInfo
|
| | |
|
| | | class tagMCTotalLoginDayCntInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayCnt", c_ushort), #累计登陆天数
|
| | | ("AwardInfo", c_ushort), #登陆领取情况
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x01
|
| | | self.DayCnt = 0
|
| | | self.AwardInfo = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTotalLoginDayCntInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//AA 01 累计登陆天数信息 //tagMCTotalLoginDayCntInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayCnt:%d,
|
| | | AwardInfo:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayCnt,
|
| | | self.AwardInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTotalLoginDayCntInfo=tagMCTotalLoginDayCntInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalLoginDayCntInfo.Cmd,m_NAtagMCTotalLoginDayCntInfo.SubCmd))] = m_NAtagMCTotalLoginDayCntInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCTotalRechargePlayerInfo=tagMCTotalRechargePlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTotalRechargePlayerInfo.Cmd,m_NAtagMCTotalRechargePlayerInfo.SubCmd))] = m_NAtagMCTotalRechargePlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 14 仙界盛典充值大礼 #tagMCXJSDRecharge
|
| | |
|
| | | class tagMCXJSDRecharge(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("State", c_ubyte), #0-不可领 1-可领 2-已领取
|
| | | ("CTGTotal", c_int), #本次活动已累计充值,单位元
|
| | | ("FireworksBuyCount", c_ushort), #已购买高级烟花数
|
| | | ("FirewordsScore", c_int), #当前累计所有烟花总积分
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | 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 = 0xAA
|
| | | self.SubCmd = 0x14
|
| | | self.State = 0
|
| | | self.CTGTotal = 0
|
| | | self.FireworksBuyCount = 0
|
| | | self.FirewordsScore = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCXJSDRecharge)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 14 仙界盛典充值大礼 //tagMCXJSDRecharge:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | State:%d,
|
| | | CTGTotal:%d,
|
| | | FireworksBuyCount:%d,
|
| | | FirewordsScore:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.State,
|
| | | self.CTGTotal,
|
| | | self.FireworksBuyCount,
|
| | | self.FirewordsScore
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCXJSDRecharge=tagMCXJSDRecharge()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXJSDRecharge.Cmd,m_NAtagMCXJSDRecharge.SubCmd))] = m_NAtagMCXJSDRecharge
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagGCCrossActEnd=tagGCCrossActEnd()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossActEnd.Head.Cmd,m_NAtagGCCrossActEnd.Head.SubCmd))] = m_NAtagGCCrossActEnd
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 06 多倍经验活动信息 #tagGCMultiExpRateInfo
|
| | |
|
| | | class tagGCMultiExpRateTime(Structure):
|
| | | StartTime = "" #(char StartTime[5])// 开始时间 H:M
|
| | | EndtTime = "" #(char EndtTime[5])// 结束时间 H:M
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.StartTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | self.EndtTime,_pos = CommFunc.ReadString(_lpData, _pos,5)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.StartTime = ""
|
| | | self.EndtTime = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 5
|
| | | length += 5
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 5, self.StartTime)
|
| | | data = CommFunc.WriteString(data, 5, self.EndtTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | StartTime:%s,
|
| | | EndtTime:%s
|
| | | '''\
|
| | | %(
|
| | | self.StartTime,
|
| | | self.EndtTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCMultiExpRateInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | ActivityTimeCount = 0 #(BYTE ActivityTimeCount)
|
| | | ActivityTime = list() #(vector<tagGCMultiExpRateTime> ActivityTime)//活动时间
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | AddExpRate = 0 #(DWORD AddExpRate)// 增加的经验倍率,万分率
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.ActivityTimeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | temActivityTime = tagGCMultiExpRateTime()
|
| | | _pos = temActivityTime.ReadData(_lpData, _pos)
|
| | | self.ActivityTime.append(temActivityTime)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AddExpRate,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x06
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ActivityTimeCount = 0
|
| | | self.ActivityTime = list()
|
| | | self.LimitLV = 0
|
| | | self.AddExpRate = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | for i in range(self.ActivityTimeCount):
|
| | | length += self.ActivityTime[i].GetLength()
|
| | | length += 2
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.ActivityTimeCount)
|
| | | for i in range(self.ActivityTimeCount):
|
| | | data = CommFunc.WriteString(data, self.ActivityTime[i].GetLength(), self.ActivityTime[i].GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteDWORD(data, self.AddExpRate)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ActivityTimeCount:%d,
|
| | | ActivityTime:%s,
|
| | | LimitLV:%d,
|
| | | AddExpRate:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ActivityTimeCount,
|
| | | "...",
|
| | | self.LimitLV,
|
| | | self.AddExpRate
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMultiExpRateInfo=tagGCMultiExpRateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiExpRateInfo.Head.Cmd,m_NAtagGCMultiExpRateInfo.Head.SubCmd))] = m_NAtagGCMultiExpRateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 0A 多倍修行点活动信息 #tagGCMultiRealmPointInfo
|
| | |
|
| | | class tagGCMultiRealmPointInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartDate = "" #(char StartDate[10])// 开始日期 y-m-d
|
| | | EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d
|
| | | Multiple = 0 #(BYTE Multiple)// 倍数
|
| | | LimitLV = 0 #(WORD LimitLV)// 限制等级
|
| | | LimitPoint = 0 #(DWORD LimitPoint)// 限制获得修行点
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x0A
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10)
|
| | | self.Multiple,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.LimitPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAC
|
| | | self.Head.SubCmd = 0x0A
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.Multiple = 0
|
| | | self.LimitLV = 0
|
| | | self.LimitPoint = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 10, self.StartDate)
|
| | | data = CommFunc.WriteString(data, 10, self.EndtDate)
|
| | | data = CommFunc.WriteBYTE(data, self.Multiple)
|
| | | data = CommFunc.WriteWORD(data, self.LimitLV)
|
| | | data = CommFunc.WriteDWORD(data, self.LimitPoint)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | Multiple:%d,
|
| | | LimitLV:%d,
|
| | | LimitPoint:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.Multiple,
|
| | | self.LimitLV,
|
| | | self.LimitPoint
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCMultiRealmPointInfo=tagGCMultiRealmPointInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCMultiRealmPointInfo.Head.Cmd,m_NAtagGCMultiRealmPointInfo.Head.SubCmd))] = m_NAtagGCMultiRealmPointInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | class tagSCTravelInfo(Structure):
|
| | | Head = tagHead()
|
| | | Energy = 0 #(BYTE Energy)//剩余体力
|
| | | Energy = 0 #(DWORD Energy)//剩余体力
|
| | | EnergyTime = 0 #(DWORD EnergyTime)//上次恢复体力时间戳
|
| | | TravelCnt = 0 #(DWORD TravelCnt)//累计游历次数
|
| | | SceneryType = 0 #(BYTE SceneryType)//景观类型
|
| | |
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Energy,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | |
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | |
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.Energy)
|
| | | data = CommFunc.WriteDWORD(data, self.Energy)
|
| | | data = CommFunc.WriteDWORD(data, self.EnergyTime)
|
| | | data = CommFunc.WriteDWORD(data, self.TravelCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryType)
|
| | |
| | | # C2 03 跨服中心事件同步 #tagSSCrossCenterEvent
|
| | |
|
| | | class tagSSCrossCenterEvent(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ServerID", c_int), |
| | | ("ServerType", c_ubyte), #服务器类型
|
| | | ("EventValue", c_int), #事件值,yyyyMMddhh用于判断过天等
|
| | | ]
|
| | | Head = tagHead()
|
| | | ServerID = 0 #(DWORD ServerID)
|
| | | ServerType = 0 #(BYTE ServerType)//服务器类型
|
| | | EventValue = 0 #(DWORD EventValue)//事件值,yyyyMMddhh用于判断过天等
|
| | | GMLen = 0 #(BYTE GMLen)
|
| | | GMEvent = "" #(String GMEvent)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xC2
|
| | | self.SubCmd = 0x03
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EventValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.GMLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GMEvent,_pos = CommFunc.ReadString(_lpData, _pos,self.GMLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xC2
|
| | | self.SubCmd = 0x03
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x03
|
| | | self.ServerID = 0
|
| | | self.ServerType = 0
|
| | | self.EventValue = 0
|
| | | self.GMLen = 0
|
| | | self.GMEvent = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSSCrossCenterEvent)
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.GMEvent)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.ServerType)
|
| | | data = CommFunc.WriteDWORD(data, self.EventValue)
|
| | | data = CommFunc.WriteBYTE(data, self.GMLen)
|
| | | data = CommFunc.WriteString(data, self.GMLen, self.GMEvent)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// C2 03 跨服中心事件同步 //tagSSCrossCenterEvent:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ServerID:%d,
|
| | | ServerType:%d,
|
| | | EventValue:%d
|
| | | EventValue:%d,
|
| | | GMLen:%d,
|
| | | GMEvent:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Head.OutputString(),
|
| | | self.ServerID,
|
| | | self.ServerType,
|
| | | self.EventValue
|
| | | self.EventValue,
|
| | | self.GMLen,
|
| | | self.GMEvent
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSCrossCenterEvent=tagSSCrossCenterEvent()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCrossCenterEvent.Cmd,m_NAtagSSCrossCenterEvent.SubCmd))] = m_NAtagSSCrossCenterEvent
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCrossCenterEvent.Head.Cmd,m_NAtagSSCrossCenterEvent.Head.SubCmd))] = m_NAtagSSCrossCenterEvent
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 04 跨服GM命令 #tagSSGMCMD
|
| | |
|
| | | class tagSSGMCMD(Structure):
|
| | | Head = tagHead()
|
| | | FromServerID = 0 #(DWORD FromServerID)//哪个服发的
|
| | | ServerType = 0 #(BYTE ServerType)//服务器类型
|
| | | PlayerID = 0 #(DWORD PlayerID)//哪个玩家触发发送的
|
| | | CMDLen = 0 #(BYTE CMDLen)
|
| | | CMDStr = "" #(String CMDStr)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.FromServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.CMDLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.CMDStr,_pos = CommFunc.ReadString(_lpData, _pos,self.CMDLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x04
|
| | | self.FromServerID = 0
|
| | | self.ServerType = 0
|
| | | self.PlayerID = 0
|
| | | self.CMDLen = 0
|
| | | self.CMDStr = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.CMDStr)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FromServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.ServerType)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.CMDLen)
|
| | | data = CommFunc.WriteString(data, self.CMDLen, self.CMDStr)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FromServerID:%d,
|
| | | ServerType:%d,
|
| | | PlayerID:%d,
|
| | | CMDLen:%d,
|
| | | CMDStr:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FromServerID,
|
| | | self.ServerType,
|
| | | self.PlayerID,
|
| | | self.CMDLen,
|
| | | self.CMDStr
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSGMCMD=tagSSGMCMD()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSGMCMD.Head.Cmd,m_NAtagSSGMCMD.Head.SubCmd))] = m_NAtagSSGMCMD
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|