From a6fe9b060edf315f6abde7443e48db5dea439f47 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 28 五月 2025 09:59:08 +0800 Subject: [PATCH] 16 卡牌服务端(功能队伍数据基础;不含功能逻辑;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 2979 ++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 2,332 insertions(+), 647 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 693db8a..e62228e 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -11547,292 +11547,6 @@ #------------------------------------------------------ -#B3 10 语音聊天 #tagGCVoiceChat - -class tagGCVoiceChat(Structure): - Head = tagHead() - ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 3 私聊(好友) 4 队伍 5 区域 - SrcNameLen = 0 #(BYTE SrcNameLen) - SrcName = "" #(String SrcName)//size = SrcNameLen - PlayerID = 0 #(DWORD PlayerID) - ToNameLen = 0 #(BYTE ToNameLen) - ToName = "" #(String ToName)//size = ToNameLen - ToPlayerID = 0 #(DWORD ToPlayerID) - Len = 0 #(WORD Len) - Content = list() #(vector<BYTE> Content)//size = Len - ExtraValue = 0 #(DWORD ExtraValue)//附加值 - Extras = "" #(char Extras[256])//附加值列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xB3 - self.Head.SubCmd = 0x10 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.SrcNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.SrcName,_pos = CommFunc.ReadString(_lpData, _pos,self.SrcNameLen) - self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ToNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.ToName,_pos = CommFunc.ReadString(_lpData, _pos,self.ToNameLen) - self.ToPlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos) - for i in range(self.Len): - value,_pos=CommFunc.ReadBYTE(_lpData,_pos) - self.Content.append(value) - self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xB3 - self.Head.SubCmd = 0x10 - self.ChannelType = 0 - self.SrcNameLen = 0 - self.SrcName = "" - self.PlayerID = 0 - self.ToNameLen = 0 - self.ToName = "" - self.ToPlayerID = 0 - self.Len = 0 - self.Content = list() - self.ExtraValue = 0 - self.Extras = "" - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - length += len(self.SrcName) - length += 4 - length += 1 - length += len(self.ToName) - length += 4 - length += 2 - length += 1 * self.Len - length += 4 - length += 256 - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.ChannelType) - data = CommFunc.WriteBYTE(data, self.SrcNameLen) - data = CommFunc.WriteString(data, self.SrcNameLen, self.SrcName) - data = CommFunc.WriteDWORD(data, self.PlayerID) - data = CommFunc.WriteBYTE(data, self.ToNameLen) - data = CommFunc.WriteString(data, self.ToNameLen, self.ToName) - data = CommFunc.WriteDWORD(data, self.ToPlayerID) - data = CommFunc.WriteWORD(data, self.Len) - for i in range(self.Len): - data = CommFunc.WriteBYTE(data, self.Content[i]) - data = CommFunc.WriteDWORD(data, self.ExtraValue) - data = CommFunc.WriteString(data, 256, self.Extras) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - ChannelType:%d, - SrcNameLen:%d, - SrcName:%s, - PlayerID:%d, - ToNameLen:%d, - ToName:%s, - ToPlayerID:%d, - Len:%d, - Content:%s, - ExtraValue:%d, - Extras:%s - '''\ - %( - self.Head.OutputString(), - self.ChannelType, - self.SrcNameLen, - self.SrcName, - self.PlayerID, - self.ToNameLen, - self.ToName, - self.ToPlayerID, - self.Len, - "...", - self.ExtraValue, - self.Extras - ) - return DumpString - - -m_NAtagGCVoiceChat=tagGCVoiceChat() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCVoiceChat.Head.Cmd,m_NAtagGCVoiceChat.Head.SubCmd))] = m_NAtagGCVoiceChat - - -#------------------------------------------------------ -# B3 11 聊天缓存通知 #tagGCTalkCache - -class tagGCTalkCacheInfo(Structure): - ChannelType = 0 #(BYTE ChannelType)// 1 世界 2 仙盟 - NameLen = 0 #(BYTE NameLen) - Name = "" #(String Name)//size = SrcNameLen - PlayerID = 0 #(DWORD PlayerID) - Time = 0 #(DWORD Time) - Len = 0 #(WORD Len) - Content = "" #(String Content)//size = Len - Extras = "" #(char Extras[256])//附加值列表 - data = None - - def __init__(self): - self.Clear() - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) - self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len) - self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256) - return _pos - - def Clear(self): - self.ChannelType = 0 - self.NameLen = 0 - self.Name = "" - self.PlayerID = 0 - self.Time = 0 - self.Len = 0 - self.Content = "" - self.Extras = "" - return - - def GetLength(self): - length = 0 - length += 1 - length += 1 - length += len(self.Name) - length += 4 - length += 4 - length += 2 - length += len(self.Content) - length += 256 - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteBYTE(data, self.ChannelType) - data = CommFunc.WriteBYTE(data, self.NameLen) - data = CommFunc.WriteString(data, self.NameLen, self.Name) - data = CommFunc.WriteDWORD(data, self.PlayerID) - data = CommFunc.WriteDWORD(data, self.Time) - data = CommFunc.WriteWORD(data, self.Len) - data = CommFunc.WriteString(data, self.Len, self.Content) - data = CommFunc.WriteString(data, 256, self.Extras) - return data - - def OutputString(self): - DumpString = ''' - ChannelType:%d, - NameLen:%d, - Name:%s, - PlayerID:%d, - Time:%d, - Len:%d, - Content:%s, - Extras:%s - '''\ - %( - self.ChannelType, - self.NameLen, - self.Name, - self.PlayerID, - self.Time, - self.Len, - self.Content, - self.Extras - ) - return DumpString - - -class tagGCTalkCache(Structure): - Head = tagHead() - Count = 0 #(WORD Count) - InfoList = list() #(vector<tagGCTalkCacheInfo> InfoList)//size = Count - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xB3 - self.Head.SubCmd = 0x11 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) - for i in range(self.Count): - temInfoList = tagGCTalkCacheInfo() - _pos = temInfoList.ReadData(_lpData, _pos) - self.InfoList.append(temInfoList) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xB3 - self.Head.SubCmd = 0x11 - self.Count = 0 - self.InfoList = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 2 - 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.WriteWORD(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_NAtagGCTalkCache=tagGCTalkCache() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCTalkCache.Head.Cmd,m_NAtagGCTalkCache.Head.SubCmd))] = m_NAtagGCTalkCache - - -#------------------------------------------------------ # B5 04 拍卖行新上架拍品 #tagGCAddAuctionItemInfo class tagGCAddAuctionItem(Structure): @@ -22348,6 +22062,102 @@ #------------------------------------------------------ +# A1 03 同步开服天数 #tagMCOpenServerDay + +class tagMCOpenServerDay(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("Day", c_ushort), # 已开服天数,从0开始 + ("IsMixServer", c_ubyte), #是否是合服服务器 + ("MixDay", c_ushort), # 已合服天数,从0开始 + ("OpenWeekday", c_ubyte), #开服是周几,1代表周一 + ("NowYear", c_ushort), #服务器当前时间 - 年 + ("NowMonth", c_ubyte), + ("NowDay", c_ubyte), + ("NowHour", c_ubyte), + ("NowMinute", c_ubyte), + ("NowSecond", c_ubyte), + ("NowMicSecond", c_int), + ("WeekOfYear", c_ubyte), #一年中的第几周 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xA1 + self.SubCmd = 0x03 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xA1 + self.SubCmd = 0x03 + self.Day = 0 + self.IsMixServer = 0 + self.MixDay = 0 + self.OpenWeekday = 0 + self.NowYear = 0 + self.NowMonth = 0 + self.NowDay = 0 + self.NowHour = 0 + self.NowMinute = 0 + self.NowSecond = 0 + self.NowMicSecond = 0 + self.WeekOfYear = 0 + return + + def GetLength(self): + return sizeof(tagMCOpenServerDay) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// A1 03 同步开服天数 //tagMCOpenServerDay: + Cmd:%s, + SubCmd:%s, + Day:%d, + IsMixServer:%d, + MixDay:%d, + OpenWeekday:%d, + NowYear:%d, + NowMonth:%d, + NowDay:%d, + NowHour:%d, + NowMinute:%d, + NowSecond:%d, + NowMicSecond:%d, + WeekOfYear:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.Day, + self.IsMixServer, + self.MixDay, + self.OpenWeekday, + self.NowYear, + self.NowMonth, + self.NowDay, + self.NowHour, + self.NowMinute, + self.NowSecond, + self.NowMicSecond, + self.WeekOfYear + ) + return DumpString + + +m_NAtagMCOpenServerDay=tagMCOpenServerDay() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCOpenServerDay.Cmd,m_NAtagMCOpenServerDay.SubCmd))] = m_NAtagMCOpenServerDay + + +#------------------------------------------------------ #A1 07 玩家掉率加成 #tagMCPlayerDropRate class tagMCPlayerDropRate(Structure): @@ -22685,6 +22495,300 @@ m_NAtagUpdatePlayerNameCount=tagUpdatePlayerNameCount() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagUpdatePlayerNameCount.Cmd,m_NAtagUpdatePlayerNameCount.SubCmd))] = m_NAtagUpdatePlayerNameCount + + +#------------------------------------------------------ +# A1 30 查看榜单返回信息 #tagMCViewBillboardRet + +class tagMCViewBillboardData(Structure): + Index = 0 #(WORD Index)//数据在榜单列表中的索引,从0开始 + Rank = 0 #(WORD Rank)//名次,从1开始,代表第1名 + ID = 0 #(DWORD ID) + ID2 = 0 #(DWORD ID2) + Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 + Name2 = "" #(char Name2[65])//名字2 + Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 + Value1 = 0 #(DWORD Value1)//自定义值1 + Value2 = 0 #(DWORD Value2)//自定义值2 + Value3 = 0 #(DWORD Value3) + Value4 = 0 #(DWORD Value4) + Value5 = 0 #(DWORD Value5) + Value6 = 0 #(DWORD Value6) + Value7 = 0 #(DWORD Value7) + Value8 = 0 #(DWORD Value8) + CmpValue = 0 #(DWORD CmpValue)// 比较权值 + CmpValue2 = 0 #(DWORD CmpValue2)// 比较权值 + CmpValue3 = 0 #(DWORD CmpValue3)// 比较权值 + DataLen = 0 #(WORD DataLen) + UserData = "" #(String UserData)//附加信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Index,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Rank,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65) + self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen) + return _pos + + def Clear(self): + self.Index = 0 + self.Rank = 0 + self.ID = 0 + self.ID2 = 0 + self.Name1 = "" + self.Name2 = "" + self.Type2 = 0 + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 + self.CmpValue = 0 + self.CmpValue2 = 0 + self.CmpValue3 = 0 + self.DataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 2 + length += 2 + length += 4 + length += 4 + length += 33 + length += 65 + length += 1 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteWORD(data, self.Index) + data = CommFunc.WriteWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.ID) + data = CommFunc.WriteDWORD(data, self.ID2) + data = CommFunc.WriteString(data, 33, self.Name1) + data = CommFunc.WriteString(data, 65, self.Name2) + data = CommFunc.WriteBYTE(data, self.Type2) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteDWORD(data, self.Value3) + data = CommFunc.WriteDWORD(data, self.Value4) + data = CommFunc.WriteDWORD(data, self.Value5) + data = CommFunc.WriteDWORD(data, self.Value6) + data = CommFunc.WriteDWORD(data, self.Value7) + data = CommFunc.WriteDWORD(data, self.Value8) + data = CommFunc.WriteDWORD(data, self.CmpValue) + data = CommFunc.WriteDWORD(data, self.CmpValue2) + data = CommFunc.WriteDWORD(data, self.CmpValue3) + data = CommFunc.WriteWORD(data, self.DataLen) + data = CommFunc.WriteString(data, self.DataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + Index:%d, + Rank:%d, + ID:%d, + ID2:%d, + Name1:%s, + Name2:%s, + Type2:%d, + Value1:%d, + Value2:%d, + Value3:%d, + Value4:%d, + Value5:%d, + Value6:%d, + Value7:%d, + Value8:%d, + CmpValue:%d, + CmpValue2:%d, + CmpValue3:%d, + DataLen:%d, + UserData:%s + '''\ + %( + self.Index, + self.Rank, + self.ID, + self.ID2, + self.Name1, + self.Name2, + self.Type2, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, + self.CmpValue, + self.CmpValue2, + self.CmpValue3, + self.DataLen, + self.UserData + ) + return DumpString + + +class tagMCViewBillboardRet(Structure): + Head = tagHead() + Type = 0 #(BYTE Type)//榜单类型 + GroupValue1 = 0 #(DWORD GroupValue1)//分组值1 + GroupValue2 = 0 #(DWORD GroupValue2)//分组值2,与分组值1组合归为同组榜单数据 + DataTotal = 0 #(WORD DataTotal)//该榜单实际总数据数,分页查询时可通过此值及返回的分页最后一条榜单数据所在索引判断是否还有未查询数据 + PageDataCnt = 0 #(BYTE PageDataCnt) + PageDataList = list() #(vector<tagMCViewBillboardData> PageDataList)//返回分页数据列表 + ViewID = 0 #(DWORD ViewID)//附带查看指定ID所在名次前后数据,如玩家ID、家族ID等 + ViewIDDataCnt = 0 #(BYTE ViewIDDataCnt) + ViewIDDataList = list() #(vector<tagMCViewBillboardData> ViewIDDataList)//ViewID所在名次前后数据列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA1 + self.Head.SubCmd = 0x30 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GroupValue1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.GroupValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.DataTotal,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.PageDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PageDataCnt): + temPageDataList = tagMCViewBillboardData() + _pos = temPageDataList.ReadData(_lpData, _pos) + self.PageDataList.append(temPageDataList) + self.ViewID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ViewIDDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ViewIDDataCnt): + temViewIDDataList = tagMCViewBillboardData() + _pos = temViewIDDataList.ReadData(_lpData, _pos) + self.ViewIDDataList.append(temViewIDDataList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA1 + self.Head.SubCmd = 0x30 + self.Type = 0 + self.GroupValue1 = 0 + self.GroupValue2 = 0 + self.DataTotal = 0 + self.PageDataCnt = 0 + self.PageDataList = list() + self.ViewID = 0 + self.ViewIDDataCnt = 0 + self.ViewIDDataList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 + length += 4 + length += 2 + length += 1 + for i in range(self.PageDataCnt): + length += self.PageDataList[i].GetLength() + length += 4 + length += 1 + for i in range(self.ViewIDDataCnt): + length += self.ViewIDDataList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Type) + data = CommFunc.WriteDWORD(data, self.GroupValue1) + data = CommFunc.WriteDWORD(data, self.GroupValue2) + data = CommFunc.WriteWORD(data, self.DataTotal) + data = CommFunc.WriteBYTE(data, self.PageDataCnt) + for i in range(self.PageDataCnt): + data = CommFunc.WriteString(data, self.PageDataList[i].GetLength(), self.PageDataList[i].GetBuffer()) + data = CommFunc.WriteDWORD(data, self.ViewID) + data = CommFunc.WriteBYTE(data, self.ViewIDDataCnt) + for i in range(self.ViewIDDataCnt): + data = CommFunc.WriteString(data, self.ViewIDDataList[i].GetLength(), self.ViewIDDataList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Type:%d, + GroupValue1:%d, + GroupValue2:%d, + DataTotal:%d, + PageDataCnt:%d, + PageDataList:%s, + ViewID:%d, + ViewIDDataCnt:%d, + ViewIDDataList:%s + '''\ + %( + self.Head.OutputString(), + self.Type, + self.GroupValue1, + self.GroupValue2, + self.DataTotal, + self.PageDataCnt, + "...", + self.ViewID, + self.ViewIDDataCnt, + "..." + ) + return DumpString + + +m_NAtagMCViewBillboardRet=tagMCViewBillboardRet() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCViewBillboardRet.Head.Cmd,m_NAtagMCViewBillboardRet.Head.SubCmd))] = m_NAtagMCViewBillboardRet #------------------------------------------------------ @@ -27626,6 +27730,375 @@ #------------------------------------------------------ +# A3 62 邮件列表 #tagMCMailList + +class tagMCMailItem(Structure): + ItemID = 0 #(DWORD ItemID)//物品ID + Count = 0 #(DWORD Count)//数量 + IsBind = 0 #(BYTE IsBind)//是否绑定 + UserDataLen = 0 #(WORD UserDataLen) + UserData = "" #(String UserData)//自定义数据 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.ItemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Count,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.IsBind,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.UserDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.UserDataLen) + return _pos + + def Clear(self): + self.ItemID = 0 + self.Count = 0 + self.IsBind = 0 + self.UserDataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 1 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.ItemID) + data = CommFunc.WriteDWORD(data, self.Count) + data = CommFunc.WriteBYTE(data, self.IsBind) + data = CommFunc.WriteWORD(data, self.UserDataLen) + data = CommFunc.WriteString(data, self.UserDataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + ItemID:%d, + Count:%d, + IsBind:%d, + UserDataLen:%d, + UserData:%s + '''\ + %( + self.ItemID, + self.Count, + self.IsBind, + self.UserDataLen, + self.UserData + ) + return DumpString + + +class tagMCMail(Structure): + GUID = "" #(char GUID[36])//邮件GUID + Type = 0 #(BYTE Type)//邮件类型,暂时默认0 + CreateTime = "" #(char CreateTime[30])//创建时间 + LimitDays = 0 #(BYTE LimitDays)//有效天数 + TitleLen = 0 #(BYTE TitleLen) + Title = "" #(String Title)//标题 + TextLen = 0 #(WORD TextLen) + Text = "" #(String Text)//内容 + MailState = 0 #(BYTE MailState)//邮件状态: 0-未知;1-未读;2-已读;3-已领; + Count = 0 #(BYTE Count)//物品数 + Items = list() #(vector<tagMCMailItem> Items)//物品信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,36) + self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CreateTime,_pos = CommFunc.ReadString(_lpData, _pos,30) + self.LimitDays,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TitleLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Title,_pos = CommFunc.ReadString(_lpData, _pos,self.TitleLen) + self.TextLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Text,_pos = CommFunc.ReadString(_lpData, _pos,self.TextLen) + self.MailState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temItems = tagMCMailItem() + _pos = temItems.ReadData(_lpData, _pos) + self.Items.append(temItems) + return _pos + + def Clear(self): + self.GUID = "" + self.Type = 0 + self.CreateTime = "" + self.LimitDays = 0 + self.TitleLen = 0 + self.Title = "" + self.TextLen = 0 + self.Text = "" + self.MailState = 0 + self.Count = 0 + self.Items = list() + return + + def GetLength(self): + length = 0 + length += 36 + length += 1 + length += 30 + length += 1 + length += 1 + length += len(self.Title) + length += 2 + length += len(self.Text) + length += 1 + length += 1 + for i in range(self.Count): + length += self.Items[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 36, self.GUID) + data = CommFunc.WriteBYTE(data, self.Type) + data = CommFunc.WriteString(data, 30, self.CreateTime) + data = CommFunc.WriteBYTE(data, self.LimitDays) + data = CommFunc.WriteBYTE(data, self.TitleLen) + data = CommFunc.WriteString(data, self.TitleLen, self.Title) + data = CommFunc.WriteWORD(data, self.TextLen) + data = CommFunc.WriteString(data, self.TextLen, self.Text) + data = CommFunc.WriteBYTE(data, self.MailState) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.Items[i].GetLength(), self.Items[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + GUID:%s, + Type:%d, + CreateTime:%s, + LimitDays:%d, + TitleLen:%d, + Title:%s, + TextLen:%d, + Text:%s, + MailState:%d, + Count:%d, + Items:%s + '''\ + %( + self.GUID, + self.Type, + self.CreateTime, + self.LimitDays, + self.TitleLen, + self.Title, + self.TextLen, + self.Text, + self.MailState, + self.Count, + "..." + ) + return DumpString + + +class tagMCMailList(Structure): + Head = tagHead() + IsServerMail = 0 #(BYTE IsServerMail)//是否全服邮件,如公告、维护、更新、补偿等重要邮件 + Count = 0 #(WORD Count) + MailList = list() #(vector<tagMCMail> MailList)//邮件列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x62 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.IsServerMail,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temMailList = tagMCMail() + _pos = temMailList.ReadData(_lpData, _pos) + self.MailList.append(temMailList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x62 + self.IsServerMail = 0 + self.Count = 0 + self.MailList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 2 + for i in range(self.Count): + length += self.MailList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.IsServerMail) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.MailList[i].GetLength(), self.MailList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + IsServerMail:%d, + Count:%d, + MailList:%s + '''\ + %( + self.Head.OutputString(), + self.IsServerMail, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCMailList=tagMCMailList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMailList.Head.Cmd,m_NAtagMCMailList.Head.SubCmd))] = m_NAtagMCMailList + + +#------------------------------------------------------ +# A3 63 邮件状态变更 #tagMCMailStateChange + +class tagMCMailState(Structure): + GUID = "" #(char GUID[36])//邮件GUID + MailState = 0 #(BYTE MailState)//邮件状态: 0-未知;1-未读;2-已读;3-已领;4-已删 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.GUID,_pos = CommFunc.ReadString(_lpData, _pos,36) + self.MailState,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.GUID = "" + self.MailState = 0 + return + + def GetLength(self): + length = 0 + length += 36 + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, 36, self.GUID) + data = CommFunc.WriteBYTE(data, self.MailState) + return data + + def OutputString(self): + DumpString = ''' + GUID:%s, + MailState:%d + '''\ + %( + self.GUID, + self.MailState + ) + return DumpString + + +class tagMCMailStateChange(Structure): + Head = tagHead() + Count = 0 #(WORD Count) + MailList = list() #(vector<tagMCMailState> MailList)//邮件列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x63 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temMailList = tagMCMailState() + _pos = temMailList.ReadData(_lpData, _pos) + self.MailList.append(temMailList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x63 + self.Count = 0 + self.MailList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 2 + for i in range(self.Count): + length += self.MailList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.MailList[i].GetLength(), self.MailList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + MailList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCMailStateChange=tagMCMailStateChange() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCMailStateChange.Head.Cmd,m_NAtagMCMailStateChange.Head.SubCmd))] = m_NAtagMCMailStateChange + + +#------------------------------------------------------ # A3 46 大师经验信息 #tagMCGreatMasterExp class tagMCGreatMasterExp(Structure): @@ -31906,6 +32379,197 @@ #------------------------------------------------------ +# A5 13 家族行为信息 #tagMCFamilyActionInfo + +class tagMCFamilyAction(Structure): + Time = 0 #(DWORD Time)//时间 + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name) + Value1 = 0 #(DWORD Value1)//数值1 + Value2 = 0 #(DWORD Value2)//数值2 + Value3 = 0 #(DWORD Value3)//数值3 + Value4 = 0 #(DWORD Value4)//数值4 + Value5 = 0 #(DWORD Value5)//数值5 + Value6 = 0 #(DWORD Value6)//数值6 + UseDataLen = 0 #(WORD UseDataLen) + UseData = "" #(String UseData) + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Time,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.UseDataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UseData,_pos = CommFunc.ReadString(_lpData, _pos,self.UseDataLen) + return _pos + + def Clear(self): + self.Time = 0 + self.NameLen = 0 + self.Name = "" + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.UseDataLen = 0 + self.UseData = "" + return + + def GetLength(self): + length = 0 + length += 4 + length += 1 + length += len(self.Name) + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.UseData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.Time) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteDWORD(data, self.Value3) + data = CommFunc.WriteDWORD(data, self.Value4) + data = CommFunc.WriteDWORD(data, self.Value5) + data = CommFunc.WriteDWORD(data, self.Value6) + data = CommFunc.WriteWORD(data, self.UseDataLen) + data = CommFunc.WriteString(data, self.UseDataLen, self.UseData) + return data + + def OutputString(self): + DumpString = ''' + Time:%d, + NameLen:%d, + Name:%s, + Value1:%d, + Value2:%d, + Value3:%d, + Value4:%d, + Value5:%d, + Value6:%d, + UseDataLen:%d, + UseData:%s + '''\ + %( + self.Time, + self.NameLen, + self.Name, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.UseDataLen, + self.UseData + ) + return DumpString + + +class tagMCFamilyActionInfo(Structure): + Head = tagHead() + FamilyID = 0 #(DWORD FamilyID)//家族ID + ActionType = 0 #(BYTE ActionType)//类型 + Count = 0 #(WORD Count)//数量 + FamilyActionList = list() #(vector<tagMCFamilyAction> FamilyActionList)//size = Count + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x13 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ActionType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.Count): + temFamilyActionList = tagMCFamilyAction() + _pos = temFamilyActionList.ReadData(_lpData, _pos) + self.FamilyActionList.append(temFamilyActionList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA5 + self.Head.SubCmd = 0x13 + self.FamilyID = 0 + self.ActionType = 0 + self.Count = 0 + self.FamilyActionList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 1 + length += 2 + for i in range(self.Count): + length += self.FamilyActionList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.FamilyID) + data = CommFunc.WriteBYTE(data, self.ActionType) + data = CommFunc.WriteWORD(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteString(data, self.FamilyActionList[i].GetLength(), self.FamilyActionList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FamilyID:%d, + ActionType:%d, + Count:%d, + FamilyActionList:%s + '''\ + %( + self.Head.OutputString(), + self.FamilyID, + self.ActionType, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCFamilyActionInfo=tagMCFamilyActionInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyActionInfo.Head.Cmd,m_NAtagMCFamilyActionInfo.Head.SubCmd))] = m_NAtagMCFamilyActionInfo + + +#------------------------------------------------------ # A5 02 家族活跃令兑换结果 #tagMCFamilyActivityExchangeResult class tagMCFamilyActivityExchangeResult(Structure): @@ -35492,112 +36156,6 @@ #------------------------------------------------------ -# A7 07 通知玩家自定义聊天 #tagMCPyTalk - -class tagMCPyTalk(Structure): - Head = tagHead() - TalkType = 0 #(BYTE TalkType)// 自定义聊天类型 - NameLen = 0 #(BYTE NameLen) - Name = "" #(String Name)//size = NameLen - PlayerID = 0 #(DWORD PlayerID) - Len = 0 #(WORD Len) - Content = "" #(String Content)//size = Len - ExtraValue = 0 #(DWORD ExtraValue)//附加值 - Extras = "" #(char Extras[256])//附加值列表 - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xA7 - self.Head.SubCmd = 0x07 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.TalkType,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) - self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) - self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len) - self.ExtraValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Extras,_pos = CommFunc.ReadString(_lpData, _pos,256) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xA7 - self.Head.SubCmd = 0x07 - self.TalkType = 0 - self.NameLen = 0 - self.Name = "" - self.PlayerID = 0 - self.Len = 0 - self.Content = "" - self.ExtraValue = 0 - self.Extras = "" - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 1 - length += 1 - length += len(self.Name) - length += 4 - length += 2 - length += len(self.Content) - length += 4 - length += 256 - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteBYTE(data, self.TalkType) - data = CommFunc.WriteBYTE(data, self.NameLen) - data = CommFunc.WriteString(data, self.NameLen, self.Name) - data = CommFunc.WriteDWORD(data, self.PlayerID) - data = CommFunc.WriteWORD(data, self.Len) - data = CommFunc.WriteString(data, self.Len, self.Content) - data = CommFunc.WriteDWORD(data, self.ExtraValue) - data = CommFunc.WriteString(data, 256, self.Extras) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - TalkType:%d, - NameLen:%d, - Name:%s, - PlayerID:%d, - Len:%d, - Content:%s, - ExtraValue:%d, - Extras:%s - '''\ - %( - self.Head.OutputString(), - self.TalkType, - self.NameLen, - self.Name, - self.PlayerID, - self.Len, - self.Content, - self.ExtraValue, - self.Extras - ) - return DumpString - - -m_NAtagMCPyTalk=tagMCPyTalk() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCPyTalk.Head.Cmd,m_NAtagMCPyTalk.Head.SubCmd))] = m_NAtagMCPyTalk - - -#------------------------------------------------------ # A7 08 通知跑环奖励记录 #tagMCRunTaskAwardInfo class tagMCRunTaskAwardRecord(Structure): @@ -35714,11 +36272,20 @@ class tagSCQueryPlayerCacheResult(Structure): Head = tagHead() - PlayerID = 0 #(DWORD PlayerID)//玩家ID - PropDataSize = 0 #(DWORD PropDataSize) - PropData = "" #(String PropData)//属性记录 - ItemDataSize = 0 #(DWORD ItemDataSize) - ItemData = "" #(String ItemData)//物品记录 + PlayerID = 0 #(DWORD PlayerID) + PlayerName = "" #(char PlayerName[33]) + LV = 0 #(WORD LV) + Job = 0 #(BYTE Job) + RealmLV = 0 #(BYTE RealmLV) + Face = 0 #(DWORD Face) + FacePic = 0 #(DWORD FacePic) + TitleID = 0 #(DWORD TitleID)//佩戴的称号 + ServerID = 0 #(DWORD ServerID) + FightPower = 0 #(DWORD FightPower) + FightPowerEx = 0 #(DWORD FightPowerEx) + FamilyID = 0 #(DWORD FamilyID) + FamilyName = "" #(char FamilyName[33]) + FamilyEmblemID = 0 #(DWORD FamilyEmblemID)//仙盟徽章ID PlusDataSize = 0 #(DWORD PlusDataSize) PlusData = "" #(String PlusData)//扩展记录 data = None @@ -35733,10 +36300,19 @@ self.Clear() _pos = self.Head.ReadData(_lpData, _pos) self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.PropDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.PropData,_pos = CommFunc.ReadString(_lpData, _pos,self.PropDataSize) - self.ItemDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.ItemData,_pos = CommFunc.ReadString(_lpData, _pos,self.ItemDataSize) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.TitleID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.FamilyEmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.PlusDataSize,_pos = CommFunc.ReadDWORD(_lpData, _pos) self.PlusData,_pos = CommFunc.ReadString(_lpData, _pos,self.PlusDataSize) return _pos @@ -35747,10 +36323,19 @@ self.Head.Cmd = 0xA7 self.Head.SubCmd = 0x05 self.PlayerID = 0 - self.PropDataSize = 0 - self.PropData = "" - self.ItemDataSize = 0 - self.ItemData = "" + self.PlayerName = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 + self.TitleID = 0 + self.ServerID = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + self.FamilyID = 0 + self.FamilyName = "" + self.FamilyEmblemID = 0 self.PlusDataSize = 0 self.PlusData = "" return @@ -35759,10 +36344,19 @@ length = 0 length += self.Head.GetLength() length += 4 + length += 33 + length += 2 + length += 1 + length += 1 length += 4 - length += len(self.PropData) length += 4 - length += len(self.ItemData) + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 33 + length += 4 length += 4 length += len(self.PlusData) @@ -35772,10 +36366,19 @@ data = '' data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) data = CommFunc.WriteDWORD(data, self.PlayerID) - data = CommFunc.WriteDWORD(data, self.PropDataSize) - data = CommFunc.WriteString(data, self.PropDataSize, self.PropData) - data = CommFunc.WriteDWORD(data, self.ItemDataSize) - data = CommFunc.WriteString(data, self.ItemDataSize, self.ItemData) + data = CommFunc.WriteString(data, 33, self.PlayerName) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteBYTE(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteDWORD(data, self.TitleID) + data = CommFunc.WriteDWORD(data, self.ServerID) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + data = CommFunc.WriteDWORD(data, self.FamilyID) + data = CommFunc.WriteString(data, 33, self.FamilyName) + data = CommFunc.WriteDWORD(data, self.FamilyEmblemID) data = CommFunc.WriteDWORD(data, self.PlusDataSize) data = CommFunc.WriteString(data, self.PlusDataSize, self.PlusData) return data @@ -35784,20 +36387,38 @@ DumpString = ''' Head:%s, PlayerID:%d, - PropDataSize:%d, - PropData:%s, - ItemDataSize:%d, - ItemData:%s, + PlayerName:%s, + LV:%d, + Job:%d, + RealmLV:%d, + Face:%d, + FacePic:%d, + TitleID:%d, + ServerID:%d, + FightPower:%d, + FightPowerEx:%d, + FamilyID:%d, + FamilyName:%s, + FamilyEmblemID:%d, PlusDataSize:%d, PlusData:%s '''\ %( self.Head.OutputString(), self.PlayerID, - self.PropDataSize, - self.PropData, - self.ItemDataSize, - self.ItemData, + self.PlayerName, + self.LV, + self.Job, + self.RealmLV, + self.Face, + self.FacePic, + self.TitleID, + self.ServerID, + self.FightPower, + self.FightPowerEx, + self.FamilyID, + self.FamilyName, + self.FamilyEmblemID, self.PlusDataSize, self.PlusData ) @@ -58019,6 +58640,345 @@ #------------------------------------------------------ +# B3 10 聊天信息 #tagMCTalk + +class tagMCTalk(Structure): + Head = tagHead() + ChannelType = 0 #(BYTE ChannelType)// 0-世界;1-跨服;3- 仙盟 + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)//size = NameLen + PlayerID = 0 #(DWORD PlayerID) + Len = 0 #(WORD Len) + Content = "" #(String Content)//size = Len + BubbleBox = 0 #(DWORD BubbleBox)//聊天气泡框 + LV = 0 #(WORD LV)//等级 + Job = 0 #(BYTE Job)//职业 + RealmLV = 0 #(BYTE RealmLV)//境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 + ServerID = 0 #(DWORD ServerID)//所属区服ID + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len) + self.BubbleBox,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x10 + self.ChannelType = 0 + self.NameLen = 0 + self.Name = "" + self.PlayerID = 0 + self.Len = 0 + self.Content = "" + self.BubbleBox = 0 + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 + self.ServerID = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 1 + length += len(self.Name) + length += 4 + length += 2 + length += len(self.Content) + length += 4 + length += 2 + length += 1 + length += 1 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.ChannelType) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteWORD(data, self.Len) + data = CommFunc.WriteString(data, self.Len, self.Content) + data = CommFunc.WriteDWORD(data, self.BubbleBox) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteBYTE(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteDWORD(data, self.ServerID) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + ChannelType:%d, + NameLen:%d, + Name:%s, + PlayerID:%d, + Len:%d, + Content:%s, + BubbleBox:%d, + LV:%d, + Job:%d, + RealmLV:%d, + Face:%d, + FacePic:%d, + ServerID:%d + '''\ + %( + self.Head.OutputString(), + self.ChannelType, + self.NameLen, + self.Name, + self.PlayerID, + self.Len, + self.Content, + self.BubbleBox, + self.LV, + self.Job, + self.RealmLV, + self.Face, + self.FacePic, + self.ServerID + ) + return DumpString + + +m_NAtagMCTalk=tagMCTalk() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTalk.Head.Cmd,m_NAtagMCTalk.Head.SubCmd))] = m_NAtagMCTalk + + +#------------------------------------------------------ +# B3 11 聊天缓存通知 #tagMCTalkCacheList + +class tagMCTalkCacheInfo(Structure): + NameLen = 0 #(BYTE NameLen) + Name = "" #(String Name)//size = NameLen + PlayerID = 0 #(DWORD PlayerID) + Len = 0 #(WORD Len) + Content = "" #(String Content)//size = Len + BubbleBox = 0 #(DWORD BubbleBox)//聊天气泡框 + LV = 0 #(WORD LV)//等级 + Job = 0 #(BYTE Job)//职业 + RealmLV = 0 #(BYTE RealmLV)//境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 + ServerID = 0 #(DWORD ServerID)//所属区服ID + TalkTime = 0 #(DWORD TalkTime)//该聊天发送时间戳 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Len,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Content,_pos = CommFunc.ReadString(_lpData, _pos,self.Len) + self.BubbleBox,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.LV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Job,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.RealmLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.TalkTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.NameLen = 0 + self.Name = "" + self.PlayerID = 0 + self.Len = 0 + self.Content = "" + self.BubbleBox = 0 + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 + self.ServerID = 0 + self.TalkTime = 0 + return + + def GetLength(self): + length = 0 + length += 1 + length += len(self.Name) + length += 4 + length += 2 + length += len(self.Content) + length += 4 + length += 2 + length += 1 + length += 1 + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.Name) + data = CommFunc.WriteDWORD(data, self.PlayerID) + data = CommFunc.WriteWORD(data, self.Len) + data = CommFunc.WriteString(data, self.Len, self.Content) + data = CommFunc.WriteDWORD(data, self.BubbleBox) + data = CommFunc.WriteWORD(data, self.LV) + data = CommFunc.WriteBYTE(data, self.Job) + data = CommFunc.WriteBYTE(data, self.RealmLV) + data = CommFunc.WriteDWORD(data, self.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteDWORD(data, self.ServerID) + data = CommFunc.WriteDWORD(data, self.TalkTime) + return data + + def OutputString(self): + DumpString = ''' + NameLen:%d, + Name:%s, + PlayerID:%d, + Len:%d, + Content:%s, + BubbleBox:%d, + LV:%d, + Job:%d, + RealmLV:%d, + Face:%d, + FacePic:%d, + ServerID:%d, + TalkTime:%d + '''\ + %( + self.NameLen, + self.Name, + self.PlayerID, + self.Len, + self.Content, + self.BubbleBox, + self.LV, + self.Job, + self.RealmLV, + self.Face, + self.FacePic, + self.ServerID, + self.TalkTime + ) + return DumpString + + +class tagMCTalkCacheList(Structure): + Head = tagHead() + ChannelType = 0 #(BYTE ChannelType)// 0-世界;1-跨服;3- 仙盟 + Count = 0 #(BYTE Count) + InfoList = list() #(vector<tagMCTalkCacheInfo> InfoList)//size = Count + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x11 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.ChannelType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + temInfoList = tagMCTalkCacheInfo() + _pos = temInfoList.ReadData(_lpData, _pos) + self.InfoList.append(temInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB3 + self.Head.SubCmd = 0x11 + self.ChannelType = 0 + self.Count = 0 + self.InfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + 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.ChannelType) + 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, + ChannelType:%d, + Count:%d, + InfoList:%s + '''\ + %( + self.Head.OutputString(), + self.ChannelType, + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCTalkCacheList=tagMCTalkCacheList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTalkCacheList.Head.Cmd,m_NAtagMCTalkCacheList.Head.SubCmd))] = m_NAtagMCTalkCacheList + + +#------------------------------------------------------ # B4 11 新增恶意攻击玩家 #tagMCAddMaliciousAtkPlayer class tagMCAddMaliciousAtkPlayer(Structure): @@ -59321,234 +60281,6 @@ #------------------------------------------------------ -#B4 10 脱机挂被杀后离线找回 # tagMCTJGDeadPay - -class tagMCTJGDeadPay(Structure): - _pack_ = 1 - _fields_ = [ - ("Cmd", c_ubyte), - ("SubCmd", c_ubyte), - ("Times", c_int), # 可找回时间 - ("DeadTime", c_int), # 死亡时间 - ("Exp", c_int), # 经验 - ("Exp1", c_int), # 经验 亿 - ] - - def __init__(self): - self.Clear() - self.Cmd = 0xB4 - self.SubCmd = 0x10 - 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 = 0xB4 - self.SubCmd = 0x10 - self.Times = 0 - self.DeadTime = 0 - self.Exp = 0 - self.Exp1 = 0 - return - - def GetLength(self): - return sizeof(tagMCTJGDeadPay) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B4 10 脱机挂被杀后离线找回 // tagMCTJGDeadPay: - Cmd:%s, - SubCmd:%s, - Times:%d, - DeadTime:%d, - Exp:%d, - Exp1:%d - '''\ - %( - self.Cmd, - self.SubCmd, - self.Times, - self.DeadTime, - self.Exp, - self.Exp1 - ) - return DumpString - - -m_NAtagMCTJGDeadPay=tagMCTJGDeadPay() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGDeadPay.Cmd,m_NAtagMCTJGDeadPay.SubCmd))] = m_NAtagMCTJGDeadPay - - -#------------------------------------------------------ -#B4 09 通知脱机挂结果 #tagMCTJGInfo - -class tagMCTJGItems(Structure): - _pack_ = 1 - _fields_ = [ - ("ItemID", c_int), - ("Count", c_ushort), - ] - - def __init__(self): - self.Clear() - return - - def ReadData(self, stringData, _pos=0, _len=0): - self.Clear() - memmove(addressof(self), stringData[_pos:], self.GetLength()) - return _pos + self.GetLength() - - def Clear(self): - self.ItemID = 0 - self.Count = 0 - return - - def GetLength(self): - return sizeof(tagMCTJGItems) - - def GetBuffer(self): - return string_at(addressof(self), self.GetLength()) - - def OutputString(self): - DumpString = '''//B4 09 通知脱机挂结果 //tagMCTJGInfo: - ItemID:%d, - Count:%d - '''\ - %( - self.ItemID, - self.Count - ) - return DumpString - - -class tagMCTJGInfo(Structure): - Head = tagHead() - Exp1 = 0 #(DWORD Exp1)// 经验 - Exp2 = 0 #(DWORD Exp2)// 超亿经验 - Times = 0 #(DWORD Times)// 使用时间秒 - PurpleEquip = 0 #(WORD PurpleEquip)// 产出紫装数量 - OrangeEquip = 0 #(WORD OrangeEquip)// 产出橙装数量 - EatPurpleEquip = 0 #(WORD EatPurpleEquip)// 吞噬紫装数量 - BeforeLV = 0 #(WORD BeforeLV)//脱机前记录的等级 - GiveCnt = 0 #(WORD GiveCnt)//获得炼丹材料数量 - Cnt = 0 #(BYTE Cnt)//物品类别数量 - Items = list() #(vector<tagMCTJGItems> Items) - data = None - - def __init__(self): - self.Clear() - self.Head.Cmd = 0xB4 - self.Head.SubCmd = 0x09 - return - - def ReadData(self, _lpData, _pos=0, _Len=0): - self.Clear() - _pos = self.Head.ReadData(_lpData, _pos) - self.Exp1,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Exp2,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.Times,_pos = CommFunc.ReadDWORD(_lpData, _pos) - self.PurpleEquip,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.OrangeEquip,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.EatPurpleEquip,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.BeforeLV,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.GiveCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) - self.Cnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) - for i in range(self.Cnt): - temItems = tagMCTJGItems() - _pos = temItems.ReadData(_lpData, _pos) - self.Items.append(temItems) - return _pos - - def Clear(self): - self.Head = tagHead() - self.Head.Clear() - self.Head.Cmd = 0xB4 - self.Head.SubCmd = 0x09 - self.Exp1 = 0 - self.Exp2 = 0 - self.Times = 0 - self.PurpleEquip = 0 - self.OrangeEquip = 0 - self.EatPurpleEquip = 0 - self.BeforeLV = 0 - self.GiveCnt = 0 - self.Cnt = 0 - self.Items = list() - return - - def GetLength(self): - length = 0 - length += self.Head.GetLength() - length += 4 - length += 4 - length += 4 - length += 2 - length += 2 - length += 2 - length += 2 - length += 2 - length += 1 - for i in range(self.Cnt): - length += self.Items[i].GetLength() - - return length - - def GetBuffer(self): - data = '' - data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) - data = CommFunc.WriteDWORD(data, self.Exp1) - data = CommFunc.WriteDWORD(data, self.Exp2) - data = CommFunc.WriteDWORD(data, self.Times) - data = CommFunc.WriteWORD(data, self.PurpleEquip) - data = CommFunc.WriteWORD(data, self.OrangeEquip) - data = CommFunc.WriteWORD(data, self.EatPurpleEquip) - data = CommFunc.WriteWORD(data, self.BeforeLV) - data = CommFunc.WriteWORD(data, self.GiveCnt) - data = CommFunc.WriteBYTE(data, self.Cnt) - for i in range(self.Cnt): - data = CommFunc.WriteString(data, self.Items[i].GetLength(), self.Items[i].GetBuffer()) - return data - - def OutputString(self): - DumpString = ''' - Head:%s, - Exp1:%d, - Exp2:%d, - Times:%d, - PurpleEquip:%d, - OrangeEquip:%d, - EatPurpleEquip:%d, - BeforeLV:%d, - GiveCnt:%d, - Cnt:%d, - Items:%s - '''\ - %( - self.Head.OutputString(), - self.Exp1, - self.Exp2, - self.Times, - self.PurpleEquip, - self.OrangeEquip, - self.EatPurpleEquip, - self.BeforeLV, - self.GiveCnt, - self.Cnt, - "..." - ) - return DumpString - - -m_NAtagMCTJGInfo=tagMCTJGInfo() -ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTJGInfo.Head.Cmd,m_NAtagMCTJGInfo.Head.SubCmd))] = m_NAtagMCTJGInfo - - -#------------------------------------------------------ # B4 20 回合制战斗状态 #tagMCTurnFightState class tagMCTurnFightState(Structure): @@ -59662,6 +60394,959 @@ #------------------------------------------------------ +# B9 23 功能队伍解散 #tagMCFuncTeamDissolve + +class tagMCFuncTeamDissolve(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TeamID", c_int), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + self.SubCmd = 0x23 + 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 = 0xB9 + self.SubCmd = 0x23 + self.TeamID = 0 + return + + def GetLength(self): + return sizeof(tagMCFuncTeamDissolve) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 23 功能队伍解散 //tagMCFuncTeamDissolve: + Cmd:%s, + SubCmd:%s, + TeamID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TeamID + ) + return DumpString + + +m_NAtagMCFuncTeamDissolve=tagMCFuncTeamDissolve() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncTeamDissolve.Cmd,m_NAtagMCFuncTeamDissolve.SubCmd))] = m_NAtagMCFuncTeamDissolve + + +#------------------------------------------------------ +# B9 22 功能队伍列表 #tagMCFuncTeamList + +class tagMCFuncTeamMem(Structure): + 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)// 玩家境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 + FightPower = 0 #(DWORD FightPower)// 战力,求余亿 + FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿 + Value1 = 0 #(DWORD Value1)//值1 + Value2 = 0 #(DWORD Value2)//值2 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + 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.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.ServerID = 0 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + self.Value1 = 0 + self.Value2 = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + 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.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + return data + + def OutputString(self): + DumpString = ''' + ServerID:%d, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d, + Face:%d, + FacePic:%d, + FightPower:%d, + FightPowerEx:%d, + Value1:%d, + Value2:%d + '''\ + %( + self.ServerID, + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV, + self.Face, + self.FacePic, + self.FightPower, + self.FightPowerEx, + self.Value1, + self.Value2 + ) + return DumpString + + +class tagMCFuncTeam(Structure): + TeamID = 0 #(DWORD TeamID) + CreateTime = 0 #(DWORD CreateTime)//创建队伍时间戳 + FuncMapEx = 0 #(DWORD FuncMapEx)//功能地图扩展,如不同的层级 + NameLen = 0 #(BYTE NameLen) + TeamName = "" #(String TeamName)//队伍名称 + CaptainID = 0 #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID + MinLV = 0 #(WORD MinLV)//最低等级限制 + MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿 + MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿 + ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是 + NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核 + Value1 = 0 #(DWORD Value1)//值1 + Value2 = 0 #(DWORD Value2)//值2 + MemberCount = 0 #(BYTE MemberCount) + MemberList = list() #(vector<tagMCFuncTeamMem> MemberList)// 成员列表 + ApplyCount = 0 #(WORD ApplyCount) + ApplyIDList = list() #(vector<DWORD> ApplyIDList)// 申请玩家ID列表 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.MemberCount): + temMemberList = tagMCFuncTeamMem() + _pos = temMemberList.ReadData(_lpData, _pos) + self.MemberList.append(temMemberList) + self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.ApplyCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ApplyIDList.append(value) + return _pos + + def Clear(self): + self.TeamID = 0 + self.CreateTime = 0 + self.FuncMapEx = 0 + self.NameLen = 0 + self.TeamName = "" + self.CaptainID = 0 + self.MinLV = 0 + self.MinFightPower = 0 + self.MinFightPowerEx = 0 + self.ServerOnly = 0 + self.NeedCheck = 0 + self.Value1 = 0 + self.Value2 = 0 + self.MemberCount = 0 + self.MemberList = list() + self.ApplyCount = 0 + self.ApplyIDList = list() + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 4 + length += 1 + length += len(self.TeamName) + length += 4 + length += 2 + length += 4 + length += 4 + length += 1 + length += 1 + length += 4 + length += 4 + length += 1 + for i in range(self.MemberCount): + length += self.MemberList[i].GetLength() + length += 2 + length += 4 * self.ApplyCount + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteDWORD(data, self.TeamID) + data = CommFunc.WriteDWORD(data, self.CreateTime) + data = CommFunc.WriteDWORD(data, self.FuncMapEx) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.TeamName) + data = CommFunc.WriteDWORD(data, self.CaptainID) + data = CommFunc.WriteWORD(data, self.MinLV) + data = CommFunc.WriteDWORD(data, self.MinFightPower) + data = CommFunc.WriteDWORD(data, self.MinFightPowerEx) + data = CommFunc.WriteBYTE(data, self.ServerOnly) + data = CommFunc.WriteBYTE(data, self.NeedCheck) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteBYTE(data, self.MemberCount) + for i in range(self.MemberCount): + data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer()) + data = CommFunc.WriteWORD(data, self.ApplyCount) + for i in range(self.ApplyCount): + data = CommFunc.WriteDWORD(data, self.ApplyIDList[i]) + return data + + def OutputString(self): + DumpString = ''' + TeamID:%d, + CreateTime:%d, + FuncMapEx:%d, + NameLen:%d, + TeamName:%s, + CaptainID:%d, + MinLV:%d, + MinFightPower:%d, + MinFightPowerEx:%d, + ServerOnly:%d, + NeedCheck:%d, + Value1:%d, + Value2:%d, + MemberCount:%d, + MemberList:%s, + ApplyCount:%d, + ApplyIDList:%s + '''\ + %( + self.TeamID, + self.CreateTime, + self.FuncMapEx, + self.NameLen, + self.TeamName, + self.CaptainID, + self.MinLV, + self.MinFightPower, + self.MinFightPowerEx, + self.ServerOnly, + self.NeedCheck, + self.Value1, + self.Value2, + self.MemberCount, + "...", + self.ApplyCount, + "..." + ) + return DumpString + + +class tagMCFuncTeamList(Structure): + Head = tagHead() + FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID + FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级,0代表所有 + StartIndex = 0 #(DWORD StartIndex)// 查看的起始索引, 默认0 + QueryCnt = 0 #(BYTE QueryCnt)// 查看条数,默认20,最大不超过100 + HaveSpace = 0 #(BYTE HaveSpace)// 是否只查看有空位置的队伍 + IDLimitType = 0 #(BYTE IDLimitType)// ID限制类型:1-同仙盟队长;2-同ServerGroupID队长;3-同ServerID队长 + SearchLen = 0 #(BYTE SearchLen) + SearchMsg = "" #(String SearchMsg)// 指定搜索时有用,可搜索指定队伍ID或模糊搜索队伍名称,搜索时返回最多QueryCnt个数的队伍 + LoopIndex = 0 #(DWORD LoopIndex)// 服务器检索到的索引,列表下拉时下一个查询包的StartIndex从这个LoopIndex开始 + TeamCount = 0 #(BYTE TeamCount)// 如果返回的队伍数小于QueryCnt,代表服务器已经没有满足条件的队伍了,列表再下拉时不再发查询包 + TeamList = list() #(vector<tagMCFuncTeam> TeamList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x22 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.StartIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.QueryCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.HaveSpace,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.IDLimitType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SearchLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.SearchMsg,_pos = CommFunc.ReadString(_lpData, _pos,self.SearchLen) + self.LoopIndex,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.TeamCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TeamCount): + temTeamList = tagMCFuncTeam() + _pos = temTeamList.ReadData(_lpData, _pos) + self.TeamList.append(temTeamList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x22 + self.FuncMapID = 0 + self.FuncMapEx = 0 + self.StartIndex = 0 + self.QueryCnt = 0 + self.HaveSpace = 0 + self.IDLimitType = 0 + self.SearchLen = 0 + self.SearchMsg = "" + self.LoopIndex = 0 + self.TeamCount = 0 + self.TeamList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 4 + length += 1 + length += 1 + length += 1 + length += 1 + length += len(self.SearchMsg) + length += 4 + length += 1 + for i in range(self.TeamCount): + length += self.TeamList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.FuncMapID) + data = CommFunc.WriteDWORD(data, self.FuncMapEx) + data = CommFunc.WriteDWORD(data, self.StartIndex) + data = CommFunc.WriteBYTE(data, self.QueryCnt) + data = CommFunc.WriteBYTE(data, self.HaveSpace) + data = CommFunc.WriteBYTE(data, self.IDLimitType) + data = CommFunc.WriteBYTE(data, self.SearchLen) + data = CommFunc.WriteString(data, self.SearchLen, self.SearchMsg) + data = CommFunc.WriteDWORD(data, self.LoopIndex) + data = CommFunc.WriteBYTE(data, self.TeamCount) + for i in range(self.TeamCount): + data = CommFunc.WriteString(data, self.TeamList[i].GetLength(), self.TeamList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + FuncMapID:%d, + FuncMapEx:%d, + StartIndex:%d, + QueryCnt:%d, + HaveSpace:%d, + IDLimitType:%d, + SearchLen:%d, + SearchMsg:%s, + LoopIndex:%d, + TeamCount:%d, + TeamList:%s + '''\ + %( + self.Head.OutputString(), + self.FuncMapID, + self.FuncMapEx, + self.StartIndex, + self.QueryCnt, + self.HaveSpace, + self.IDLimitType, + self.SearchLen, + self.SearchMsg, + self.LoopIndex, + self.TeamCount, + "..." + ) + return DumpString + + +m_NAtagMCFuncTeamList=tagMCFuncTeamList() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncTeamList.Head.Cmd,m_NAtagMCFuncTeamList.Head.SubCmd))] = m_NAtagMCFuncTeamList + + +#------------------------------------------------------ +# B9 20 功能队伍刷新 #tagMCFuncTeamRefresh + +class tagMCFuncTeamRefreshApply(Structure): + 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)// 玩家境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 + FightPower = 0 #(DWORD FightPower)// 战力,求余亿 + FightPowerEx = 0 #(DWORD FightPowerEx)// 战力,整除亿 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + 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.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + return _pos + + def Clear(self): + self.ServerID = 0 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + 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.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + data = CommFunc.WriteDWORD(data, self.FightPower) + data = CommFunc.WriteDWORD(data, self.FightPowerEx) + return data + + def OutputString(self): + DumpString = ''' + ServerID:%d, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d, + Face:%d, + FacePic:%d, + FightPower:%d, + FightPowerEx:%d + '''\ + %( + self.ServerID, + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV, + self.Face, + self.FacePic, + self.FightPower, + self.FightPowerEx + ) + return DumpString + + +class tagMCFuncTeamRefreshMem(Structure): + 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)// 玩家境界 + Face = 0 #(DWORD Face)//基本脸型 + FacePic = 0 #(DWORD FacePic)//头像框 + 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 + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + 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.Face,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FacePic,_pos = CommFunc.ReadDWORD(_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 + + def Clear(self): + self.ServerID = 0 + self.PlayerID = 0 + self.NameLen = 0 + self.Name = "" + self.LV = 0 + self.Job = 0 + self.RealmLV = 0 + self.Face = 0 + self.FacePic = 0 + self.FightPower = 0 + self.FightPowerEx = 0 + self.OfflineValue = 0 + self.Value1 = 0 + self.Value2 = 0 + return + + def GetLength(self): + length = 0 + length += 4 + length += 4 + length += 1 + length += len(self.Name) + length += 2 + length += 1 + length += 2 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + + return length + + def GetBuffer(self): + data = '' + 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.Face) + data = CommFunc.WriteDWORD(data, self.FacePic) + 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 + + def OutputString(self): + DumpString = ''' + ServerID:%d, + PlayerID:%d, + NameLen:%d, + Name:%s, + LV:%d, + Job:%d, + RealmLV:%d, + Face:%d, + FacePic:%d, + FightPower:%d, + FightPowerEx:%d, + OfflineValue:%d, + Value1:%d, + Value2:%d + '''\ + %( + self.ServerID, + self.PlayerID, + self.NameLen, + self.Name, + self.LV, + self.Job, + self.RealmLV, + self.Face, + self.FacePic, + self.FightPower, + self.FightPowerEx, + self.OfflineValue, + self.Value1, + self.Value2 + ) + return DumpString + + +class tagMCFuncTeamRefresh(Structure): + Head = tagHead() + TeamID = 0 #(DWORD TeamID) + CreateTime = 0 #(DWORD CreateTime)//创建队伍时间戳 + FuncMapID = 0 #(DWORD FuncMapID)// 功能地图ID或自定义的活动功能ID + FuncMapEx = 0 #(DWORD FuncMapEx)// 功能地图扩展,如不同的层级 + NameLen = 0 #(BYTE NameLen) + TeamName = "" #(String TeamName)// 队伍名称 + CaptainID = 0 #(DWORD CaptainID)//队长ID,队伍ServerID直接取队长的ServerID + MinLV = 0 #(WORD MinLV)//最低等级限制 + MinFightPower = 0 #(DWORD MinFightPower)//最低战力限制,求余亿 + MinFightPowerEx = 0 #(DWORD MinFightPowerEx)//最低战力限制,整除亿 + ServerOnly = 0 #(BYTE ServerOnly)//是否仅本服玩家可加入,0-否,1-是 + NeedCheck = 0 #(BYTE NeedCheck)//是否需要审核 + Value1 = 0 #(DWORD Value1)//值1 + Value2 = 0 #(DWORD Value2)//值2 + MemberCount = 0 #(BYTE MemberCount) + MemberList = list() #(vector<tagMCFuncTeamRefreshMem> MemberList)// 成员列表 + ApplyCount = 0 #(WORD ApplyCount) + ApplyIDList = list() #(vector<DWORD> ApplyIDList)// 申请玩家ID列表 + ApplyInfoList = list() #(vector<tagMCFuncTeamRefreshApply> ApplyInfoList)// 申请玩家明细列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x20 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.TeamID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CreateTime,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncMapID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.FuncMapEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TeamName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.CaptainID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MinLV,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.MinFightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MinFightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ServerOnly,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.NeedCheck,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.MemberCount): + temMemberList = tagMCFuncTeamRefreshMem() + _pos = temMemberList.ReadData(_lpData, _pos) + self.MemberList.append(temMemberList) + self.ApplyCount,_pos = CommFunc.ReadWORD(_lpData, _pos) + for i in range(self.ApplyCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.ApplyIDList.append(value) + for i in range(self.ApplyCount): + temApplyInfoList = tagMCFuncTeamRefreshApply() + _pos = temApplyInfoList.ReadData(_lpData, _pos) + self.ApplyInfoList.append(temApplyInfoList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB9 + self.Head.SubCmd = 0x20 + self.TeamID = 0 + self.CreateTime = 0 + self.FuncMapID = 0 + self.FuncMapEx = 0 + self.NameLen = 0 + self.TeamName = "" + self.CaptainID = 0 + self.MinLV = 0 + self.MinFightPower = 0 + self.MinFightPowerEx = 0 + self.ServerOnly = 0 + self.NeedCheck = 0 + self.Value1 = 0 + self.Value2 = 0 + self.MemberCount = 0 + self.MemberList = list() + self.ApplyCount = 0 + self.ApplyIDList = list() + self.ApplyInfoList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 4 + length += 4 + length += 4 + length += 4 + length += 1 + length += len(self.TeamName) + length += 4 + length += 2 + length += 4 + length += 4 + length += 1 + length += 1 + length += 4 + length += 4 + length += 1 + for i in range(self.MemberCount): + length += self.MemberList[i].GetLength() + length += 2 + length += 4 * self.ApplyCount + for i in range(self.ApplyCount): + length += self.ApplyInfoList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteDWORD(data, self.TeamID) + data = CommFunc.WriteDWORD(data, self.CreateTime) + data = CommFunc.WriteDWORD(data, self.FuncMapID) + data = CommFunc.WriteDWORD(data, self.FuncMapEx) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.TeamName) + data = CommFunc.WriteDWORD(data, self.CaptainID) + data = CommFunc.WriteWORD(data, self.MinLV) + data = CommFunc.WriteDWORD(data, self.MinFightPower) + data = CommFunc.WriteDWORD(data, self.MinFightPowerEx) + data = CommFunc.WriteBYTE(data, self.ServerOnly) + data = CommFunc.WriteBYTE(data, self.NeedCheck) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteBYTE(data, self.MemberCount) + for i in range(self.MemberCount): + data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer()) + data = CommFunc.WriteWORD(data, self.ApplyCount) + for i in range(self.ApplyCount): + data = CommFunc.WriteDWORD(data, self.ApplyIDList[i]) + for i in range(self.ApplyCount): + data = CommFunc.WriteString(data, self.ApplyInfoList[i].GetLength(), self.ApplyInfoList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + TeamID:%d, + CreateTime:%d, + FuncMapID:%d, + FuncMapEx:%d, + NameLen:%d, + TeamName:%s, + CaptainID:%d, + MinLV:%d, + MinFightPower:%d, + MinFightPowerEx:%d, + ServerOnly:%d, + NeedCheck:%d, + Value1:%d, + Value2:%d, + MemberCount:%d, + MemberList:%s, + ApplyCount:%d, + ApplyIDList:%s, + ApplyInfoList:%s + '''\ + %( + self.Head.OutputString(), + self.TeamID, + self.CreateTime, + self.FuncMapID, + self.FuncMapEx, + self.NameLen, + self.TeamName, + self.CaptainID, + self.MinLV, + self.MinFightPower, + self.MinFightPowerEx, + self.ServerOnly, + self.NeedCheck, + self.Value1, + self.Value2, + self.MemberCount, + "...", + self.ApplyCount, + "...", + "..." + ) + return DumpString + + +m_NAtagMCFuncTeamRefresh=tagMCFuncTeamRefresh() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFuncTeamRefresh.Head.Cmd,m_NAtagMCFuncTeamRefresh.Head.SubCmd))] = m_NAtagMCFuncTeamRefresh + + +#------------------------------------------------------ +# B9 21 查找玩家功能队伍结果 #tagMCQueryPlayerFuncTeamRet + +class tagMCQueryPlayerFuncTeamRet(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("FuncMapID", c_int), # 功能地图ID或自定义的活动功能ID + ("TeamID", c_int), # 玩家所属队伍ID,目前只同步0的情况,如果玩家有队伍统一B920封包同步处理 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB9 + self.SubCmd = 0x21 + return + + def ReadData(self, stringData, _pos=0, _len=0): + self.Clear() + memmove(addressof(self), stringData[_pos:], self.GetLength()) + return _pos + self.GetLength() + + def Clear(self): + self.Cmd = 0xB9 + self.SubCmd = 0x21 + self.FuncMapID = 0 + self.TeamID = 0 + return + + def GetLength(self): + return sizeof(tagMCQueryPlayerFuncTeamRet) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B9 21 查找玩家功能队伍结果 //tagMCQueryPlayerFuncTeamRet: + Cmd:%s, + SubCmd:%s, + FuncMapID:%d, + TeamID:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.FuncMapID, + self.TeamID + ) + return DumpString + + +m_NAtagMCQueryPlayerFuncTeamRet=tagMCQueryPlayerFuncTeamRet() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCQueryPlayerFuncTeamRet.Cmd,m_NAtagMCQueryPlayerFuncTeamRet.SubCmd))] = m_NAtagMCQueryPlayerFuncTeamRet + + +#------------------------------------------------------ # C1 09 跨服排位玩家信息 #tagMCChampionshipPlayerInfo class tagMCChampionshipPlayerInfo(Structure): -- Gitblit v1.8.0