| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # 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):
|