From 32e3c66bc7738107e53208edc4efe644f0aee229 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期二, 18 十二月 2018 21:03:44 +0800 Subject: [PATCH] 5424 【后端】【1.4】跨服竞技场开发(封包、表格) --- ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py | 330 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 330 insertions(+), 0 deletions(-) diff --git a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py index acc64db..c49f536 100644 --- a/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py +++ b/ServerPython/CoreServerGroup/GameServer/Script/ChPyNetSendPack.py @@ -8047,6 +8047,269 @@ #------------------------------------------------------ +# C0 01 跨服PK匹配成功 #tagGCCrossRealmPKMatchOK + +class tagGCCrossRealmPKMatchOK(Structure): + Head = tagHead() + NameLen = 0 #(BYTE NameLen) + PlayerName = "" #(String PlayerName)// 跨服名字 + TagNameLen = 0 #(BYTE TagNameLen) + TagPlayerName = "" #(String TagPlayerName)// 对手名字 + TagJob = 0 #(BYTE TagJob)// 对手职业 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x01 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.PlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TagPlayerName,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen) + self.TagJob,_pos = CommFunc.ReadBYTE(_lpData, _pos) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x01 + self.NameLen = 0 + self.PlayerName = "" + self.TagNameLen = 0 + self.TagPlayerName = "" + self.TagJob = 0 + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += len(self.PlayerName) + length += 1 + length += len(self.TagPlayerName) + length += 1 + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.NameLen) + data = CommFunc.WriteString(data, self.NameLen, self.PlayerName) + data = CommFunc.WriteBYTE(data, self.TagNameLen) + data = CommFunc.WriteString(data, self.NameLen, self.TagPlayerName) + data = CommFunc.WriteBYTE(data, self.TagJob) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + NameLen:%d, + PlayerName:%s, + TagNameLen:%d, + TagPlayerName:%s, + TagJob:%d + '''\ + %( + self.Head.OutputString(), + self.NameLen, + self.PlayerName, + self.TagNameLen, + self.TagPlayerName, + self.TagJob + ) + return DumpString + + +m_NAtagGCCrossRealmPKMatchOK=tagGCCrossRealmPKMatchOK() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKMatchOK.Head.Cmd,m_NAtagGCCrossRealmPKMatchOK.Head.SubCmd))] = m_NAtagGCCrossRealmPKMatchOK + + +#------------------------------------------------------ +# C0 03 跨服PK战斗结果 #tagGCCrossRealmPKOverInfo + +class tagGCCrossRealmPKOverInfo(Structure): + Head = tagHead() + TimeStr = "" #(char TimeStr[19])// 结算时间,格式 yyyy-MM-dd HH:mm:ss + OverType = 0 #(BYTE OverType)// 0-正常,1-有人离线 + WinnerID = 0 #(DWORD WinnerID)// 胜方ID + RoundCount = 0 #(BYTE RoundCount)// PK回合数 + RoundWinnerID = list() #(vector<DWORD> RoundWinnerID)// 回合获胜ID列表 + AddScore = 0 #(WORD AddScore)// 本场加分 + Score = 0 #(WORD Score)// 当前积分 + DanLV = 0 #(BYTE DanLV)// 当前段位 + CWinCnt = 0 #(WORD CWinCnt)// 当前连胜数 + TagNameLen = 0 #(BYTE TagNameLen) + TagName = "" #(String TagName) + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x03 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.TimeStr,_pos = CommFunc.ReadString(_lpData, _pos,19) + self.OverType,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.WinnerID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.RoundCount,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.RoundCount): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.RoundWinnerID.append(value) + self.AddScore,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Score,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.DanLV,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.CWinCnt,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.TagNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.TagName,_pos = CommFunc.ReadString(_lpData, _pos,self.TagNameLen) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xC0 + self.Head.SubCmd = 0x03 + self.TimeStr = "" + self.OverType = 0 + self.WinnerID = 0 + self.RoundCount = 0 + self.RoundWinnerID = list() + self.AddScore = 0 + self.Score = 0 + self.DanLV = 0 + self.CWinCnt = 0 + self.TagNameLen = 0 + self.TagName = "" + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 19 + length += 1 + length += 4 + length += 1 + length += 4 * self.RoundCount + length += 2 + length += 2 + length += 1 + length += 2 + length += 1 + length += len(self.TagName) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteString(data, 19, self.TimeStr) + data = CommFunc.WriteBYTE(data, self.OverType) + data = CommFunc.WriteDWORD(data, self.WinnerID) + data = CommFunc.WriteBYTE(data, self.RoundCount) + for i in range(self.RoundCount): + data = CommFunc.WriteDWORD(data, self.RoundWinnerID[i]) + data = CommFunc.WriteWORD(data, self.AddScore) + data = CommFunc.WriteWORD(data, self.Score) + data = CommFunc.WriteBYTE(data, self.DanLV) + data = CommFunc.WriteWORD(data, self.CWinCnt) + data = CommFunc.WriteBYTE(data, self.TagNameLen) + data = CommFunc.WriteString(data, self.TagNameLen, self.TagName) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + TimeStr:%s, + OverType:%d, + WinnerID:%d, + RoundCount:%d, + RoundWinnerID:%s, + AddScore:%d, + Score:%d, + DanLV:%d, + CWinCnt:%d, + TagNameLen:%d, + TagName:%s + '''\ + %( + self.Head.OutputString(), + self.TimeStr, + self.OverType, + self.WinnerID, + self.RoundCount, + "...", + self.AddScore, + self.Score, + self.DanLV, + self.CWinCnt, + self.TagNameLen, + self.TagName + ) + return DumpString + + +m_NAtagGCCrossRealmPKOverInfo=tagGCCrossRealmPKOverInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKOverInfo.Head.Cmd,m_NAtagGCCrossRealmPKOverInfo.Head.SubCmd))] = m_NAtagGCCrossRealmPKOverInfo + + +#------------------------------------------------------ +# C0 02 跨服PK开始匹配 #tagGCCrossRealmPKStartMatch + +class tagGCCrossRealmPKStartMatch(Structure): + _pack_ = 1 + _fields_ = [ + ("Cmd", c_ubyte), + ("SubCmd", c_ubyte), + ] + + def __init__(self): + self.Clear() + self.Cmd = 0xC0 + self.SubCmd = 0x02 + 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 = 0xC0 + self.SubCmd = 0x02 + return + + def GetLength(self): + return sizeof(tagGCCrossRealmPKStartMatch) + + def GetBuffer(self): + return string_at(addressof(self), self.GetLength()) + + def OutputString(self): + DumpString = '''// C0 02 跨服PK开始匹配 //tagGCCrossRealmPKStartMatch: + Cmd:%s, + SubCmd:%s + '''\ + %( + self.Cmd, + self.SubCmd + ) + return DumpString + + +m_NAtagGCCrossRealmPKStartMatch=tagGCCrossRealmPKStartMatch() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagGCCrossRealmPKStartMatch.Cmd,m_NAtagGCCrossRealmPKStartMatch.SubCmd))] = m_NAtagGCCrossRealmPKStartMatch + + +#------------------------------------------------------ # D1 25 通知可进入跨服王者争霸 #tagCanEnterMergeKing class tagCanEnterMergeKing(Structure): @@ -12347,6 +12610,73 @@ #------------------------------------------------------ +# A3 1E 玩家聚魂孔信息 #tagMCGatherSoulHoleInfo + +class tagMCGatherSoulHoleInfo(Structure): + Head = tagHead() + Count = 0 #(BYTE Count)// 孔信息数 + GatherSoulDataList = list() #(vector<DWORD> GatherSoulDataList)// 孔数据信息, 数据与背包数据相同 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x1E + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Count,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.Count): + value,_pos=CommFunc.ReadDWORD(_lpData,_pos) + self.GatherSoulDataList.append(value) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA3 + self.Head.SubCmd = 0x1E + self.Count = 0 + self.GatherSoulDataList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 * self.Count + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Count) + for i in range(self.Count): + data = CommFunc.WriteDWORD(data, self.GatherSoulDataList[i]) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Count:%d, + GatherSoulDataList:%s + '''\ + %( + self.Head.OutputString(), + self.Count, + "..." + ) + return DumpString + + +m_NAtagMCGatherSoulHoleInfo=tagMCGatherSoulHoleInfo() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCGatherSoulHoleInfo.Head.Cmd,m_NAtagMCGatherSoulHoleInfo.Head.SubCmd))] = m_NAtagMCGatherSoulHoleInfo + + +#------------------------------------------------------ # A3 1D 神兵等级信息 #tagMCGodWeaponLVList class tagMCGodWeaponLVInfo(Structure): -- Gitblit v1.8.0