| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A3 19 分包下载奖励记录 #tagMCPackDownloadRecord
|
| | |
|
| | | class tagMCPackDownloadRecord(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Record", c_ubyte), # 0-未领取 1-已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA3
|
| | | self.SubCmd = 0x19
|
| | | 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 = 0x19
|
| | | self.Record = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCPackDownloadRecord)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 19 分包下载奖励记录 //tagMCPackDownloadRecord:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Record:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Record
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCPackDownloadRecord=tagMCPackDownloadRecord()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPackDownloadRecord.Cmd,m_NAtagMCPackDownloadRecord.SubCmd))] = m_NAtagMCPackDownloadRecord
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A3 0B 玩家等级奖励领取记录信息 #tagMCPlayerLVAwardGetRecord
|
| | |
|
| | | class tagMCPlayerLVAwardGetRecord(Structure):
|
| | |
| | | #------------------------------------------------------
|
| | | # A3 51 寻宝功能信息 #tagMCTreasureInfo
|
| | |
|
| | | class tagMCTreasureWish(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("WishID", c_ushort), # 寻宝物品库中的数据ID,注意不是库ID
|
| | | ("OutCnt", 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.WishID = 0
|
| | | self.OutCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTreasureWish)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A3 51 寻宝功能信息 //tagMCTreasureInfo:
|
| | | WishID:%d,
|
| | | OutCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.WishID,
|
| | | self.OutCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCTreasureGridLimit(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | |
| | | TreasureCntAward = 0 #(DWORD TreasureCntAward)//累计寻宝次数对应奖励领奖状态,按奖励记录索引二进制记录是否已领取
|
| | | GridLimitCnt = 0 #(BYTE GridLimitCnt)
|
| | | GridLimitCntList = list() #(vector<tagMCTreasureGridLimit> GridLimitCntList)//有限制抽取次数的格子次数信息
|
| | | WishCnt = 0 #(BYTE WishCnt)
|
| | | WishList = list() #(vector<tagMCTreasureWish> WishList)//心愿物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | temGridLimitCntList = tagMCTreasureGridLimit()
|
| | | _pos = temGridLimitCntList.ReadData(_lpData, _pos)
|
| | | self.GridLimitCntList.append(temGridLimitCntList)
|
| | | self.WishCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WishCnt):
|
| | | temWishList = tagMCTreasureWish()
|
| | | _pos = temWishList.ReadData(_lpData, _pos)
|
| | | self.WishList.append(temWishList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.TreasureCntAward = 0
|
| | | self.GridLimitCnt = 0
|
| | | self.GridLimitCntList = list()
|
| | | self.WishCnt = 0
|
| | | self.WishList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | |
| | | length += 1
|
| | | for i in range(self.GridLimitCnt):
|
| | | length += self.GridLimitCntList[i].GetLength()
|
| | | length += 1
|
| | | for i in range(self.WishCnt):
|
| | | length += self.WishList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.GridLimitCnt)
|
| | | for i in range(self.GridLimitCnt):
|
| | | data = CommFunc.WriteString(data, self.GridLimitCntList[i].GetLength(), self.GridLimitCntList[i].GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WishCnt)
|
| | | for i in range(self.WishCnt):
|
| | | data = CommFunc.WriteString(data, self.WishList[i].GetLength(), self.WishList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | |
| | | FreeCountToday:%d,
|
| | | TreasureCntAward:%d,
|
| | | GridLimitCnt:%d,
|
| | | GridLimitCntList:%s
|
| | | GridLimitCntList:%s,
|
| | | WishCnt:%d,
|
| | | WishList:%s
|
| | | '''\
|
| | | %(
|
| | | self.TreasureType,
|
| | |
| | | self.FreeCountToday,
|
| | | self.TreasureCntAward,
|
| | | self.GridLimitCnt,
|
| | | "...",
|
| | | self.WishCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 24 每日免费直购礼包信息 #tagMCDayFreeGoldGiftState
|
| | |
|
| | | class tagMCDayFreeGoldGiftState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("DayFreeGoldGiftState", c_ubyte), #每日免费直购礼包是否已领奖 0-未领 1-已领
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x24
|
| | | 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 = 0x24
|
| | | self.DayFreeGoldGiftState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCDayFreeGoldGiftState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 24 每日免费直购礼包信息 //tagMCDayFreeGoldGiftState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | DayFreeGoldGiftState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.DayFreeGoldGiftState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCDayFreeGoldGiftState=tagMCDayFreeGoldGiftState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDayFreeGoldGiftState.Cmd,m_NAtagMCDayFreeGoldGiftState.SubCmd))] = m_NAtagMCDayFreeGoldGiftState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 42 节日登录奖励活动信息 #tagMCFeastLoginInfo
|
| | |
|
| | | class tagMCFeastLoginDayAwardItem(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 04 创角在线充值特惠信息 #tagMCOnlineRechargeTH
|
| | |
|
| | | class tagMCOnlineRechargeTH(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("AwardState", c_ubyte), #是否已领取奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAA
|
| | | self.SubCmd = 0x04
|
| | | self.AwardState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCOnlineRechargeTH)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AA 04 创角在线充值特惠信息 //tagMCOnlineRechargeTH:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | AwardState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.AwardState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCOnlineRechargeTH=tagMCOnlineRechargeTH()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOnlineRechargeTH.Cmd,m_NAtagMCOnlineRechargeTH.SubCmd))] = m_NAtagMCOnlineRechargeTH
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AA 28 充值返利玩家活动信息 #tagMCRechargePrizePlayerInfo
|
| | |
|
| | | class tagMCRechargePrizeInfo(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 01 Boss首杀玩家奖励信息 #tagMCBossFirstKillStateInfo
|
| | | # AB 05 开服庆典信息 #tagSCOSACelebrationInfo
|
| | |
|
| | | class tagMCBossFirstKillState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("NPCID", c_int), |
| | | ("FKState", c_int), # 玩家该boss首杀相关状态,按位存:个位-玩家是否击杀过,十位-是否已领取首杀全服奖励,百位-是否已领取个人首杀奖励
|
| | | ]
|
| | |
|
| | | 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.NPCID = 0
|
| | | self.FKState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCBossFirstKillState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 01 Boss首杀玩家奖励信息 //tagMCBossFirstKillStateInfo:
|
| | | NPCID:%d,
|
| | | FKState:%d
|
| | | '''\
|
| | | %(
|
| | | self.NPCID,
|
| | | self.FKState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossFirstKillStateInfo(Structure):
|
| | | Head = tagHead()
|
| | | BossCount = 0 #(BYTE BossCount)
|
| | | FirstKillStateList = list() #(vector<tagMCBossFirstKillState> FirstKillStateList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x01
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.BossCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.BossCount):
|
| | | temFirstKillStateList = tagMCBossFirstKillState()
|
| | | _pos = temFirstKillStateList.ReadData(_lpData, _pos)
|
| | | self.FirstKillStateList.append(temFirstKillStateList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x01
|
| | | self.BossCount = 0
|
| | | self.FirstKillStateList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.BossCount):
|
| | | length += self.FirstKillStateList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.BossCount)
|
| | | for i in range(self.BossCount):
|
| | | data = CommFunc.WriteString(data, self.FirstKillStateList[i].GetLength(), self.FirstKillStateList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | BossCount:%d,
|
| | | FirstKillStateList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.BossCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossFirstKillStateInfo=tagMCBossFirstKillStateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossFirstKillStateInfo.Head.Cmd,m_NAtagMCBossFirstKillStateInfo.Head.SubCmd))] = m_NAtagMCBossFirstKillStateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 03 Boss复活玩家活动信息 #tagMCBossRebornPlayerInfo
|
| | |
|
| | | class tagMCBossRebornData(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("ActID", c_ubyte), #活动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.ActID = 0
|
| | | self.CurTimes = 0
|
| | | self.GotTimes = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCBossRebornData)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 03 Boss复活玩家活动信息 //tagMCBossRebornPlayerInfo:
|
| | | ActID:%d,
|
| | | CurTimes:%d,
|
| | | GotTimes:%d
|
| | | '''\
|
| | | %(
|
| | | self.ActID,
|
| | | self.CurTimes,
|
| | | self.GotTimes
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossRebornPlayerInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)//活动个数
|
| | | DataList = list() #(vector<tagMCBossRebornData> DataList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temDataList = tagMCBossRebornData()
|
| | | _pos = temDataList.ReadData(_lpData, _pos)
|
| | | self.DataList.append(temDataList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x03
|
| | | self.Count = 0
|
| | | self.DataList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.DataList[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.DataList[i].GetLength(), self.DataList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | DataList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossRebornPlayerInfo=tagMCBossRebornPlayerInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornPlayerInfo.Head.Cmd,m_NAtagMCBossRebornPlayerInfo.Head.SubCmd))] = m_NAtagMCBossRebornPlayerInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 04 Boss复活活动信息 #tagMCBossRebornInfo
|
| | |
|
| | | class tagMCBossRebornAwardItem(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(tagMCBossRebornAwardItem)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 04 Boss复活活动信息 //tagMCBossRebornInfo:
|
| | | ItemID:%d,
|
| | | ItemCount:%d,
|
| | | IsBind:%d
|
| | | '''\
|
| | | %(
|
| | | self.ItemID,
|
| | | self.ItemCount,
|
| | | self.IsBind
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossRebornTaskInfo(Structure):
|
| | | TaskID = 0 #(BYTE TaskID)// id
|
| | | TotalTimes = 0 #(BYTE TotalTimes)// 可完成总次数,0表示不限次数
|
| | | SingleTimes = 0 #(BYTE SingleTimes)// 单次领奖需要次数
|
| | | AwardItemCount = 0 #(BYTE AwardItemCount)// 奖励物品数
|
| | | AwardItem = list() #(vector<tagMCBossRebornAwardItem> AwardItem)// 奖励物品信息
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.TaskID,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TotalTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SingleTimes,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AwardItemCount):
|
| | | temAwardItem = tagMCBossRebornAwardItem()
|
| | | _pos = temAwardItem.ReadData(_lpData, _pos)
|
| | | self.AwardItem.append(temAwardItem)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.TaskID = 0
|
| | | self.TotalTimes = 0
|
| | | self.SingleTimes = 0
|
| | | self.AwardItemCount = 0
|
| | | self.AwardItem = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.AwardItemCount):
|
| | | length += self.AwardItem[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteBYTE(data, self.TaskID)
|
| | | data = CommFunc.WriteBYTE(data, self.TotalTimes)
|
| | | data = CommFunc.WriteBYTE(data, self.SingleTimes)
|
| | | data = CommFunc.WriteBYTE(data, self.AwardItemCount)
|
| | | for i in range(self.AwardItemCount):
|
| | | data = CommFunc.WriteString(data, self.AwardItem[i].GetLength(), self.AwardItem[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | TaskID:%d,
|
| | | TotalTimes:%d,
|
| | | SingleTimes:%d,
|
| | | AwardItemCount:%d,
|
| | | AwardItem:%s
|
| | | '''\
|
| | | %(
|
| | | self.TaskID,
|
| | | self.TotalTimes,
|
| | | self.SingleTimes,
|
| | | self.AwardItemCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCBossRebornInfo(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)// 限制等级
|
| | | TaskCnt = 0 #(BYTE TaskCnt)
|
| | | TaskInfo = list() #(vector<tagMCBossRebornTaskInfo> TaskInfo)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x04
|
| | | 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.TaskCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.TaskCnt):
|
| | | temTaskInfo = tagMCBossRebornTaskInfo()
|
| | | _pos = temTaskInfo.ReadData(_lpData, _pos)
|
| | | self.TaskInfo.append(temTaskInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xAB
|
| | | self.Head.SubCmd = 0x04
|
| | | self.StartDate = ""
|
| | | self.EndtDate = ""
|
| | | self.ResetType = 0
|
| | | self.LimitLV = 0
|
| | | self.TaskCnt = 0
|
| | | self.TaskInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 10
|
| | | length += 10
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | for i in range(self.TaskCnt):
|
| | | length += self.TaskInfo[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.WriteBYTE(data, self.TaskCnt)
|
| | | for i in range(self.TaskCnt):
|
| | | data = CommFunc.WriteString(data, self.TaskInfo[i].GetLength(), self.TaskInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartDate:%s,
|
| | | EndtDate:%s,
|
| | | ResetType:%d,
|
| | | LimitLV:%d,
|
| | | TaskCnt:%d,
|
| | | TaskInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartDate,
|
| | | self.EndtDate,
|
| | | self.ResetType,
|
| | | self.LimitLV,
|
| | | self.TaskCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCBossRebornInfo=tagMCBossRebornInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCBossRebornInfo.Head.Cmd,m_NAtagMCBossRebornInfo.Head.SubCmd))] = m_NAtagMCBossRebornInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AB 19 炼制奖励信息 #tagMCRefineGiftInfo
|
| | |
|
| | | class tagMCRefineGiftInfo(Structure):
|
| | | class tagSCOSACelebrationInfo(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ExpRefineStartTime", c_int), # 经验炼制活动开始时间
|
| | | ("MoneyRefineStartTime", c_int), # 金币炼制活动开始时间
|
| | | ("ExpRefineCnt", c_ubyte), # 经验已炼制次数
|
| | | ("MoneyRefineCnt", c_ubyte), # 金币已炼制次数
|
| | | ("PointTotal", c_int), # 累计庆典积分
|
| | | ("PointAward", c_int), # 积分阶段奖励记录,按阶段积分排序后索引二进制存储是否已领取
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x19
|
| | | self.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xAB
|
| | | self.SubCmd = 0x19
|
| | | self.ExpRefineStartTime = 0
|
| | | self.MoneyRefineStartTime = 0
|
| | | self.ExpRefineCnt = 0
|
| | | self.MoneyRefineCnt = 0
|
| | | self.SubCmd = 0x05
|
| | | self.PointTotal = 0
|
| | | self.PointAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCRefineGiftInfo)
|
| | | return sizeof(tagSCOSACelebrationInfo)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AB 19 炼制奖励信息 //tagMCRefineGiftInfo:
|
| | | DumpString = '''// AB 05 开服庆典信息 //tagSCOSACelebrationInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ExpRefineStartTime:%d,
|
| | | MoneyRefineStartTime:%d,
|
| | | ExpRefineCnt:%d,
|
| | | MoneyRefineCnt:%d
|
| | | PointTotal:%d,
|
| | | PointAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ExpRefineStartTime,
|
| | | self.MoneyRefineStartTime,
|
| | | self.ExpRefineCnt,
|
| | | self.MoneyRefineCnt
|
| | | self.PointTotal,
|
| | | self.PointAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRefineGiftInfo=tagMCRefineGiftInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRefineGiftInfo.Cmd,m_NAtagMCRefineGiftInfo.SubCmd))] = m_NAtagMCRefineGiftInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # AC 08 boss复活点数通知 #tagGCBossRebornPoint
|
| | |
|
| | | class tagGCBossRebornPoint(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Point", c_int), # 复活点数
|
| | | ("TotalPoint", c_int), # 复活总点数
|
| | | ("RebornCnt", c_ushort), # 今日已复活次数
|
| | | ("TotalRebornCnt", c_ushort), # 每日可复活总次数,0为不限制
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xAC
|
| | | self.SubCmd = 0x08
|
| | | 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 = 0xAC
|
| | | self.SubCmd = 0x08
|
| | | self.Point = 0
|
| | | self.TotalPoint = 0
|
| | | self.RebornCnt = 0
|
| | | self.TotalRebornCnt = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCBossRebornPoint)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// AC 08 boss复活点数通知 //tagGCBossRebornPoint:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Point:%d,
|
| | | TotalPoint:%d,
|
| | | RebornCnt:%d,
|
| | | TotalRebornCnt:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Point,
|
| | | self.TotalPoint,
|
| | | self.RebornCnt,
|
| | | self.TotalRebornCnt
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCBossRebornPoint=tagGCBossRebornPoint()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCBossRebornPoint.Cmd,m_NAtagGCBossRebornPoint.SubCmd))] = m_NAtagGCBossRebornPoint
|
| | | m_NAtagSCOSACelebrationInfo=tagSCOSACelebrationInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCOSACelebrationInfo.Cmd,m_NAtagSCOSACelebrationInfo.SubCmd))] = m_NAtagSCOSACelebrationInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 27 活跃放置信息 #tagMCActivityPlaceInfo
|
| | |
|
| | | class tagMCActivityPlaceInfo(Structure):
|
| | | Head = tagHead()
|
| | | StartTime = 0 #(DWORD StartTime)// 开始探索time时间戳,完成一次探索会自动下一次探索并更新该时间
|
| | | PlaceCount = 0 #(BYTE PlaceCount)// 剩余未完成探索次数
|
| | | RewardCount = 0 #(BYTE RewardCount)// 累计未领取探索奖励次数
|
| | | RewardLen = 0 #(BYTE RewardLen)
|
| | | RewardInfo = "" #(String RewardInfo)//累计未领取探索奖励 [[itemID, count], ...]
|
| | | TodayExp = 0 #(DWORD TodayExp)
|
| | | TodayExpPoint = 0 #(DWORD TodayExpPoint)
|
| | | YestordayExp = 0 #(DWORD YestordayExp)
|
| | | YestordayExpPoint = 0 #(DWORD YestordayExpPoint)
|
| | | TotalCount = 0 #(DWORD TotalCount)// 累计活跃放置次数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x27
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.StartTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlaceCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RewardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RewardLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.RewardInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.RewardLen)
|
| | | self.TodayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TodayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.YestordayExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.YestordayExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TotalCount,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x27
|
| | | self.StartTime = 0
|
| | | self.PlaceCount = 0
|
| | | self.RewardCount = 0
|
| | | self.RewardLen = 0
|
| | | self.RewardInfo = ""
|
| | | self.TodayExp = 0
|
| | | self.TodayExpPoint = 0
|
| | | self.YestordayExp = 0
|
| | | self.YestordayExpPoint = 0
|
| | | self.TotalCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.RewardInfo)
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.StartTime)
|
| | | data = CommFunc.WriteBYTE(data, self.PlaceCount)
|
| | | data = CommFunc.WriteBYTE(data, self.RewardCount)
|
| | | data = CommFunc.WriteBYTE(data, self.RewardLen)
|
| | | data = CommFunc.WriteString(data, self.RewardLen, self.RewardInfo)
|
| | | data = CommFunc.WriteDWORD(data, self.TodayExp)
|
| | | data = CommFunc.WriteDWORD(data, self.TodayExpPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.YestordayExp)
|
| | | data = CommFunc.WriteDWORD(data, self.YestordayExpPoint)
|
| | | data = CommFunc.WriteDWORD(data, self.TotalCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | StartTime:%d,
|
| | | PlaceCount:%d,
|
| | | RewardCount:%d,
|
| | | RewardLen:%d,
|
| | | RewardInfo:%s,
|
| | | TodayExp:%d,
|
| | | TodayExpPoint:%d,
|
| | | YestordayExp:%d,
|
| | | YestordayExpPoint:%d,
|
| | | TotalCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.StartTime,
|
| | | self.PlaceCount,
|
| | | self.RewardCount,
|
| | | self.RewardLen,
|
| | | self.RewardInfo,
|
| | | self.TodayExp,
|
| | | self.TodayExpPoint,
|
| | | self.YestordayExp,
|
| | | self.YestordayExpPoint,
|
| | | self.TotalCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCActivityPlaceInfo=tagMCActivityPlaceInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActivityPlaceInfo.Head.Cmd,m_NAtagMCActivityPlaceInfo.Head.SubCmd))] = m_NAtagMCActivityPlaceInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 01 新增协助 #tagGCAssistInfoList
|
| | |
|
| | | class tagGCAssistInfo(Structure):
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)//等级
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MapID = 0 #(DWORD MapID)
|
| | | LineID = 0 #(DWORD LineID)
|
| | | NPCID = 0 #(DWORD NPCID)
|
| | | ExDataLen = 0 #(WORD ExDataLen)
|
| | | ExData = "" #(String ExData)//其他自定义数据
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.AssistGUID = ""
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | self.NPCID = 0
|
| | | self.ExDataLen = 0
|
| | | self.ExData = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 40
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ExData)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.LineID)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.ExDataLen)
|
| | | data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | AssistGUID:%s,
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MapID:%d,
|
| | | LineID:%d,
|
| | | NPCID:%d,
|
| | | ExDataLen:%d,
|
| | | ExData:%s
|
| | | '''\
|
| | | %(
|
| | | self.AssistGUID,
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MapID,
|
| | | self.LineID,
|
| | | self.NPCID,
|
| | | self.ExDataLen,
|
| | | self.ExData
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCAssistInfoList(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | AssistInfoList = list() #(vector<tagGCAssistInfo> AssistInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x01
|
| | | 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):
|
| | | temAssistInfoList = tagGCAssistInfo()
|
| | | _pos = temAssistInfoList.ReadData(_lpData, _pos)
|
| | | self.AssistInfoList.append(temAssistInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x01
|
| | | self.Count = 0
|
| | | self.AssistInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.AssistInfoList[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.AssistInfoList[i].GetLength(), self.AssistInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | AssistInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCAssistInfoList=tagGCAssistInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistInfoList.Head.Cmd,m_NAtagGCAssistInfoList.Head.SubCmd))] = m_NAtagGCAssistInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 03 正在进行中的协助 #tagGCAssistingInfo
|
| | |
|
| | | class tagGCAssistingInfo(Structure):
|
| | | Head = tagHead()
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x03
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x03
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCAssistingInfo=tagGCAssistingInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistingInfo.Head.Cmd,m_NAtagGCAssistingInfo.Head.SubCmd))] = m_NAtagGCAssistingInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 08 协助结束 #tagGCAssistOver
|
| | |
|
| | | class tagGCAssistOver(Structure):
|
| | | Head = tagHead()
|
| | | IsTagPlayerReason = 0 #(BYTE IsTagPlayerReason)//是否发布方原因
|
| | | ReasonLen = 0 #(BYTE ReasonLen)
|
| | | Reason = "" #(String Reason)//原因
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x08
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.IsTagPlayerReason,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ReasonLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Reason,_pos = CommFunc.ReadString(_lpData, _pos,self.ReasonLen)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x08
|
| | | self.IsTagPlayerReason = 0
|
| | | self.ReasonLen = 0
|
| | | self.Reason = ""
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 1
|
| | | length += len(self.Reason)
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.IsTagPlayerReason)
|
| | | data = CommFunc.WriteBYTE(data, self.ReasonLen)
|
| | | data = CommFunc.WriteString(data, self.ReasonLen, self.Reason)
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | IsTagPlayerReason:%d,
|
| | | ReasonLen:%d,
|
| | | Reason:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.IsTagPlayerReason,
|
| | | self.ReasonLen,
|
| | | self.Reason,
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCAssistOver=tagGCAssistOver()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCAssistOver.Head.Cmd,m_NAtagGCAssistOver.Head.SubCmd))] = m_NAtagGCAssistOver
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 06 可接收协助感谢礼物个数 #tagGCCanGetAssistThanksGiftCount
|
| | |
|
| | | class tagGCCanGetAssistThanksGiftCount(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("CanGetCount", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x06
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | | self.Clear()
|
| | | memmove(addressof(self), stringData[_pos:], self.GetLength())
|
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x06
|
| | | self.CanGetCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCCanGetAssistThanksGiftCount)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 06 可接收协助感谢礼物个数 //tagGCCanGetAssistThanksGiftCount:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | CanGetCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.CanGetCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCCanGetAssistThanksGiftCount=tagGCCanGetAssistThanksGiftCount()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCanGetAssistThanksGiftCount.Cmd,m_NAtagGCCanGetAssistThanksGiftCount.SubCmd))] = m_NAtagGCCanGetAssistThanksGiftCount
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 02 删除协助 #tagGCClearAssist
|
| | |
|
| | | class tagGCClearAssist(Structure):
|
| | | Head = tagHead()
|
| | | AssistGUID = "" #(char AssistGUID[40])//协助GUID
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x02
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.AssistGUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x02
|
| | | self.AssistGUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteString(data, 40, self.AssistGUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | AssistGUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.AssistGUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCClearAssist=tagGCClearAssist()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCClearAssist.Head.Cmd,m_NAtagGCClearAssist.Head.SubCmd))] = m_NAtagGCClearAssist
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B0 25 家族悬赏任务奖励领取情况 #tagFamilyArrestAwardReceiveState
|
| | |
|
| | | class tagFamilyArrestAwardReceiveState(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("ReceiveState", c_int), #悬赏任务奖励领取情况
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x25
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x25
|
| | | self.ReceiveState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagFamilyArrestAwardReceiveState)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//B0 25 家族悬赏任务奖励领取情况 //tagFamilyArrestAwardReceiveState:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | ReceiveState:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.ReceiveState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagFamilyArrestAwardReceiveState=tagFamilyArrestAwardReceiveState()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestAwardReceiveState.Cmd,m_NAtagFamilyArrestAwardReceiveState.SubCmd))] = m_NAtagFamilyArrestAwardReceiveState
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #B0 26 家族悬赏任务完成情况 #tagFamilyArrestOverStateInfo
|
| | |
|
| | | class tagFamilyArrestOverState(Structure):
|
| | | ID = 0 #(DWORD ID)//悬赏任务ID
|
| | | NameLen = 0 #(WORD NameLen)//名字长度
|
| | | Name = "" #(String Name)//size = NameLen
|
| | | OverState = 0 #(DWORD OverState)//任务完成情况
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.OverState,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.ID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.OverState = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.ID)
|
| | | data = CommFunc.WriteWORD(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.OverState)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | ID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | OverState:%d
|
| | | '''\
|
| | | %(
|
| | | self.ID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.OverState
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagFamilyArrestOverStateInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(WORD Count)
|
| | | ArrestOverStateInfo = list() #(vector<tagFamilyArrestOverState> ArrestOverStateInfo)///size = Count |
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | 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.ReadWORD(_lpData, _pos)
|
| | | for i in range(self.Count):
|
| | | temArrestOverStateInfo = tagFamilyArrestOverState()
|
| | | _pos = temArrestOverStateInfo.ReadData(_lpData, _pos)
|
| | | self.ArrestOverStateInfo.append(temArrestOverStateInfo)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x26
|
| | | self.Count = 0
|
| | | self.ArrestOverStateInfo = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 2
|
| | | for i in range(self.Count):
|
| | | length += self.ArrestOverStateInfo[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteWORD(data, self.Count)
|
| | | for i in range(self.Count):
|
| | | data = CommFunc.WriteString(data, self.ArrestOverStateInfo[i].GetLength(), self.ArrestOverStateInfo[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | ArrestOverStateInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagFamilyArrestOverStateInfo=tagFamilyArrestOverStateInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagFamilyArrestOverStateInfo.Head.Cmd,m_NAtagFamilyArrestOverStateInfo.Head.SubCmd))] = m_NAtagFamilyArrestOverStateInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 05 接收协助感谢礼物预览 #tagGCGetAssistThanksGiftPreview
|
| | |
|
| | | class tagGCGetAssistThanksGiftPreview(Structure):
|
| | | Head = tagHead()
|
| | | ItemID = 0 #(DWORD ItemID)//礼盒ID
|
| | | PlayerID = 0 #(DWORD PlayerID)//发起玩家ID
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | MapID = 0 #(DWORD MapID)
|
| | | LineID = 0 #(DWORD LineID)
|
| | | NPCID = 0 #(DWORD NPCID)
|
| | | ExDataLen = 0 #(WORD ExDataLen)
|
| | | ExData = "" #(String ExData)//其他自定义数据
|
| | | TimeStr = "" #(char TimeStr[19])//协助时间yyyy-MM-dd hh:mm:ss
|
| | | ExtraAward = 0 #(BYTE ExtraAward)//是否有额外奖励
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x05
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
|
| | | self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19)
|
| | | self.ExtraAward,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x05
|
| | | self.ItemID = 0
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | self.NPCID = 0
|
| | | self.ExDataLen = 0
|
| | | self.ExData = ""
|
| | | self.TimeStr = ""
|
| | | self.ExtraAward = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ExData)
|
| | | length += 19
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.LineID)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.ExDataLen)
|
| | | data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
|
| | | data = CommFunc.WriteString(data, 19, self.TimeStr)
|
| | | data = CommFunc.WriteBYTE(data, self.ExtraAward)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemID:%d,
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | MapID:%d,
|
| | | LineID:%d,
|
| | | NPCID:%d,
|
| | | ExDataLen:%d,
|
| | | ExData:%s,
|
| | | TimeStr:%s,
|
| | | ExtraAward:%d
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemID,
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.MapID,
|
| | | self.LineID,
|
| | | self.NPCID,
|
| | | self.ExDataLen,
|
| | | self.ExData,
|
| | | self.TimeStr,
|
| | | self.ExtraAward
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCGetAssistThanksGiftPreview=tagGCGetAssistThanksGiftPreview()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCGetAssistThanksGiftPreview.Head.Cmd,m_NAtagGCGetAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCGetAssistThanksGiftPreview
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 37 淘金营地信息 #tagSCGoldRushCampInfo
|
| | |
|
| | | class tagSCGoldRushCamp(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 07 今日协助活跃令信息 #tagMCTodayAssistMoneyInfo
|
| | | # B0 40 游历信息 #tagSCTravelInfo
|
| | |
|
| | | class tagMCTodayAssistMoneyInfo(Structure):
|
| | | class tagSCTravelGrid(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("TodayAssistMoney", c_ushort), #今日已获得活跃令,不含社交加成
|
| | | ("SocialMoney", c_ushort), #社交额外加成
|
| | | ("Row", c_ubyte), #行,从1开始
|
| | | ("Col", c_ubyte), #列,从1开始
|
| | | ("State", c_ubyte), #状态:0-未点击;1-已开启;2-裂纹
|
| | | ("Multi", c_ubyte), #奖励倍值: 默认1倍;2-双倍;...
|
| | | ("EventID", c_ushort), #事件ID
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x07
|
| | | return
|
| | |
|
| | | def ReadData(self, stringData, _pos=0, _len=0):
|
| | |
| | | return _pos + self.GetLength()
|
| | |
|
| | | def Clear(self):
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x07
|
| | | self.TodayAssistMoney = 0
|
| | | self.SocialMoney = 0
|
| | | self.Row = 0
|
| | | self.Col = 0
|
| | | self.State = 0
|
| | | self.Multi = 0
|
| | | self.EventID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCTodayAssistMoneyInfo)
|
| | | return sizeof(tagSCTravelGrid)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 07 今日协助活跃令信息 //tagMCTodayAssistMoneyInfo:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | TodayAssistMoney:%d,
|
| | | SocialMoney:%d
|
| | | DumpString = '''// B0 40 游历信息 //tagSCTravelInfo:
|
| | | Row:%d,
|
| | | Col:%d,
|
| | | State:%d,
|
| | | Multi:%d,
|
| | | EventID:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.TodayAssistMoney,
|
| | | self.SocialMoney
|
| | | self.Row,
|
| | | self.Col,
|
| | | self.State,
|
| | | self.Multi,
|
| | | self.EventID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCTodayAssistMoneyInfo=tagMCTodayAssistMoneyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTodayAssistMoneyInfo.Cmd,m_NAtagMCTodayAssistMoneyInfo.SubCmd))] = m_NAtagMCTodayAssistMoneyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 04 使用协助感谢礼盒预览 #tagGCUseAssistThanksGiftPreview
|
| | |
|
| | | class tagGCAssistPlayerInfo(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | PlayerName = "" #(char PlayerName[33])
|
| | | Job = 0 #(BYTE Job)
|
| | | LV = 0 #(WORD LV)
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.PlayerName = ""
|
| | | self.Job = 0
|
| | | self.LV = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteString(data, 33, self.PlayerName)
|
| | | data = CommFunc.WriteBYTE(data, self.Job)
|
| | | data = CommFunc.WriteWORD(data, self.LV)
|
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | PlayerName:%s,
|
| | | Job:%d,
|
| | | LV:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.PlayerName,
|
| | | self.Job,
|
| | | self.LV,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCUseAssistThanksGiftPreview(Structure):
|
| | | class tagSCTravelInfo(Structure):
|
| | | Head = tagHead()
|
| | | ItemID = 0 #(DWORD ItemID)//礼盒ID
|
| | | MapID = 0 #(DWORD MapID)
|
| | | LineID = 0 #(DWORD LineID)
|
| | | NPCID = 0 #(DWORD NPCID)
|
| | | ExDataLen = 0 #(WORD ExDataLen)
|
| | | ExData = "" #(String ExData)//其他自定义数据
|
| | | AssistPlayerCount = 0 #(BYTE AssistPlayerCount)
|
| | | AssistPlayerList = list() #(vector<tagGCAssistPlayerInfo> AssistPlayerList)//协助玩家列表
|
| | | Energy = 0 #(BYTE Energy)//剩余体力
|
| | | EnergyTime = 0 #(DWORD EnergyTime)//上次恢复体力时间戳
|
| | | TravelCnt = 0 #(DWORD TravelCnt)//累计游历次数
|
| | | SceneryType = 0 #(BYTE SceneryType)//景观类型
|
| | | SceneryRow = 0 #(BYTE SceneryRow)//景观左上角所在行,从1开始
|
| | | SceneryCol = 0 #(BYTE SceneryCol)//景观左上角所在列,从1开始
|
| | | SceneryLVInfo = 0 #(DWORD SceneryLVInfo)//景观升级信息:0-还未处理景观升级;个位数-第1次升级成功与否,1-成功,2-失败;十位-第2次 ...
|
| | | Result = 0 #(BYTE Result)//后端处理:0-无;1-常规;2-马车炸弹;3-传送门;4-景观;5-重置开始
|
| | | GridCnt = 0 #(BYTE GridCnt)
|
| | | GridList = list() #(vector<tagSCTravelGrid> GridList)//格子信息列表,只同步变化的
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.Head.SubCmd = 0x40
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NPCID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ExDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ExData,_pos = CommFunc.ReadString(_lpData, _pos,self.ExDataLen)
|
| | | self.AssistPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.AssistPlayerCount):
|
| | | temAssistPlayerList = tagGCAssistPlayerInfo()
|
| | | _pos = temAssistPlayerList.ReadData(_lpData, _pos)
|
| | | self.AssistPlayerList.append(temAssistPlayerList)
|
| | | self.Energy,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.EnergyTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TravelCnt,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.SceneryType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SceneryRow,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SceneryCol,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.SceneryLVInfo,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Result,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.GridCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.GridCnt):
|
| | | temGridList = tagSCTravelGrid()
|
| | | _pos = temGridList.ReadData(_lpData, _pos)
|
| | | self.GridList.append(temGridList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x04
|
| | | self.ItemID = 0
|
| | | self.MapID = 0
|
| | | self.LineID = 0
|
| | | self.NPCID = 0
|
| | | self.ExDataLen = 0
|
| | | self.ExData = ""
|
| | | self.AssistPlayerCount = 0
|
| | | self.AssistPlayerList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.ExData)
|
| | | length += 1
|
| | | for i in range(self.AssistPlayerCount):
|
| | | length += self.AssistPlayerList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.ItemID)
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.LineID)
|
| | | data = CommFunc.WriteDWORD(data, self.NPCID)
|
| | | data = CommFunc.WriteWORD(data, self.ExDataLen)
|
| | | data = CommFunc.WriteString(data, self.ExDataLen, self.ExData)
|
| | | data = CommFunc.WriteBYTE(data, self.AssistPlayerCount)
|
| | | for i in range(self.AssistPlayerCount):
|
| | | data = CommFunc.WriteString(data, self.AssistPlayerList[i].GetLength(), self.AssistPlayerList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ItemID:%d,
|
| | | MapID:%d,
|
| | | LineID:%d,
|
| | | NPCID:%d,
|
| | | ExDataLen:%d,
|
| | | ExData:%s,
|
| | | AssistPlayerCount:%d,
|
| | | AssistPlayerList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ItemID,
|
| | | self.MapID,
|
| | | self.LineID,
|
| | | self.NPCID,
|
| | | self.ExDataLen,
|
| | | self.ExData,
|
| | | self.AssistPlayerCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCUseAssistThanksGiftPreview=tagGCUseAssistThanksGiftPreview()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCUseAssistThanksGiftPreview.Head.Cmd,m_NAtagGCUseAssistThanksGiftPreview.Head.SubCmd))] = m_NAtagGCUseAssistThanksGiftPreview
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 20 膜拜信息列表 #tagGCWorshipInfoList
|
| | |
|
| | | class tagGCWorshipInfo(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)// 目标玩家ID
|
| | | WorshipType = 0 #(BYTE WorshipType)// 膜拜类型
|
| | | WorshipValue = 0 #(DWORD WorshipValue)// 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
|
| | | InfoLen = 0 #(WORD InfoLen)
|
| | | PlayerInfo = "" #(String PlayerInfo)// 玩家信息{k:v, ...}
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.WorshipType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.WorshipValue,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.InfoLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.PlayerInfo,_pos = CommFunc.ReadString(_lpData, _pos,self.InfoLen)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.WorshipType = 0
|
| | | self.WorshipValue = 0
|
| | | self.InfoLen = 0
|
| | | self.PlayerInfo = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.PlayerInfo)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.WorshipType)
|
| | | data = CommFunc.WriteDWORD(data, self.WorshipValue)
|
| | | data = CommFunc.WriteWORD(data, self.InfoLen)
|
| | | data = CommFunc.WriteString(data, self.InfoLen, self.PlayerInfo)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | WorshipType:%d,
|
| | | WorshipValue:%d,
|
| | | InfoLen:%d,
|
| | | PlayerInfo:%s
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.WorshipType,
|
| | | self.WorshipValue,
|
| | | self.InfoLen,
|
| | | self.PlayerInfo
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagGCWorshipInfoList(Structure):
|
| | | Head = tagHead()
|
| | | WorshipCount = 0 #(BYTE WorshipCount)
|
| | | WorshipInfoList = list() #(vector<tagGCWorshipInfo> WorshipInfoList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x20
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.WorshipCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.WorshipCount):
|
| | | temWorshipInfoList = tagGCWorshipInfo()
|
| | | _pos = temWorshipInfoList.ReadData(_lpData, _pos)
|
| | | self.WorshipInfoList.append(temWorshipInfoList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB0
|
| | | self.Head.SubCmd = 0x20
|
| | | self.WorshipCount = 0
|
| | | self.WorshipInfoList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.WorshipCount):
|
| | | length += self.WorshipInfoList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.WorshipCount)
|
| | | for i in range(self.WorshipCount):
|
| | | data = CommFunc.WriteString(data, self.WorshipInfoList[i].GetLength(), self.WorshipInfoList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | WorshipCount:%d,
|
| | | WorshipInfoList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.WorshipCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCWorshipInfoList=tagGCWorshipInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipInfoList.Head.Cmd,m_NAtagGCWorshipInfoList.Head.SubCmd))] = m_NAtagGCWorshipInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B0 21 膜拜结果 #tagGCWorshipResult
|
| | |
|
| | | class tagGCWorshipResult(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("PlayerID", c_int), # 目标玩家ID
|
| | | ("WorshipType", c_ubyte), # 膜拜类型
|
| | | ("WorshipValue", c_int), # 膜拜类型对应的功能值,如名次或其他,由具体膜拜类型定义对应值含义
|
| | | ("Result", c_ubyte), # 膜拜结果:0-成功;1-不存在该膜拜类型;2-不存在该目标膜拜;3-不能膜拜该目标;
|
| | | ("MoneyType", c_ubyte), # 货币类型
|
| | | ("MoneyValue", c_int), # 货币奖励
|
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xB0
|
| | | self.SubCmd = 0x21
|
| | | 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 = 0xB0
|
| | | self.SubCmd = 0x21
|
| | | self.PlayerID = 0
|
| | | self.WorshipType = 0
|
| | | self.WorshipValue = 0
|
| | | self.Head.SubCmd = 0x40
|
| | | self.Energy = 0
|
| | | self.EnergyTime = 0
|
| | | self.TravelCnt = 0
|
| | | self.SceneryType = 0
|
| | | self.SceneryRow = 0
|
| | | self.SceneryCol = 0
|
| | | self.SceneryLVInfo = 0
|
| | | self.Result = 0
|
| | | self.MoneyType = 0
|
| | | self.MoneyValue = 0
|
| | | self.GridCnt = 0
|
| | | self.GridList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagGCWorshipResult)
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.GridCnt):
|
| | | length += self.GridList[i].GetLength()
|
| | |
|
| | | 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.WriteBYTE(data, self.Energy)
|
| | | data = CommFunc.WriteDWORD(data, self.EnergyTime)
|
| | | data = CommFunc.WriteDWORD(data, self.TravelCnt)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryType)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryRow)
|
| | | data = CommFunc.WriteBYTE(data, self.SceneryCol)
|
| | | data = CommFunc.WriteDWORD(data, self.SceneryLVInfo)
|
| | | data = CommFunc.WriteBYTE(data, self.Result)
|
| | | data = CommFunc.WriteBYTE(data, self.GridCnt)
|
| | | for i in range(self.GridCnt):
|
| | | data = CommFunc.WriteString(data, self.GridList[i].GetLength(), self.GridList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B0 21 膜拜结果 //tagGCWorshipResult:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | PlayerID:%d,
|
| | | WorshipType:%d,
|
| | | WorshipValue:%d,
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Energy:%d,
|
| | | EnergyTime:%d,
|
| | | TravelCnt:%d,
|
| | | SceneryType:%d,
|
| | | SceneryRow:%d,
|
| | | SceneryCol:%d,
|
| | | SceneryLVInfo:%d,
|
| | | Result:%d,
|
| | | MoneyType:%d,
|
| | | MoneyValue:%d
|
| | | GridCnt:%d,
|
| | | GridList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.PlayerID,
|
| | | self.WorshipType,
|
| | | self.WorshipValue,
|
| | | self.Head.OutputString(),
|
| | | self.Energy,
|
| | | self.EnergyTime,
|
| | | self.TravelCnt,
|
| | | self.SceneryType,
|
| | | self.SceneryRow,
|
| | | self.SceneryCol,
|
| | | self.SceneryLVInfo,
|
| | | self.Result,
|
| | | self.MoneyType,
|
| | | self.MoneyValue
|
| | | self.GridCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagGCWorshipResult=tagGCWorshipResult()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCWorshipResult.Cmd,m_NAtagGCWorshipResult.SubCmd))] = m_NAtagGCWorshipResult
|
| | | m_NAtagSCTravelInfo=tagSCTravelInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTravelInfo.Head.Cmd,m_NAtagSCTravelInfo.Head.SubCmd))] = m_NAtagSCTravelInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | | m_NAtagMCFuncSysPrivilegeInfoList=tagMCFuncSysPrivilegeInfoList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncSysPrivilegeInfoList.Head.Cmd,m_NAtagMCFuncSysPrivilegeInfoList.Head.SubCmd))] = m_NAtagMCFuncSysPrivilegeInfoList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B1 31 宿缘信息 #tagSCHeroFatesInfo
|
| | |
|
| | | class tagSCHeroFates(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("FatesID", c_ubyte), # 宿缘ID
|
| | | ("State", c_ubyte), # 宿缘状态:0-未激活;1-已激活已领奖
|
| | | ("FatesLV", c_ubyte), # 宿缘等级,激活时为0级,升级后有升级属性
|
| | | ]
|
| | |
|
| | | 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.FatesID = 0
|
| | | self.State = 0
|
| | | self.FatesLV = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagSCHeroFates)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// B1 31 宿缘信息 //tagSCHeroFatesInfo:
|
| | | FatesID:%d,
|
| | | State:%d,
|
| | | FatesLV:%d
|
| | | '''\
|
| | | %(
|
| | | self.FatesID,
|
| | | self.State,
|
| | | self.FatesLV
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagSCHeroFatesInfo(Structure):
|
| | | Head = tagHead()
|
| | | Count = 0 #(BYTE Count)
|
| | | FatesList = list() #(vector<tagSCHeroFates> FatesList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x31
|
| | | 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):
|
| | | temFatesList = tagSCHeroFates()
|
| | | _pos = temFatesList.ReadData(_lpData, _pos)
|
| | | self.FatesList.append(temFatesList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB1
|
| | | self.Head.SubCmd = 0x31
|
| | | self.Count = 0
|
| | | self.FatesList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.Count):
|
| | | length += self.FatesList[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.FatesList[i].GetLength(), self.FatesList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | Count:%d,
|
| | | FatesList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.Count,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCHeroFatesInfo=tagSCHeroFatesInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCHeroFatesInfo.Head.Cmd,m_NAtagSCHeroFatesInfo.Head.SubCmd))] = m_NAtagSCHeroFatesInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | TitleID = 0 #(DWORD TitleID)//佩戴的称号
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | data = None
|
| | |
|
| | |
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | |
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.TitleID = 0
|
| | | self.ServerID = 0
|
| | | return
|
| | |
|
| | |
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.TitleID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | return data
|
| | |
|
| | |
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | TitleID:%d,
|
| | | ServerID:%d
|
| | | '''\
|
| | | %(
|
| | |
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.TitleID,
|
| | | self.ServerID
|
| | | )
|
| | | return DumpString
|
| | |
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | TitleID = 0 #(DWORD TitleID)//佩戴的称号
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | TalkTime = 0 #(DWORD TalkTime)//该聊天发送时间戳
|
| | | data = None
|
| | |
| | | self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.TitleID = 0
|
| | | self.ServerID = 0
|
| | | self.TalkTime = 0
|
| | | return
|
| | |
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | |
| | | data = CommFunc.WriteBYTE(data, self.RealmLV)
|
| | | data = CommFunc.WriteDWORD(data, self.Face)
|
| | | data = CommFunc.WriteDWORD(data, self.FacePic)
|
| | | data = CommFunc.WriteDWORD(data, self.TitleID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.TalkTime)
|
| | | return data
|
| | |
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | TitleID:%d,
|
| | | ServerID:%d,
|
| | | TalkTime:%d
|
| | | '''\
|
| | |
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.TitleID,
|
| | | self.ServerID,
|
| | | self.TalkTime
|
| | | )
|
| | |
| | |
|
| | | m_NAtagSCTurnFightReportSign=tagSCTurnFightReportSign()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightReportSign.Cmd,m_NAtagSCTurnFightReportSign.SubCmd))] = m_NAtagSCTurnFightReportSign
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # B4 31 战斗战报结果 #tagSCTurnFightRet
|
| | |
|
| | | class tagSCTurnFightRet(Structure):
|
| | | Head = tagHead()
|
| | | MapID = 0 #(DWORD MapID)// 自定义地图ID,可用于绑定战斗地图场景功能(如主线boss、爬塔、竞技场等)
|
| | | FuncLineID = 0 #(DWORD FuncLineID)// MapID对应的扩展值,如具体某个关卡等
|
| | | TagType = 0 #(BYTE TagType)// 目标类型,0-NPC阵容,1-玩家
|
| | | TagID = 0 #(DWORD TagID)// 目标类型对应的ID,如玩家ID
|
| | | ValueCount = 0 #(BYTE ValueCount)
|
| | | ValueList = list() #(vector<DWORD> ValueList)// 附加值列表,可选,具体含义由MapID决定
|
| | | IsWin = 0 #(BYTE IsWin)//是否获胜
|
| | | AwardLen = 0 #(WORD AwardLen)
|
| | | AwardMsg = "" #(String AwardMsg)//功能结算奖励信息,不含战斗相关统计信息
|
| | | BatLen = 0 #(WORD BatLen)
|
| | | BatStatMsg = "" #(String BatStatMsg)//战斗相关统计信息
|
| | | PathDate = "" #(char PathDate[8])//战报路径日期, yyyyMMdd, 为空时代表公共类的战报,不为空时为玩家个人类战报
|
| | | GUID = "" #(char GUID[40])//战报guid,前端根据功能MapID判断是否跨服功能,是的话从跨服服务器下载战报,否的话从本服下载
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x31
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FuncLineID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TagType,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TagID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ValueCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ValueCount):
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.ValueList.append(value)
|
| | | self.IsWin,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.AwardLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.AwardMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.AwardLen)
|
| | | self.BatLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.BatStatMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.BatLen)
|
| | | self.PathDate,_pos = CommFunc.ReadString(_lpData, _pos,8)
|
| | | self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,40)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xB4
|
| | | self.Head.SubCmd = 0x31
|
| | | self.MapID = 0
|
| | | self.FuncLineID = 0
|
| | | self.TagType = 0
|
| | | self.TagID = 0
|
| | | self.ValueCount = 0
|
| | | self.ValueList = list()
|
| | | self.IsWin = 0
|
| | | self.AwardLen = 0
|
| | | self.AwardMsg = ""
|
| | | self.BatLen = 0
|
| | | self.BatStatMsg = ""
|
| | | self.PathDate = ""
|
| | | self.GUID = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 4 * self.ValueCount
|
| | | length += 1
|
| | | length += 2
|
| | | length += len(self.AwardMsg)
|
| | | length += 2
|
| | | length += len(self.BatStatMsg)
|
| | | length += 8
|
| | | length += 40
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.MapID)
|
| | | data = CommFunc.WriteDWORD(data, self.FuncLineID)
|
| | | data = CommFunc.WriteBYTE(data, self.TagType)
|
| | | data = CommFunc.WriteDWORD(data, self.TagID)
|
| | | data = CommFunc.WriteBYTE(data, self.ValueCount)
|
| | | for i in range(self.ValueCount):
|
| | | data = CommFunc.WriteDWORD(data, self.ValueList[i])
|
| | | data = CommFunc.WriteBYTE(data, self.IsWin)
|
| | | data = CommFunc.WriteWORD(data, self.AwardLen)
|
| | | data = CommFunc.WriteString(data, self.AwardLen, self.AwardMsg)
|
| | | data = CommFunc.WriteWORD(data, self.BatLen)
|
| | | data = CommFunc.WriteString(data, self.BatLen, self.BatStatMsg)
|
| | | data = CommFunc.WriteString(data, 8, self.PathDate)
|
| | | data = CommFunc.WriteString(data, 40, self.GUID)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MapID:%d,
|
| | | FuncLineID:%d,
|
| | | TagType:%d,
|
| | | TagID:%d,
|
| | | ValueCount:%d,
|
| | | ValueList:%s,
|
| | | IsWin:%d,
|
| | | AwardLen:%d,
|
| | | AwardMsg:%s,
|
| | | BatLen:%d,
|
| | | BatStatMsg:%s,
|
| | | PathDate:%s,
|
| | | GUID:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MapID,
|
| | | self.FuncLineID,
|
| | | self.TagType,
|
| | | self.TagID,
|
| | | self.ValueCount,
|
| | | "...",
|
| | | self.IsWin,
|
| | | self.AwardLen,
|
| | | self.AwardMsg,
|
| | | self.BatLen,
|
| | | self.BatStatMsg,
|
| | | self.PathDate,
|
| | | self.GUID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSCTurnFightRet=tagSCTurnFightRet()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSCTurnFightRet.Head.Cmd,m_NAtagSCTurnFightRet.Head.SubCmd))] = m_NAtagSCTurnFightRet
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 02 跨服通用信息包 #tagSSCommMsg
|
| | |
|
| | | class tagSSCommMsg(Structure):
|
| | | Head = tagHead()
|
| | | FromServerID = 0 #(DWORD FromServerID)//哪个服发的
|
| | | ServerTime = 0 #(DWORD ServerTime)//来源服务器时间戳
|
| | | TypeLen = 0 #(BYTE TypeLen)
|
| | | MsgType = "" #(String MsgType)
|
| | | Len = 0 #(DWORD Len)
|
| | | Data = "" #(String Data)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x02
|
| | | 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.ServerTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.TypeLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.MsgType,_pos = CommFunc.ReadString(_lpData, _pos,self.TypeLen)
|
| | | self.Len,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.Data,_pos = CommFunc.ReadString(_lpData, _pos,self.Len)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xC2
|
| | | self.Head.SubCmd = 0x02
|
| | | self.FromServerID = 0
|
| | | self.ServerTime = 0
|
| | | self.TypeLen = 0
|
| | | self.MsgType = ""
|
| | | self.Len = 0
|
| | | self.Data = ""
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.MsgType)
|
| | | length += 4
|
| | | length += len(self.Data)
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.FromServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerTime)
|
| | | data = CommFunc.WriteBYTE(data, self.TypeLen)
|
| | | data = CommFunc.WriteString(data, self.TypeLen, self.MsgType)
|
| | | data = CommFunc.WriteDWORD(data, self.Len)
|
| | | data = CommFunc.WriteString(data, self.Len, self.Data)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FromServerID:%d,
|
| | | ServerTime:%d,
|
| | | TypeLen:%d,
|
| | | MsgType:%s,
|
| | | Len:%d,
|
| | | Data:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FromServerID,
|
| | | self.ServerTime,
|
| | | self.TypeLen,
|
| | | self.MsgType,
|
| | | self.Len,
|
| | | self.Data
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagSSCommMsg=tagSSCommMsg()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagSSCommMsg.Head.Cmd,m_NAtagSSCommMsg.Head.SubCmd))] = m_NAtagSSCommMsg
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # C2 01 跨服服务器间的测试包 #tagSSTest
|
| | |
|
| | | class tagSSTest(Structure):
|