From 453e31ebec1ae159c08bc88e81ff24e14162af49 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期三, 28 五月 2025 15:49:30 +0800 Subject: [PATCH] 92 【主界面】主线任务-服务端 --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 2396 +++++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 1,749 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 3cfdf96..a2bc72e 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): @@ -32665,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): @@ -36251,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): @@ -36473,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 @@ -36492,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 @@ -36506,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 @@ -36518,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) @@ -36531,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 @@ -36543,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 ) @@ -56440,6 +56302,122 @@ #------------------------------------------------------ +# B1 10 当前任务信息 #tagMCTaskInfo + +class tagMCTask(Structure): + _pack_ = 1 + _fields_ = [ + ("TaskGroup", c_ubyte), # 任务组,0-主线 + ("TaskID", c_int), # 当前任务ID,可能为0,表示该分组暂时没有任务 + ("CurValue", c_int), # 当前进度值 + ("State", c_ubyte), # 任务状态 1-进行中 2-可领取 + ] + + 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.TaskGroup = 0 + self.TaskID = 0 + self.CurValue = 0 + self.State = 0 + return + + def GetLength(self): + return sizeof(tagMCTask) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 10 当前任务信息 //tagMCTaskInfo: + TaskGroup:%d, + TaskID:%d, + CurValue:%d, + State:%d + '''\ + %( + self.TaskGroup, + self.TaskID, + self.CurValue, + self.State + ) + return DumpString + + +class tagMCTaskInfo(Structure): + Head = tagHead() + TaskCount = 0 #(BYTE TaskCount) + TaskList = list() #(vector<tagMCTask> TaskList) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x10 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.TaskCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.TaskCount): + temTaskList = tagMCTask() + _pos = temTaskList.ReadData(_lpData, _pos) + self.TaskList.append(temTaskList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xB1 + self.Head.SubCmd = 0x10 + self.TaskCount = 0 + self.TaskList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + for i in range(self.TaskCount): + length += self.TaskList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.TaskCount) + for i in range(self.TaskCount): + data = CommFunc.WriteString(data, self.TaskList[i].GetLength(), self.TaskList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + TaskCount:%d, + TaskList:%s + '''\ + %( + self.Head.OutputString(), + self.TaskCount, + "..." + ) + return DumpString + + +m_NAtagMCTaskInfo=tagMCTaskInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTaskInfo.Head.Cmd,m_NAtagMCTaskInfo.Head.SubCmd))] = m_NAtagMCTaskInfo + + +#------------------------------------------------------ # B1 15 天道树信息 #tagMCTiandaoTreeInfo class tagMCTiandaoTreeInfo(Structure): @@ -56619,6 +56597,66 @@ m_NAtagMCTrainRealmLVInfo=tagMCTrainRealmLVInfo() ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTrainRealmLVInfo.Head.Cmd,m_NAtagMCTrainRealmLVInfo.Head.SubCmd))] = m_NAtagMCTrainRealmLVInfo + + +#------------------------------------------------------ +# B1 21 仙树信息 #tagMCTreeInfo + +class tagMCTreeInfo(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ("TreeLV", c_ubyte), # 当前仙树等级 + ("LVUPState", c_ubyte), # 0-非升级中;1-升级中 + ("LVUPRemainTime", c_int), # 升级剩余时间,秒;当升级中且倒计时为0时可发送B223执行升级包进行升级 + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xB1 + 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 = 0xB1 + self.SubCmd = 0x21 + self.TreeLV = 0 + self.LVUPState = 0 + self.LVUPRemainTime = 0 + return + + def GetLength(self): + return sizeof(tagMCTreeInfo) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// B1 21 仙树信息 //tagMCTreeInfo: + Cmd:%s, + SubCmd:%s, + TreeLV:%d, + LVUPState:%d, + LVUPRemainTime:%d + '''\ + %( + self.Cmd, + self.SubCmd, + self.TreeLV, + self.LVUPState, + self.LVUPRemainTime + ) + return DumpString + + +m_NAtagMCTreeInfo=tagMCTreeInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCTreeInfo.Cmd,m_NAtagMCTreeInfo.SubCmd))] = m_NAtagMCTreeInfo #------------------------------------------------------ @@ -58778,6 +58816,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): @@ -60080,234 +60457,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): @@ -60421,6 +60570,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