From 1d314dd1b124b38f2f64d05211ecda7065691ec0 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 15 十月 2024 17:04:56 +0800 Subject: [PATCH] 5328 【越南】【英文】【砍树】神兽装备格子拓展(扩展为150格) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 2248 +++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 2,122 insertions(+), 126 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index 0274bc3..e928a98 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -1179,6 +1179,8 @@ LV = 0 #(WORD LV)// 玩家等级 Job = 0 #(BYTE Job)// 玩家职业 RealmLV = 0 #(WORD RealmLV)// 玩家境界等级 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -1196,6 +1198,8 @@ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -1209,6 +1213,8 @@ self.LV = 0 self.Job = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -1220,6 +1226,8 @@ length += 2 length += 1 length += 2 + length += 4 + length += 4 return length @@ -1232,6 +1240,8 @@ data = CommFunc.WriteWORD(data, self.LV) data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -1242,7 +1252,9 @@ Name:%s, LV:%d, Job:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.Head.OutputString(), @@ -1251,7 +1263,9 @@ self.Name, self.LV, self.Job, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -1733,6 +1747,8 @@ NameLen = 0 #(BYTE NameLen) Name = "" #(String Name)//名字 PlayeJob = 0 #(BYTE PlayeJob)//玩家职业 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 MoneyNum = 0 #(DWORD MoneyNum)//金钱数量 data = None @@ -1745,6 +1761,8 @@ self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos @@ -1752,6 +1770,8 @@ self.NameLen = 0 self.Name = "" self.PlayeJob = 0 + self.Face = 0 + self.FacePic = 0 self.MoneyNum = 0 return @@ -1761,6 +1781,8 @@ length += len(self.Name) length += 1 length += 4 + length += 4 + length += 4 return length @@ -1769,6 +1791,8 @@ data = CommFunc.WriteBYTE(data, self.NameLen) data = CommFunc.WriteString(data, self.NameLen, self.Name) data = CommFunc.WriteBYTE(data, self.PlayeJob) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) data = CommFunc.WriteDWORD(data, self.MoneyNum) return data @@ -1777,12 +1801,16 @@ NameLen:%d, Name:%s, PlayeJob:%d, + Face:%d, + FacePic:%d, MoneyNum:%d '''\ %( self.NameLen, self.Name, self.PlayeJob, + self.Face, + self.FacePic, self.MoneyNum ) return DumpString @@ -1871,6 +1899,8 @@ Name = "" #(String Name)//玩家名字 Time = 0 #(DWORD Time)//时间 PlayeJob = 0 #(BYTE PlayeJob)//玩家职业 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 MoneyType = 0 #(BYTE MoneyType)//金钱类型 MoneyNum = 0 #(DWORD MoneyNum)//金钱数量 GetWay = 0 #(BYTE GetWay)//获得途径 @@ -1893,6 +1923,8 @@ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.PlayeJob,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.MoneyType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.MoneyNum,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.GetWay,_pos = CommFunc.ReadBYTE(_lpData, _pos) @@ -1910,6 +1942,8 @@ self.Name = "" self.Time = 0 self.PlayeJob = 0 + self.Face = 0 + self.FacePic = 0 self.MoneyType = 0 self.MoneyNum = 0 self.GetWay = 0 @@ -1928,6 +1962,8 @@ length += len(self.Name) length += 4 length += 1 + length += 4 + length += 4 length += 1 length += 4 length += 1 @@ -1947,6 +1983,8 @@ data = CommFunc.WriteString(data, self.NameLen, self.Name) data = CommFunc.WriteDWORD(data, self.Time) data = CommFunc.WriteBYTE(data, self.PlayeJob) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) data = CommFunc.WriteBYTE(data, self.MoneyType) data = CommFunc.WriteDWORD(data, self.MoneyNum) data = CommFunc.WriteBYTE(data, self.GetWay) @@ -1965,6 +2003,8 @@ Name:%s, Time:%d, PlayeJob:%d, + Face:%d, + FacePic:%d, MoneyType:%d, MoneyNum:%d, GetWay:%d, @@ -1981,6 +2021,8 @@ self.Name, self.Time, self.PlayeJob, + self.Face, + self.FacePic, self.MoneyType, self.MoneyNum, self.GetWay, @@ -2409,6 +2451,7 @@ WarRank = 0 #(BYTE WarRank)//联赛排名 TotalFightPower = 0 #(DWORD TotalFightPower)//总战力,不足1个亿的部分 TotalFightPowerEx = 0 #(DWORD TotalFightPowerEx)//总战力点,1点=1亿 + EmblemID = 0 #(BYTE EmblemID)//徽章ID data = None def __init__(self): @@ -2431,6 +2474,7 @@ self.WarRank,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.TotalFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.TotalFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.EmblemID,_pos = CommFunc.ReadBYTE(_lpData, _pos) return _pos def Clear(self): @@ -2448,6 +2492,7 @@ self.WarRank = 0 self.TotalFightPower = 0 self.TotalFightPowerEx = 0 + self.EmblemID = 0 return def GetLength(self): @@ -2466,6 +2511,7 @@ length += 1 length += 4 length += 4 + length += 1 return length @@ -2485,6 +2531,7 @@ data = CommFunc.WriteBYTE(data, self.WarRank) data = CommFunc.WriteDWORD(data, self.TotalFightPower) data = CommFunc.WriteDWORD(data, self.TotalFightPowerEx) + data = CommFunc.WriteBYTE(data, self.EmblemID) return data def OutputString(self): @@ -2502,7 +2549,8 @@ JoinAccept:%d, WarRank:%d, TotalFightPower:%d, - TotalFightPowerEx:%d + TotalFightPowerEx:%d, + EmblemID:%d '''\ %( self.FamilyIndex, @@ -2518,7 +2566,8 @@ self.JoinAccept, self.WarRank, self.TotalFightPower, - self.TotalFightPowerEx + self.TotalFightPowerEx, + self.EmblemID ) return DumpString @@ -5240,6 +5289,8 @@ LV = 0 #(DWORD LV)//等级 Job = 0 #(BYTE Job) RealmLV = 0 #(WORD RealmLV)//境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -5253,6 +5304,8 @@ self.LV,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -5261,6 +5314,8 @@ self.LV = 0 self.Job = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -5270,6 +5325,8 @@ length += 4 length += 1 length += 2 + length += 4 + length += 4 return length @@ -5280,6 +5337,8 @@ data = CommFunc.WriteDWORD(data, self.LV) data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -5288,14 +5347,18 @@ Name:%s, LV:%d, Job:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.ID, self.Name, self.LV, self.Job, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -5375,6 +5438,8 @@ Job = 0 #(BYTE Job) LV = 0 #(WORD LV)//等级 RealmLV = 0 #(WORD RealmLV)//境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -5388,6 +5453,8 @@ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -5396,6 +5463,8 @@ self.Job = 0 self.LV = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -5405,6 +5474,8 @@ length += 1 length += 2 length += 2 + length += 4 + length += 4 return length @@ -5415,6 +5486,8 @@ data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteWORD(data, self.LV) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -5423,14 +5496,18 @@ PlayerName:%s, Job:%d, LV:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.PlayerID, self.PlayerName, self.Job, self.LV, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -5733,6 +5810,356 @@ m_NAtagUpdatePlayerNameResult=tagUpdatePlayerNameResult() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUpdatePlayerNameResult.Cmd,m_NAtagUpdatePlayerNameResult.SubCmd))] = m_NAtagUpdatePlayerNameResult + + +#------------------------------------------------------ +# A9 27 仙宫新晋玩家信息 #tagGCXiangongNewPlayerInfo + +class tagGCXiangongNewPlayer(Structure): + AddTime = 0 #(DWORD AddTime)// 新晋时间戳 + ServerID = 0 #(DWORD ServerID) + PlayerID = 0 #(DWORD PlayerID) + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)// 玩家名,size = NameLen + LV = 0 #(WORD LV)// 玩家等级 + Job = 0 #(BYTE Job)// 玩家职业 + RealmLV = 0 #(WORD RealmLV)// 玩家境界 + EquipShowSwitch = 0 #(DWORD EquipShowSwitch) + EquipShowIDCount = 0 #(BYTE EquipShowIDCount) + EquipShowID = list() #(vector<DWORD> EquipShowID) + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerID,_pos = CommFunc.ReadDWORD(_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) + self.EquipShowSwitch,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.EquipShowIDCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.EquipShowIDCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.EquipShowID.append(value) + return _pos + + def Clear(self): + self.AddTime = 0 + self.ServerID = 0 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.EquipShowSwitch = 0 + self.EquipShowIDCount = 0 + self.EquipShowID = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + length += 4 + length += 1 + length += 4 * self.EquipShowIDCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.AddTime) + data = CommFunc.WriteDWORD(data, self.ServerID) + 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) + data = CommFunc.WriteDWORD(data, self.EquipShowSwitch) + data = CommFunc.WriteBYTE(data, self.EquipShowIDCount) + for i in range(self.EquipShowIDCount): + data = CommFunc.WriteDWORD(data, self.EquipShowID[i]) + return data + + def OutputString(self): + DumpString = ''' + AddTime:%d, + ServerID:%d, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d, + EquipShowSwitch:%d, + EquipShowIDCount:%d, + EquipShowID:%s + '''\ + %( + self.AddTime, + self.ServerID, + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV, + self.EquipShowSwitch, + self.EquipShowIDCount, + "..." + ) + return DumpString + + +class tagGCXiangongNewPlayerInfo(Structure): + Head = tagHead() + XiangongID = 0 #(WORD XiangongID)// 仙宫ID + NewPlayerCount = 0 #(BYTE NewPlayerCount) + NewPlayerList = list() #(vector<tagGCXiangongNewPlayer> NewPlayerList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x27 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.NewPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.NewPlayerCount): + temNewPlayerList = tagGCXiangongNewPlayer() + _pos = temNewPlayerList.ReadData(_lpData, _pos) + self.NewPlayerList.append(temNewPlayerList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x27 + self.XiangongID = 0 + self.NewPlayerCount = 0 + self.NewPlayerList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 1 + for i in range(self.NewPlayerCount): + length += self.NewPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.XiangongID) + data = CommFunc.WriteBYTE(data, self.NewPlayerCount) + for i in range(self.NewPlayerCount): + data = CommFunc.WriteString(data, self.NewPlayerList[i].GetLength(), self.NewPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + XiangongID:%d, + NewPlayerCount:%d, + NewPlayerList:%s + '''\ + %( + self.Head.OutputString(), + self.XiangongID, + self.NewPlayerCount, + "..." + ) + return DumpString + + +m_NAtagGCXiangongNewPlayerInfo=tagGCXiangongNewPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongNewPlayerInfo.Head.Cmd,m_NAtagGCXiangongNewPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongNewPlayerInfo + + +#------------------------------------------------------ +# A9 28 仙宫仙名录玩家信息 #tagGCXiangongRecPlayerInfo + +class tagGCXiangongRecPlayer(Structure): + AddTime = 0 #(DWORD AddTime)// 新晋时间戳 + ServerID = 0 #(DWORD ServerID) + PlayerID = 0 #(DWORD PlayerID) + 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() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.AddTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerID,_pos = CommFunc.ReadDWORD(_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.AddTime = 0 + self.ServerID = 0 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.AddTime) + data = CommFunc.WriteDWORD(data, self.ServerID) + 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 = ''' + AddTime:%d, + ServerID:%d, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d + '''\ + %( + self.AddTime, + self.ServerID, + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV + ) + return DumpString + + +class tagGCXiangongRecPlayerInfo(Structure): + Head = tagHead() + XiangongID = 0 #(WORD XiangongID)// 仙宫ID + RecPlayerCount = 0 #(BYTE RecPlayerCount) + RecPlayerList = list() #(vector<tagGCXiangongRecPlayer> RecPlayerList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x28 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.XiangongID,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.RecPlayerCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RecPlayerCount): + temRecPlayerList = tagGCXiangongRecPlayer() + _pos = temRecPlayerList.ReadData(_lpData, _pos) + self.RecPlayerList.append(temRecPlayerList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA9 + self.Head.SubCmd = 0x28 + self.XiangongID = 0 + self.RecPlayerCount = 0 + self.RecPlayerList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + length += 1 + for i in range(self.RecPlayerCount): + length += self.RecPlayerList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.XiangongID) + data = CommFunc.WriteBYTE(data, self.RecPlayerCount) + for i in range(self.RecPlayerCount): + data = CommFunc.WriteString(data, self.RecPlayerList[i].GetLength(), self.RecPlayerList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + XiangongID:%d, + RecPlayerCount:%d, + RecPlayerList:%s + '''\ + %( + self.Head.OutputString(), + self.XiangongID, + self.RecPlayerCount, + "..." + ) + return DumpString + + +m_NAtagGCXiangongRecPlayerInfo=tagGCXiangongRecPlayerInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCXiangongRecPlayerInfo.Head.Cmd,m_NAtagGCXiangongRecPlayerInfo.Head.SubCmd))] = m_NAtagGCXiangongRecPlayerInfo #------------------------------------------------------ @@ -7281,6 +7708,8 @@ 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) @@ -7300,6 +7729,8 @@ 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) @@ -7314,6 +7745,8 @@ self.Job = 0 self.LV = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 self.MapID = 0 self.LineID = 0 self.NPCID = 0 @@ -7332,6 +7765,8 @@ length += 4 length += 4 length += 4 + length += 4 + length += 4 length += 2 length += len(self.ExData) @@ -7345,6 +7780,8 @@ 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) @@ -7360,6 +7797,8 @@ Job:%d, LV:%d, RealmLV:%d, + Face:%d, + FacePic:%d, MapID:%d, LineID:%d, NPCID:%d, @@ -7373,6 +7812,8 @@ self.Job, self.LV, self.RealmLV, + self.Face, + self.FacePic, self.MapID, self.LineID, self.NPCID, @@ -7831,6 +8272,8 @@ 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) @@ -7855,6 +8298,8 @@ 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) @@ -7875,6 +8320,8 @@ self.Job = 0 self.LV = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 self.MapID = 0 self.LineID = 0 self.NPCID = 0 @@ -7896,6 +8343,8 @@ length += 4 length += 4 length += 4 + length += 4 + length += 4 length += 2 length += len(self.ExData) length += 19 @@ -7912,6 +8361,8 @@ 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) @@ -7930,6 +8381,8 @@ Job:%d, LV:%d, RealmLV:%d, + Face:%d, + FacePic:%d, MapID:%d, LineID:%d, NPCID:%d, @@ -7946,6 +8399,8 @@ self.Job, self.LV, self.RealmLV, + self.Face, + self.FacePic, self.MapID, self.LineID, self.NPCID, @@ -8530,6 +8985,8 @@ 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): @@ -8543,6 +9000,8 @@ 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): @@ -8551,6 +9010,8 @@ self.Job = 0 self.LV = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -8560,6 +9021,8 @@ length += 1 length += 2 length += 1 + length += 4 + length += 4 return length @@ -8570,6 +9033,8 @@ 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): @@ -8578,14 +9043,18 @@ PlayerName:%s, Job:%d, LV:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.PlayerID, self.PlayerName, self.Job, self.LV, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -8914,6 +9383,8 @@ Name = "" #(char Name[33]) LV = 0 #(WORD LV) RealmLV = 0 #(WORD RealmLV)//境界等级 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -8929,6 +9400,8 @@ self.Name,_pos = CommFunc.ReadString(_lpData, _pos,33) self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -8940,6 +9413,8 @@ self.Name = "" self.LV = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -8949,6 +9424,8 @@ length += 33 length += 2 length += 2 + length += 4 + length += 4 return length @@ -8959,6 +9436,8 @@ data = CommFunc.WriteString(data, 33, self.Name) data = CommFunc.WriteWORD(data, self.LV) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -8967,14 +9446,18 @@ AskID:%d, Name:%s, LV:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.Head.OutputString(), self.AskID, self.Name, self.LV, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -9722,6 +10205,66 @@ #------------------------------------------------------ +# B3 15 相关玩家在线状态变更同步 #tagGCRelatedPlayerOnlineState + +class tagGCRelatedPlayerOnlineState(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("PlayerID", c_int), # 相关玩家ID + ("OfflineValue", c_int), # 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线; + ("IsCross", c_ubyte), # 是否跨服同步的,如果是跨服则离线时间计算时要取跨服服务器时间 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB3 + self.SubCmd = 0x15 + 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 = 0x15 + self.PlayerID = 0 + self.OfflineValue = 0 + self.IsCross = 0 + return + + def GetLength(self): + return sizeof(tagGCRelatedPlayerOnlineState) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B3 15 相关玩家在线状态变更同步 //tagGCRelatedPlayerOnlineState: + Cmd:%s, + SubCmd:%s, + PlayerID:%d, + OfflineValue:%d, + IsCross:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.PlayerID, + self.OfflineValue, + self.IsCross + ) + return DumpString + + +m_NAtagGCRelatedPlayerOnlineState=tagGCRelatedPlayerOnlineState() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCRelatedPlayerOnlineState.Cmd,m_NAtagGCRelatedPlayerOnlineState.SubCmd))] = m_NAtagGCRelatedPlayerOnlineState + + +#------------------------------------------------------ # B3 20 送礼物成功通知 #tagGCSendGiftsOKList class tagGCSendGiftsOK(Structure): @@ -10044,6 +10587,8 @@ OnlineType = 0 #(BYTE OnlineType)//在线状态, 0 不在线 1在线 IsInTeam = 0 #(BYTE IsInTeam)//是否有队伍 ServerGroupID = 0 #(DWORD ServerGroupID)//服务器组ID + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -10063,6 +10608,8 @@ self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.IsInTeam,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.ServerGroupID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -10078,6 +10625,8 @@ self.OnlineType = 0 self.IsInTeam = 0 self.ServerGroupID = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -10090,6 +10639,8 @@ length += 2 length += 1 length += 1 + length += 4 + length += 4 length += 4 return length @@ -10105,6 +10656,8 @@ data = CommFunc.WriteBYTE(data, self.OnlineType) data = CommFunc.WriteBYTE(data, self.IsInTeam) data = CommFunc.WriteDWORD(data, self.ServerGroupID) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -10117,7 +10670,9 @@ RealmLV:%d, OnlineType:%d, IsInTeam:%d, - ServerGroupID:%d + ServerGroupID:%d, + Face:%d, + FacePic:%d '''\ %( self.Head.OutputString(), @@ -10128,7 +10683,9 @@ self.RealmLV, self.OnlineType, self.IsInTeam, - self.ServerGroupID + self.ServerGroupID, + self.Face, + self.FacePic ) return DumpString @@ -10203,6 +10760,8 @@ LV = 0 #(WORD LV)//等级 RealmLV = 0 #(WORD RealmLV)//境界 OnlineType = 0 #(BYTE OnlineType)//0不在线 1在线 2脱机在线 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -10217,6 +10776,8 @@ self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.OnlineType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -10226,6 +10787,8 @@ self.LV = 0 self.RealmLV = 0 self.OnlineType = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -10236,6 +10799,8 @@ length += 2 length += 2 length += 1 + length += 4 + length += 4 return length @@ -10247,6 +10812,8 @@ data = CommFunc.WriteWORD(data, self.LV) data = CommFunc.WriteWORD(data, self.RealmLV) data = CommFunc.WriteBYTE(data, self.OnlineType) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -10256,7 +10823,9 @@ Job:%d, LV:%d, RealmLV:%d, - OnlineType:%d + OnlineType:%d, + Face:%d, + FacePic:%d '''\ %( self.PlayerID, @@ -10264,7 +10833,9 @@ self.Job, self.LV, self.RealmLV, - self.OnlineType + self.OnlineType, + self.Face, + self.FacePic ) return DumpString @@ -13127,6 +13698,7 @@ RealmLV = 0 #(WORD RealmLV)// 玩家境界 FightPower = 0 #(DWORD FightPower)// 战力,求余亿 FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿 + OfflineValue = 0 #(DWORD OfflineValue)// 离线值:0-在线;1-离线;>1-上次离线时间戳,可用于计算离线多久了;当取不到玩家信息时用1代表已离线; Value1 = 0 #(DWORD Value1)//值1 Value2 = 0 #(DWORD Value2)//值2 data = None @@ -13146,6 +13718,7 @@ self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.OfflineValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos @@ -13160,6 +13733,7 @@ self.RealmLV = 0 self.FightPower = 0 self.FightPowerEx = 0 + self.OfflineValue = 0 self.Value1 = 0 self.Value2 = 0 return @@ -13173,6 +13747,7 @@ length += 2 length += 1 length += 2 + length += 4 length += 4 length += 4 length += 4 @@ -13191,6 +13766,7 @@ data = CommFunc.WriteWORD(data, self.RealmLV) data = CommFunc.WriteDWORD(data, self.FightPower) data = CommFunc.WriteDWORD(data, self.FightPowerEx) + data = CommFunc.WriteDWORD(data, self.OfflineValue) data = CommFunc.WriteDWORD(data, self.Value1) data = CommFunc.WriteDWORD(data, self.Value2) return data @@ -13206,6 +13782,7 @@ RealmLV:%d, FightPower:%d, FightPowerEx:%d, + OfflineValue:%d, Value1:%d, Value2:%d '''\ @@ -13219,6 +13796,7 @@ self.RealmLV, self.FightPower, self.FightPowerEx, + self.OfflineValue, self.Value1, self.Value2 ) @@ -13796,6 +14374,8 @@ Job = 0 #(BYTE Job)// 玩家职业 JobLevel = 0 #(BYTE JobLevel)// 玩家职业阶级 RealmLV = 0 #(WORD RealmLV)// 玩家境界等级 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -13811,6 +14391,8 @@ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -13821,6 +14403,8 @@ self.Job = 0 self.JobLevel = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -13832,6 +14416,8 @@ length += 1 length += 1 length += 2 + length += 4 + length += 4 return length @@ -13844,6 +14430,8 @@ data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteBYTE(data, self.JobLevel) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -13854,7 +14442,9 @@ LV:%d, Job:%d, JobLevel:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.PlayerID, @@ -13863,7 +14453,9 @@ self.LV, self.Job, self.JobLevel, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -14475,6 +15067,8 @@ Job = 0 #(BYTE Job)// 玩家职业 JobLevel = 0 #(BYTE JobLevel)// 玩家职业阶级 RealmLV = 0 #(WORD RealmLV)// 玩家境界等级 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 PlayerState = 0 #(BYTE PlayerState)// 0: 离线 1:在线 MapID = 0 #(DWORD MapID)// 地图ID LineID = 0 #(BYTE LineID)// 线路ID @@ -14495,6 +15089,8 @@ self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.JobLevel,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.PlayerState,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.MapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.LineID,_pos = CommFunc.ReadBYTE(_lpData, _pos) @@ -14510,6 +15106,8 @@ self.Job = 0 self.JobLevel = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 self.PlayerState = 0 self.MapID = 0 self.LineID = 0 @@ -14526,6 +15124,8 @@ length += 1 length += 1 length += 2 + length += 4 + length += 4 length += 1 length += 4 length += 1 @@ -14543,6 +15143,8 @@ data = CommFunc.WriteBYTE(data, self.Job) data = CommFunc.WriteBYTE(data, self.JobLevel) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) data = CommFunc.WriteBYTE(data, self.PlayerState) data = CommFunc.WriteDWORD(data, self.MapID) data = CommFunc.WriteBYTE(data, self.LineID) @@ -14559,6 +15161,8 @@ Job:%d, JobLevel:%d, RealmLV:%d, + Face:%d, + FacePic:%d, PlayerState:%d, MapID:%d, LineID:%d @@ -14573,6 +15177,8 @@ self.Job, self.JobLevel, self.RealmLV, + self.Face, + self.FacePic, self.PlayerState, self.MapID, self.LineID @@ -15548,6 +16154,8 @@ FightPower = 0 #(DWORD FightPower)// 战力求余亿部分 FightPowerEx = 0 #(DWORD FightPowerEx)// 战力整除亿部分 RealmLV = 0 #(WORD RealmLV) + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -15564,6 +16172,8 @@ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -15575,6 +16185,8 @@ self.FightPower = 0 self.FightPowerEx = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -15587,6 +16199,8 @@ length += 4 length += 4 length += 2 + length += 4 + length += 4 return length @@ -15600,6 +16214,8 @@ data = CommFunc.WriteDWORD(data, self.FightPower) data = CommFunc.WriteDWORD(data, self.FightPowerEx) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -15611,7 +16227,9 @@ LV:%d, FightPower:%d, FightPowerEx:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.PlayerID, @@ -15621,7 +16239,9 @@ self.LV, self.FightPower, self.FightPowerEx, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -16569,6 +17189,8 @@ FightPower = 0 #(DWORD FightPower)// 战力求余亿部分 FightPowerEx = 0 #(DWORD FightPowerEx)// 战力整除亿部分 RealmLV = 0 #(WORD RealmLV) + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 data = None def __init__(self): @@ -16585,6 +17207,8 @@ self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.RealmLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -16596,6 +17220,8 @@ self.FightPower = 0 self.FightPowerEx = 0 self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 return def GetLength(self): @@ -16608,6 +17234,8 @@ length += 4 length += 4 length += 2 + length += 4 + length += 4 return length @@ -16621,6 +17249,8 @@ data = CommFunc.WriteDWORD(data, self.FightPower) data = CommFunc.WriteDWORD(data, self.FightPowerEx) data = CommFunc.WriteWORD(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) return data def OutputString(self): @@ -16632,7 +17262,9 @@ LV:%d, FightPower:%d, FightPowerEx:%d, - RealmLV:%d + RealmLV:%d, + Face:%d, + FacePic:%d '''\ %( self.PlayerID, @@ -16642,7 +17274,9 @@ self.LV, self.FightPower, self.FightPowerEx, - self.RealmLV + self.RealmLV, + self.Face, + self.FacePic ) return DumpString @@ -18622,6 +19256,9 @@ ExAttr19 = 0 #(DWORD ExAttr19)//预留的扩展属性字段,用来存放项目特定的属性 ExAttr20 = 0 #(DWORD ExAttr20)//预留的扩展属性字段,用来存放项目特定的属性 HPEx = 0 #(DWORD HPEx)//当前血量 超过E的记录 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 + RoleType = 0 #(DWORD RoleType)//角色类型(各项目可自定义含义,如种族,与职业区分) data = None def __init__(self): @@ -18728,6 +19365,9 @@ self.ExAttr19,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.ExAttr20,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.HPEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RoleType,_pos = CommFunc.ReadDWORD(_lpData, _pos) return _pos def Clear(self): @@ -18830,6 +19470,9 @@ self.ExAttr19 = 0 self.ExAttr20 = 0 self.HPEx = 0 + self.Face = 0 + self.FacePic = 0 + self.RoleType = 0 return def GetLength(self): @@ -18922,6 +19565,9 @@ length += 4 length += 4 length += 15 + length += 4 + length += 4 + length += 4 length += 4 length += 4 length += 4 @@ -19031,6 +19677,9 @@ data = CommFunc.WriteDWORD(data, self.ExAttr19) data = CommFunc.WriteDWORD(data, self.ExAttr20) data = CommFunc.WriteDWORD(data, self.HPEx) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteDWORD(data, self.RoleType) return data def OutputString(self): @@ -19130,7 +19779,10 @@ ExAttr18:%d, ExAttr19:%d, ExAttr20:%d, - HPEx:%d + HPEx:%d, + Face:%d, + FacePic:%d, + RoleType:%d '''\ %( self.Head.OutputString(), @@ -19228,7 +19880,10 @@ self.ExAttr18, self.ExAttr19, self.ExAttr20, - self.HPEx + self.HPEx, + self.Face, + self.FacePic, + self.RoleType ) return DumpString @@ -30082,18 +30737,17 @@ #------------------------------------------------------ # A7 17 聊天气泡框状态 #tagMCChatBubbleBoxState -class tagMCChatBubbleBoxState(Structure): +class tagMCChatBubbleBox(Structure): _pack_ = 1 _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("BoxState", c_int), # 按二进制位存储代表是否已开启,暂支持31位,以后有需要再加 + ("BoxID", c_ubyte), #气泡ID + ("State", c_ubyte), #是否已激活 + ("EndTime", c_int), #到期时间戳,0为永久 + ("Star", c_ubyte), #星级 ] def __init__(self): self.Clear() - self.Cmd = 0xA7 - self.SubCmd = 0x17 return def ReadData(self, stringData, _pos=0, _len=0): @@ -30102,33 +30756,98 @@ return _pos + self.GetLength() def Clear(self): - self.Cmd = 0xA7 - self.SubCmd = 0x17 - self.BoxState = 0 + self.BoxID = 0 + self.State = 0 + self.EndTime = 0 + self.Star = 0 return def GetLength(self): - return sizeof(tagMCChatBubbleBoxState) + return sizeof(tagMCChatBubbleBox) def GetBuffer(self): return string_at(addressof(self), self.GetLength()) def OutputString(self): DumpString = '''// A7 17 聊天气泡框状态 //tagMCChatBubbleBoxState: - Cmd:%s, - SubCmd:%s, - BoxState:%d + BoxID:%d, + State:%d, + EndTime:%d, + Star:%d '''\ %( - self.Cmd, - self.SubCmd, - self.BoxState + self.BoxID, + self.State, + self.EndTime, + self.Star + ) + return DumpString + + +class tagMCChatBubbleBoxState(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + BoxList = list() #(vector<tagMCChatBubbleBox> BoxList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x17 + 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): + temBoxList = tagMCChatBubbleBox() + _pos = temBoxList.ReadData(_lpData, _pos) + self.BoxList.append(temBoxList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x17 + self.Count = 0 + self.BoxList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.BoxList[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.BoxList[i].GetLength(), self.BoxList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + BoxList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." ) return DumpString m_NAtagMCChatBubbleBoxState=tagMCChatBubbleBoxState() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Cmd,m_NAtagMCChatBubbleBoxState.SubCmd))] = m_NAtagMCChatBubbleBoxState +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCChatBubbleBoxState.Head.Cmd,m_NAtagMCChatBubbleBoxState.Head.SubCmd))] = m_NAtagMCChatBubbleBoxState #------------------------------------------------------ @@ -30427,6 +31146,118 @@ m_NAtagMCDynamicBarrierState=tagMCDynamicBarrierState() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCDynamicBarrierState.Head.Cmd,m_NAtagMCDynamicBarrierState.Head.SubCmd))] = m_NAtagMCDynamicBarrierState + + +#------------------------------------------------------ +# A7 21 表情包信息 #tagMCEmojiPackInfo + +class tagMCEmojiPack(Structure): + _pack_ = 1 + _fields_ = [ + ("PackID", c_ubyte), #表情包ID + ("State", c_ubyte), #是否已激活 + ("EndTime", c_int), #到期时间戳,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.PackID = 0 + self.State = 0 + self.EndTime = 0 + return + + def GetLength(self): + return sizeof(tagMCEmojiPack) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A7 21 表情包信息 //tagMCEmojiPackInfo: + PackID:%d, + State:%d, + EndTime:%d + '''\ + %( + self.PackID, + self.State, + self.EndTime + ) + return DumpString + + +class tagMCEmojiPackInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + EmojiPackList = list() #(vector<tagMCEmojiPack> EmojiPackList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x21 + 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): + temEmojiPackList = tagMCEmojiPack() + _pos = temEmojiPackList.ReadData(_lpData, _pos) + self.EmojiPackList.append(temEmojiPackList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA7 + self.Head.SubCmd = 0x21 + self.Count = 0 + self.EmojiPackList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.EmojiPackList[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.EmojiPackList[i].GetLength(), self.EmojiPackList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + EmojiPackList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCEmojiPackInfo=tagMCEmojiPackInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCEmojiPackInfo.Head.Cmd,m_NAtagMCEmojiPackInfo.Head.SubCmd))] = m_NAtagMCEmojiPackInfo #------------------------------------------------------ @@ -32973,12 +33804,72 @@ return DumpString +class tagMCActBossTrialAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + 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.NeedScore,_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.NeedScore = 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.NeedScore) + 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 = ''' + NeedScore:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + class tagMCActBossTrialBillard(Structure): Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 Count = 0 #(BYTE Count)// 奖励物品数 AwardItemList = list() #(vector<tagMCActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励 MemCount = 0 #(BYTE MemCount)// 成员奖励物品数 MemAwardItemList = list() #(vector<tagMCActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCActBossTrialAwardEx> AwardItemExList)// 额外奖励列表 data = None def __init__(self): @@ -32998,6 +33889,12 @@ temMemAwardItemList = tagMCActBossTrialItem() _pos = temMemAwardItemList.ReadData(_lpData, _pos) self.MemAwardItemList.append(temMemAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCActBossTrialAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) return _pos def Clear(self): @@ -33006,6 +33903,9 @@ self.AwardItemList = list() self.MemCount = 0 self.MemAwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() return def GetLength(self): @@ -33017,6 +33917,10 @@ length += 1 for i in range(self.MemCount): length += self.MemAwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[i].GetLength() return length @@ -33029,6 +33933,10 @@ data = CommFunc.WriteBYTE(data, self.MemCount) for i in range(self.MemCount): data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) return data def OutputString(self): @@ -33037,13 +33945,19 @@ Count:%d, AwardItemList:%s, MemCount:%d, - MemAwardItemList:%s + MemAwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s '''\ %( self.Rank, self.Count, "...", self.MemCount, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -35588,10 +36502,10 @@ return DumpString -class tagMCActGubaoBillard(Structure): - Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 - Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表 +class tagMCActGubaoAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 额外奖励物品列表 data = None def __init__(self): @@ -35600,7 +36514,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): temAwardItemList = tagMCActGubaoItem() @@ -35609,7 +36523,7 @@ return _pos def Clear(self): - self.Rank = 0 + self.NeedScore = 0 self.Count = 0 self.AwardItemList = list() return @@ -35625,7 +36539,7 @@ def GetBuffer(self): data = '' - data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.NeedScore) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) @@ -35633,13 +36547,96 @@ def OutputString(self): DumpString = ''' - Rank:%d, + NeedScore:%d, Count:%d, AwardItemList:%s '''\ %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + +class tagMCActGubaoBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActGubaoItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCActGubaoAwardEx> AwardItemExList)// 额外奖励列表 + 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 = tagMCActGubaoItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCActGubaoAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[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()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s + '''\ + %( self.Rank, self.Count, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -35653,6 +36650,7 @@ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss LimitLV = 0 #(WORD LimitLV)// 限制等级 + ShopType = 0 #(WORD ShopType)// 开放商店类型,可能为0不开放 PersonalBillCount = 0 #(BYTE PersonalBillCount) PersonalBillboardInfoList = list() #(vector<tagMCActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 data = None @@ -35672,6 +36670,7 @@ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.LimitLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ShopType,_pos = CommFunc.ReadWORD(_lpData, _pos) self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.PersonalBillCount): temPersonalBillboardInfoList = tagMCActGubaoBillard() @@ -35690,6 +36689,7 @@ self.JoinStartTime = "" self.JoinEndTime = "" self.LimitLV = 0 + self.ShopType = 0 self.PersonalBillCount = 0 self.PersonalBillboardInfoList = list() return @@ -35702,6 +36702,7 @@ length += 10 length += 5 length += 5 + length += 2 length += 2 length += 1 for i in range(self.PersonalBillCount): @@ -35718,6 +36719,7 @@ data = CommFunc.WriteString(data, 5, self.JoinStartTime) data = CommFunc.WriteString(data, 5, self.JoinEndTime) data = CommFunc.WriteWORD(data, self.LimitLV) + data = CommFunc.WriteWORD(data, self.ShopType) data = CommFunc.WriteBYTE(data, self.PersonalBillCount) for i in range(self.PersonalBillCount): data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) @@ -35732,6 +36734,7 @@ JoinStartTime:%s, JoinEndTime:%s, LimitLV:%d, + ShopType:%d, PersonalBillCount:%d, PersonalBillboardInfoList:%s '''\ @@ -35743,6 +36746,7 @@ self.JoinStartTime, self.JoinEndTime, self.LimitLV, + self.ShopType, self.PersonalBillCount, "..." ) @@ -35997,10 +37001,10 @@ return DumpString -class tagMCActHorsePetTrainBillard(Structure): - Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 - Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 奖励物品列表 +class tagMCActHorsePetTrainAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 额外奖励物品列表 data = None def __init__(self): @@ -36009,7 +37013,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): temAwardItemList = tagMCActHorsePetTrainItem() @@ -36018,7 +37022,7 @@ return _pos def Clear(self): - self.Rank = 0 + self.NeedScore = 0 self.Count = 0 self.AwardItemList = list() return @@ -36034,7 +37038,7 @@ def GetBuffer(self): data = '' - data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.NeedScore) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) @@ -36042,13 +37046,96 @@ def OutputString(self): DumpString = ''' - Rank:%d, + NeedScore:%d, Count:%d, AwardItemList:%s '''\ %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + +class tagMCActHorsePetTrainBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActHorsePetTrainItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCActHorsePetTrainAwardEx> AwardItemExList)// 额外奖励列表 + 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 = tagMCActHorsePetTrainItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCActHorsePetTrainAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[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()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s + '''\ + %( self.Rank, self.Count, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -39818,10 +40905,10 @@ return DumpString -class tagMCActXianXiaMJBillard(Structure): - Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 - Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表 +class tagMCActXianXiaMJAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 额外奖励物品列表 data = None def __init__(self): @@ -39830,7 +40917,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): temAwardItemList = tagMCActXianXiaMJItem() @@ -39839,7 +40926,7 @@ return _pos def Clear(self): - self.Rank = 0 + self.NeedScore = 0 self.Count = 0 self.AwardItemList = list() return @@ -39855,7 +40942,7 @@ def GetBuffer(self): data = '' - data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.NeedScore) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) @@ -39863,13 +40950,96 @@ def OutputString(self): DumpString = ''' - Rank:%d, + NeedScore:%d, Count:%d, AwardItemList:%s '''\ %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + +class tagMCActXianXiaMJBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCActXianXiaMJItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表 + 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 = tagMCActXianXiaMJItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCActXianXiaMJAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[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()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s + '''\ + %( self.Rank, self.Count, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -41166,12 +42336,72 @@ return DumpString +class tagMCCrossActBossTrialAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 额外奖励物品列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temAwardItemList = tagMCCrossActBossTrialItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + return _pos + + def Clear(self): + self.NeedScore = 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.NeedScore) + 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 = ''' + NeedScore:%d, + Count:%d, + AwardItemList:%s + '''\ + %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + class tagMCCrossActBossTrialBillard(Structure): Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 Count = 0 #(BYTE Count)// 奖励物品数 AwardItemList = list() #(vector<tagMCCrossActBossTrialItem> AwardItemList)// 奖励物品列表,当仙盟榜时,如果有该奖励则代表盟主奖励,否则默认均为成员奖励 MemCount = 0 #(BYTE MemCount)// 成员奖励物品数 MemAwardItemList = list() #(vector<tagMCCrossActBossTrialItem> MemAwardItemList)// 成员奖励物品列表,仅仙盟榜时有效 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCCrossActBossTrialAwardEx> AwardItemExList)// 额外奖励列表 data = None def __init__(self): @@ -41191,6 +42421,12 @@ temMemAwardItemList = tagMCCrossActBossTrialItem() _pos = temMemAwardItemList.ReadData(_lpData, _pos) self.MemAwardItemList.append(temMemAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCCrossActBossTrialAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) return _pos def Clear(self): @@ -41199,6 +42435,9 @@ self.AwardItemList = list() self.MemCount = 0 self.MemAwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() return def GetLength(self): @@ -41210,6 +42449,10 @@ length += 1 for i in range(self.MemCount): length += self.MemAwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[i].GetLength() return length @@ -41222,6 +42465,10 @@ data = CommFunc.WriteBYTE(data, self.MemCount) for i in range(self.MemCount): data = CommFunc.WriteString(data, self.MemAwardItemList[i].GetLength(), self.MemAwardItemList[i].GetBuffer()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) return data def OutputString(self): @@ -41230,13 +42477,19 @@ Count:%d, AwardItemList:%s, MemCount:%d, - MemAwardItemList:%s + MemAwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s '''\ %( self.Rank, self.Count, "...", self.MemCount, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -41253,8 +42506,6 @@ JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置 ResetType = 0 #(BYTE ResetType)// 重置类型,0-0点重置;1-5点重置 - RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜个数保底限制; - RankLimitFamily = 0 #(WORD RankLimitFamily)// 仙盟榜上榜个数保底限制; PersonalBillCount = 0 #(BYTE PersonalBillCount) PersonalBillboardInfoList = list() #(vector<tagMCCrossActBossTrialBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 FamilyBillCount = 0 #(BYTE FamilyBillCount) @@ -41279,8 +42530,6 @@ self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) self.ResetType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.RankLimitFamily,_pos = CommFunc.ReadWORD(_lpData, _pos) self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.PersonalBillCount): temPersonalBillboardInfoList = tagMCCrossActBossTrialBillard() @@ -41307,8 +42556,6 @@ self.JoinEndTime = "" self.IsDayReset = 0 self.ResetType = 0 - self.RankLimitPersonal = 0 - self.RankLimitFamily = 0 self.PersonalBillCount = 0 self.PersonalBillboardInfoList = list() self.FamilyBillCount = 0 @@ -41327,8 +42574,6 @@ length += 5 length += 1 length += 1 - length += 2 - length += 2 length += 1 for i in range(self.PersonalBillCount): length += self.PersonalBillboardInfoList[i].GetLength() @@ -41350,8 +42595,6 @@ data = CommFunc.WriteString(data, 5, self.JoinEndTime) data = CommFunc.WriteBYTE(data, self.IsDayReset) data = CommFunc.WriteBYTE(data, self.ResetType) - data = CommFunc.WriteWORD(data, self.RankLimitPersonal) - data = CommFunc.WriteWORD(data, self.RankLimitFamily) data = CommFunc.WriteBYTE(data, self.PersonalBillCount) for i in range(self.PersonalBillCount): data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) @@ -41372,8 +42615,6 @@ JoinEndTime:%s, IsDayReset:%d, ResetType:%d, - RankLimitPersonal:%d, - RankLimitFamily:%d, PersonalBillCount:%d, PersonalBillboardInfoList:%s, FamilyBillCount:%d, @@ -41390,8 +42631,6 @@ self.JoinEndTime, self.IsDayReset, self.ResetType, - self.RankLimitPersonal, - self.RankLimitFamily, self.PersonalBillCount, "...", self.FamilyBillCount, @@ -41450,10 +42689,10 @@ return DumpString -class tagMCCrossActGubaoBillard(Structure): - Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 - Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表 +class tagMCCrossActGubaoAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 额外奖励物品列表 data = None def __init__(self): @@ -41462,7 +42701,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): temAwardItemList = tagMCCrossActGubaoItem() @@ -41471,7 +42710,7 @@ return _pos def Clear(self): - self.Rank = 0 + self.NeedScore = 0 self.Count = 0 self.AwardItemList = list() return @@ -41487,7 +42726,7 @@ def GetBuffer(self): data = '' - data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.NeedScore) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) @@ -41495,13 +42734,96 @@ def OutputString(self): DumpString = ''' - Rank:%d, + NeedScore:%d, Count:%d, AwardItemList:%s '''\ %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + +class tagMCCrossActGubaoBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActGubaoItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCCrossActGubaoAwardEx> AwardItemExList)// 额外奖励列表 + 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 = tagMCCrossActGubaoItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCCrossActGubaoAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[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()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s + '''\ + %( self.Rank, self.Count, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -41516,7 +42838,6 @@ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss - RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制; PersonalBillCount = 0 #(BYTE PersonalBillCount) PersonalBillboardInfoList = list() #(vector<tagMCCrossActGubaoBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 data = None @@ -41537,7 +42858,6 @@ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) - self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos) self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.PersonalBillCount): temPersonalBillboardInfoList = tagMCCrossActGubaoBillard() @@ -41557,7 +42877,6 @@ self.EndtDate = "" self.JoinStartTime = "" self.JoinEndTime = "" - self.RankLimitPersonal = 0 self.PersonalBillCount = 0 self.PersonalBillboardInfoList = list() return @@ -41572,7 +42891,6 @@ length += 10 length += 5 length += 5 - length += 2 length += 1 for i in range(self.PersonalBillCount): length += self.PersonalBillboardInfoList[i].GetLength() @@ -41589,7 +42907,6 @@ data = CommFunc.WriteString(data, 10, self.EndtDate) data = CommFunc.WriteString(data, 5, self.JoinStartTime) data = CommFunc.WriteString(data, 5, self.JoinEndTime) - data = CommFunc.WriteWORD(data, self.RankLimitPersonal) data = CommFunc.WriteBYTE(data, self.PersonalBillCount) for i in range(self.PersonalBillCount): data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) @@ -41605,7 +42922,6 @@ EndtDate:%s, JoinStartTime:%s, JoinEndTime:%s, - RankLimitPersonal:%d, PersonalBillCount:%d, PersonalBillboardInfoList:%s '''\ @@ -41618,7 +42934,6 @@ self.EndtDate, self.JoinStartTime, self.JoinEndTime, - self.RankLimitPersonal, self.PersonalBillCount, "..." ) @@ -41675,10 +42990,10 @@ return DumpString -class tagMCCrossActHorsePetTrainBillard(Structure): - Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 - Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 奖励物品列表 +class tagMCCrossActHorsePetTrainAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 额外奖励物品列表 data = None def __init__(self): @@ -41687,7 +43002,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): temAwardItemList = tagMCCrossActHorsePetTrainItem() @@ -41696,7 +43011,7 @@ return _pos def Clear(self): - self.Rank = 0 + self.NeedScore = 0 self.Count = 0 self.AwardItemList = list() return @@ -41712,7 +43027,7 @@ def GetBuffer(self): data = '' - data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.NeedScore) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) @@ -41720,13 +43035,96 @@ def OutputString(self): DumpString = ''' - Rank:%d, + NeedScore:%d, Count:%d, AwardItemList:%s '''\ %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + +class tagMCCrossActHorsePetTrainBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActHorsePetTrainItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCCrossActHorsePetTrainAwardEx> AwardItemExList)// 额外奖励列表 + 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 = tagMCCrossActHorsePetTrainItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCCrossActHorsePetTrainAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[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()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s + '''\ + %( self.Rank, self.Count, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -41741,7 +43139,6 @@ EndtDate = "" #(char EndtDate[10])// 结束日期 y-m-d JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss - RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制; PersonalBillCount = 0 #(BYTE PersonalBillCount) PersonalBillboardInfoList = list() #(vector<tagMCCrossActHorsePetTrainBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 data = None @@ -41762,7 +43159,6 @@ self.EndtDate,_pos = CommFunc.ReadString(_lpData, _pos,10) self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) - self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos) self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.PersonalBillCount): temPersonalBillboardInfoList = tagMCCrossActHorsePetTrainBillard() @@ -41782,7 +43178,6 @@ self.EndtDate = "" self.JoinStartTime = "" self.JoinEndTime = "" - self.RankLimitPersonal = 0 self.PersonalBillCount = 0 self.PersonalBillboardInfoList = list() return @@ -41797,7 +43192,6 @@ length += 10 length += 5 length += 5 - length += 2 length += 1 for i in range(self.PersonalBillCount): length += self.PersonalBillboardInfoList[i].GetLength() @@ -41814,7 +43208,6 @@ data = CommFunc.WriteString(data, 10, self.EndtDate) data = CommFunc.WriteString(data, 5, self.JoinStartTime) data = CommFunc.WriteString(data, 5, self.JoinEndTime) - data = CommFunc.WriteWORD(data, self.RankLimitPersonal) data = CommFunc.WriteBYTE(data, self.PersonalBillCount) for i in range(self.PersonalBillCount): data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) @@ -41830,7 +43223,6 @@ EndtDate:%s, JoinStartTime:%s, JoinEndTime:%s, - RankLimitPersonal:%d, PersonalBillCount:%d, PersonalBillboardInfoList:%s '''\ @@ -41843,7 +43235,6 @@ self.EndtDate, self.JoinStartTime, self.JoinEndTime, - self.RankLimitPersonal, self.PersonalBillCount, "..." ) @@ -41900,10 +43291,10 @@ return DumpString -class tagMCCrossActXianXiaMJBillard(Structure): - Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 - Count = 0 #(BYTE Count)// 奖励物品数 - AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表 +class tagMCCrossActXianXiaMJAwardEx(Structure): + NeedScore = 0 #(DWORD NeedScore)// 额外奖励所需积分 + Count = 0 #(BYTE Count)// 额外奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 额外奖励物品列表 data = None def __init__(self): @@ -41912,7 +43303,7 @@ def ReadData(self, _lpData, _pos=0, _Len=0): self.Clear() - self.Rank,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.Count): temAwardItemList = tagMCCrossActXianXiaMJItem() @@ -41921,7 +43312,7 @@ return _pos def Clear(self): - self.Rank = 0 + self.NeedScore = 0 self.Count = 0 self.AwardItemList = list() return @@ -41937,7 +43328,7 @@ def GetBuffer(self): data = '' - data = CommFunc.WriteDWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.NeedScore) data = CommFunc.WriteBYTE(data, self.Count) for i in range(self.Count): data = CommFunc.WriteString(data, self.AwardItemList[i].GetLength(), self.AwardItemList[i].GetBuffer()) @@ -41945,13 +43336,96 @@ def OutputString(self): DumpString = ''' - Rank:%d, + NeedScore:%d, Count:%d, AwardItemList:%s '''\ %( + self.NeedScore, + self.Count, + "..." + ) + return DumpString + + +class tagMCCrossActXianXiaMJBillard(Structure): + Rank = 0 #(DWORD Rank)// 名次,1-代表第一名;支持夸段,如1,3 代表第1名,第2~3名 + Count = 0 #(BYTE Count)// 奖励物品数 + AwardItemList = list() #(vector<tagMCCrossActXianXiaMJItem> AwardItemList)// 奖励物品列表 + NeedScore = 0 #(DWORD NeedScore)// 上榜所需积分 + CountEx = 0 #(BYTE CountEx)// 额外奖励数 + AwardItemExList = list() #(vector<tagMCCrossActXianXiaMJAwardEx> AwardItemExList)// 额外奖励列表 + 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 = tagMCCrossActXianXiaMJItem() + _pos = temAwardItemList.ReadData(_lpData, _pos) + self.AwardItemList.append(temAwardItemList) + self.NeedScore,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CountEx,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.CountEx): + temAwardItemExList = tagMCCrossActXianXiaMJAwardEx() + _pos = temAwardItemExList.ReadData(_lpData, _pos) + self.AwardItemExList.append(temAwardItemExList) + return _pos + + def Clear(self): + self.Rank = 0 + self.Count = 0 + self.AwardItemList = list() + self.NeedScore = 0 + self.CountEx = 0 + self.AwardItemExList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + for i in range(self.Count): + length += self.AwardItemList[i].GetLength() + length += 4 + length += 1 + for i in range(self.CountEx): + length += self.AwardItemExList[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()) + data = CommFunc.WriteDWORD(data, self.NeedScore) + data = CommFunc.WriteBYTE(data, self.CountEx) + for i in range(self.CountEx): + data = CommFunc.WriteString(data, self.AwardItemExList[i].GetLength(), self.AwardItemExList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Rank:%d, + Count:%d, + AwardItemList:%s, + NeedScore:%d, + CountEx:%d, + AwardItemExList:%s + '''\ + %( self.Rank, self.Count, + "...", + self.NeedScore, + self.CountEx, "..." ) return DumpString @@ -41967,7 +43441,6 @@ JoinStartTime = "" #(char JoinStartTime[5])// 参与开始时间点 mm:ss JoinEndTime = "" #(char JoinEndTime[5])// 参与结束时间点 mm:ss IsDayReset = 0 #(BYTE IsDayReset)// 是否每天重置 - RankLimitPersonal = 0 #(WORD RankLimitPersonal)// 个人榜上榜积分保底限制; PersonalBillCount = 0 #(BYTE PersonalBillCount) PersonalBillboardInfoList = list() #(vector<tagMCCrossActXianXiaMJBillard> PersonalBillboardInfoList)// 个人榜单奖励信息列表,如果没有代表本次活动没有该榜奖励 data = None @@ -41989,7 +43462,6 @@ self.JoinStartTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.JoinEndTime,_pos = CommFunc.ReadString(_lpData, _pos,5) self.IsDayReset,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.RankLimitPersonal,_pos = CommFunc.ReadWORD(_lpData, _pos) self.PersonalBillCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) for i in range(self.PersonalBillCount): temPersonalBillboardInfoList = tagMCCrossActXianXiaMJBillard() @@ -42010,7 +43482,6 @@ self.JoinStartTime = "" self.JoinEndTime = "" self.IsDayReset = 0 - self.RankLimitPersonal = 0 self.PersonalBillCount = 0 self.PersonalBillboardInfoList = list() return @@ -42026,7 +43497,6 @@ length += 5 length += 5 length += 1 - length += 2 length += 1 for i in range(self.PersonalBillCount): length += self.PersonalBillboardInfoList[i].GetLength() @@ -42044,7 +43514,6 @@ data = CommFunc.WriteString(data, 5, self.JoinStartTime) data = CommFunc.WriteString(data, 5, self.JoinEndTime) data = CommFunc.WriteBYTE(data, self.IsDayReset) - data = CommFunc.WriteWORD(data, self.RankLimitPersonal) data = CommFunc.WriteBYTE(data, self.PersonalBillCount) for i in range(self.PersonalBillCount): data = CommFunc.WriteString(data, self.PersonalBillboardInfoList[i].GetLength(), self.PersonalBillboardInfoList[i].GetBuffer()) @@ -42061,7 +43530,6 @@ JoinStartTime:%s, JoinEndTime:%s, IsDayReset:%d, - RankLimitPersonal:%d, PersonalBillCount:%d, PersonalBillboardInfoList:%s '''\ @@ -42075,7 +43543,6 @@ self.JoinStartTime, self.JoinEndTime, self.IsDayReset, - self.RankLimitPersonal, self.PersonalBillCount, "..." ) @@ -48637,6 +50104,238 @@ #------------------------------------------------------ +# B1 17 头像信息 #tagMCFaceInfo + +class tagMCFace(Structure): + _pack_ = 1 + _fields_ = [ + ("FaceID", c_int), #头像ID + ("State", c_ubyte), #是否已激活 + ("EndTime", c_int), #到期时间戳,0为永久 + ("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.FaceID = 0 + self.State = 0 + self.EndTime = 0 + self.Star = 0 + return + + def GetLength(self): + return sizeof(tagMCFace) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 17 头像信息 //tagMCFaceInfo: + FaceID:%d, + State:%d, + EndTime:%d, + Star:%d + '''\ + %( + self.FaceID, + self.State, + self.EndTime, + self.Star + ) + return DumpString + + +class tagMCFaceInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + FaceList = list() #(vector<tagMCFace> FaceList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x17 + 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): + temFaceList = tagMCFace() + _pos = temFaceList.ReadData(_lpData, _pos) + self.FaceList.append(temFaceList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x17 + self.Count = 0 + self.FaceList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.FaceList[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.FaceList[i].GetLength(), self.FaceList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + FaceList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCFaceInfo=tagMCFaceInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFaceInfo.Head.Cmd,m_NAtagMCFaceInfo.Head.SubCmd))] = m_NAtagMCFaceInfo + + +#------------------------------------------------------ +# B1 18 头像框信息 #tagMCFacePicInfo + +class tagMCFacePic(Structure): + _pack_ = 1 + _fields_ = [ + ("FacePicID", c_int), #头像框ID + ("State", c_ubyte), #是否已激活 + ("EndTime", c_int), #到期时间戳,0为永久 + ("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.FacePicID = 0 + self.State = 0 + self.EndTime = 0 + self.Star = 0 + return + + def GetLength(self): + return sizeof(tagMCFacePic) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 18 头像框信息 //tagMCFacePicInfo: + FacePicID:%d, + State:%d, + EndTime:%d, + Star:%d + '''\ + %( + self.FacePicID, + self.State, + self.EndTime, + self.Star + ) + return DumpString + + +class tagMCFacePicInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + FacePicList = list() #(vector<tagMCFacePic> FacePicList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x18 + 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): + temFacePicList = tagMCFacePic() + _pos = temFacePicList.ReadData(_lpData, _pos) + self.FacePicList.append(temFacePicList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x18 + self.Count = 0 + self.FacePicList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.FacePicList[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.FacePicList[i].GetLength(), self.FacePicList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + FacePicList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCFacePicInfo=tagMCFacePicInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFacePicInfo.Head.Cmd,m_NAtagMCFacePicInfo.Head.SubCmd))] = m_NAtagMCFacePicInfo + + +#------------------------------------------------------ # B1 11 功能系统特权信息 #tagMCFuncSysPrivilegeInfoList class tagMCFuncSysPrivilegeInfo(Structure): @@ -49481,6 +51180,80 @@ #------------------------------------------------------ +# B1 15 天道树信息 #tagMCTiandaoTreeInfo + +class tagMCTiandaoTreeInfo(Structure): + Head = tagHead() + Qiyun = 0 #(DWORD Qiyun)// 当前气运值 + AwardCount = 0 #(BYTE AwardCount)// 天道果领取记录值个数 + AwardStateList = list() #(vector<DWORD> AwardStateList)// 天道果领取记录值列表,按奖励索引位二进制记录是否已领取,一个值可存31位,如值1存0~30,值2存31~61,... + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x15 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Qiyun,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.AwardCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.AwardCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.AwardStateList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x15 + self.Qiyun = 0 + self.AwardCount = 0 + self.AwardStateList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 4 * self.AwardCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.Qiyun) + data = CommFunc.WriteBYTE(data, self.AwardCount) + for i in range(self.AwardCount): + data = CommFunc.WriteDWORD(data, self.AwardStateList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Qiyun:%d, + AwardCount:%d, + AwardStateList:%s + '''\ + %( + self.Head.OutputString(), + self.Qiyun, + self.AwardCount, + "..." + ) + return DumpString + + +m_NAtagMCTiandaoTreeInfo=tagMCTiandaoTreeInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTiandaoTreeInfo.Head.Cmd,m_NAtagMCTiandaoTreeInfo.Head.SubCmd))] = m_NAtagMCTiandaoTreeInfo + + +#------------------------------------------------------ # B1 12 培养功能境界信息 #tagMCTrainRealmLVInfo class tagMCTrainRealmLV(Structure): @@ -49589,6 +51362,229 @@ #------------------------------------------------------ +# B1 16 累计消耗货币信息 #tagMCUseMoneyTotalInfo + +class tagMCUseMoneyTotal(Structure): + _pack_ = 1 + _fields_ = [ + ("MoneyType", c_ubyte), # 货币类型,仅同步需要记录的货币类型 + ("UseTotal", 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.MoneyType = 0 + self.UseTotal = 0 + return + + def GetLength(self): + return sizeof(tagMCUseMoneyTotal) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 16 累计消耗货币信息 //tagMCUseMoneyTotalInfo: + MoneyType:%d, + UseTotal:%d + '''\ + %( + self.MoneyType, + self.UseTotal + ) + return DumpString + + +class tagMCUseMoneyTotalInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count) + InfoList = list() #(vector<tagMCUseMoneyTotal> InfoList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x16 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temInfoList = tagMCUseMoneyTotal() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x16 + self.Count = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.Count): + length += self.InfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.InfoList[i].GetLength(), self.InfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCUseMoneyTotalInfo=tagMCUseMoneyTotalInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCUseMoneyTotalInfo.Head.Cmd,m_NAtagMCUseMoneyTotalInfo.Head.SubCmd))] = m_NAtagMCUseMoneyTotalInfo + + +#------------------------------------------------------ +# B1 14 仙宫信息 #tagMCXiangongInfo + +class tagMCXiangong(Structure): + _pack_ = 1 + _fields_ = [ + ("XiangongID", c_ushort), # 仙宫ID + ("LikeStateToday", 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.XiangongID = 0 + self.LikeStateToday = 0 + return + + def GetLength(self): + return sizeof(tagMCXiangong) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 14 仙宫信息 //tagMCXiangongInfo: + XiangongID:%d, + LikeStateToday:%d + '''\ + %( + self.XiangongID, + self.LikeStateToday + ) + return DumpString + + +class tagMCXiangongInfo(Structure): + Head = tagHead() + LikeStateToday = 0 #(BYTE LikeStateToday)// 今日是否已点赞,指仙宫的外层点赞,非某个指定仙宫 + XiangongCount = 0 #(BYTE XiangongCount) + XiangongList = list() #(vector<tagMCXiangong> XiangongList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x14 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.LikeStateToday,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.XiangongCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.XiangongCount): + temXiangongList = tagMCXiangong() + _pos = temXiangongList.ReadData(_lpData, _pos) + self.XiangongList.append(temXiangongList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x14 + self.LikeStateToday = 0 + self.XiangongCount = 0 + self.XiangongList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + for i in range(self.XiangongCount): + length += self.XiangongList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.LikeStateToday) + data = CommFunc.WriteBYTE(data, self.XiangongCount) + for i in range(self.XiangongCount): + data = CommFunc.WriteString(data, self.XiangongList[i].GetLength(), self.XiangongList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + LikeStateToday:%d, + XiangongCount:%d, + XiangongList:%s + '''\ + %( + self.Head.OutputString(), + self.LikeStateToday, + self.XiangongCount, + "..." + ) + return DumpString + + +m_NAtagMCXiangongInfo=tagMCXiangongInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCXiangongInfo.Head.Cmd,m_NAtagMCXiangongInfo.Head.SubCmd))] = m_NAtagMCXiangongInfo + + +#------------------------------------------------------ # B1 20 战令信息 #tagMCZhanlingInfo class tagMCZhanling(Structure): -- Gitblit v1.8.0