From 3a267f4f9980e5da05054d9a43b74d68445758b0 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期一, 13 十一月 2023 13:16:30 +0800 Subject: [PATCH] 9912 [BT0.1]BOSS凭证(boss历练活动) 主干冲突 --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2226 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 2,203 insertions(+), 23 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index c2f6256..71137b8 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -985,6 +985,190 @@ #------------------------------------------------------ +# A4 11 传功邀请信息 #tagGCChuangongInviteInfo + +class tagGCChuangongInviteInfo(Structure): + Head = tagHead() + PlayerID = 0 #(DWORD PlayerID)// 发起邀请的玩家ID + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)// 发起邀请的玩家名,size = NameLen + LV = 0 #(WORD LV)// 玩家等级 + Job = 0 #(BYTE Job)// 玩家职业 + RealmLV = 0 #(WORD RealmLV)// 玩家境界等级 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x11 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x11 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.RealmLV) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d + '''\ + %( + self.Head.OutputString(), + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV + ) + return DumpString + + +m_NAtagGCChuangongInviteInfo=tagGCChuangongInviteInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChuangongInviteInfo.Head.Cmd,m_NAtagGCChuangongInviteInfo.Head.SubCmd))] = m_NAtagGCChuangongInviteInfo + + +#------------------------------------------------------ +# A4 12 传功开始 #tagGCChuangongStart + +class tagGCChuangongStart(Structure): + Head = tagHead() + PlayerID = 0 #(DWORD PlayerID)// 一起传功的玩家ID + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)// 玩家名,size = NameLen + LV = 0 #(WORD LV)// 玩家等级 + Job = 0 #(BYTE Job)// 玩家职业 + RealmLV = 0 #(WORD RealmLV)// 玩家境界等级 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x12 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA4 + self.Head.SubCmd = 0x12 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteWORD(data, self.RealmLV) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d + '''\ + %( + self.Head.OutputString(), + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV + ) + return DumpString + + +m_NAtagGCChuangongStart=tagGCChuangongStart() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCChuangongStart.Head.Cmd,m_NAtagGCChuangongStart.Head.SubCmd))] = m_NAtagGCChuangongStart + + +#------------------------------------------------------ # A4 0A 假仙盟信息 #tagGCFakeFamilyInfo class tagGCFakeFamilyInfo(Structure): @@ -1240,6 +1424,66 @@ m_NAtagGCFamilyActionInfo=tagGCFamilyActionInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyActionInfo.Head.Cmd,m_NAtagGCFamilyActionInfo.Head.SubCmd))] = m_NAtagGCFamilyActionInfo + + +#------------------------------------------------------ +# A4 0E 家族boss副本信息 #tagGCFamilyBosFBInfo + +class tagGCFamilyBosFBInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("HurtTotal", c_int), # 仙盟累计伤血,亿求余部分 + ("HurtTotalPoint", c_int), # 仙盟累计伤血,亿整除部分 + ("FightMemCount", c_ubyte), # 目前正在仙盟boss副本中的成员数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA4 + self.SubCmd = 0x0E + 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 = 0xA4 + self.SubCmd = 0x0E + self.HurtTotal = 0 + self.HurtTotalPoint = 0 + self.FightMemCount = 0 + return + + def GetLength(self): + return sizeof(tagGCFamilyBosFBInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A4 0E 家族boss副本信息 //tagGCFamilyBosFBInfo: + Cmd:%s, + SubCmd:%s, + HurtTotal:%d, + HurtTotalPoint:%d, + FightMemCount:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.HurtTotal, + self.HurtTotalPoint, + self.FightMemCount + ) + return DumpString + + +m_NAtagGCFamilyBosFBInfo=tagGCFamilyBosFBInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCFamilyBosFBInfo.Cmd,m_NAtagGCFamilyBosFBInfo.SubCmd))] = m_NAtagGCFamilyBosFBInfo #------------------------------------------------------ @@ -4880,6 +5124,215 @@ m_NAtagGCRecommendFriendsInfo=tagGCRecommendFriendsInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRecommendFriendsInfo.Head.Cmd,m_NAtagGCRecommendFriendsInfo.Head.SubCmd))] = m_NAtagGCRecommendFriendsInfo + + +#------------------------------------------------------ +# A9 AD 通知天星塔全服奖励通关玩家信息 #tagGCSkyTowerPassPlayerInfo + +class tagGCSkyTowerPassPlayer(Structure): + PlayerID = 0 #(DWORD PlayerID) + PlayerName = "" #(char PlayerName[33]) + Job = 0 #(BYTE Job) + LV = 0 #(WORD LV)//等级 + RealmLV = 0 #(WORD RealmLV)//境界 + 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.ReadWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.PlayerID = 0 + self.PlayerName = "" + self.Job = 0 + self.LV = 0 + self.RealmLV = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 33 + length += 1 + length += 2 + length += 2 + + 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.WriteWORD(data, self.RealmLV) + return data + + def OutputString(self): + DumpString = ''' + PlayerID:%d, + PlayerName:%s, + Job:%d, + LV:%d, + RealmLV:%d + '''\ + %( + self.PlayerID, + self.PlayerName, + self.Job, + self.LV, + self.RealmLV + ) + return DumpString + + +class tagGCSkyTowerPassFloor(Structure): + FloorID = 0 #(DWORD FloorID)// 层ID + PassPlayerCount = 0 #(BYTE PassPlayerCount)// 通关记录玩家数 + PassPlayerIDList = list() #(vector<DWORD> PassPlayerIDList)// 通关记录玩家ID列表 [第1个通过玩家ID, 第2个, ...] + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.FloorID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.PassPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PassPlayerCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.PassPlayerIDList.append(value) + return _pos + + def Clear(self): + self.FloorID = 0 + self.PassPlayerCount = 0 + self.PassPlayerIDList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 4 * self.PassPlayerCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.FloorID) + data = CommFunc.WriteBYTE(data, self.PassPlayerCount) + for i in range(self.PassPlayerCount): + data = CommFunc.WriteDWORD(data, self.PassPlayerIDList[i]) + return data + + def OutputString(self): + DumpString = ''' + FloorID:%d, + PassPlayerCount:%d, + PassPlayerIDList:%s + '''\ + %( + self.FloorID, + self.PassPlayerCount, + "..." + ) + return DumpString + + +class tagGCSkyTowerPassPlayerInfo(Structure): + Head = tagHead() + FloorCount = 0 #(WORD FloorCount) + PassFloorList = list() #(vector<tagGCSkyTowerPassFloor> PassFloorList)// 通关塔层信息列表 + PlayerCount = 0 #(WORD PlayerCount) + PassPlayerList = list() #(vector<tagGCSkyTowerPassPlayer> PassPlayerList)// 通关玩家信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0xAD + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FloorCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.FloorCount): + temPassFloorList = tagGCSkyTowerPassFloor() + _pos = temPassFloorList.ReadData(_lpData, _pos) + self.PassFloorList.append(temPassFloorList) + self.PlayerCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.PlayerCount): + temPassPlayerList = tagGCSkyTowerPassPlayer() + _pos = temPassPlayerList.ReadData(_lpData, _pos) + self.PassPlayerList.append(temPassPlayerList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0xAD + self.FloorCount = 0 + self.PassFloorList = list() + self.PlayerCount = 0 + self.PassPlayerList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + for i in range(self.FloorCount): + length += self.PassFloorList[i].GetLength() + length += 2 + for i in range(self.PlayerCount): + length += self.PassPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.FloorCount) + for i in range(self.FloorCount): + data = CommFunc.WriteString(data, self.PassFloorList[i].GetLength(), self.PassFloorList[i].GetBuffer()) + data = CommFunc.WriteWORD(data, self.PlayerCount) + for i in range(self.PlayerCount): + data = CommFunc.WriteString(data, self.PassPlayerList[i].GetLength(), self.PassPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FloorCount:%d, + PassFloorList:%s, + PlayerCount:%d, + PassPlayerList:%s + '''\ + %( + self.Head.OutputString(), + self.FloorCount, + "...", + self.PlayerCount, + "..." + ) + return DumpString + + +m_NAtagGCSkyTowerPassPlayerInfo=tagGCSkyTowerPassPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCSkyTowerPassPlayerInfo.Head.Cmd,m_NAtagGCSkyTowerPassPlayerInfo.Head.SubCmd))] = m_NAtagGCSkyTowerPassPlayerInfo #------------------------------------------------------ @@ -15874,6 +16327,8 @@ ("RecordID", c_ubyte), ("TodayPayCount", c_ushort), # 今日已购买次数 ("TotalPayCount", c_int), # 累计总购买次数 + ("WeekPayCount", c_ushort), # 周总购买次数 + ("MonthPayCount", c_ushort), # 月总购买次数 ] def __init__(self): @@ -15889,6 +16344,8 @@ self.RecordID = 0 self.TodayPayCount = 0 self.TotalPayCount = 0 + self.WeekPayCount = 0 + self.MonthPayCount = 0 return def GetLength(self): @@ -15901,12 +16358,16 @@ DumpString = '''// A1 10 充值购买次数信息 //tagMCCoinToGoldCountInfo: RecordID:%d, TodayPayCount:%d, - TotalPayCount:%d + TotalPayCount:%d, + WeekPayCount:%d, + MonthPayCount:%d '''\ %( self.RecordID, self.TodayPayCount, - self.TotalPayCount + self.TotalPayCount, + self.WeekPayCount, + self.MonthPayCount ) return DumpString @@ -18174,6 +18635,7 @@ ("KillCnt", c_int), #击杀次数 ("ItemAddCnt", c_int), #物品增加次数 ("BuyCnt", c_ubyte), #购买次数 + ("KillCntTotal", c_int), #击杀次数 - 累计 ] def __init__(self): @@ -18190,6 +18652,7 @@ self.KillCnt = 0 self.ItemAddCnt = 0 self.BuyCnt = 0 + self.KillCntTotal = 0 return def GetLength(self): @@ -18203,13 +18666,15 @@ BossType:%d, KillCnt:%d, ItemAddCnt:%d, - BuyCnt:%d + BuyCnt:%d, + KillCntTotal:%d '''\ %( self.BossType, self.KillCnt, self.ItemAddCnt, - self.BuyCnt + self.BuyCnt, + self.KillCntTotal ) return DumpString @@ -18632,6 +19097,118 @@ m_NAtagMCCollectionItemInfo=tagMCCollectionItemInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCollectionItemInfo.Head.Cmd,m_NAtagMCCollectionItemInfo.Head.SubCmd))] = m_NAtagMCCollectionItemInfo + + +#------------------------------------------------------ +# A3 CC 自定义奖励信息 #tagMCCustomAwardInfo + +class tagMCCustomAwardState(Structure): + _pack_ = 1 + _fields_ = [ + ("KeyNum", c_ushort), # 奖励记录key编号,0~255,每个key存31个ID记录 0-30为编号0, 31-61为编号1.. + ("CanGetState", c_int), # 是否可领取;按位记录是否可领取 + ("GetState", 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.KeyNum = 0 + self.CanGetState = 0 + self.GetState = 0 + return + + def GetLength(self): + return sizeof(tagMCCustomAwardState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 CC 自定义奖励信息 //tagMCCustomAwardInfo: + KeyNum:%d, + CanGetState:%d, + GetState:%d + '''\ + %( + self.KeyNum, + self.CanGetState, + self.GetState + ) + return DumpString + + +class tagMCCustomAwardInfo(Structure): + Head = tagHead() + RecordStateCnt = 0 #(WORD RecordStateCnt)// 记录个数 + RecordStateList = list() #(vector<tagMCCustomAwardState> RecordStateList)// 记录列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xCC + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.RecordStateCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.RecordStateCnt): + temRecordStateList = tagMCCustomAwardState() + _pos = temRecordStateList.ReadData(_lpData, _pos) + self.RecordStateList.append(temRecordStateList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xCC + self.RecordStateCnt = 0 + self.RecordStateList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + for i in range(self.RecordStateCnt): + length += self.RecordStateList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.RecordStateCnt) + for i in range(self.RecordStateCnt): + data = CommFunc.WriteString(data, self.RecordStateList[i].GetLength(), self.RecordStateList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + RecordStateCnt:%d, + RecordStateList:%s + '''\ + %( + self.Head.OutputString(), + self.RecordStateCnt, + "..." + ) + return DumpString + + +m_NAtagMCCustomAwardInfo=tagMCCustomAwardInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCCustomAwardInfo.Head.Cmd,m_NAtagMCCustomAwardInfo.Head.SubCmd))] = m_NAtagMCCustomAwardInfo #------------------------------------------------------ @@ -21428,6 +22005,114 @@ #------------------------------------------------------ +# A3 CD 坐骑星级信息 #tagMCHorseStarInfo + +class tagMCHorseStar(Structure): + _pack_ = 1 + _fields_ = [ + ("HorseID", c_int), # 坐骑表ID + ("Star", 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.HorseID = 0 + self.Star = 0 + return + + def GetLength(self): + return sizeof(tagMCHorseStar) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 CD 坐骑星级信息 //tagMCHorseStarInfo: + HorseID:%d, + Star:%d + '''\ + %( + self.HorseID, + self.Star + ) + return DumpString + + +class tagMCHorseStarInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + HorseStarList = list() #(vector<tagMCHorseStar> HorseStarList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xCD + 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): + temHorseStarList = tagMCHorseStar() + _pos = temHorseStarList.ReadData(_lpData, _pos) + self.HorseStarList.append(temHorseStarList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xCD + self.Count = 0 + self.HorseStarList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.HorseStarList[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.HorseStarList[i].GetLength(), self.HorseStarList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + HorseStarList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCHorseStarInfo=tagMCHorseStarInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCHorseStarInfo.Head.Cmd,m_NAtagMCHorseStarInfo.Head.SubCmd))] = m_NAtagMCHorseStarInfo + + +#------------------------------------------------------ # A3 38 投资理财信息 #tagMCInvestInfo class tagMCInvestInfo(Structure): @@ -22580,6 +23265,7 @@ ItemAddCnt = 0 #(WORD ItemAddCnt)//物品增加次数 PassGradeCnt = 0 #(BYTE PassGradeCnt)//星级值对应个数, 每个key存9个lineID PassGrade = list() #(vector<DWORD> PassGrade)//副本线路对应星级值列表 + EnterCntTotal = 0 #(DWORD EnterCntTotal)//累计进入次数 data = None def __init__(self): @@ -22596,6 +23282,7 @@ for i in range(self.PassGradeCnt): value,_pos=CommFunc.ReadDWORD(_lpData,_pos) self.PassGrade.append(value) + self.EnterCntTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -22605,6 +23292,7 @@ self.ItemAddCnt = 0 self.PassGradeCnt = 0 self.PassGrade = list() + self.EnterCntTotal = 0 return def GetLength(self): @@ -22615,6 +23303,7 @@ length += 2 length += 1 length += 4 * self.PassGradeCnt + length += 4 return length @@ -22627,6 +23316,7 @@ data = CommFunc.WriteBYTE(data, self.PassGradeCnt) for i in range(self.PassGradeCnt): data = CommFunc.WriteDWORD(data, self.PassGrade[i]) + data = CommFunc.WriteDWORD(data, self.EnterCntTotal) return data def OutputString(self): @@ -22636,7 +23326,8 @@ RecoverCnt:%d, ItemAddCnt:%d, PassGradeCnt:%d, - PassGrade:%s + PassGrade:%s, + EnterCntTotal:%d '''\ %( self.FBID, @@ -22644,7 +23335,8 @@ self.RecoverCnt, self.ItemAddCnt, self.PassGradeCnt, - "..." + "...", + self.EnterCntTotal ) return DumpString @@ -24504,6 +25196,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("IsPass", c_ubyte), #是否通关副本 + ("XXZLAwardState", c_int), #修仙之路领奖状态;按二进制位存储每个任务ID是否已领取 ] def __init__(self): @@ -24521,6 +25214,7 @@ self.Cmd = 0xA3 self.SubCmd = 0x11 self.IsPass = 0 + self.XXZLAwardState = 0 return def GetLength(self): @@ -24533,18 +25227,128 @@ DumpString = '''// A3 11 通知玩家境界信息 //tagMCSyncRealmInfo: Cmd:%s, SubCmd:%s, - IsPass:%d + IsPass:%d, + XXZLAwardState:%d '''\ %( self.Cmd, self.SubCmd, - self.IsPass + self.IsPass, + self.XXZLAwardState ) return DumpString m_NAtagMCSyncRealmInfo=tagMCSyncRealmInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSyncRealmInfo.Cmd,m_NAtagMCSyncRealmInfo.SubCmd))] = m_NAtagMCSyncRealmInfo + + +#------------------------------------------------------ +# A3 CE 称号星级信息 #tagMCTitleStarInfo + +class tagMCTitleStar(Structure): + _pack_ = 1 + _fields_ = [ + ("TitleID", c_int), # 称号ID + ("Star", 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.TitleID = 0 + self.Star = 0 + return + + def GetLength(self): + return sizeof(tagMCTitleStar) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A3 CE 称号星级信息 //tagMCTitleStarInfo: + TitleID:%d, + Star:%d + '''\ + %( + self.TitleID, + self.Star + ) + return DumpString + + +class tagMCTitleStarInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + TitleStarList = list() #(vector<tagMCTitleStar> TitleStarList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xCE + 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): + temTitleStarList = tagMCTitleStar() + _pos = temTitleStarList.ReadData(_lpData, _pos) + self.TitleStarList.append(temTitleStarList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0xCE + self.Count = 0 + self.TitleStarList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.TitleStarList[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.TitleStarList[i].GetLength(), self.TitleStarList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + TitleStarList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCTitleStarInfo=tagMCTitleStarInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTitleStarInfo.Head.Cmd,m_NAtagMCTitleStarInfo.Head.SubCmd))] = m_NAtagMCTitleStarInfo #------------------------------------------------------ @@ -25574,6 +26378,142 @@ #------------------------------------------------------ +# A5 10 传功奖励结果 #tagMCChuangongResult + +class tagMCChuangongItem(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(tagMCChuangongItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 10 传功奖励结果 //tagMCChuangongResult: + ItemID:%d, + ItemCount:%d + '''\ + %( + self.ItemID, + self.ItemCount + ) + return DumpString + + +class tagMCChuangongResult(Structure): + Head = tagHead() + FromLV = 0 #(WORD FromLV)// 传功前等级 + ToLV = 0 #(WORD ToLV)// 传功后等级 + Exp = 0 #(DWORD Exp)// 获得经验求余亿部分 + ExpPoint = 0 #(DWORD ExpPoint)// 获得经验整除亿部分 + ItemCount = 0 #(BYTE ItemCount) + AwardItemList = list() #(vector<tagMCChuangongItem> AwardItemList)// 奖励物品列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FromLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ToLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Exp,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ExpPoint,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ItemCount): + temAwardItemList = tagMCChuangongItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x10 + self.FromLV = 0 + self.ToLV = 0 + self.Exp = 0 + self.ExpPoint = 0 + self.ItemCount = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 2 + length += 4 + length += 4 + length += 1 + for i in range(self.ItemCount): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.FromLV) + data = CommFunc.WriteWORD(data, self.ToLV) + data = CommFunc.WriteDWORD(data, self.Exp) + data = CommFunc.WriteDWORD(data, self.ExpPoint) + data = CommFunc.WriteBYTE(data, self.ItemCount) + for i in range(self.ItemCount): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FromLV:%d, + ToLV:%d, + Exp:%d, + ExpPoint:%d, + ItemCount:%d, + AwardItemList:%s + '''\ + %( + self.Head.OutputString(), + self.FromLV, + self.ToLV, + self.Exp, + self.ExpPoint, + self.ItemCount, + "..." + ) + return DumpString + + +m_NAtagMCChuangongResult=tagMCChuangongResult() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChuangongResult.Head.Cmd,m_NAtagMCChuangongResult.Head.SubCmd))] = m_NAtagMCChuangongResult + + +#------------------------------------------------------ # A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult class tagMCFamilyActivityExchangeResult(Structure): @@ -25626,6 +26566,197 @@ #------------------------------------------------------ +# A5 08 家族事务信息 #tagMCFamilyAffairInfo + +class tagMCFamilyAffair(Structure): + _pack_ = 1 + _fields_ = [ + ("AffairID", c_ushort), # 事务ID + ("Star", c_ubyte), # 星级 + ("State", c_ubyte), # 状态:0-无;1-进行中;2-已完成 + ("RemainDuration", 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.AffairID = 0 + self.Star = 0 + self.State = 0 + self.RemainDuration = 0 + return + + def GetLength(self): + return sizeof(tagMCFamilyAffair) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 08 家族事务信息 //tagMCFamilyAffairInfo: + AffairID:%d, + Star:%d, + State:%d, + RemainDuration:%d + '''\ + %( + self.AffairID, + self.Star, + self.State, + self.RemainDuration + ) + return DumpString + + +class tagMCFamilyAffairInfo(Structure): + Head = tagHead() + RefreshFreeCount = 0 #(BYTE RefreshFreeCount)// 今日已免费刷新次数 + Count = 0 #(BYTE Count) + AffairInfoList = list() #(vector<tagMCFamilyAffair> AffairInfoList)// 事务列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x08 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.RefreshFreeCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAffairInfoList = tagMCFamilyAffair() + _pos = temAffairInfoList.ReadData(_lpData, _pos) + self.AffairInfoList.append(temAffairInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x08 + self.RefreshFreeCount = 0 + self.Count = 0 + self.AffairInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + for i in range(self.Count): + length += self.AffairInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.RefreshFreeCount) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AffairInfoList[i].GetLength(), self.AffairInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + RefreshFreeCount:%d, + Count:%d, + AffairInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.RefreshFreeCount, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCFamilyAffairInfo=tagMCFamilyAffairInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyAffairInfo.Head.Cmd,m_NAtagMCFamilyAffairInfo.Head.SubCmd))] = m_NAtagMCFamilyAffairInfo + + +#------------------------------------------------------ +# A5 07 家族boss副本玩家信息 #tagMCFamilyBosFBPlayerInfo + +class tagMCFamilyBosFBPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("HurtTotal", c_int), # 累计伤血,亿求余部分 + ("HurtTotalPoint", c_int), # 累计伤血,亿整除部分 + ("FightSeconds", c_int), # 已累计战斗时长,秒 + ("HurtAwardState", c_int), # 个人总伤血领奖记录,按奖励位二进制位运算表示是否已领取 + ("HurtAwardStateFamily", c_int), # 仙盟总伤血领奖记录,按奖励位二进制位运算表示是否已领取 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x07 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA5 + self.SubCmd = 0x07 + self.HurtTotal = 0 + self.HurtTotalPoint = 0 + self.FightSeconds = 0 + self.HurtAwardState = 0 + self.HurtAwardStateFamily = 0 + return + + def GetLength(self): + return sizeof(tagMCFamilyBosFBPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 07 家族boss副本玩家信息 //tagMCFamilyBosFBPlayerInfo: + Cmd:%s, + SubCmd:%s, + HurtTotal:%d, + HurtTotalPoint:%d, + FightSeconds:%d, + HurtAwardState:%d, + HurtAwardStateFamily:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.HurtTotal, + self.HurtTotalPoint, + self.FightSeconds, + self.HurtAwardState, + self.HurtAwardStateFamily + ) + return DumpString + + +m_NAtagMCFamilyBosFBPlayerInfo=tagMCFamilyBosFBPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyBosFBPlayerInfo.Cmd,m_NAtagMCFamilyBosFBPlayerInfo.SubCmd))] = m_NAtagMCFamilyBosFBPlayerInfo + + +#------------------------------------------------------ # A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward class tagMCFamilyDayAward(Structure): @@ -25634,6 +26765,7 @@ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("GetState", c_ubyte), #是否已领取 + ("MoneyDonateCount", c_ubyte), #今日货币捐献次数 ] def __init__(self): @@ -25651,6 +26783,7 @@ self.Cmd = 0xA5 self.SubCmd = 0x06 self.GetState = 0 + self.MoneyDonateCount = 0 return def GetLength(self): @@ -25663,12 +26796,14 @@ DumpString = '''// A5 06 仙盟每日福利领取状态 //tagMCFamilyDayAward: Cmd:%s, SubCmd:%s, - GetState:%d + GetState:%d, + MoneyDonateCount:%d '''\ %( self.Cmd, self.SubCmd, - self.GetState + self.GetState, + self.MoneyDonateCount ) return DumpString @@ -25783,6 +26918,185 @@ m_NAtagMCFamilyRedPacketGoldLimit=tagMCFamilyRedPacketGoldLimit() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyRedPacketGoldLimit.Cmd,m_NAtagMCFamilyRedPacketGoldLimit.SubCmd))] = m_NAtagMCFamilyRedPacketGoldLimit + + +#------------------------------------------------------ +# A5 11 打坐信息 #tagMCFamilySitInfo + +class tagMCFamilySitInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ExpRound", c_ushort), # 已获得经验轮次 + ("Exp", c_int), # 获得经验求余亿部分 + ("ExpPoint", c_int), # 获得经验整除亿部分 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA5 + self.SubCmd = 0x11 + 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 = 0xA5 + self.SubCmd = 0x11 + self.ExpRound = 0 + self.Exp = 0 + self.ExpPoint = 0 + return + + def GetLength(self): + return sizeof(tagMCFamilySitInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 11 打坐信息 //tagMCFamilySitInfo: + Cmd:%s, + SubCmd:%s, + ExpRound:%d, + Exp:%d, + ExpPoint:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ExpRound, + self.Exp, + self.ExpPoint + ) + return DumpString + + +m_NAtagMCFamilySitInfo=tagMCFamilySitInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo + + +#------------------------------------------------------ +# A5 09 仙盟阵法信息 #tagMCFamilyZhenfaInfo + +class tagMCFamilyZhenfa(Structure): + _pack_ = 1 + _fields_ = [ + ("ZhenfaType", c_ubyte), # 阵法类型 + ("ZhenfaLV", c_ushort), # 阵法等级 + ("ZhenfaExp", 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.ZhenfaType = 0 + self.ZhenfaLV = 0 + self.ZhenfaExp = 0 + return + + def GetLength(self): + return sizeof(tagMCFamilyZhenfa) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A5 09 仙盟阵法信息 //tagMCFamilyZhenfaInfo: + ZhenfaType:%d, + ZhenfaLV:%d, + ZhenfaExp:%d + '''\ + %( + self.ZhenfaType, + self.ZhenfaLV, + self.ZhenfaExp + ) + return DumpString + + +class tagMCFamilyZhenfaInfo(Structure): + Head = tagHead() + PlayerID = 0 #(DWORD PlayerID)// 当前培养阵法的玩家ID,如果有做自动捐献,需等收到的玩家ID为自己的时候才发送下一个捐献包 + Count = 0 #(BYTE Count) + ZhenfaInfoList = list() #(vector<tagMCFamilyZhenfa> ZhenfaInfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x09 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temZhenfaInfoList = tagMCFamilyZhenfa() + _pos = temZhenfaInfoList.ReadData(_lpData, _pos) + self.ZhenfaInfoList.append(temZhenfaInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x09 + self.PlayerID = 0 + self.Count = 0 + self.ZhenfaInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + for i in range(self.Count): + length += self.ZhenfaInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.ZhenfaInfoList[i].GetLength(), self.ZhenfaInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + PlayerID:%d, + Count:%d, + ZhenfaInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.PlayerID, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCFamilyZhenfaInfo=tagMCFamilyZhenfaInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyZhenfaInfo.Head.Cmd,m_NAtagMCFamilyZhenfaInfo.Head.SubCmd))] = m_NAtagMCFamilyZhenfaInfo #------------------------------------------------------ @@ -29316,6 +30630,702 @@ m_NAtagMCVirtualItemDrop=tagMCVirtualItemDrop() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCVirtualItemDrop.Head.Cmd,m_NAtagMCVirtualItemDrop.Head.SubCmd))] = m_NAtagMCVirtualItemDrop + + +#------------------------------------------------------ +# AA 67 Boss历练活动信息 #tagMCActBossTrialInfo + +class tagMCActBossTrialItem(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(tagMCActBossTrialItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 67 Boss历练活动信息 //tagMCActBossTrialInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActBossTrialBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCActBossTrialItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.Rank, + self.Count, + "..." + ) + return DumpString + + +class tagMCActBossTrialSubmitInfo(Structure): + RecordIndex = 0 #(BYTE RecordIndex)// 记录索引 + NeedCount = 0 #(WORD NeedCount)// 所需提交个数 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.RecordIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCActBossTrialItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.RecordIndex = 0 + self.NeedCount = 0 + self.Count = 0 + self.AwardItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 2 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.RecordIndex) + data = CommFunc.WriteWORD(data, self.NeedCount) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + RecordIndex:%d, + NeedCount:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.RecordIndex, + self.NeedCount, + self.Count, + "..." + ) + return DumpString + + +class tagMCActBossTrialInfo(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)// 是否每天重置 + ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 + LimitLV = 0 #(WORD LimitLV)// 限制等级 + SubmitCount = 0 #(BYTE SubmitCount) + SubmitInfoList = list() #(vector<tagMCActBossTrialSubmitInfo> SubmitInfoList)// 提交凭证信息列表 + BillardCount = 0 #(BYTE BillardCount) + BillboardInfoList = list() #(vector<tagMCActBossTrialBillard> BillboardInfoList)// 榜单信息列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x67 + 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.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.SubmitCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.SubmitCount): + temSubmitInfoList = tagMCActBossTrialSubmitInfo() + _pos = temSubmitInfoList.ReadData(_lpData, _pos) + self.SubmitInfoList.append(temSubmitInfoList) + self.BillardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.BillardCount): + temBillboardInfoList = tagMCActBossTrialBillard() + _pos = temBillboardInfoList.ReadData(_lpData, _pos) + self.BillboardInfoList.append(temBillboardInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x67 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.IsDayReset = 0 + self.ResetType = 0 + self.LimitLV = 0 + self.SubmitCount = 0 + self.SubmitInfoList = list() + self.BillardCount = 0 + self.BillboardInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 1 + length += 1 + length += 2 + length += 1 + for i in range(self.SubmitCount): + length += self.SubmitInfoList[i].GetLength() + length += 1 + for i in range(self.BillardCount): + length += self.BillboardInfoList[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.WriteBYTE(data, self.ResetType) + data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteBYTE(data, self.SubmitCount) + for i in range(self.SubmitCount): + data = CommFunc.WriteString(data, self.SubmitInfoList[i].GetLength(), self.SubmitInfoList[i].GetBuffer()) + data = CommFunc.WriteBYTE(data, self.BillardCount) + for i in range(self.BillardCount): + data = CommFunc.WriteString(data, self.BillboardInfoList[i].GetLength(), self.BillboardInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + IsDayReset:%d, + ResetType:%d, + LimitLV:%d, + SubmitCount:%d, + SubmitInfoList:%s, + BillardCount:%d, + BillboardInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.IsDayReset, + self.ResetType, + self.LimitLV, + self.SubmitCount, + "...", + self.BillardCount, + "..." + ) + return DumpString + + +m_NAtagMCActBossTrialInfo=tagMCActBossTrialInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBossTrialInfo.Head.Cmd,m_NAtagMCActBossTrialInfo.Head.SubCmd))] = m_NAtagMCActBossTrialInfo + + +#------------------------------------------------------ +# AA 68 Boss历练活动玩家信息 #tagMCActBossTrialPlayerInfo + +class tagMCActBossTrialPlayerInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("ActNum", c_ubyte), # 活动编号 + ("SubmitCount", c_ushort), # 已提交凭证个数 + ("SubmitCountAward", c_int), # 提交凭证奖励领奖状态 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xAA + self.SubCmd = 0x68 + 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 = 0x68 + self.ActNum = 0 + self.SubmitCount = 0 + self.SubmitCountAward = 0 + return + + def GetLength(self): + return sizeof(tagMCActBossTrialPlayerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 68 Boss历练活动玩家信息 //tagMCActBossTrialPlayerInfo: + Cmd:%s, + SubCmd:%s, + ActNum:%d, + SubmitCount:%d, + SubmitCountAward:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.ActNum, + self.SubmitCount, + self.SubmitCountAward + ) + return DumpString + + +m_NAtagMCActBossTrialPlayerInfo=tagMCActBossTrialPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBossTrialPlayerInfo.Cmd,m_NAtagMCActBossTrialPlayerInfo.SubCmd))] = m_NAtagMCActBossTrialPlayerInfo + + +#------------------------------------------------------ +# AA 65 买一送多活动信息 #tagMCActBuyOneInfo + +class tagMCActBuyOneInfoFreeItem(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(tagMCActBuyOneInfoFreeItem) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// AA 65 买一送多活动信息 //tagMCActBuyOneInfo: + ItemID:%d, + ItemCount:%d, + IsBind:%d + '''\ + %( + self.ItemID, + self.ItemCount, + self.IsBind + ) + return DumpString + + +class tagMCActBuyOneInfoFreeGift(Structure): + FreeIndex = 0 #(BYTE FreeIndex)// 免费领取索引 + FreeItemCount = 0 #(BYTE FreeItemCount)// 免费礼包数 + FreeItemList = list() #(vector<tagMCActBuyOneInfoFreeItem> FreeItemList)// 免费礼包列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.FreeIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FreeItemCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FreeItemCount): + temFreeItemList = tagMCActBuyOneInfoFreeItem() + _pos = temFreeItemList.ReadData(_lpData, _pos) + self.FreeItemList.append(temFreeItemList) + return _pos + + def Clear(self): + self.FreeIndex = 0 + self.FreeItemCount = 0 + self.FreeItemList = list() + return + + def GetLength(self): + length = 0 + length += 1 + length += 1 + for i in range(self.FreeItemCount): + length += self.FreeItemList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.FreeIndex) + data = CommFunc.WriteBYTE(data, self.FreeItemCount) + for i in range(self.FreeItemCount): + data = CommFunc.WriteString(data, self.FreeItemList[i].GetLength(), self.FreeItemList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + FreeIndex:%d, + FreeItemCount:%d, + FreeItemList:%s + '''\ + %( + self.FreeIndex, + self.FreeItemCount, + "..." + ) + return DumpString + + +class tagMCActBuyOneInfoGiftbag(Structure): + CTGID = 0 #(DWORD CTGID)//所需充值ID + RecordIndex = 0 #(BYTE RecordIndex)// 记录索引 + FreeGiftCount = 0 #(BYTE FreeGiftCount)// 免费礼包数 + FreeGiftList = list() #(vector<tagMCActBuyOneInfoFreeGift> FreeGiftList)// 免费礼包列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.CTGID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RecordIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.FreeGiftCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FreeGiftCount): + temFreeGiftList = tagMCActBuyOneInfoFreeGift() + _pos = temFreeGiftList.ReadData(_lpData, _pos) + self.FreeGiftList.append(temFreeGiftList) + return _pos + + def Clear(self): + self.CTGID = 0 + self.RecordIndex = 0 + self.FreeGiftCount = 0 + self.FreeGiftList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += 1 + for i in range(self.FreeGiftCount): + length += self.FreeGiftList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.CTGID) + data = CommFunc.WriteBYTE(data, self.RecordIndex) + data = CommFunc.WriteBYTE(data, self.FreeGiftCount) + for i in range(self.FreeGiftCount): + data = CommFunc.WriteString(data, self.FreeGiftList[i].GetLength(), self.FreeGiftList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + CTGID:%d, + RecordIndex:%d, + FreeGiftCount:%d, + FreeGiftList:%s + '''\ + %( + self.CTGID, + self.RecordIndex, + self.FreeGiftCount, + "..." + ) + return DumpString + + +class tagMCActBuyOneInfo(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)// 限制等级 + GiftbagCount = 0 #(BYTE GiftbagCount)// 活动礼包个数 + GiftbagList = list() #(vector<tagMCActBuyOneInfoGiftbag> GiftbagList)// 礼包列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x65 + 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.GiftbagCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.GiftbagCount): + temGiftbagList = tagMCActBuyOneInfoGiftbag() + _pos = temGiftbagList.ReadData(_lpData, _pos) + self.GiftbagList.append(temGiftbagList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x65 + self.ActNum = 0 + self.StartDate = "" + self.EndtDate = "" + self.IsDayReset = 0 + self.LimitLV = 0 + self.GiftbagCount = 0 + self.GiftbagList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 10 + length += 10 + length += 1 + length += 2 + length += 1 + for i in range(self.GiftbagCount): + length += self.GiftbagList[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.GiftbagCount) + for i in range(self.GiftbagCount): + data = CommFunc.WriteString(data, self.GiftbagList[i].GetLength(), self.GiftbagList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + StartDate:%s, + EndtDate:%s, + IsDayReset:%d, + LimitLV:%d, + GiftbagCount:%d, + GiftbagList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.StartDate, + self.EndtDate, + self.IsDayReset, + self.LimitLV, + self.GiftbagCount, + "..." + ) + return DumpString + + +m_NAtagMCActBuyOneInfo=tagMCActBuyOneInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyOneInfo.Head.Cmd,m_NAtagMCActBuyOneInfo.Head.SubCmd))] = m_NAtagMCActBuyOneInfo + + +#------------------------------------------------------ +# AA 66 买一送多活动玩家信息 #tagMCActBuyOnePlayerInfo + +class tagMCActBuyOnePlayerInfo(Structure): + Head = tagHead() + ActNum = 0 #(BYTE ActNum)// 活动编号 + FreeRecordCount = 0 #(BYTE FreeRecordCount)// 免费礼包领奖记录个数 + FreeRecordList = list() #(vector<DWORD> FreeRecordList)// 免费礼包领奖记录列表,按所需充值ID记录索引取记录,每个记录代表每个充值ID对应免费礼包的领取记录,按免费领取索引位运算记录是否已领取 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x66 + 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.FreeRecordCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.FreeRecordCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.FreeRecordList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xAA + self.Head.SubCmd = 0x66 + self.ActNum = 0 + self.FreeRecordCount = 0 + self.FreeRecordList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += 4 * self.FreeRecordCount + + 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.FreeRecordCount) + for i in range(self.FreeRecordCount): + data = CommFunc.WriteDWORD(data, self.FreeRecordList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ActNum:%d, + FreeRecordCount:%d, + FreeRecordList:%s + '''\ + %( + self.Head.OutputString(), + self.ActNum, + self.FreeRecordCount, + "..." + ) + return DumpString + + +m_NAtagMCActBuyOnePlayerInfo=tagMCActBuyOnePlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCActBuyOnePlayerInfo.Head.Cmd,m_NAtagMCActBuyOnePlayerInfo.Head.SubCmd))] = m_NAtagMCActBuyOnePlayerInfo #------------------------------------------------------ @@ -40640,6 +42650,7 @@ TodayExpPoint = 0 #(DWORD TodayExpPoint) YestordayExp = 0 #(DWORD YestordayExp) YestordayExpPoint = 0 #(DWORD YestordayExpPoint) + TotalCount = 0 #(DWORD TotalCount)// 累计活跃放置次数 data = None def __init__(self): @@ -40660,6 +42671,7 @@ 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): @@ -40676,6 +42688,7 @@ self.TodayExpPoint = 0 self.YestordayExp = 0 self.YestordayExpPoint = 0 + self.TotalCount = 0 return def GetLength(self): @@ -40686,6 +42699,7 @@ length += 1 length += 1 length += len(self.RewardInfo) + length += 4 length += 4 length += 4 length += 4 @@ -40705,6 +42719,7 @@ 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): @@ -40718,7 +42733,8 @@ TodayExp:%d, TodayExpPoint:%d, YestordayExp:%d, - YestordayExpPoint:%d + YestordayExpPoint:%d, + TotalCount:%d '''\ %( self.Head.OutputString(), @@ -40730,7 +42746,8 @@ self.TodayExp, self.TodayExpPoint, self.YestordayExp, - self.YestordayExpPoint + self.YestordayExpPoint, + self.TotalCount ) return DumpString @@ -42919,21 +44936,20 @@ #------------------------------------------------------ -# B2 13 天星塔通关层数 #tagMCSkyTowerInfo +# B2 17 境界塔信息 #tagMCRealmTowerInfo -class tagMCSkyTowerInfo(Structure): +class tagMCRealmTowerInfo(Structure): _pack_ = 1 _fields_ = [ ("Cmd", c_ubyte), ("SubCmd", c_ubyte), ("Floor", c_int), # 已通关层 - ("ServerRewardRecord", c_int), #全服挑战层领奖记录,按奖励记录二进制位存储是否已领取 ] def __init__(self): self.Clear() self.Cmd = 0xB2 - self.SubCmd = 0x13 + self.SubCmd = 0x17 return def ReadData(self, stringData, _pos=0, _len=0): @@ -42943,35 +44959,147 @@ def Clear(self): self.Cmd = 0xB2 - self.SubCmd = 0x13 + self.SubCmd = 0x17 + self.Floor = 0 + return + + def GetLength(self): + return sizeof(tagMCRealmTowerInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B2 17 境界塔信息 //tagMCRealmTowerInfo: + Cmd:%s, + SubCmd:%s, + Floor:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Floor + ) + return DumpString + + +m_NAtagMCRealmTowerInfo=tagMCRealmTowerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRealmTowerInfo.Cmd,m_NAtagMCRealmTowerInfo.SubCmd))] = m_NAtagMCRealmTowerInfo + + +#------------------------------------------------------ +# B2 13 天星塔通关层数 #tagMCSkyTowerInfo + +class tagMCSkyTowerServerReward(Structure): + _pack_ = 1 + _fields_ = [ + ("Floor", c_int), # 全服奖励层ID + ("ServerRewardRecord", 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.Floor = 0 self.ServerRewardRecord = 0 return def GetLength(self): - return sizeof(tagMCSkyTowerInfo) + return sizeof(tagMCSkyTowerServerReward) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): DumpString = '''// B2 13 天星塔通关层数 //tagMCSkyTowerInfo: - Cmd:%s, - SubCmd:%s, Floor:%d, ServerRewardRecord:%d '''\ %( - self.Cmd, - self.SubCmd, self.Floor, self.ServerRewardRecord ) return DumpString +class tagMCSkyTowerInfo(Structure): + Head = tagHead() + Floor = 0 #(DWORD Floor)// 已通关层 + ServerRewardCount = 0 #(WORD ServerRewardCount) + ServerRewardList = list() #(vector<tagMCSkyTowerServerReward> ServerRewardList)// 全服奖励领取记录列表,下发的层记录替换更新即可,领奖记录没有变化时服务端不会下发 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x13 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Floor,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerRewardCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.ServerRewardCount): + temServerRewardList = tagMCSkyTowerServerReward() + _pos = temServerRewardList.ReadData(_lpData, _pos) + self.ServerRewardList.append(temServerRewardList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB2 + self.Head.SubCmd = 0x13 + self.Floor = 0 + self.ServerRewardCount = 0 + self.ServerRewardList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 2 + for i in range(self.ServerRewardCount): + length += self.ServerRewardList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.Floor) + data = CommFunc.WriteWORD(data, self.ServerRewardCount) + for i in range(self.ServerRewardCount): + data = CommFunc.WriteString(data, self.ServerRewardList[i].GetLength(), self.ServerRewardList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Floor:%d, + ServerRewardCount:%d, + ServerRewardList:%s + '''\ + %( + self.Head.OutputString(), + self.Floor, + self.ServerRewardCount, + "..." + ) + return DumpString + + m_NAtagMCSkyTowerInfo=tagMCSkyTowerInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Cmd,m_NAtagMCSkyTowerInfo.SubCmd))] = m_NAtagMCSkyTowerInfo +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCSkyTowerInfo.Head.Cmd,m_NAtagMCSkyTowerInfo.Head.SubCmd))] = m_NAtagMCSkyTowerInfo #------------------------------------------------------ @@ -43158,6 +45286,58 @@ #------------------------------------------------------ +# B3 30 情缘相关信息 #tagMCLoveInfo + +class tagMCLoveInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("EatCandyToday", c_int), # 今日已吃喜糖次数,包含免费及付费的所有次数 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x30 + 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 = 0xB3 + self.SubCmd = 0x30 + self.EatCandyToday = 0 + return + + def GetLength(self): + return sizeof(tagMCLoveInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 30 情缘相关信息 //tagMCLoveInfo: + Cmd:%s, + SubCmd:%s, + EatCandyToday:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.EatCandyToday + ) + return DumpString + + +m_NAtagMCLoveInfo=tagMCLoveInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCLoveInfo.Cmd,m_NAtagMCLoveInfo.SubCmd))] = m_NAtagMCLoveInfo + + +#------------------------------------------------------ # B3 27 情戒信息 #tagMCLoveRingInfo class tagMCLoveRingInfo(Structure): -- Gitblit v1.8.0