| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 21 家族变更 #tagMCFamilyChange
|
| | |
|
| | | class tagMCFamilyChange(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("Cmd", c_ubyte),
|
| | | ("SubCmd", c_ubyte),
|
| | | ("Type", c_ubyte), |
| | | ]
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Cmd = 0xA5
|
| | | 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 = 0xA5
|
| | | self.SubCmd = 0x21
|
| | | self.Type = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagMCFamilyChange)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''// A5 21 家族变更 //tagMCFamilyChange:
|
| | | Cmd:%s,
|
| | | SubCmd:%s,
|
| | | Type:%d
|
| | | '''\
|
| | | %(
|
| | | self.Cmd,
|
| | | self.SubCmd,
|
| | | self.Type
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyChange=tagMCFamilyChange()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyChange.Cmd,m_NAtagMCFamilyChange.SubCmd))] = m_NAtagMCFamilyChange
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 06 仙盟每日福利领取状态 #tagMCFamilyDayAward
|
| | |
|
| | | class tagMCFamilyDayAward(Structure):
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 22 家族申请加入的玩家信息 #tagMCFamilyReqJoinInfo
|
| | |
|
| | | class tagMCFamilyReqJoinPlayer(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//size = NameLen
|
| | | ReqTime = 0 #(DWORD ReqTime)//申请时间戳
|
| | | LV = 0 #(WORD LV)//等级
|
| | | Job = 0 #(BYTE Job)//ְҵ
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | FightPower = 0 #(DWORD FightPower)//战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//战力,整除亿部分
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | IsOnLine = 0 #(BYTE IsOnLine)//是否在线
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.ReqTime,_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.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.IsOnLine,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.ReqTime = 0
|
| | | self.LV = 0
|
| | | self.Job = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.ServerID = 0
|
| | | self.IsOnLine = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.ReqTime)
|
| | | 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.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteBYTE(data, self.IsOnLine)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | ReqTime:%d,
|
| | | LV:%d,
|
| | | Job:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | ServerID:%d,
|
| | | IsOnLine:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.ReqTime,
|
| | | self.LV,
|
| | | self.Job,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.ServerID,
|
| | | self.IsOnLine
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFamilyReqJoinInfo(Structure):
|
| | | Head = tagHead()
|
| | | ReqCnt = 0 #(BYTE ReqCnt)
|
| | | ReqJoinList = list() #(vector<tagMCFamilyReqJoinPlayer> ReqJoinList)
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x22
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.ReqCnt,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.ReqCnt):
|
| | | temReqJoinList = tagMCFamilyReqJoinPlayer()
|
| | | _pos = temReqJoinList.ReadData(_lpData, _pos)
|
| | | self.ReqJoinList.append(temReqJoinList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x22
|
| | | self.ReqCnt = 0
|
| | | self.ReqJoinList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.ReqCnt):
|
| | | length += self.ReqJoinList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.ReqCnt)
|
| | | for i in range(self.ReqCnt):
|
| | | data = CommFunc.WriteString(data, self.ReqJoinList[i].GetLength(), self.ReqJoinList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | ReqCnt:%d,
|
| | | ReqJoinList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.ReqCnt,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyReqJoinInfo=tagMCFamilyReqJoinInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyReqJoinInfo.Head.Cmd,m_NAtagMCFamilyReqJoinInfo.Head.SubCmd))] = m_NAtagMCFamilyReqJoinInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 11 打坐信息 #tagMCFamilySitInfo
|
| | |
|
| | | class tagMCFamilySitInfo(Structure):
|
| | |
| | |
|
| | | m_NAtagMCFamilySitInfo=tagMCFamilySitInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilySitInfo.Cmd,m_NAtagMCFamilySitInfo.SubCmd))] = m_NAtagMCFamilySitInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 23 搜索家族返回列表 #tagMCFamilyViewList
|
| | |
|
| | | class tagMCFamilyView(Structure):
|
| | | FamilyID = 0 #(DWORD FamilyID)//家族ID
|
| | | FamilyNameLen = 0 #(BYTE FamilyNameLen)
|
| | | FamilyName = "" #(String FamilyName)//size = FamilyNameLen
|
| | | LeaderID = 0 #(DWORD LeaderID)//族长ID
|
| | | LeaderNameLen = 0 #(BYTE LeaderNameLen)
|
| | | LeaderName = "" #(String LeaderName)//size = LeaderNameLen
|
| | | FamilyLV = 0 #(BYTE FamilyLV)//家族等级
|
| | | JoinReview = 0 #(BYTE JoinReview)//成员加入是否需要审核,默认0自动加入
|
| | | JoinLVMin = 0 #(WORD JoinLVMin)//限制最低可加入的玩家等级
|
| | | ServerID = 0 #(DWORD ServerID)//区服ID
|
| | | EmblemID = 0 #(DWORD EmblemID)//徽章ID
|
| | | FightPower = 0 #(DWORD FightPower)//总战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//总战力,整除亿部分
|
| | | MemberCount = 0 #(BYTE MemberCount)//成员人数
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.FamilyID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FamilyNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,self.FamilyNameLen)
|
| | | self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.LeaderNameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.LeaderName,_pos = CommFunc.ReadString(_lpData, _pos,self.LeaderNameLen)
|
| | | self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.JoinReview,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.FamilyID = 0
|
| | | self.FamilyNameLen = 0
|
| | | self.FamilyName = ""
|
| | | self.LeaderID = 0
|
| | | self.LeaderNameLen = 0
|
| | | self.LeaderName = ""
|
| | | self.FamilyLV = 0
|
| | | self.JoinReview = 0
|
| | | self.JoinLVMin = 0
|
| | | self.ServerID = 0
|
| | | self.EmblemID = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.MemberCount = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.FamilyName)
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.LeaderName)
|
| | | length += 1
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 1
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyID)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyNameLen)
|
| | | data = CommFunc.WriteString(data, self.FamilyNameLen, self.FamilyName)
|
| | | data = CommFunc.WriteDWORD(data, self.LeaderID)
|
| | | data = CommFunc.WriteBYTE(data, self.LeaderNameLen)
|
| | | data = CommFunc.WriteString(data, self.LeaderNameLen, self.LeaderName)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyLV)
|
| | | data = CommFunc.WriteBYTE(data, self.JoinReview)
|
| | | data = CommFunc.WriteWORD(data, self.JoinLVMin)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.EmblemID)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | FamilyID:%d,
|
| | | FamilyNameLen:%d,
|
| | | FamilyName:%s,
|
| | | LeaderID:%d,
|
| | | LeaderNameLen:%d,
|
| | | LeaderName:%s,
|
| | | FamilyLV:%d,
|
| | | JoinReview:%d,
|
| | | JoinLVMin:%d,
|
| | | ServerID:%d,
|
| | | EmblemID:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | MemberCount:%d
|
| | | '''\
|
| | | %(
|
| | | self.FamilyID,
|
| | | self.FamilyNameLen,
|
| | | self.FamilyName,
|
| | | self.LeaderID,
|
| | | self.LeaderNameLen,
|
| | | self.LeaderName,
|
| | | self.FamilyLV,
|
| | | self.JoinReview,
|
| | | self.JoinLVMin,
|
| | | self.ServerID,
|
| | | self.EmblemID,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.MemberCount
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCFamilyViewList(Structure):
|
| | | Head = tagHead()
|
| | | MsgLen = 0 #(BYTE MsgLen)
|
| | | Msg = "" #(String Msg)//搜索条件原值返回
|
| | | PageIndex = 0 #(BYTE PageIndex)//查询第X页索引,0~n
|
| | | ShowCount = 0 #(BYTE ShowCount)//每页数量
|
| | | TotalPage = 0 #(BYTE TotalPage)//一共有多少页
|
| | | FamilyCount = 0 #(BYTE FamilyCount)
|
| | | FamilyList = list() #(vector<tagMCFamilyView> FamilyList)//本页家族信息列表
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x23
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.MsgLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Msg,_pos = CommFunc.ReadString(_lpData, _pos,self.MsgLen)
|
| | | self.PageIndex,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.ShowCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.TotalPage,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.FamilyCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.FamilyCount):
|
| | | temFamilyList = tagMCFamilyView()
|
| | | _pos = temFamilyList.ReadData(_lpData, _pos)
|
| | | self.FamilyList.append(temFamilyList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x23
|
| | | self.MsgLen = 0
|
| | | self.Msg = ""
|
| | | self.PageIndex = 0
|
| | | self.ShowCount = 0
|
| | | self.TotalPage = 0
|
| | | self.FamilyCount = 0
|
| | | self.FamilyList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | length += len(self.Msg)
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | length += 1
|
| | | for i in range(self.FamilyCount):
|
| | | length += self.FamilyList[i].GetLength()
|
| | |
|
| | | return length
|
| | |
|
| | | def GetBuffer(self):
|
| | | data = ''
|
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.MsgLen)
|
| | | data = CommFunc.WriteString(data, self.MsgLen, self.Msg)
|
| | | data = CommFunc.WriteBYTE(data, self.PageIndex)
|
| | | data = CommFunc.WriteBYTE(data, self.ShowCount)
|
| | | data = CommFunc.WriteBYTE(data, self.TotalPage)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyCount)
|
| | | for i in range(self.FamilyCount):
|
| | | data = CommFunc.WriteString(data, self.FamilyList[i].GetLength(), self.FamilyList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | MsgLen:%d,
|
| | | Msg:%s,
|
| | | PageIndex:%d,
|
| | | ShowCount:%d,
|
| | | TotalPage:%d,
|
| | | FamilyCount:%d,
|
| | | FamilyList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.MsgLen,
|
| | | self.Msg,
|
| | | self.PageIndex,
|
| | | self.ShowCount,
|
| | | self.TotalPage,
|
| | | self.FamilyCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCFamilyViewList=tagMCFamilyViewList()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCFamilyViewList.Head.Cmd,m_NAtagMCFamilyViewList.Head.SubCmd))] = m_NAtagMCFamilyViewList
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | #A5 01 查看已申请加入的家族信息 #tagMCNotifyRequestJoinFamilyInfo
|
| | |
|
| | | class tagRequestJoinFamily(Structure):
|
| | | _pack_ = 1
|
| | | _fields_ = [
|
| | | ("RequestFamilyID", c_int), #申请的加入ID
|
| | | ]
|
| | |
|
| | | 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.RequestFamilyID = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | return sizeof(tagRequestJoinFamily)
|
| | |
|
| | | def GetBuffer(self):
|
| | | return string_at(addressof(self), self.GetLength())
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''//A5 01 查看已申请加入的家族信息 //tagMCNotifyRequestJoinFamilyInfo:
|
| | | RequestFamilyID:%d
|
| | | '''\
|
| | | %(
|
| | | self.RequestFamilyID
|
| | | )
|
| | | return DumpString
|
| | |
|
| | | #A5 01 已申请加入的家族信息 #tagMCNotifyRequestJoinFamilyInfo
|
| | |
|
| | | class tagMCNotifyRequestJoinFamilyInfo(Structure):
|
| | | Head = tagHead()
|
| | | RequestCount = 0 #(BYTE RequestCount)//申请的数量
|
| | | RequestAddFamilyInfo = list() #(vector<tagRequestJoinFamily> RequestAddFamilyInfo)//size = RequestCount
|
| | | RequestJoinFamilyIDList = list() #(vector<DWORD> RequestJoinFamilyIDList)//size = RequestCount
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | |
| | | _pos = self.Head.ReadData(_lpData, _pos)
|
| | | self.RequestCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.RequestCount):
|
| | | temRequestAddFamilyInfo = tagRequestJoinFamily()
|
| | | _pos = temRequestAddFamilyInfo.ReadData(_lpData, _pos)
|
| | | self.RequestAddFamilyInfo.append(temRequestAddFamilyInfo)
|
| | | value,_pos=CommFunc.ReadDWORD(_lpData,_pos)
|
| | | self.RequestJoinFamilyIDList.append(value)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | |
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x01
|
| | | self.RequestCount = 0
|
| | | self.RequestAddFamilyInfo = list()
|
| | | self.RequestJoinFamilyIDList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 1
|
| | | for i in range(self.RequestCount):
|
| | | length += self.RequestAddFamilyInfo[i].GetLength()
|
| | | length += 4 * self.RequestCount
|
| | |
|
| | | return length
|
| | |
|
| | |
| | | data = CommFunc.WriteString(data, self.Head.GetLength(), self.Head.GetBuffer())
|
| | | data = CommFunc.WriteBYTE(data, self.RequestCount)
|
| | | for i in range(self.RequestCount):
|
| | | data = CommFunc.WriteString(data, self.RequestAddFamilyInfo[i].GetLength(), self.RequestAddFamilyInfo[i].GetBuffer())
|
| | | data = CommFunc.WriteDWORD(data, self.RequestJoinFamilyIDList[i])
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | RequestCount:%d,
|
| | | RequestAddFamilyInfo:%s
|
| | | RequestJoinFamilyIDList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | |
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A5 20 玩家家族信息 #tagMCRoleFamilyInfo
|
| | |
|
| | | class tagMCRoleFamilyMember(Structure):
|
| | | PlayerID = 0 #(DWORD PlayerID)
|
| | | NameLen = 0 #(BYTE NameLen)
|
| | | Name = "" #(String Name)//size = NameLen
|
| | | JoinTime = 0 #(DWORD JoinTime)//加入家族时时间戳
|
| | | FmLV = 0 #(BYTE FmLV)//家族职位: 0-成员;1-精英;2-副族长;3-族长
|
| | | LV = 0 #(WORD LV)//等级
|
| | | Job = 0 #(BYTE Job)//ְҵ
|
| | | RealmLV = 0 #(BYTE RealmLV)//境界
|
| | | Face = 0 #(DWORD Face)//基本脸型
|
| | | FacePic = 0 #(DWORD FacePic)//头像框
|
| | | FightPower = 0 #(DWORD FightPower)//战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//战力,整除亿部分
|
| | | ServerID = 0 #(DWORD ServerID)//所属区服ID
|
| | | ContribTotal = 0 #(DWORD ContribTotal)//总贡献度
|
| | | ContribWeek = 0 #(DWORD ContribWeek)//周贡献度
|
| | | OffTime = 0 #(DWORD OffTime)// 0-在线; >0-/离线时间戳
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | return
|
| | |
|
| | | def ReadData(self, _lpData, _pos=0, _Len=0):
|
| | | self.Clear()
|
| | | self.PlayerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.NameLen,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.Name,_pos = CommFunc.ReadString(_lpData, _pos,self.NameLen)
|
| | | self.JoinTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FmLV,_pos = CommFunc.ReadBYTE(_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.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ContribTotal,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.ContribWeek,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.OffTime,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.PlayerID = 0
|
| | | self.NameLen = 0
|
| | | self.Name = ""
|
| | | self.JoinTime = 0
|
| | | self.FmLV = 0
|
| | | self.LV = 0
|
| | | self.Job = 0
|
| | | self.RealmLV = 0
|
| | | self.Face = 0
|
| | | self.FacePic = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.ServerID = 0
|
| | | self.ContribTotal = 0
|
| | | self.ContribWeek = 0
|
| | | self.OffTime = 0
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += 4
|
| | | length += 1
|
| | | length += len(self.Name)
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | length += 1
|
| | | length += 1
|
| | | length += 4
|
| | | 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.PlayerID)
|
| | | data = CommFunc.WriteBYTE(data, self.NameLen)
|
| | | data = CommFunc.WriteString(data, self.NameLen, self.Name)
|
| | | data = CommFunc.WriteDWORD(data, self.JoinTime)
|
| | | data = CommFunc.WriteBYTE(data, self.FmLV)
|
| | | 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.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.ContribTotal)
|
| | | data = CommFunc.WriteDWORD(data, self.ContribWeek)
|
| | | data = CommFunc.WriteDWORD(data, self.OffTime)
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | PlayerID:%d,
|
| | | NameLen:%d,
|
| | | Name:%s,
|
| | | JoinTime:%d,
|
| | | FmLV:%d,
|
| | | LV:%d,
|
| | | Job:%d,
|
| | | RealmLV:%d,
|
| | | Face:%d,
|
| | | FacePic:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | ServerID:%d,
|
| | | ContribTotal:%d,
|
| | | ContribWeek:%d,
|
| | | OffTime:%d
|
| | | '''\
|
| | | %(
|
| | | self.PlayerID,
|
| | | self.NameLen,
|
| | | self.Name,
|
| | | self.JoinTime,
|
| | | self.FmLV,
|
| | | self.LV,
|
| | | self.Job,
|
| | | self.RealmLV,
|
| | | self.Face,
|
| | | self.FacePic,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.ServerID,
|
| | | self.ContribTotal,
|
| | | self.ContribWeek,
|
| | | self.OffTime
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | class tagMCRoleFamilyInfo(Structure):
|
| | | Head = tagHead()
|
| | | FamilyID = 0 #(DWORD FamilyID)
|
| | | FamilyName = "" #(char FamilyName[33])//家族名称
|
| | | FamilyLV = 0 #(BYTE FamilyLV)//家族等级
|
| | | FamilyLVExp = 0 #(DWORD FamilyLVExp)//家族等级经验
|
| | | JoinReview = 0 #(BYTE JoinReview)//成员加入是否需要审核,默认0自动加入
|
| | | JoinLVMin = 0 #(WORD JoinLVMin)//限制最低可加入的玩家等级
|
| | | ServerID = 0 #(DWORD ServerID)//区服ID,创建时以族长的区服ID赋值
|
| | | EmblemID = 0 #(DWORD EmblemID)//徽章ID
|
| | | FightPower = 0 #(DWORD FightPower)//总战力,求余亿部分
|
| | | FightPowerEx = 0 #(DWORD FightPowerEx)//总战力,整除亿部分
|
| | | BroadcastLen = 0 #(WORD BroadcastLen)//公告
|
| | | Broadcast = "" #(String Broadcast)//size = BroadcastLen
|
| | | LeaderID = 0 #(DWORD LeaderID)//族长玩家ID
|
| | | MemberCount = 0 #(BYTE MemberCount)//人数
|
| | | MemberList = list() #(vector<tagMCRoleFamilyMember> MemberList)//size = MemberCount
|
| | | data = None
|
| | |
|
| | | def __init__(self):
|
| | | self.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x20
|
| | | 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.FamilyName,_pos = CommFunc.ReadString(_lpData, _pos,33)
|
| | | self.FamilyLV,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.FamilyLVExp,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.JoinReview,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | self.JoinLVMin,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.ServerID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.EmblemID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPower,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.FightPowerEx,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.BroadcastLen,_pos = CommFunc.ReadWORD(_lpData, _pos)
|
| | | self.Broadcast,_pos = CommFunc.ReadString(_lpData, _pos,self.BroadcastLen)
|
| | | self.LeaderID,_pos = CommFunc.ReadDWORD(_lpData, _pos)
|
| | | self.MemberCount,_pos = CommFunc.ReadBYTE(_lpData, _pos)
|
| | | for i in range(self.MemberCount):
|
| | | temMemberList = tagMCRoleFamilyMember()
|
| | | _pos = temMemberList.ReadData(_lpData, _pos)
|
| | | self.MemberList.append(temMemberList)
|
| | | return _pos
|
| | |
|
| | | def Clear(self):
|
| | | self.Head = tagHead()
|
| | | self.Head.Clear()
|
| | | self.Head.Cmd = 0xA5
|
| | | self.Head.SubCmd = 0x20
|
| | | self.FamilyID = 0
|
| | | self.FamilyName = ""
|
| | | self.FamilyLV = 0
|
| | | self.FamilyLVExp = 0
|
| | | self.JoinReview = 0
|
| | | self.JoinLVMin = 0
|
| | | self.ServerID = 0
|
| | | self.EmblemID = 0
|
| | | self.FightPower = 0
|
| | | self.FightPowerEx = 0
|
| | | self.BroadcastLen = 0
|
| | | self.Broadcast = ""
|
| | | self.LeaderID = 0
|
| | | self.MemberCount = 0
|
| | | self.MemberList = list()
|
| | | return
|
| | |
|
| | | def GetLength(self):
|
| | | length = 0
|
| | | length += self.Head.GetLength()
|
| | | length += 4
|
| | | length += 33
|
| | | length += 1
|
| | | length += 4
|
| | | length += 1
|
| | | length += 2
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 4
|
| | | length += 2
|
| | | length += len(self.Broadcast)
|
| | | length += 4
|
| | | length += 1
|
| | | for i in range(self.MemberCount):
|
| | | length += self.MemberList[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.WriteString(data, 33, self.FamilyName)
|
| | | data = CommFunc.WriteBYTE(data, self.FamilyLV)
|
| | | data = CommFunc.WriteDWORD(data, self.FamilyLVExp)
|
| | | data = CommFunc.WriteBYTE(data, self.JoinReview)
|
| | | data = CommFunc.WriteWORD(data, self.JoinLVMin)
|
| | | data = CommFunc.WriteDWORD(data, self.ServerID)
|
| | | data = CommFunc.WriteDWORD(data, self.EmblemID)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPower)
|
| | | data = CommFunc.WriteDWORD(data, self.FightPowerEx)
|
| | | data = CommFunc.WriteWORD(data, self.BroadcastLen)
|
| | | data = CommFunc.WriteString(data, self.BroadcastLen, self.Broadcast)
|
| | | data = CommFunc.WriteDWORD(data, self.LeaderID)
|
| | | data = CommFunc.WriteBYTE(data, self.MemberCount)
|
| | | for i in range(self.MemberCount):
|
| | | data = CommFunc.WriteString(data, self.MemberList[i].GetLength(), self.MemberList[i].GetBuffer())
|
| | | return data
|
| | |
|
| | | def OutputString(self):
|
| | | DumpString = '''
|
| | | Head:%s,
|
| | | FamilyID:%d,
|
| | | FamilyName:%s,
|
| | | FamilyLV:%d,
|
| | | FamilyLVExp:%d,
|
| | | JoinReview:%d,
|
| | | JoinLVMin:%d,
|
| | | ServerID:%d,
|
| | | EmblemID:%d,
|
| | | FightPower:%d,
|
| | | FightPowerEx:%d,
|
| | | BroadcastLen:%d,
|
| | | Broadcast:%s,
|
| | | LeaderID:%d,
|
| | | MemberCount:%d,
|
| | | MemberList:%s
|
| | | '''\
|
| | | %(
|
| | | self.Head.OutputString(),
|
| | | self.FamilyID,
|
| | | self.FamilyName,
|
| | | self.FamilyLV,
|
| | | self.FamilyLVExp,
|
| | | self.JoinReview,
|
| | | self.JoinLVMin,
|
| | | self.ServerID,
|
| | | self.EmblemID,
|
| | | self.FightPower,
|
| | | self.FightPowerEx,
|
| | | self.BroadcastLen,
|
| | | self.Broadcast,
|
| | | self.LeaderID,
|
| | | self.MemberCount,
|
| | | "..."
|
| | | )
|
| | | return DumpString
|
| | |
|
| | |
|
| | | m_NAtagMCRoleFamilyInfo=tagMCRoleFamilyInfo()
|
| | | ChNetPackDict[eval("0x%02x%02x"%(m_NAtagMCRoleFamilyInfo.Head.Cmd,m_NAtagMCRoleFamilyInfo.Head.SubCmd))] = m_NAtagMCRoleFamilyInfo
|
| | |
|
| | |
|
| | | #------------------------------------------------------
|
| | | # A6 05 VIP礼包购买记录 #tagMCVIPAwardMsg
|
| | |
|
| | | class tagMCVIPAwardMsg(Structure):
|