From a7e72a169ff9fbd6d9d061f7352a130b8d53f9a6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期五, 16 五月 2025 15:46:43 +0800 Subject: [PATCH] 16 卡牌服务端(排行榜) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 294 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 294 insertions(+), 0 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 174b641..3cfdf96 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -22784,6 +22784,300 @@ #------------------------------------------------------ +# A1 30 查看榜单返回信息 #tagMCViewBillboardRet + +class tagMCViewBillboardData(Structure): + Index = 0 #(WORD Index)//数据在榜单列表中的索引,从0开始 + Rank = 0 #(WORD Rank)//名次,从1开始,代表第1名 + ID = 0 #(DWORD ID) + ID2 = 0 #(DWORD ID2) + Name1 = "" #(char Name1[33])//名字1,用来显示排序对象名字 + Name2 = "" #(char Name2[65])//名字2 + Type2 = 0 #(BYTE Type2)//附加类型,用来表示排序对象的类型,比如,玩家所属职业门派,宠物类型等 + Value1 = 0 #(DWORD Value1)//自定义值1 + Value2 = 0 #(DWORD Value2)//自定义值2 + Value3 = 0 #(DWORD Value3) + Value4 = 0 #(DWORD Value4) + Value5 = 0 #(DWORD Value5) + Value6 = 0 #(DWORD Value6) + Value7 = 0 #(DWORD Value7) + Value8 = 0 #(DWORD Value8) + CmpValue = 0 #(DWORD CmpValue)// 比较权值 + CmpValue2 = 0 #(DWORD CmpValue2)// 比较权值 + CmpValue3 = 0 #(DWORD CmpValue3)// 比较权值 + DataLen = 0 #(WORD DataLen) + UserData = "" #(String UserData)//附加信息 + data = None + + def __init__(self): + self.Clear() + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + self.Index,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.Rank,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.ID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ID2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Name1,_pos = CommFunc.ReadString(_lpData, _pos,33) + self.Name2,_pos = CommFunc.ReadString(_lpData, _pos,65) + self.Type2,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.Value1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value4,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value5,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value6,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value7,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.Value8,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.CmpValue3,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.DataLen,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.UserData,_pos = CommFunc.ReadString(_lpData, _pos,self.DataLen) + return _pos + + def Clear(self): + self.Index = 0 + self.Rank = 0 + self.ID = 0 + self.ID2 = 0 + self.Name1 = "" + self.Name2 = "" + self.Type2 = 0 + self.Value1 = 0 + self.Value2 = 0 + self.Value3 = 0 + self.Value4 = 0 + self.Value5 = 0 + self.Value6 = 0 + self.Value7 = 0 + self.Value8 = 0 + self.CmpValue = 0 + self.CmpValue2 = 0 + self.CmpValue3 = 0 + self.DataLen = 0 + self.UserData = "" + return + + def GetLength(self): + length = 0 + length += 2 + length += 2 + length += 4 + length += 4 + length += 33 + length += 65 + length += 1 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 4 + length += 2 + length += len(self.UserData) + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteWORD(data, self.Index) + data = CommFunc.WriteWORD(data, self.Rank) + data = CommFunc.WriteDWORD(data, self.ID) + data = CommFunc.WriteDWORD(data, self.ID2) + data = CommFunc.WriteString(data, 33, self.Name1) + data = CommFunc.WriteString(data, 65, self.Name2) + data = CommFunc.WriteBYTE(data, self.Type2) + data = CommFunc.WriteDWORD(data, self.Value1) + data = CommFunc.WriteDWORD(data, self.Value2) + data = CommFunc.WriteDWORD(data, self.Value3) + data = CommFunc.WriteDWORD(data, self.Value4) + data = CommFunc.WriteDWORD(data, self.Value5) + data = CommFunc.WriteDWORD(data, self.Value6) + data = CommFunc.WriteDWORD(data, self.Value7) + data = CommFunc.WriteDWORD(data, self.Value8) + data = CommFunc.WriteDWORD(data, self.CmpValue) + data = CommFunc.WriteDWORD(data, self.CmpValue2) + data = CommFunc.WriteDWORD(data, self.CmpValue3) + data = CommFunc.WriteWORD(data, self.DataLen) + data = CommFunc.WriteString(data, self.DataLen, self.UserData) + return data + + def OutputString(self): + DumpString = ''' + Index:%d, + Rank:%d, + ID:%d, + ID2:%d, + Name1:%s, + Name2:%s, + Type2:%d, + Value1:%d, + Value2:%d, + Value3:%d, + Value4:%d, + Value5:%d, + Value6:%d, + Value7:%d, + Value8:%d, + CmpValue:%d, + CmpValue2:%d, + CmpValue3:%d, + DataLen:%d, + UserData:%s + '''\ + %( + self.Index, + self.Rank, + self.ID, + self.ID2, + self.Name1, + self.Name2, + self.Type2, + self.Value1, + self.Value2, + self.Value3, + self.Value4, + self.Value5, + self.Value6, + self.Value7, + self.Value8, + self.CmpValue, + self.CmpValue2, + self.CmpValue3, + self.DataLen, + self.UserData + ) + return DumpString + + +class tagMCViewBillboardRet(Structure): + Head = tagHead() + Type = 0 #(BYTE Type)//榜单类型 + GroupValue1 = 0 #(DWORD GroupValue1)//分组值1 + GroupValue2 = 0 #(DWORD GroupValue2)//分组值2,与分组值1组合归为同组榜单数据 + DataTotal = 0 #(WORD DataTotal)//该榜单实际总数据数,分页查询时可通过此值及返回的分页最后一条榜单数据所在索引判断是否还有未查询数据 + PageDataCnt = 0 #(BYTE PageDataCnt) + PageDataList = list() #(vector<tagMCViewBillboardData> PageDataList)//返回分页数据列表 + ViewID = 0 #(DWORD ViewID)//附带查看指定ID所在名次前后数据,如玩家ID、家族ID等 + ViewIDDataCnt = 0 #(BYTE ViewIDDataCnt) + ViewIDDataList = list() #(vector<tagMCViewBillboardData> ViewIDDataList)//ViewID所在名次前后数据列表 + data = None + + def __init__(self): + self.Clear() + self.Head.Cmd = 0xA1 + self.Head.SubCmd = 0x30 + return + + def ReadData(self, _lpData, _pos=0, _Len=0): + self.Clear() + _pos = self.Head.ReadData(_lpData, _pos) + self.Type,_pos = CommFunc.ReadBYTE(_lpData, _pos) + self.GroupValue1,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.GroupValue2,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.DataTotal,_pos = CommFunc.ReadWORD(_lpData, _pos) + self.PageDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.PageDataCnt): + temPageDataList = tagMCViewBillboardData() + _pos = temPageDataList.ReadData(_lpData, _pos) + self.PageDataList.append(temPageDataList) + self.ViewID,_pos = CommFunc.ReadDWORD(_lpData, _pos) + self.ViewIDDataCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos) + for i in range(self.ViewIDDataCnt): + temViewIDDataList = tagMCViewBillboardData() + _pos = temViewIDDataList.ReadData(_lpData, _pos) + self.ViewIDDataList.append(temViewIDDataList) + return _pos + + def Clear(self): + self.Head = tagHead() + self.Head.Clear() + self.Head.Cmd = 0xA1 + self.Head.SubCmd = 0x30 + self.Type = 0 + self.GroupValue1 = 0 + self.GroupValue2 = 0 + self.DataTotal = 0 + self.PageDataCnt = 0 + self.PageDataList = list() + self.ViewID = 0 + self.ViewIDDataCnt = 0 + self.ViewIDDataList = list() + return + + def GetLength(self): + length = 0 + length += self.Head.GetLength() + length += 1 + length += 4 + length += 4 + length += 2 + length += 1 + for i in range(self.PageDataCnt): + length += self.PageDataList[i].GetLength() + length += 4 + length += 1 + for i in range(self.ViewIDDataCnt): + length += self.ViewIDDataList[i].GetLength() + + return length + + def GetBuffer(self): + data = '' + data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer()) + data = CommFunc.WriteBYTE(data, self.Type) + data = CommFunc.WriteDWORD(data, self.GroupValue1) + data = CommFunc.WriteDWORD(data, self.GroupValue2) + data = CommFunc.WriteWORD(data, self.DataTotal) + data = CommFunc.WriteBYTE(data, self.PageDataCnt) + for i in range(self.PageDataCnt): + data = CommFunc.WriteString(data, self.PageDataList[i].GetLength(), self.PageDataList[i].GetBuffer()) + data = CommFunc.WriteDWORD(data, self.ViewID) + data = CommFunc.WriteBYTE(data, self.ViewIDDataCnt) + for i in range(self.ViewIDDataCnt): + data = CommFunc.WriteString(data, self.ViewIDDataList[i].GetLength(), self.ViewIDDataList[i].GetBuffer()) + return data + + def OutputString(self): + DumpString = ''' + Head:%s, + Type:%d, + GroupValue1:%d, + GroupValue2:%d, + DataTotal:%d, + PageDataCnt:%d, + PageDataList:%s, + ViewID:%d, + ViewIDDataCnt:%d, + ViewIDDataList:%s + '''\ + %( + self.Head.OutputString(), + self.Type, + self.GroupValue1, + self.GroupValue2, + self.DataTotal, + self.PageDataCnt, + "...", + self.ViewID, + self.ViewIDDataCnt, + "..." + ) + return DumpString + + +m_NAtagMCViewBillboardRet=tagMCViewBillboardRet() +ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCViewBillboardRet.Head.Cmd,m_NAtagMCViewBillboardRet.Head.SubCmd))] = m_NAtagMCViewBillboardRet + + +#------------------------------------------------------ # A2 02 玩家攻击模式通知 #tagMCAttackMode class tagMCAttackMode(Structure): -- Gitblit v1.8.0