From fdebf36f0d9201c6a6949a08cdfeebb718c25ce2 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 23 五月 2025 19:35:53 +0800 Subject: [PATCH] 16 卡牌服务端(聊天、广播、通用记录、查看玩家;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 848 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 429 insertions(+), 419 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..cabf022 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): @@ -36251,112 +35965,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 +36081,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 +36109,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 +36132,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 +36153,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 +36175,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 +36196,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 ) @@ -58778,6 +58449,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): -- Gitblit v1.8.0