From 6a9883b425e53e714b9a930ec70b7544999611a6 Mon Sep 17 00:00:00 2001 From: hxp <ale99527@vip.qq.com> Date: 星期四, 08 五月 2025 12:01:45 +0800 Subject: [PATCH] 16 卡牌服务端(db数据备档、加载;仙盟基础转到MapServer;) --- ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py | 832 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 787 insertions(+), 45 deletions(-) diff --git a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py index 53a6757..693db8a 100644 --- a/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py +++ b/ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/ChPyNetSendPack.py @@ -32149,6 +32149,58 @@ #------------------------------------------------------ +# 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): @@ -32313,6 +32365,197 @@ #------------------------------------------------------ +# 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): @@ -32370,6 +32613,239 @@ 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 #------------------------------------------------------ @@ -32548,47 +33024,12 @@ #------------------------------------------------------ -#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): @@ -32602,9 +33043,8 @@ _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): @@ -32613,15 +33053,14 @@ 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 @@ -32630,14 +33069,14 @@ 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(), @@ -32760,6 +33199,309 @@ #------------------------------------------------------ +# 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): -- Gitblit v1.8.0